11package pro .cloudnode .smp .smpcore .command ;
22
3+ import org .bukkit .NamespacedKey ;
34import org .bukkit .OfflinePlayer ;
45import org .bukkit .command .CommandSender ;
6+ import org .bukkit .entity .Player ;
57import org .jetbrains .annotations .NotNull ;
68import org .jetbrains .annotations .Nullable ;
79import pro .cloudnode .smp .smpcore .Member ;
@@ -25,25 +27,28 @@ public boolean run(@NotNull CommandSender sender, @NotNull String label, @NotNul
2527 return sendMessage (sender , SMPCore .messages ().errorNoPermission ());
2628 if (args .length < 1 ) return sendMessage (sender , SMPCore .messages ().usage (label , "<username> [reason]" ));
2729 final @ NotNull OfflinePlayer target = SMPCore .getInstance ().getServer ().getOfflinePlayer (args [0 ]);
30+
2831 final @ Nullable String reason = args .length > 1 ? String .join (" " , Arrays .copyOfRange (args , 1 , args .length )) : null ;
32+ final @ Nullable Date banExpiry = null ;
33+ final @ NotNull NamespacedKey banSource ;
34+ if (sender instanceof final @ NotNull Player player )
35+ banSource = new NamespacedKey (SMPCore .getInstance (), "player/" + player .getUniqueId ());
36+ else banSource = new NamespacedKey (SMPCore .getInstance (), "console" );
37+
2938 final @ NotNull Optional <@ NotNull Member > targetMember = Member .get (target );
3039 if (targetMember .isEmpty ()) {
31- SMPCore .runMain (() -> target .ban (reason , ( Date ) null , null ));
40+ SMPCore .runMain (() -> target .ban (reason , banExpiry , banSource . asString () ));
3241 return sendMessage (sender , SMPCore .messages ().bannedPlayer (target ));
3342 }
3443 final @ NotNull Member main = targetMember .get ().altOwner ().orElse (targetMember .get ());
3544 final @ NotNull HashSet <@ NotNull Member > alts = main .getAlts ();
3645
37- // todo: possibly add temp bans & ban source
38- final @ Nullable Date banExpiry = null ;
39- final @ Nullable String banSource = null ;
40-
41- SMPCore .runMain (() -> main .player ().ban (reason , banExpiry , banSource ));
46+ SMPCore .runMain (() -> main .player ().ban (reason , banExpiry , banSource .asString ()));
4247 if (alts .isEmpty ()) return sendMessage (sender , SMPCore .messages ().bannedMember (main ));
4348 else {
4449 SMPCore .runMain (() -> {
4550 for (final @ NotNull Member alt : alts )
46- alt .player ().ban (reason , banExpiry , banSource );
51+ alt .player ().ban (reason , banExpiry , banSource . asString () );
4752 });
4853 return sendMessage (sender , SMPCore .messages ().bannedMemberChain (main , alts .stream ().toList ()));
4954 }
0 commit comments