1717
1818package lol .hyper .timebar .commands ;
1919
20+ import io .papermc .paper .command .brigadier .BasicCommand ;
21+ import io .papermc .paper .command .brigadier .CommandSourceStack ;
2022import lol .hyper .timebar .TimeBar ;
2123import lol .hyper .timebar .tracker .WorldTimeTracker ;
2224import net .kyori .adventure .text .Component ;
2325import net .kyori .adventure .text .format .NamedTextColor ;
2426import org .bukkit .Bukkit ;
2527import org .bukkit .World ;
26- import org .bukkit .command .Command ;
2728import org .bukkit .command .CommandSender ;
2829import org .bukkit .command .ConsoleCommandSender ;
29- import org .bukkit .command .TabExecutor ;
3030import org .bukkit .entity .Player ;
31- import org .jetbrains . annotations . NotNull ;
31+ import org .checkerframework . checker . nullness . qual . NonNull ;
3232
33- import java .util .Arrays ;
34- import java .util .List ;
33+ import java .util .*;
3534
36- public class CommandTimeBar implements TabExecutor {
35+ public class CommandTimeBar implements BasicCommand {
3736
3837 private final TimeBar timeBar ;
3938
@@ -42,15 +41,11 @@ public CommandTimeBar(TimeBar timeBar) {
4241 }
4342
4443 @ Override
45- public boolean onCommand (@ NotNull CommandSender sender , @ NotNull Command command , @ NotNull String label , String [] args ) {
44+ public void execute (@ NonNull CommandSourceStack source , String @ NonNull [] args ) {
45+ CommandSender sender = source .getSender ();
4646 if (args .length == 0 ) {
4747 sender .sendMessage (Component .text ("TimeBar version " + timeBar .getPluginMeta ().getVersion () + ". Created by hyperdefined." , NamedTextColor .GREEN ));
48- return true ;
49- }
50-
51- if (!sender .hasPermission ("timebar.command" )) {
52- sender .sendMessage (Component .text ("You do not have permission for this command." , NamedTextColor .RED ));
53- return true ;
48+ return ;
5449 }
5550
5651 switch (args [0 ]) {
@@ -75,20 +70,20 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command
7570 } else {
7671 sender .sendMessage (Component .text ("You do not have permission for this command." , NamedTextColor .RED ));
7772 }
78- return true ;
73+ return ;
7974 }
8075 case "on" -> {
8176 if (sender instanceof ConsoleCommandSender ) {
8277 sender .sendMessage (Component .text ("You must be a player for this command." , NamedTextColor .RED ));
83- return true ;
78+ return ;
8479 }
8580 if (!sender .hasPermission ("timebar.enable" )) {
8681 sender .sendMessage (Component .text ("You do not have permission for this command." , NamedTextColor .RED ));
87- return true ;
82+ return ;
8883 }
8984 if (timeBar .config .getBoolean ("hold-clock-to-show" )) {
9085 sender .sendMessage (Component .text ("You must be holding a clock to show/hide the TimeBar." , NamedTextColor .RED ));
91- return true ;
86+ return ;
9287 }
9388 Player player = (Player ) sender ;
9489 World world = player .getWorld ();
@@ -102,20 +97,20 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command
10297 timeBar .enabledBossBar .add (player );
10398 }
10499 player .sendMessage (Component .text ("TimeBar is now enabled." , NamedTextColor .GREEN ));
105- return true ;
100+ return ;
106101 }
107102 case "off" -> {
108103 if (sender instanceof ConsoleCommandSender ) {
109104 sender .sendMessage (Component .text ("You must be a player for this command." , NamedTextColor .RED ));
110- return true ;
105+ return ;
111106 }
112107 if (!sender .hasPermission ("timebar.disable" )) {
113108 sender .sendMessage (Component .text ("You do not have permission for this command." , NamedTextColor .RED ));
114- return true ;
109+ return ;
115110 }
116111 if (timeBar .config .getBoolean ("hold-clock-to-show" )) {
117112 sender .sendMessage (Component .text ("You must be holding a clock to show/hide the TimeBar." , NamedTextColor .RED ));
118- return true ;
113+ return ;
119114 }
120115 Player player = (Player ) sender ;
121116 World world = player .getWorld ();
@@ -129,15 +124,29 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command
129124 timeBar .enabledBossBar .remove (player );
130125 }
131126 player .sendMessage (Component .text ("TimeBar is now disabled." , NamedTextColor .GREEN ));
132- return true ;
127+ return ;
133128 }
134129 default -> sender .sendMessage (Component .text ("Invalid sub-command. Valid options are: reload, on, off." , NamedTextColor .RED ));
135130 }
136- return true ;
131+ return ;
137132 }
138133
139134 @ Override
140- public List <String > onTabComplete (@ NotNull CommandSender sender , @ NotNull Command command , @ NotNull String alias , String @ NotNull [] args ) {
141- return Arrays .asList ("reload" , "on" , "off" );
135+ public @ NonNull Collection <String > suggest (@ NonNull CommandSourceStack source , String [] args ) {
136+ CommandSender sender = source .getSender ();
137+ if (args .length == 1 ) {
138+ List <String > suggestions = new ArrayList <>();
139+ if (sender .hasPermission ("timebar.reload" )) {
140+ suggestions .add ("reload" );
141+ }
142+ if (sender .hasPermission ("timebar.enable" )) {
143+ suggestions .add ("on" );
144+ }
145+ if (sender .hasPermission ("timebar.disable" )) {
146+ suggestions .add ("off" );
147+ }
148+ return suggestions ;
149+ }
150+ return Collections .emptyList ();
142151 }
143152}
0 commit comments