Skip to content

Commit f495299

Browse files
committed
feat: add '!sb skip'
1 parent 6408b42 commit f495299

File tree

1 file changed

+25
-9
lines changed

1 file changed

+25
-9
lines changed

scoreboardHelper/scoreboardHelper.py

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ def __init__(self, logger, core, config_file):
4242
self.cycle_index = 0
4343
self.cycle_timer = QtCore.QTimer()
4444
self.cycle_timer.timeout.connect(self.cycle_timer_action)
45-
cycle_interval = self.configs.get('sec_between_cycle', self._default_cycle_interval) * 1000
46-
self.cycle_timer.start(cycle_interval) # start cycle timer
45+
cycle_interval = self.configs.get('sec_between_cycle', self._default_cycle_interval) # second
46+
self.cycle_timer.start(cycle_interval * 1000) # start cycle timer
4747

4848
# connect signals and slots
4949
self.utils.sig_input.connect(self.on_player_input)
@@ -53,6 +53,7 @@ def __init__(self, logger, core, config_file):
5353
'help': self.help,
5454
'list': self.list_visible_sb,
5555
'view': self.view_sb,
56+
'skip': self.skip_sb,
5657
'add': self.add_sb,
5758
'remove': self.rm_sb,
5859
'rm': self.rm_sb,
@@ -79,12 +80,13 @@ def on_player_input(self, pair):
7980
self.unknown_command(player)
8081

8182

82-
# Timer-triggered Functions
83+
## Timer-triggered Functions
8384
def cycle_timer_action(self, forced = False):
8485
if self.cycle_enabled or forced:
8586
cycle_sb_list = self.configs.get('cycle_scoreboards', [])
8687
if len(cycle_sb_list) <= 0:
8788
self.logger.debug('No scoreboards to cycle. Skipping.')
89+
# TODO: disable cycle on empty list, and re-enable on '!sb add'
8890
else:
8991
self.cycle_index %= len(cycle_sb_list)
9092
self.core.write_server(f'/scoreboard objectives setdisplay sidebar {cycle_sb_list[self.cycle_index]}')
@@ -97,7 +99,7 @@ def view_timer_end(self):
9799
self.cycle_timer.start()
98100

99101

100-
# Plugin Command Functions
102+
## Plugin Command Functions
101103
def help(self, player, args: list):
102104
if len(args):
103105
self.unknown_command(player)
@@ -108,14 +110,15 @@ def help(self, player, args: list):
108110
"{self._cmd_prefix} help": Show this help message.
109111
"{self._cmd_prefix} list": List all scoreboards.
110112
"{self._cmd_prefix} view <name>": View a certain scoreboard for a period of time.
113+
"{self._cmd_prefix} skip": Skip the current displayed scoreboard.
111114
----------------------------------------------------'''
112115
op_help_info = f'''
113116
----------- ScoreboardHelper OP Command List ----------
114117
"{self._cmd_prefix} cycle <true|t|false|f>": Turn on/off scoreboard cycling.
115118
"{self._cmd_prefix} <add|remove|rm> <visible|cycle> <name>":
116119
Add/remove a scoreboard from visible/cycle list.
117-
"{self._cmd_prefix} settime <view|cycle> <time_in_sec>":
118-
Set cycle interval / view duration time in sec.
120+
"{self._cmd_prefix} settime <view|cycle> <second>":
121+
Set cycle interval / view duration time in second.
119122
----------------------------------------------------'''
120123
help_msg = help_info + (op_help_info if player.is_op() else '')
121124
self.utils.tell(player, help_msg)
@@ -150,10 +153,23 @@ def view_sb(self, player, args: list):
150153

151154
self.cycle_timer.stop()
152155
self.core.write_server(f'/scoreboard objectives setdisplay sidebar {sb_name}')
153-
interval = self.configs.get('sec_view_stay', self._default_view_stay) * 1000
154-
self.utils.tell(player, f'Viewing \'{sb_name}\' for {interval / 1000} seconds.')
156+
interval = self.configs.get('sec_view_stay', self._default_view_stay)
157+
self.utils.tell(player, f'Viewing \'{sb_name}\' for {interval} seconds.')
155158
self.view_timer = QtCore.QTimer()
156-
self.view_timer.singleShot(interval, self.view_timer_end) # do view_timer_end once after interval
159+
self.view_timer.singleShot(interval * 1000, self.view_timer_end) # do view_timer_end once after interval
160+
161+
162+
def skip_sb(self, player, args: list):
163+
if len(args):
164+
self.unknown_command(player)
165+
return
166+
167+
if self.view_timer.isActive():
168+
self.view_timer.stop()
169+
self.view_timer_end()
170+
else: # TODO: permission control?
171+
self.cycle_timer_action(forced=True)
172+
157173

158174

159175
def add_sb(self, player, args: list):

0 commit comments

Comments
 (0)