99import org .bukkit .entity .Player ;
1010
1111import java .util .ArrayList ;
12+ import java .util .Arrays ;
1213import java .util .List ;
1314
1415import static com .brambles .acf .AdvancedChorusFruit .PluginPermission ;
@@ -26,13 +27,16 @@ public boolean onCommand(CommandSender sender, Command command, String label, St
2627 if (playerTarget == null && !args [0 ].equalsIgnoreCase ("default" )) { sender .sendMessage ("Player not found" ); return false ; }
2728
2829 String targetName = playerTarget != null ? playerTarget .getName () : "Default" ;
29- targetPermissions = playerTarget != null ? PluginData .getPermissions (playerTarget . getUniqueId () ) : PluginData .getPermissions ();
30+ targetPermissions = playerTarget != null ? PluginData .getPermissions (playerTarget ) : PluginData .getPermissions ();
3031
3132 if (args .length < 2 ) return false ;
3233
3334 if (args [1 ].equalsIgnoreCase ("list" )) {
3435 StringBuilder builder = new StringBuilder (targetName ).append (" permissions:" );
35- for (String permission : targetPermissions ) builder .append ("\n - " ).append (permission );
36+
37+ for (String permission : targetPermissions )
38+ builder .append ("\n - " ).append (permission );
39+
3640 sender .sendMessage (builder .toString ());
3741 return true ;
3842 }
@@ -44,32 +48,63 @@ public boolean onCommand(CommandSender sender, Command command, String label, St
4448 if (permission == null ) { sender .sendMessage ("Permission \" " + args [1 ] + "\" doesn't exist" ); return false ; }
4549 if (args .length < 3 ) { sender .sendMessage ("Incomplete command" ); return false ; }
4650
47- boolean allowed = args [2 ].equalsIgnoreCase ("allow" );
48-
49- if (!allowed && !args [2 ].equalsIgnoreCase ("disallow" )) { sender .sendMessage ("Invalid argument \" " + args [2 ] + "\" " ); return false ; }
50-
51- if (playerTarget != null )
52- PluginData .updatePermissions (playerTarget .getUniqueId (), permission , allowed );
53- else
54- PluginData .updateDefaultPermission (permission , allowed );
51+ switch (args [2 ].toLowerCase ()) {
52+ case "allow" :
53+ updatePermission (playerTarget , permission , true );
54+ break ;
55+ case "disallow" :
56+ updatePermission (playerTarget , permission , false );
57+ break ;
58+ case "reset" :
59+ if (playerTarget == null ) {
60+ sender .sendMessage ("Resetting is only for player permissions" );
61+ return false ;
62+ }
63+ PluginData .resetPermissions (playerTarget .getUniqueId ());
64+ break ;
65+ default :
66+ sender .sendMessage ("Invalid argument \" " + args [2 ] + "\" " );
67+ return false ;
68+ }
5569
5670 sender .sendMessage (playerTarget != null ? "Permissions for " + playerTarget .getName () + " updated" : "Default permissions updated" );
5771 return true ;
5872 }
5973
74+ private static void updatePermission (Player target , PluginPermission permission , boolean allowed ) {
75+ if (target != null )
76+ PluginData .updatePermissions (target .getUniqueId (), permission , allowed );
77+ else
78+ PluginData .updateDefaultPermission (permission , allowed );
79+ }
80+
6081 @ Override
6182 public List <String > onTabComplete (CommandSender sender , Command command , String label , String [] args ) {
6283 List <String > completions = new ArrayList <>();
6384
64- if (args .length == 1 ) {
65- completions .add ("edit" );
66- completions .add ("remove" );
67- completions .add ("list" );
68- } else if (args .length == 2 ) {
69- Bukkit .getOnlinePlayers ().forEach (player -> completions .add (player .getName ()));
70- } else if (args .length == 3 ) {
71- for (PluginPermission permission : PluginPermission .values ()) completions .add (permission .id ());
85+ switch (args .length ) {
86+ case 1 :
87+ completions .add ("default" );
88+ Bukkit .getOnlinePlayers ().forEach (player -> completions .add (player .getName ()));
89+ break ;
90+ case 2 :
91+ completions .add ("list" );
92+ Arrays .stream (PluginPermission .values ()).forEach (permission -> completions .add (permission .id ()));
93+ break ;
94+ case 3 :
95+ if (args [1 ].equalsIgnoreCase ("list" ))
96+ return completions ;
97+
98+ completions .add ("allow" );
99+ completions .add ("disallow" );
100+
101+ if (!args [0 ].equalsIgnoreCase ("default" ))
102+ completions .add ("reset" );
103+ break ;
104+ default :
105+ return completions ;
72106 }
107+
73108 String currentArg = args [args .length - 1 ];
74109 completions .removeIf (str -> !str .startsWith (currentArg ));
75110 return completions ;
0 commit comments