1
1
package com .eternalcode .formatter .legacy ;
2
2
3
+ import com .google .common .collect .ImmutableMap ;
3
4
import net .kyori .adventure .text .Component ;
4
5
import net .kyori .adventure .text .serializer .legacy .LegacyComponentSerializer ;
6
+
7
+ import java .util .Map ;
5
8
import java .util .regex .Matcher ;
6
9
import java .util .regex .Pattern ;
7
10
@@ -13,8 +16,34 @@ public final class Legacy {
13
16
public static final String SHADOW = "<ampersand>" ;
14
17
15
18
public static final Pattern ALL_PATTERN = Pattern .compile (".*" );
16
- public static final Pattern AMPERSAND_PATTERN = Pattern .compile ("(?i)" + AMPERSAND + "[0-9A-FK-ORX#]" );
19
+ public static final Pattern AMPERSAND_PATTERN = Pattern .compile ("(?i)" + AMPERSAND + "( [0-9A-FK-ORX#]) " );
17
20
public static final Pattern SHADOW_PATTERN = Pattern .compile ("(?i)" + SHADOW + "[0-9A-FK-ORX#]" );
21
+ public static final Pattern HEX_PATTERN = Pattern .compile ("(?i)" + AMPERSAND + "#([0-9A-F]{6})" );
22
+
23
+ public static final Map <String , String > codeTranslations = new ImmutableMap .Builder <String , String >()
24
+ .put ("0" , "<black>" )
25
+ .put ("1" , "<dark_blue>" )
26
+ .put ("2" , "<dark_green>" )
27
+ .put ("3" , "<dark_aqua>" )
28
+ .put ("4" , "<dark_red>" )
29
+ .put ("5" , "<dark_purple>" )
30
+ .put ("6" , "<gold>" )
31
+ .put ("7" , "<gray>" )
32
+ .put ("8" , "<dark_gray>" )
33
+ .put ("9" , "<blue>" )
34
+ .put ("a" , "<green>" )
35
+ .put ("b" , "<aqua>" )
36
+ .put ("c" , "<red>" )
37
+ .put ("d" , "<light_purple>" )
38
+ .put ("e" , "<yellow>" )
39
+ .put ("f" , "<white>" )
40
+ .put ("k" , "<obfuscated>" )
41
+ .put ("l" , "<bold>" )
42
+ .put ("m" , "<strikethrough>" )
43
+ .put ("n" , "<underlined>" )
44
+ .put ("o" , "<italic>" )
45
+ .put ("r" , "<reset>" )
46
+ .build ();
18
47
19
48
private Legacy () {
20
49
}
@@ -66,4 +95,23 @@ static String placeholderToAmpersand(String text) {
66
95
return builder .toString ();
67
96
}
68
97
98
+ public static String legacyToAdventure (String input ) {
99
+ String result = HEX_PATTERN .matcher (input ).replaceAll (matchResult -> {
100
+ String hex = matchResult .group (1 );
101
+ return "<#" + hex + ">" ;
102
+ });
103
+
104
+ result = AMPERSAND_PATTERN .matcher (result ).replaceAll (matchResult -> {
105
+ String color = matchResult .group (1 );
106
+ String adventure = codeTranslations .get (color .toLowerCase ());
107
+
108
+ if (adventure == null ) {
109
+ return matchResult .group ();
110
+ }
111
+
112
+ return adventure ;
113
+ });
114
+
115
+ return result ;
116
+ }
69
117
}
0 commit comments