diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java index c3767c19..494f23a4 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java @@ -236,7 +236,9 @@ public class PlayerPacket1_13 extends Rewriter { String displayName = wrapper.read(Type.STRING); displayName = ChatRewriter.jsonTextToLegacy(displayName); displayName = ChatUtil.removeUnusedColor(displayName, 'f'); - if (displayName.length() > 32) displayName = displayName.substring(0, 32); + if (displayName.length() > 32) { + displayName = displayName.substring(0, 32); + } wrapper.write(Type.STRING, displayName); byte flags = wrapper.read(Type.BYTE); @@ -261,9 +263,10 @@ public class PlayerPacket1_13 extends Rewriter { if (prefix.endsWith("§")) prefix = prefix.substring(0, prefix.length() - 1); String suffix = suffixComponent == null || suffixComponent.isJsonNull() ? "" : ChatRewriter.jsonTextToLegacy(suffixComponent.toString()); - suffix = ChatUtil.removeUnusedColor(suffix, 'f'); + suffix = ChatUtil.removeUnusedColor(suffix, '\0'); // Don't remove white coloring if (suffix.length() > 16) suffix = suffix.substring(0, 16); if (suffix.endsWith("§")) suffix = suffix.substring(0, suffix.length() - 1); + wrapper.write(Type.STRING, prefix); wrapper.write(Type.STRING, suffix); diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_16_1to1_16_2/packets/EntityPackets1_16_2.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_16_1to1_16_2/packets/EntityPackets1_16_2.java index 31ed5de0..aea82dc7 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_16_1to1_16_2/packets/EntityPackets1_16_2.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_16_1to1_16_2/packets/EntityPackets1_16_2.java @@ -91,7 +91,7 @@ public class EntityPackets1_16_2 extends EntityRewriter mapTypes(Entity1_16_2Types.EntityType.values(), Entity1_16Types.EntityType.class); mapEntity(Entity1_16_2Types.EntityType.PIGLIN_BRUTE, Entity1_16_2Types.EntityType.PIGLIN).jsonName("Piglin Brute"); - registerMetaHandler().filter(Entity1_16_2Types.EntityType.ABSTRACT_PIGLIN).handle(meta -> { + registerMetaHandler().filter(Entity1_16_2Types.EntityType.ABSTRACT_PIGLIN, true).handle(meta -> { if (meta.getIndex() == 15) { meta.getData().setId(16); } else if (meta.getIndex() == 16) { diff --git a/core/src/main/java/nl/matsv/viabackwards/utils/ChatUtil.java b/core/src/main/java/nl/matsv/viabackwards/utils/ChatUtil.java index ef2593e4..36a64f92 100644 --- a/core/src/main/java/nl/matsv/viabackwards/utils/ChatUtil.java +++ b/core/src/main/java/nl/matsv/viabackwards/utils/ChatUtil.java @@ -12,6 +12,7 @@ public class ChatUtil { public static String removeUnusedColor(String legacy, char defaultColor, boolean isPrefix) { if (legacy == null) return null; + Pattern pattern = isPrefix ? UNUSED_COLOR_PATTERN_PREFIX : UNUSED_COLOR_PATTERN; legacy = pattern.matcher(legacy).replaceAll("$1$2"); StringBuilder builder = new StringBuilder(); @@ -22,10 +23,12 @@ public class ChatUtil { builder.append(current); continue; } + current = legacy.charAt(++i); - if (current == last) continue; - builder.append('§').append(current); - last = current; + if (current != last) { + builder.append('§').append(current); + last = current; + } } return builder.toString(); }