@@ -22,13 +22,13 @@ public class CommandHandler implements TabExecutor {
2222 @ Override
2323 public boolean onCommand (@ NotNull CommandSender sender , @ NotNull Command command , @ NotNull String s , @ NotNull String [] args ) {
2424 if (args .length < 1 ) {
25- sender .sendMessage (miniMessage .deserialize (LocaleHandler .getInstance ().getNotEnoughArgs (),
26- Placeholder .parsed ("prefix" , LocaleHandler .getInstance ().getPluginPrefix ())));
27-
25+ sendMessage (sender , LocaleHandler .getInstance ().getNotEnoughArgs ());
2826 return false ;
2927 }
3028 if (args .length >= 2 ) {
31- if (runningOnOther (sender , args )) {
29+ Player player = getPlayerFromArgs (args );
30+ if (player != null ) {
31+ commandOnOther (sender , args , player );
3232 return true ;
3333 }
3434 }
@@ -37,51 +37,41 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command
3737
3838 }
3939
40- private boolean runningOnOther (CommandSender sender , String [] args ) {
41- Player player = SimpleNicks .getInstance ().getServer ().getPlayer (args [1 ]);
42- if (player != null ) {
43- commandOnOther (sender , args , player );
44- return true ;
45- }
46- return false ;
40+ private Player getPlayerFromArgs (String [] args ) {
41+ return SimpleNicks .getInstance ().getServer ().getPlayer (args [1 ]);
4742 }
4843
4944 private void commandOnOther (CommandSender sender , String [] args , Player player ) {
5045 String command = args [0 ].toLowerCase ();
51- if (! SimpleNicks .getSubCommands ().containsKey (command )) {
52- sender . sendMessage ( miniMessage . deserialize ( LocaleHandler . getInstance (). getInvalidCommand (),
53- Placeholder . parsed ( "prefix" , LocaleHandler .getInstance ().getPluginPrefix ()) ));
46+ SubCommand subCommand = SimpleNicks .getSubCommands ().get (command );
47+ if ( subCommand == null ) {
48+ sendMessage ( sender , LocaleHandler .getInstance ().getInvalidCommand ( ));
5449 return ;
5550 }
56- SubCommand subCommand = SimpleNicks .getSubCommands ().get (command );
5751 if (!sender .hasPermission (subCommand .adminPermission )) {
58- sender .sendMessage (miniMessage .deserialize (LocaleHandler .getInstance ().getNoPermission (),
59- Placeholder .parsed ("prefix" , LocaleHandler .getInstance ().getPluginPrefix ())));
52+ sendMessage (sender , LocaleHandler .getInstance ().getNoPermission ());
6053 return ;
6154 }
6255 subCommand .executeOnOther (sender , player , args );
6356 }
6457
6558 private void commandOnSelf (CommandSender sender , String [] args ) {
6659 String command = args [0 ].toLowerCase ();
67- Player player = null ;
68- if (!SimpleNicks .getSubCommands ().containsKey (command )) {
69- sender .sendMessage (miniMessage .deserialize (LocaleHandler .getInstance ().getInvalidCommand (),
70- Placeholder .parsed ("prefix" , LocaleHandler .getInstance ().getPluginPrefix ())));
60+ SubCommand subCommand = SimpleNicks .getSubCommands ().get (command );
61+ if (subCommand == null ) {
62+ sendMessage (sender , LocaleHandler .getInstance ().getInvalidCommand ());
7163 return ;
7264 }
73- SubCommand subCommand = SimpleNicks .getSubCommands ().get (command );
7465 if (!sender .hasPermission (subCommand .basicPermission )) {
75- sender .sendMessage (miniMessage .deserialize (LocaleHandler .getInstance ().getNoPermission (),
76- Placeholder .parsed ("prefix" , LocaleHandler .getInstance ().getPluginPrefix ())));
66+ sendMessage (sender , LocaleHandler .getInstance ().getNoPermission ());
7767 return ;
7868 }
69+ Player player = null ;
7970 if (sender instanceof Player ) {
8071 player = (Player ) sender ;
8172 }
8273 if (player == null && !subCommand .canRunWithoutPlayer ()) {
83- sender .sendMessage (miniMessage .deserialize (LocaleHandler .getInstance ().getMustBePlayer (),
84- Placeholder .parsed ("prefix" , LocaleHandler .getInstance ().getPluginPrefix ())));
74+ sendMessage (sender , LocaleHandler .getInstance ().getMustBePlayer ());
8575 return ;
8676 }
8777 subCommand .executeOnSelf (sender , player , args );
@@ -91,31 +81,58 @@ private void commandOnSelf(CommandSender sender, String[] args) {
9181 @ Override
9282 public @ Nullable List <String > onTabComplete (@ NotNull CommandSender sender , @ NotNull Command command , @ NotNull String s , @ NotNull String [] args ) {
9383 tabComplete .clear ();
94- int argsLength = args . length ;
95- switch (argsLength ) {
84+ Player player = getPlayerForTabComplete ( sender , args ) ;
85+ switch (args . length ) {
9686 case 0 , 1 -> {
97- for (String key : SimpleNicks .getSubCommands ().keySet ()) {
98- if (sender .hasPermission (SimpleNicks .getSubCommands ().get (key ).basicPermission ) ||
99- sender .hasPermission (SimpleNicks .getSubCommands ().get (key ).getAdminPermission ())) {
100- tabComplete .add (key );
101- }
102- }
87+ addSubCommandsToTabComplete (sender );
10388 }
10489 case 2 -> {
90+ SubCommand subCommand = SimpleNicks .getSubCommands ().get (args [0 ].toLowerCase ());
10591 if (SimpleNicks .getSubCommands ().containsKey (args [0 ].toLowerCase ())) {
106- SubCommand subCommand = SimpleNicks .getSubCommands ().get (args [0 ].toLowerCase ());
107- if (sender .hasPermission (subCommand .adminPermission )) {
92+ if (sender .hasPermission (subCommand .adminPermission ) && (player != null )) {
10893 return null ;
94+ } else {
95+ return subCommand .tabComplete (sender , args , player );
10996 }
11097 }
11198 }
11299 case 3 -> {
113- if ( SimpleNicks .getSubCommands ().containsKey (args [0 ].toLowerCase ())) {
114- SubCommand subCommand = SimpleNicks . getSubCommands (). get ( args [ 0 ]. toLowerCase ());
115- return subCommand . tabComplete ( sender ) ;
100+ SubCommand subCommand = SimpleNicks .getSubCommands ().get (args [0 ].toLowerCase ());
101+ if ( subCommand == null ) {
102+ return null ;
116103 }
104+ return subCommand .tabComplete (sender , args , player );
117105 }
118106 }
107+
119108 return tabComplete ;
120109 }
110+
111+ private Player getPlayerForTabComplete (CommandSender sender , String [] args ) {
112+ if (args .length < 2 ) {
113+ return null ;
114+ }
115+ Player player = getPlayerFromArgs (args );
116+ if (player != null ) {
117+ return player ;
118+ }
119+ if (sender instanceof Player playerSender ) {
120+ return playerSender ;
121+ }
122+ return null ;
123+ }
124+
125+ private void addSubCommandsToTabComplete (CommandSender sender ) {
126+ for (String key : SimpleNicks .getSubCommands ().keySet ()) {
127+ SubCommand subCommand = SimpleNicks .getSubCommands ().get (key );
128+ if (sender .hasPermission (subCommand .basicPermission ) || sender .hasPermission (subCommand .adminPermission )) {
129+ tabComplete .add (key );
130+ }
131+ }
132+ }
133+
134+ private void sendMessage (CommandSender sender , String message ) {
135+ sender .sendMessage (miniMessage .deserialize (message ,
136+ Placeholder .parsed ("prefix" , LocaleHandler .getInstance ().getPluginPrefix ())));
137+ }
121138}
0 commit comments