11package top .mrxiaom .pluginbase .utils .adventure .serializer ;
22
33import net .kyori .adventure .text .Component ;
4- import net .kyori .adventure .text .TranslationArgument ;
5- import net .kyori .adventure .text .object .ObjectContents ;
6- import net .kyori .adventure .text .object .PlayerHeadObjectContents ;
7- import net .kyori .adventure .text .object .SpriteObjectContents ;
84import net .md_5 .bungee .api .chat .*;
9- import net .md_5 .bungee .api .chat .objects .PlayerObject ;
10- import net .md_5 .bungee .api .chat .objects .SpriteObject ;
11- import net .md_5 .bungee .api .chat .player .Profile ;
12- import net .md_5 .bungee .api .chat .player .Property ;
13-
14- import java .util .ArrayList ;
15- import java .util .List ;
16- import java .util .UUID ;
5+ import top .mrxiaom .pluginbase .utils .adventure .serializer .converter .*;
176
187public class BungeeComponentSerializer {
198 public static BaseComponent serialize (Component input ) {
@@ -28,89 +17,29 @@ public static BaseComponent serialize(Component input) {
2817 return component ;
2918 }
3019
31- @ SuppressWarnings ({"deprecation" })
3220 private static BaseComponent convert (Component input ) {
3321 if (input instanceof net .kyori .adventure .text .TextComponent ) {
3422 return new TextComponent (((net .kyori .adventure .text .TextComponent ) input ).content ());
3523 }
36- if (input instanceof net .kyori .adventure .text .TranslatableComponent ) {
37- String key = ((net .kyori .adventure .text .TranslatableComponent ) input ).key ();
38- List <TranslationArgument > arguments = ((net .kyori .adventure .text .TranslatableComponent ) input ).arguments ();
39- List <Object > args = new ArrayList <>();
40- for (TranslationArgument argument : arguments ) {
41- args .add (argument .value ());
42- }
43- TranslatableComponent component = new TranslatableComponent (key , args .toArray ());
44- try {
45- String fallback = ((net .kyori .adventure .text .TranslatableComponent ) input ).fallback ();
46- if (fallback != null ) {
47- component .setFallback (fallback );
48- }
49- } catch (LinkageError ignored ) {
50- }
51- return component ;
52- }
5324 try {
54- if (input instanceof net .kyori .adventure .text .KeybindComponent ) {
55- String keybind = ((net .kyori .adventure .text .KeybindComponent ) input ).keybind ();
56- return new KeybindComponent (keybind );
57- }
25+ BaseComponent result = ConvertTranslatable .convert (input );
26+ if (result != null ) return result ;
27+ } catch (LinkageError ignored ) {}
28+ try {
29+ BaseComponent result = ConvertKeybind .convert (input );
30+ if (result != null ) return result ;
5831 } catch (LinkageError ignored ) {}
5932 try {
60- if (input instanceof net .kyori .adventure .text .ScoreComponent ) {
61- String name = ((net .kyori .adventure .text .ScoreComponent ) input ).name ();
62- String objective = ((net .kyori .adventure .text .ScoreComponent ) input ).objective ();
63- String value = ((net .kyori .adventure .text .ScoreComponent ) input ).value ();
64- if (value != null ) {
65- return new ScoreComponent (name , objective , value );
66- } else {
67- return new ScoreComponent (name , objective );
68- }
69- }
33+ BaseComponent result = ConvertScore .convert (input );
34+ if (result != null ) return result ;
7035 } catch (LinkageError ignored ) {}
7136 try {
72- if (input instanceof net .kyori .adventure .text .SelectorComponent ) {
73- String selector = ((net .kyori .adventure .text .SelectorComponent ) input ).pattern ();
74- Component separator = ((net .kyori .adventure .text .SelectorComponent ) input ).separator ();
75- if (separator != null ) {
76- return new SelectorComponent (selector , serialize (separator ));
77- } else {
78- return new SelectorComponent (selector );
79- }
80- }
37+ BaseComponent result = ConvertSelector .convert (input );
38+ if (result != null ) return result ;
8139 } catch (LinkageError ignored ) {}
8240 try {
83- if (input instanceof net .kyori .adventure .text .ObjectComponent ) {
84- ObjectContents contents = ((net .kyori .adventure .text .ObjectComponent ) input ).contents ();
85- if (contents instanceof PlayerHeadObjectContents ) {
86- PlayerHeadObjectContents head = (PlayerHeadObjectContents ) contents ;
87- String name = head .name ();
88- UUID uuid = head .id ();
89- boolean hat = head .hat ();
90- List <PlayerHeadObjectContents .ProfileProperty > props = head .profileProperties ();
91- Property [] properties = new Property [props .size ()];
92- for (int i = 0 ; i < props .size (); i ++) {
93- String propName = props .get (i ).name ();
94- String propValue = props .get (i ).value ();
95- String propSign = props .get (i ).signature ();
96- if (propSign != null ) {
97- properties [i ] = new Property (propName , propValue , propSign );
98- } else {
99- properties [i ] = new Property (propName , propValue );
100- }
101- }
102- Profile profile = new Profile (properties );
103- profile .setName (name );
104- profile .setUuid (uuid );
105- return new ObjectComponent (new PlayerObject (profile , hat ));
106- }
107- if (contents instanceof SpriteObjectContents ) {
108- SpriteObjectContents props = (SpriteObjectContents ) contents ;
109- String atlas = props .atlas ().asString ();
110- String sprite = props .sprite ().asString ();
111- return new ObjectComponent (new SpriteObject (atlas , sprite ));
112- }
113- }
41+ BaseComponent result = ConvertObject .convert (input );
42+ if (result != null ) return result ;
11443 } catch (LinkageError ignored ) {}
11544 return new TextComponent ("" );
11645 }
0 commit comments