11package simplexity .simplenicks .commands ;
22
33import net .kyori .adventure .text .Component ;
4+ import net .kyori .adventure .text .minimessage .MiniMessage ;
45import net .kyori .adventure .text .minimessage .tag .resolver .TagResolver ;
6+ import net .kyori .adventure .text .serializer .plain .PlainTextComponentSerializer ;
57import org .bukkit .command .CommandSender ;
68import org .bukkit .entity .Player ;
79import org .bukkit .permissions .Permission ;
10+ import simplexity .simplenicks .config .LocaleHandler ;
811import simplexity .simplenicks .util .NickHandler ;
912import simplexity .simplenicks .util .TagPermission ;
1013
1114import java .util .ArrayList ;
1215
1316public class Set extends SubCommand {
17+ MiniMessage serializer = MiniMessage .builder ().tags (TagResolver .empty ()).build ();
1418
1519 public Set (String commandName , Permission basicPermission , Permission adminPermission , boolean consoleRunNoPlayer ) {
1620 super (commandName , basicPermission , adminPermission , consoleRunNoPlayer );
1721 }
1822
1923 @ Override
2024 public void executeOnOther (CommandSender sender , Player player , String [] args ) {
21-
22-
25+ if (args .length < 3 ) {
26+ sender .sendMessage (parsedMessage (sender , player , LocaleHandler .getInstance ().getNotEnoughArgs (), "" ));
27+ return ;
28+ }
29+ String nickname = args [2 ];
30+ if (setPlayerNick (player , nickname )){
31+ sender .sendMessage (parsedMessage (sender , player , LocaleHandler .getInstance ().getChangedOther (), nickname ));
32+ player .sendMessage (parsedMessage (sender , player , LocaleHandler .getInstance ().getChangedByOther (), nickname ));
33+ } else {
34+ sender .sendMessage (parsedMessage (sender , player , LocaleHandler .getInstance ().getInvalidTags (), nickname ));
35+ }
2336 }
2437
2538 @ Override
2639 public void executeOnSelf (CommandSender sender , Player player , String [] args ) {
40+ if (args .length < 2 ) {
41+ player .sendMessage (parsedMessage (sender , player , LocaleHandler .getInstance ().getNotEnoughArgs (), "" ));
42+ return ;
43+ }
2744 String nickname = args [1 ];
45+ if (setPlayerNick (player , nickname )){
46+ player .sendMessage (parsedMessage (sender , player , LocaleHandler .getInstance ().getChangedSelf (), nickname ));
47+ } else {
48+ player .sendMessage (parsedMessage (sender , player , LocaleHandler .getInstance ().getInvalidTags (), nickname ));
49+ }
50+ }
51+
52+ private boolean setPlayerNick (Player player , String nickname ) {
2853 Component nickComponent = getNickComponent (player , nickname );
54+ if (nickComponent == null ) {
55+ return false ;
56+ }
2957 String nickToSave = miniMessage .serialize (nickComponent );
3058 NickHandler .getInstance ().setNickname (player , nickToSave );
31- player .sendMessage (miniMessage .deserialize ("<green>Nickname set to: " + nickComponent ));
32- player .sendMessage (miniMessage .deserialize ("<green>Nickname saved as: " + nickToSave ));
33- }
34-
35- private void setPlayerNick (Player player , String nick , TagResolver resolver ) {
36- Component nameComponent = miniMessage .deserialize (nick , resolver );
37- NickHandler .getInstance ().setNickname (player , nick );
59+ return true ;
3860 }
3961
4062 @ Override
@@ -44,20 +66,24 @@ public ArrayList<String> tabComplete(CommandSender sender) {
4466
4567 private Component getNickComponent (Player player , String nick ) {
4668 int i = 0 ;
69+ String strippedMessage = miniMessage .stripTags (nick );
4770 TagResolver .Builder resolverBuilder = TagResolver .builder ();
71+ Component finalNick = null ;
4872 for (TagPermission tagPermission : TagPermission .values ()) {
4973 if (!player .hasPermission (tagPermission .getPermission ())) {
5074 continue ;
5175 }
5276 i ++;
5377 resolverBuilder .resolver (tagPermission .getTagResolver ());
78+ finalNick = serializer .deserialize (nick , tagPermission .getTagResolver ());
5479 }
5580 if (i == 0 ) {
56- String strippedMessage = miniMessage .stripTags (nick );
5781 return Component .text (strippedMessage );
5882 }
59- return miniMessage .deserialize (nick , resolverBuilder .build ());
83+ String plainNick = PlainTextComponentSerializer .plainText ().serialize (finalNick );
84+ if (!plainNick .equals (strippedMessage )) {
85+ return null ;
86+ }
87+ return finalNick ;
6088 }
61-
62-
6389}
0 commit comments