22
33import com .earth2me .essentials .I18n ;
44import com .earth2me .essentials .User ;
5+ import com .mojang .brigadier .builder .LiteralArgumentBuilder ;
56import dev .plex .command .SimplePlexCommand ;
67import dev .plex .command .source .RequiredCommandSource ;
78import dev .plex .module .nickmm .NickMiniMessageModule ;
1112import java .util .List ;
1213
1314import net .kyori .adventure .text .Component ;
14- import net .kyori .adventure .text .format .NamedTextColor ;
1515import net .kyori .adventure .text .minimessage .Context ;
1616import net .kyori .adventure .text .minimessage .MiniMessage ;
1717import net .kyori .adventure .text .minimessage .ParsingException ;
2020import net .kyori .adventure .text .minimessage .tag .resolver .TagResolver ;
2121import net .kyori .adventure .text .serializer .legacy .LegacyComponentSerializer ;
2222import net .kyori .adventure .text .serializer .plain .PlainTextComponentSerializer ;
23- import org .bukkit .Bukkit ;
2423import org .bukkit .command .CommandSender ;
2524import org .bukkit .entity .Player ;
25+ import io .papermc .paper .command .brigadier .CommandSourceStack ;
2626import org .jetbrains .annotations .NotNull ;
2727import org .jetbrains .annotations .Nullable ;
2828
2929public class NickMMCommand extends SimplePlexCommand
3030{
31+ private final NickMiniMessageModule module ;
3132 private final PlainTextComponentSerializer plainText = PlainTextComponentSerializer .plainText ();
3233 private final LegacyComponentSerializer legacyComponent = LegacyComponentSerializer .legacySection ();
3334 private final MiniMessage miniMessage = MiniMessage .builder ().tags (new NicknameTagResolver ()).build ();
3435
35- public NickMMCommand ()
36+ public NickMMCommand (NickMiniMessageModule module )
3637 {
3738 super (command ("nickmm" )
3839 .description ("Change your nickname using MiniMessage formatting!" )
@@ -41,33 +42,39 @@ public NickMMCommand()
4142 .permission ("plex.nickmm" )
4243 .source (RequiredCommandSource .IN_GAME )
4344 .build ());
45+ this .module = module ;
4446 }
4547
4648 @ Override
47- protected Component execute ( @ NotNull CommandSender commandSender , @ Nullable Player player , @ NotNull String [] args )
49+ protected void configureCommand ( LiteralArgumentBuilder < CommandSourceStack > command )
4850 {
49- if (!Bukkit .getPluginManager ().isPluginEnabled ("Essentials" ))
50- {
51- return Component .text ("Essentials is not enabled!" , NamedTextColor .RED );
52- }
51+ command .executes (context -> executeCommand (context , (sender , player ) -> executeTyped (sender , player , null )));
52+ command .then (word ("nick" )
53+ .executes (context -> executeCommand (context ,
54+ (sender , player ) -> executeTyped (sender , player , string (context , "nick" ))))
55+ .then (greedyString ("ignored" ).executes (context -> executeCommand (context ,
56+ (sender , player ) -> executeTyped (sender , player , string (context , "nick" ))))));
57+ }
5358
54- if (args .length == 0 )
59+ private Component executeTyped (CommandSender commandSender , Player player , @ Nullable String input )
60+ {
61+ if (input == null )
5562 {
5663 return usage ();
5764 }
5865
59- final Component nick = miniMessage .deserialize (args [ 0 ] ).clickEvent (null ).hoverEvent (null );
66+ final Component nick = miniMessage .deserialize (input ).clickEvent (null ).hoverEvent (null );
6067 final String plain = plainText .serialize (nick );
6168
62- if (plain .length () > NickMiniMessageModule .getEssentials ().getSettings ().getMaxNickLength ()
69+ if (plain .length () > module .getEssentials ().getSettings ().getMaxNickLength ()
6370 && !commandSender .hasPermission ("plex.nickmm.ignore_length_limit" ))
6471 {
6572 return mmString (I18n .tlLiteral ("nickTooLong" ));
6673 }
6774
6875 if (!commandSender .hasPermission ("plex.nickmm.ignore_matching" ))
6976 {
70- for (final User user : NickMiniMessageModule .getEssentials ().getOnlineUsers ())
77+ for (final User user : module .getEssentials ().getOnlineUsers ())
7178 {
7279 final String name = user .getNickname () != null ? plainText .serialize (legacyComponent .deserialize (user .getNickname ())) : user .getName ();
7380
@@ -79,19 +86,13 @@ protected Component execute(@NotNull CommandSender commandSender, @Nullable Play
7986 }
8087
8188 final String legacy = legacyComponent .serialize (nick );
82- User essentialsUser = NickMiniMessageModule .getEssentials ().getUser (player );
89+ User essentialsUser = module .getEssentials ().getUser (player );
8390 essentialsUser .setNickname (legacy );
8491 essentialsUser .setDisplayNick ();
8592
8693 return mmString (I18n .tlLiteral ("nickSet" , legacy ));
8794 }
8895
89- @ Override
90- protected @ NotNull List <String > suggestions (@ NotNull CommandSender sender , @ NotNull String alias , @ NotNull String [] args )
91- {
92- return Collections .emptyList ();
93- }
94-
9596 private static class NicknameTagResolver implements TagResolver
9697 {
9798 private static final TagResolver STANDARD_RESOLVER = TagResolver .standard ();
0 commit comments