Commit 7fce24deec88037ecf4a976583ced326dfcdb297
1 parent
c6092c8f
Fix compilation under JDK7 and later
Showing
1 changed file
with
130 additions
and
130 deletions
java/common/com/mumfrey/liteloader/util/ChatUtilities.java
1 | -package com.mumfrey.liteloader.util; | |
2 | - | |
3 | -import java.util.List; | |
4 | - | |
5 | -import net.minecraft.util.ChatComponentText; | |
6 | -import net.minecraft.util.ChatStyle; | |
7 | -import net.minecraft.util.EnumChatFormatting; | |
8 | -import net.minecraft.util.IChatComponent; | |
9 | - | |
10 | -/** | |
11 | - * Utility functions for chat | |
12 | - * | |
13 | - * @author Adam Mummery-Smith | |
14 | - */ | |
15 | -public abstract class ChatUtilities | |
16 | -{ | |
17 | - private static String formattingCodeLookup; | |
18 | - | |
19 | - static | |
20 | - { | |
21 | - StringBuilder formattingCodes = new StringBuilder(); | |
22 | - | |
23 | - for (EnumChatFormatting chatFormat : EnumChatFormatting.values()) | |
24 | - { | |
25 | - formattingCodes.append(chatFormat.toString().charAt(1)); | |
26 | - } | |
27 | - | |
28 | - ChatUtilities.formattingCodeLookup = formattingCodes.toString(); | |
29 | - } | |
30 | - | |
31 | - private ChatUtilities() {} | |
32 | - | |
33 | - /** | |
34 | - * Get a chat style from a legacy formatting code | |
35 | - * | |
36 | - * @param code Code | |
37 | - * @return | |
38 | - */ | |
39 | - public static ChatStyle getChatStyleFromCode(char code) | |
40 | - { | |
41 | - int pos = ChatUtilities.formattingCodeLookup.indexOf(code); | |
42 | - if (pos < 0) return null; | |
43 | - EnumChatFormatting format = EnumChatFormatting.values()[pos]; | |
44 | - | |
45 | - ChatStyle style = new ChatStyle(); | |
46 | - if (format.isColor()) | |
47 | - { | |
48 | - style.setColor(format); | |
49 | - } | |
50 | - else if (format.isFancyStyling()) | |
51 | - { | |
52 | - switch (format) | |
53 | - { | |
54 | - case BOLD: style.setBold(true); break; | |
55 | - case ITALIC: style.setItalic(true); break; | |
56 | - case STRIKETHROUGH: style.setStrikethrough(true); break; | |
57 | - case UNDERLINE: style.setUnderlined(true); break; | |
58 | - case OBFUSCATED: style.setObfuscated(true); break; | |
59 | - } | |
60 | - } | |
61 | - | |
62 | - return style; | |
63 | - } | |
64 | - | |
65 | - /** | |
66 | - * Convert a component containing text formatted with legacy codes to a native ChatComponent structure | |
67 | - */ | |
68 | - public static IChatComponent convertLegacyCodes(IChatComponent chat) | |
69 | - { | |
70 | - return ChatUtilities.covertCodesInPlace(chat); | |
71 | - } | |
72 | - | |
73 | - private static List<IChatComponent> covertCodesInPlace(List<IChatComponent> siblings) | |
74 | - { | |
75 | - for (int index = 0; index < siblings.size(); index++) | |
76 | - { | |
77 | - siblings.set(index, ChatUtilities.covertCodesInPlace(siblings.get(index))); | |
78 | - } | |
79 | - | |
80 | - return siblings; | |
81 | - } | |
82 | - | |
83 | - @SuppressWarnings("unchecked") | |
84 | - private static IChatComponent covertCodesInPlace(IChatComponent component) | |
85 | - { | |
86 | - IChatComponent newComponent = null; | |
87 | - if (component instanceof ChatComponentText) | |
88 | - { | |
89 | - ChatComponentText textComponent = (ChatComponentText)component; | |
90 | - ChatStyle style = textComponent.getChatStyle(); | |
91 | - String text = textComponent.getChatComponentText_TextValue(); | |
92 | - | |
93 | - int pos = text.indexOf('\247'); | |
94 | - while (pos > -1 && text != null) | |
95 | - { | |
96 | - if (pos < text.length() - 1) | |
97 | - { | |
98 | - IChatComponent head = new ChatComponentText(pos > 0 ? text.substring(0, pos) : "").setChatStyle(style); | |
99 | - style = ChatUtilities.getChatStyleFromCode(text.charAt(pos + 1)); | |
100 | - text = text.substring(pos + 2); | |
101 | - newComponent = (newComponent == null) ? head : newComponent.appendSibling(head); | |
102 | - pos = text.indexOf('\247'); | |
103 | - } | |
104 | - else | |
105 | - { | |
106 | - text = null; | |
107 | - } | |
108 | - } | |
109 | - | |
110 | - if (text != null) | |
111 | - { | |
112 | - IChatComponent tail = new ChatComponentText(text).setChatStyle(style); | |
113 | - newComponent = (newComponent == null) ? tail : newComponent.appendSibling(tail); | |
114 | - } | |
115 | - } | |
116 | - | |
117 | - if (newComponent == null) | |
118 | - { | |
119 | - ChatUtilities.covertCodesInPlace(component.getSiblings()); | |
120 | - return component; | |
121 | - } | |
122 | - | |
123 | - for (IChatComponent oldSibling : ChatUtilities.covertCodesInPlace(component.getSiblings())) | |
124 | - { | |
125 | - newComponent.appendSibling(oldSibling); | |
126 | - } | |
127 | - | |
128 | - return newComponent; | |
129 | - } | |
130 | -} | |
1 | +package com.mumfrey.liteloader.util; | |
2 | + | |
3 | +import java.util.List; | |
4 | + | |
5 | +import net.minecraft.util.ChatComponentText; | |
6 | +import net.minecraft.util.ChatStyle; | |
7 | +import net.minecraft.util.EnumChatFormatting; | |
8 | +import net.minecraft.util.IChatComponent; | |
9 | + | |
10 | +/** | |
11 | + * Utility functions for chat | |
12 | + * | |
13 | + * @author Adam Mummery-Smith | |
14 | + */ | |
15 | +public abstract class ChatUtilities | |
16 | +{ | |
17 | + private static String formattingCodeLookup; | |
18 | + | |
19 | + static | |
20 | + { | |
21 | + StringBuilder formattingCodes = new StringBuilder(); | |
22 | + | |
23 | + for (EnumChatFormatting chatFormat : EnumChatFormatting.values()) | |
24 | + { | |
25 | + formattingCodes.append(chatFormat.toString().charAt(1)); | |
26 | + } | |
27 | + | |
28 | + ChatUtilities.formattingCodeLookup = formattingCodes.toString(); | |
29 | + } | |
30 | + | |
31 | + private ChatUtilities() {} | |
32 | + | |
33 | + /** | |
34 | + * Get a chat style from a legacy formatting code | |
35 | + * | |
36 | + * @param code Code | |
37 | + * @return | |
38 | + */ | |
39 | + public static ChatStyle getChatStyleFromCode(char code) | |
40 | + { | |
41 | + int pos = ChatUtilities.formattingCodeLookup.indexOf(code); | |
42 | + if (pos < 0) return null; | |
43 | + EnumChatFormatting format = EnumChatFormatting.values()[pos]; | |
44 | + | |
45 | + ChatStyle style = new ChatStyle(); | |
46 | + if (format.isColor()) | |
47 | + { | |
48 | + style.setColor(format); | |
49 | + } | |
50 | + else if (format.isFancyStyling()) | |
51 | + { | |
52 | + switch (format) | |
53 | + { | |
54 | + case BOLD: style.setBold(true); break; | |
55 | + case ITALIC: style.setItalic(true); break; | |
56 | + case STRIKETHROUGH: style.setStrikethrough(true); break; | |
57 | + case UNDERLINE: style.setUnderlined(true); break; | |
58 | + case OBFUSCATED: style.setObfuscated(true); break; | |
59 | + } | |
60 | + } | |
61 | + | |
62 | + return style; | |
63 | + } | |
64 | + | |
65 | + /** | |
66 | + * Convert a component containing text formatted with legacy codes to a native ChatComponent structure | |
67 | + */ | |
68 | + public static IChatComponent convertLegacyCodes(IChatComponent chat) | |
69 | + { | |
70 | + return ChatUtilities.covertCodesInPlace(chat); | |
71 | + } | |
72 | + | |
73 | + private static List<IChatComponent> covertCodesInPlace(List<IChatComponent> siblings) | |
74 | + { | |
75 | + for (int index = 0; index < siblings.size(); index++) | |
76 | + { | |
77 | + siblings.set(index, ChatUtilities.covertCodesInPlace(siblings.get(index))); | |
78 | + } | |
79 | + | |
80 | + return siblings; | |
81 | + } | |
82 | + | |
83 | + @SuppressWarnings("unchecked") | |
84 | + private static IChatComponent covertCodesInPlace(IChatComponent component) | |
85 | + { | |
86 | + IChatComponent newComponent = null; | |
87 | + if (component instanceof ChatComponentText) | |
88 | + { | |
89 | + ChatComponentText textComponent = (ChatComponentText)component; | |
90 | + ChatStyle style = textComponent.getChatStyle(); | |
91 | + String text = textComponent.getChatComponentText_TextValue(); | |
92 | + | |
93 | + int pos = text.indexOf('\247'); | |
94 | + while (pos > -1 && text != null) | |
95 | + { | |
96 | + if (pos < text.length() - 1) | |
97 | + { | |
98 | + IChatComponent head = new ChatComponentText(pos > 0 ? text.substring(0, pos) : "").setChatStyle(style); | |
99 | + style = ChatUtilities.getChatStyleFromCode(text.charAt(pos + 1)); | |
100 | + text = text.substring(pos + 2); | |
101 | + newComponent = (newComponent == null) ? head : newComponent.appendSibling(head); | |
102 | + pos = text.indexOf('\247'); | |
103 | + } | |
104 | + else | |
105 | + { | |
106 | + text = null; | |
107 | + } | |
108 | + } | |
109 | + | |
110 | + if (text != null) | |
111 | + { | |
112 | + IChatComponent tail = new ChatComponentText(text).setChatStyle(style); | |
113 | + newComponent = (newComponent == null) ? tail : newComponent.appendSibling(tail); | |
114 | + } | |
115 | + } | |
116 | + | |
117 | + if (newComponent == null) | |
118 | + { | |
119 | + ChatUtilities.covertCodesInPlace(component.getSiblings()); | |
120 | + return component; | |
121 | + } | |
122 | + | |
123 | + for (IChatComponent oldSibling : ChatUtilities.covertCodesInPlace((List<IChatComponent>)component.getSiblings())) | |
124 | + { | |
125 | + newComponent.appendSibling(oldSibling); | |
126 | + } | |
127 | + | |
128 | + return newComponent; | |
129 | + } | |
130 | +} | ... | ... |