1515 * Supports multiple formats including MiniMessage, legacy, and JSON.
1616 */
1717public final class AdventureComponentSerializer implements Serializer <Component , String > {
18- private final List < AdventureComponentFormat > serializeOrder ;
18+ private final AdventureComponentFormat serializeFormat ;
1919 private final List <AdventureComponentFormat > deserializeOrder ;
2020
2121 /**
2222 * Creates a new ComponentSerializer with separate format orders for
2323 * serialization and deserialization.
2424 *
25- * @param serializeOrder the order of formats to try when serializing
25+ * @param serializeFormat the format to use when serializing
2626 * @param deserializeOrder the order of formats to try when deserializing
2727 */
28- public AdventureComponentSerializer (List < AdventureComponentFormat > serializeOrder ,
29- List <AdventureComponentFormat > deserializeOrder ) {
30- this .serializeOrder = List . copyOf ( serializeOrder ) ;
28+ public AdventureComponentSerializer (AdventureComponentFormat serializeFormat ,
29+ List <AdventureComponentFormat > deserializeOrder ) {
30+ this .serializeFormat = serializeFormat ;
3131 this .deserializeOrder = List .copyOf (deserializeOrder );
3232 }
3333
3434 /**
3535 * Creates a new ComponentSerializer using the same format order for
3636 * both serialization and deserialization.
3737 *
38- * @param formats the formats to use, in order of preference
38+ * @param serializeFormat the format to use for serialization
39+ * @param deserializeFormats the formats to use for deserialization, in order of
40+ * preference
3941 */
40- public AdventureComponentSerializer (AdventureComponentFormat ... formats ) {
41- this (Arrays .asList (formats ), Arrays .asList (formats ));
42+ public AdventureComponentSerializer (AdventureComponentFormat serializeFormat ,
43+ AdventureComponentFormat ... deserializeFormats ) {
44+ this (serializeFormat , deserializeFormats .length == 0
45+ ? List .of (serializeFormat )
46+ : Arrays .asList (deserializeFormats ));
4247 }
4348
4449 @ Override
@@ -47,12 +52,7 @@ public String serialize(Component element) {
4752 return null ;
4853 }
4954
50- for (AdventureComponentFormat format : serializeOrder ) {
51- return serialize (element , format );
52- }
53-
54- // Fallback to MiniMessage
55- return MiniMessage .miniMessage ().serialize (element );
55+ return serialize (element , serializeFormat );
5656 }
5757
5858 @ Override
@@ -77,29 +77,29 @@ private String serialize(Component component, AdventureComponentFormat format) {
7777 return switch (format ) {
7878 case MINI_MESSAGE -> MiniMessage .miniMessage ().serialize (component );
7979 case LEGACY_AMPERSAND ->
80- LegacyComponentSerializer .legacyAmpersand ().serialize (component );
80+ LegacyComponentSerializer .legacyAmpersand ().serialize (component );
8181 case LEGACY_SECTION ->
82- LegacyComponentSerializer .legacySection ().serialize (component );
82+ LegacyComponentSerializer .legacySection ().serialize (component );
8383 case MINECRAFT_JSON -> GsonComponentSerializer .gson ().serialize (component );
8484 case TRANSLATION_KEY ->
85- component instanceof TranslatableComponent translatableComponent
86- ? translatableComponent .key ()
87- : PlainTextComponentSerializer .plainText ().serialize (component );
85+ component instanceof TranslatableComponent translatableComponent
86+ ? translatableComponent .key ()
87+ : PlainTextComponentSerializer .plainText ().serialize (component );
8888 };
8989 }
9090
9191 private Component deserialize (String string , AdventureComponentFormat format ) {
9292 return switch (format ) {
9393 case MINI_MESSAGE ->
94- MiniMessage .miniMessage ().deserialize (string );
94+ MiniMessage .miniMessage ().deserialize (string );
9595 case LEGACY_AMPERSAND ->
96- LegacyComponentSerializer .legacyAmpersand ().deserialize (string );
96+ LegacyComponentSerializer .legacyAmpersand ().deserialize (string );
9797 case LEGACY_SECTION ->
98- LegacyComponentSerializer .legacySection ().deserialize (string );
98+ LegacyComponentSerializer .legacySection ().deserialize (string );
9999 case MINECRAFT_JSON ->
100- GsonComponentSerializer .gson ().deserialize (string );
100+ GsonComponentSerializer .gson ().deserialize (string );
101101 case TRANSLATION_KEY ->
102- Component .translatable (string );
102+ Component .translatable (string );
103103 };
104104 }
105105}
0 commit comments