@@ -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