22
33import java .util .ArrayList ;
44import java .util .Map .Entry ;
5- import java .util .UUID ;
5+ import java .util .UUID ;
6+ import java .util .function .Consumer ;
67
78import org .bukkit .Bukkit ;
89import org .bukkit .command .CommandSender ;
@@ -51,9 +52,16 @@ public static CommandLoader getInstance() {
5152 return instance ;
5253 }
5354
54- private static boolean isBlank (String s ) {
55- return s == null || s .trim ().isEmpty () || "null" .equalsIgnoreCase (s .trim ());
56- }
55+ private static boolean isBlank (String s ) {
56+ return s == null || s .trim ().isEmpty () || "null" .equalsIgnoreCase (s .trim ());
57+ }
58+
59+ private void withResolvedUser (CommandSender sender , String playerName , Consumer <AdvancedCoreUser > action ) {
60+ plugin .getUserManager ().getUserAsync (playerName ,
61+ user -> runRecipientCallback (UUID .fromString (user .getUUID ()), () -> action .accept (user )),
62+ failure -> runCommandCallback (sender ,
63+ () -> sender .sendMessage (MessageAPI .colorize ("&cUnable to resolve UUID for " + playerName ))));
64+ }
5765
5866 private ArrayList <String > perms = new ArrayList <>();
5967
@@ -208,9 +216,11 @@ public void execute(CommandSender sender, String[] args) {
208216
209217 @ Override
210218 public void execute (CommandSender sender , String [] args ) {
211- AdvancedCoreUser user = plugin .getUserManager ().getUser (args [1 ]);
212- plugin .getRewardHandler ().giveReward (user , args [2 ], new RewardOptions ().setOnline (user .isOnline ()));
213- sendMessage (sender , "&cGave " + args [1 ] + " the reward file " + args [2 ]);
219+ withResolvedUser (sender , args [1 ], user -> {
220+ plugin .getRewardHandler ().giveReward (user , args [2 ], new RewardOptions ().setOnline (user .isOnline ()));
221+ runCommandCallback (sender ,
222+ () -> sendMessage (sender , "&cGave " + args [1 ] + " the reward file " + args [2 ]));
223+ });
214224 }
215225 });
216226
@@ -231,9 +241,10 @@ public void executeAll(CommandSender sender, String[] args) {
231241
232242 @ Override
233243 public void executeSinglePlayer (CommandSender sender , String [] args ) {
234- AdvancedCoreUser user = plugin .getUserManager ().getUser (args [1 ]);
235- plugin .getRewardHandler ().giveReward (user , args [3 ], new RewardOptions ().setOnline (user .isOnline ()));
236- sender .sendMessage ("&cGave " + args [1 ] + " the reward file " + args [3 ]);
244+ withResolvedUser (sender , args [1 ], user -> {
245+ plugin .getRewardHandler ().giveReward (user , args [3 ], new RewardOptions ().setOnline (user .isOnline ()));
246+ runCommandCallback (sender , () -> sender .sendMessage ("&cGave " + args [1 ] + " the reward file " + args [3 ]));
247+ });
237248 }
238249 });
239250
@@ -242,10 +253,11 @@ public void executeSinglePlayer(CommandSender sender, String[] args) {
242253
243254 @ Override
244255 public void execute (CommandSender sender , String [] args ) {
245- AdvancedCoreUser user = plugin .getUserManager ().getUser (args [1 ]);
246- plugin .getRewardHandler ().giveReward (user , args [2 ],
247- new RewardOptions ().setOnline (user .isOnline ()).addPlaceholder (args [3 ], args [4 ]));
248- sender .sendMessage ("&cGave " + args [1 ] + " the reward file " + args [2 ]);
256+ withResolvedUser (sender , args [1 ], user -> {
257+ plugin .getRewardHandler ().giveReward (user , args [2 ],
258+ new RewardOptions ().setOnline (user .isOnline ()).addPlaceholder (args [3 ], args [4 ]));
259+ runCommandCallback (sender , () -> sender .sendMessage ("&cGave " + args [1 ] + " the reward file " + args [2 ]));
260+ });
249261 }
250262 });
251263
@@ -298,12 +310,12 @@ public void execute(CommandSender sender, String[] args) {
298310 public void execute (CommandSender sender , String [] args ) {
299311 sendMessage (sender , "&cStarting to run offline rewards for " + args [1 ]);
300312
301- AdvancedCoreUser user = plugin . getUserManager (). getUser ( args [1 ]);
302- user .userDataFetechMode (UserDataFetchMode .NO_CACHE );
303-
304- user . forceRunOfflineRewards ();
305-
306- sendMessage ( sender , "&cFinished running offline rewards for " + args [ 1 ] );
313+ withResolvedUser ( sender , args [1 ], user -> {
314+ user .userDataFetechMode (UserDataFetchMode .NO_CACHE );
315+ user . forceRunOfflineRewards ();
316+ runCommandCallback ( sender ,
317+ () -> sendMessage ( sender , "&cFinished running offline rewards for " + args [ 1 ]));
318+ } );
307319 }
308320 });
309321
@@ -407,11 +419,8 @@ public void execute(CommandSender sender, String[] args) {
407419 public void execute (CommandSender sender , String [] args ) {
408420 sendMessage (sender , "&cRemoving " + args [1 ]);
409421
410- AdvancedCoreUser user = plugin .getUserManager ().getUser (args [1 ]);
411- removeUserData (sender , args [1 ], user , () -> {
412- String uuidStr = UuidLookup .getInstance ().getUUID (args [1 ]);
413- UuidLookup .getInstance ().invalidate (isBlank (uuidStr ) ? args [1 ] : uuidStr );
414- });
422+ withResolvedUser (sender , args [1 ], user -> removeUserData (sender , args [1 ], user ,
423+ () -> UuidLookup .getInstance ().invalidate (user .getUUID ())));
415424 }
416425 });
417426
@@ -527,13 +536,14 @@ public void executeAll(CommandSender sender, String[] args) {
527536
528537 @ Override
529538 public void executeSinglePlayer (CommandSender sender , String [] args ) {
530- AdvancedCoreUser user = plugin .getUserManager ().getUser (args [1 ]);
531- String data = args [4 ];
532- if (data .equalsIgnoreCase ("\" \" " )) {
533- data = "" ;
534- }
535- user .getData ().setString (args [3 ], data );
536- sender .sendMessage (MessageAPI .colorize ("&cSet " + args [3 ] + " for " + args [1 ] + " to " + args [4 ]));
539+ String data = args [4 ];
540+ if (data .equalsIgnoreCase ("\" \" " )) data = "" ;
541+ final String value = data ;
542+ withResolvedUser (sender , args [1 ], user -> {
543+ user .getData ().setString (args [3 ], value );
544+ runCommandCallback (sender , () -> sender .sendMessage (
545+ MessageAPI .colorize ("&cSet " + args [3 ] + " for " + args [1 ] + " to " + args [4 ])));
546+ });
537547 }
538548 }.withLegacyAllPermissionAliases (permPrefix + ".SetAllData" ));
539549
@@ -542,27 +552,28 @@ public void executeSinglePlayer(CommandSender sender, String[] args) {
542552
543553 @ Override
544554 public void execute (CommandSender sender , String [] args ) {
545- AdvancedCoreUser user = plugin .getUserManager ().getUser (args [1 ]);
546- if (plugin .getUserManager ().getDataManager ().deferSharedStorageResult (user .getData ()::getValues ,
547- values -> values .forEach ((key , value ) ->
548- sendMessage (sender , "&c&l" + key + " &c" + value .toString ())),
549- failure -> sendMessage (sender , "&cUnable to read user data; check the server log." ),
550- callbackOwner (sender ))) return ;
551- for (Entry <String , DataValue > entry : user .getData ().getValues ().entrySet ()) {
552- sendMessage (sender , "&c&l" + entry .getKey () + " &c" + entry .getValue ().toString ());
553- }
555+ withResolvedUser (sender , args [1 ], user -> {
556+ if (plugin .getUserManager ().getDataManager ().deferSharedStorageResult (user .getData ()::getValues ,
557+ values -> values .forEach ((key , value ) ->
558+ sendMessage (sender , "&c&l" + key + " &c" + value .toString ())),
559+ failure -> sendMessage (sender , "&cUnable to read user data; check the server log." ),
560+ callbackOwner (sender ))) return ;
561+ for (Entry <String , DataValue > entry : user .getData ().getValues ().entrySet ()) {
562+ sendMessage (sender , "&c&l" + entry .getKey () + " &c" + entry .getValue ().toString ());
563+ }
564+ });
554565 }
555566 });
556567
557568 cmds .add (new CommandHandler (plugin , new String [] { "User" , "(Player)" , "ViewCache" }, permPrefix + ".ViewCache" ,
558569 "View playerdata" ) {
559570
560571 @ Override
561- public void execute (CommandSender sender , String [] args ) {
562- AdvancedCoreUser user = plugin . getUserManager (). getUser ( args [1 ]);
563- for ( String str : user .getCache ().displayCacheStringList ()) {
564- sender . sendMessage ( str );
565- }
572+ public void execute (CommandSender sender , String [] args ) {
573+ withResolvedUser ( sender , args [1 ], user -> {
574+ java . util . List < String > entries = user .getCache ().displayCacheStringList ();
575+ runCommandCallback ( sender , () -> entries . forEach ( sender :: sendMessage ) );
576+ });
566577
567578 }
568579 });
@@ -572,9 +583,10 @@ public void execute(CommandSender sender, String[] args) {
572583
573584 @ Override
574585 public void execute (CommandSender sender , String [] args ) {
575- AdvancedCoreUser user = plugin .getUserManager ().getUser (args [1 ]);
576- user .cache ();
577- sendMessage (sender , "&aForced cached " + args [1 ]);
586+ withResolvedUser (sender , args [1 ], user -> {
587+ user .cache ();
588+ runCommandCallback (sender , () -> sendMessage (sender , "&aForced cached " + args [1 ]));
589+ });
578590 }
579591 });
580592
@@ -583,8 +595,11 @@ public void execute(CommandSender sender, String[] args) {
583595
584596 @ Override
585597 public void execute (CommandSender sender , String [] args ) {
586- AdvancedCoreUser user = plugin .getUserManager ().getUser (args [1 ]);
587- sendMessage (sender , "User " + args [1 ] + " permission " + args [3 ] + ":" + user .hasPermission (args [3 ]));
598+ withResolvedUser (sender , args [1 ], user -> {
599+ boolean hasPermission = user .hasPermission (args [3 ]);
600+ runCommandCallback (sender , () -> sendMessage (sender ,
601+ "User " + args [1 ] + " permission " + args [3 ] + ":" + hasPermission ));
602+ });
588603 }
589604 });
590605
@@ -594,10 +609,10 @@ public void execute(CommandSender sender, String[] args) {
594609
595610 @ Override
596611 public void execute (CommandSender sender , String [] args ) {
597- AdvancedCoreUser user = plugin . getUserManager (). getUser ( args [4 ]);
598- user .setChoicePreference (args [2 ], args [3 ]);
599-
600- user . sendMessage ( "&cPreference set to " + args [ 3 ] + " for " + args [ 4 ] );
612+ withResolvedUser ( sender , args [4 ], user -> {
613+ user .setChoicePreference (args [2 ], args [3 ]);
614+ user . sendMessage ( "&cPreference set to " + args [ 3 ] + " for " + args [ 4 ]);
615+ } );
601616 }
602617 });
603618
0 commit comments