1111
1212import net .md_5 .bungee .api .chat .BaseComponent ;
1313import net .md_5 .bungee .api .chat .ClickEvent ;
14+ import net .md_5 .bungee .api .chat .HoverEvent ;
1415import net .md_5 .bungee .api .chat .TextComponent ;
1516
1617public class CommandsDisplay {
1718
19+ @ SuppressWarnings ("deprecation" )
1820 public static BaseComponent process (BaseComponent basecomponent ) {
1921 List <BaseComponent > basecomponentlist = CustomStringUtils .loadExtras (basecomponent );
2022 List <BaseComponent > newlist = new ArrayList <BaseComponent >();
@@ -37,16 +39,44 @@ public static BaseComponent process(BaseComponent basecomponent) {
3739 before .setText (before .getText ().substring (0 , end ));
3840 StringBuilder cmd = new StringBuilder ();
3941 List <BaseComponent > cmdCompList = new ArrayList <BaseComponent >();
42+
43+ String [] formmat = InteractiveChat .clickableCommandsFormat .split ("\\ {Command\\ }" );
44+ String prepend = formmat [0 ];
45+ String color = ChatColorUtils .getLastColors (prepend );
46+ String append = formmat [formmat .length - 1 ];
47+
4048 for (int u = indexOfParsingStart ; u < i ; u ++) {
4149 BaseComponent part = basecomponentlist .get (u );
4250 Bukkit .getConsoleSender ().sendMessage (ChatColorUtils .stripColor (part .toLegacyText ()));
51+ if (InteractiveChat .clickableCommandsEnforceColors ) {
52+ if (part instanceof TextComponent ) {
53+ ((TextComponent ) part ).setText (color + ChatColorUtils .stripColor (((TextComponent ) part ).getText ()));
54+ } else {
55+ part = ChatColorUtils .applyColor (part , color );
56+ }
57+ }
4358 cmdCompList .add (part );
4459 cmd .append (ChatColorUtils .stripColor (part .toLegacyText ()));
4560 }
61+ if (InteractiveChat .clickableCommandsEnforceColors ) {
62+ before .setText (color + ChatColorUtils .stripColor (before .getText ()));
63+ }
4664 cmdCompList .add (before );
65+ //Bukkit.getConsoleSender().sendMessage(((TextComponent) before).getText().replace("§", "&"));
4766 cmd .append (ChatColorUtils .stripColor (before .toLegacyText ()));
67+
68+ HoverEvent hover = null ;
69+ if (InteractiveChat .clickableCommandsHoverText != null ) {
70+ hover = new HoverEvent (HoverEvent .Action .SHOW_TEXT , new BaseComponent [] {new TextComponent (InteractiveChat .clickableCommandsHoverText )});
71+ }
4872 ClickEvent click = new ClickEvent (InteractiveChat .clickableCommandsAction , cmd .toString ());
73+ cmdCompList .add (0 , new TextComponent (prepend ));
74+ cmdCompList .add (new TextComponent (append ));
75+
4976 for (BaseComponent each : cmdCompList ) {
77+ if (hover != null ) {
78+ each .setHoverEvent (hover );
79+ }
5080 each .setClickEvent (click );
5181 newlist .add (each );
5282 }
@@ -81,15 +111,37 @@ public static BaseComponent process(BaseComponent basecomponent) {
81111 if (i + 1 == basecomponentlist .size ()) {
82112 StringBuilder cmd = new StringBuilder ();
83113 List <BaseComponent > cmdCompList = new ArrayList <BaseComponent >();
84- for (int u = indexOfParsingStart ; u < i ; u ++) {
114+ String [] formmat = InteractiveChat .clickableCommandsFormat .split ("\\ {Command\\ }" );
115+ String prepend = formmat [0 ];
116+ String color = ChatColorUtils .getLastColors (prepend );
117+ String append = formmat [formmat .length - 1 ];
118+
119+ for (int u = indexOfParsingStart ; u <= i ; u ++) {
85120 BaseComponent part = basecomponentlist .get (u );
121+ Bukkit .getConsoleSender ().sendMessage (ChatColorUtils .stripColor (part .toLegacyText ()));
122+ if (InteractiveChat .clickableCommandsEnforceColors ) {
123+ if (part instanceof TextComponent ) {
124+ ((TextComponent ) part ).setText (color + ChatColorUtils .stripColor (((TextComponent ) part ).getText ()));
125+ } else {
126+ part = ChatColorUtils .applyColor (part , color );
127+ }
128+ }
86129 cmdCompList .add (part );
87130 cmd .append (ChatColorUtils .stripColor (part .toLegacyText ()));
88131 }
89- cmdCompList .add (base );
90- cmd .append (ChatColorUtils .stripColor (base .toLegacyText ()));
132+
133+ HoverEvent hover = null ;
134+ if (InteractiveChat .clickableCommandsHoverText != null ) {
135+ hover = new HoverEvent (HoverEvent .Action .SHOW_TEXT , new BaseComponent [] {new TextComponent (InteractiveChat .clickableCommandsHoverText )});
136+ }
91137 ClickEvent click = new ClickEvent (InteractiveChat .clickableCommandsAction , cmd .toString ());
138+ cmdCompList .add (0 , new TextComponent (prepend ));
139+ cmdCompList .add (new TextComponent (append ));
140+
92141 for (BaseComponent each : cmdCompList ) {
142+ if (hover != null ) {
143+ each .setHoverEvent (hover );
144+ }
93145 each .setClickEvent (click );
94146 newlist .add (each );
95147 }
0 commit comments