diff --git a/core/src/main/java/mc/core/ChatStyle.java b/core/src/main/java/mc/core/ChatStyle.java new file mode 100644 index 0000000..9483244 --- /dev/null +++ b/core/src/main/java/mc/core/ChatStyle.java @@ -0,0 +1,58 @@ +/* + * DmitriyMX + * 2018-04-30 + */ +package mc.core; + +import java.util.regex.Pattern; + +public enum ChatStyle { + BLACK ('0'), + DARK_BLUE ('1'), + DARK_GREEN('2'), + DARK_CYAN ('3'), + DARK_RED ('4'), + PURPLE ('5'), + GOLD ('6'), + GRAY ('7'), + DARK_GRAY ('8'), + BLUE ('9'), + GREEN ('a'), + CYAN ('b'), + RED ('c'), + PINK ('d'), + YELLOW('e'), + WHITE ('f'); + + private static final char COLOR_CHAR = '\u00a7'; // ยง + private static final String codes = "0123456789aAbBcCdDeEfF"; + private static final Pattern EXCAPE_PATTERN = Pattern.compile(COLOR_CHAR + "[0-9a-f]", Pattern.CASE_INSENSITIVE); + + public static String format(char colorChar, String message) { + char[] chars = message.toCharArray(); + for (int i = 0; i < chars.length; i++) { + if (chars[i] == colorChar && codes.indexOf(chars[i+1]) > -1) { + chars[i] = COLOR_CHAR; + chars[i+1] = Character.toLowerCase(chars[i+1]); + i++; + } + } + + return String.valueOf(chars); + } + + public static String escapeStyle(String message) { + return EXCAPE_PATTERN.matcher(message).replaceAll(""); + } + + private char[] toString; + + ChatStyle(char ch) { + toString = new char[]{ COLOR_CHAR, ch }; + } + + @Override + public String toString() { + return String.valueOf(toString); + } +} diff --git a/proto125_netty/src/main/java/mc/core/network/proto_125/netty/PacketHandler.java b/proto125_netty/src/main/java/mc/core/network/proto_125/netty/PacketHandler.java index 67537c7..ccf111f 100644 --- a/proto125_netty/src/main/java/mc/core/network/proto_125/netty/PacketHandler.java +++ b/proto125_netty/src/main/java/mc/core/network/proto_125/netty/PacketHandler.java @@ -16,7 +16,6 @@ import mc.core.network.CSPacket; import mc.core.network.proto_125.netty.wrappers.WrapperNetChannel; import mc.core.network.proto_125.packets.*; import org.slf4j.Marker; -import org.slf4j.helpers.BasicMarker; import org.slf4j.helpers.BasicMarkerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -173,7 +172,7 @@ public class PacketHandler extends SimpleChannelInboundHandler { } public void onChatMessagePacket(Channel channel, ChatMessagePacket packet) { - log.info(CHAT_MARKER, "<{}>: {}", channel.attr(ATTR_PLAYER).get().getName(), packet.getMessage()); + log.info(CHAT_MARKER, "<{}>: {}", channel.attr(ATTR_PLAYER).get().getName(), ChatStyle.escapeStyle(packet.getMessage())); playerManager.getBroadcastChannel().writeAndFlush(packet); } }