diff --git a/core/src/main/java/nl/matsv/viabackwards/api/rewriters/EntityRewriter.java b/core/src/main/java/nl/matsv/viabackwards/api/rewriters/EntityRewriter.java index 9236f03f..ae5b46c9 100644 --- a/core/src/main/java/nl/matsv/viabackwards/api/rewriters/EntityRewriter.java +++ b/core/src/main/java/nl/matsv/viabackwards/api/rewriters/EntityRewriter.java @@ -30,6 +30,7 @@ import us.myles.ViaVersion.api.minecraft.metadata.MetaType; import us.myles.ViaVersion.api.minecraft.metadata.Metadata; import us.myles.ViaVersion.api.minecraft.metadata.types.MetaType1_9; import us.myles.ViaVersion.exception.CancelException; +import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.ChatRewriter; import java.util.ArrayList; import java.util.List; @@ -51,6 +52,9 @@ public abstract class EntityRewriter extends Rewrit @Getter(AccessLevel.PROTECTED) @Setter(AccessLevel.PROTECTED) private int displayNameIndex = 2; + @Getter(AccessLevel.PROTECTED) + @Setter(AccessLevel.PROTECTED) + private boolean isDisplayNameJson = false; protected AbstractEntityType getEntityType(UserConnection connection, int id) { return getEntityTracker(connection).getEntityType(id); @@ -149,7 +153,11 @@ public abstract class EntityRewriter extends Rewrit if (entData.getMobName() != null && (data.getValue() == null || ((String) data.getValue()).isEmpty()) && data.getMetaType().getTypeID() == getDisplayNameMetaType().getTypeID()) { - data.setValue(entData.getMobName()); + String mobName = entData.getMobName(); + if (isDisplayNameJson) { + mobName = ChatRewriter.legacyTextToJson(mobName); + } + data.setValue(mobName); } } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java index 91abf59d..9afa969a 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java @@ -21,7 +21,7 @@ import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; @Getter public class Protocol1_13_2To1_14 extends BackwardsProtocol { private BlockItemPackets1_14 blockItemPackets; - private EntityPackets1_14 entityPacket; + private EntityPackets1_14 entityPackets; static { BackwardsMappings.init(); @@ -32,8 +32,8 @@ public class Protocol1_13_2To1_14 extends BackwardsProtocol { protected void registerPackets() { blockItemPackets = new BlockItemPackets1_14(); blockItemPackets.register(this); - entityPacket = new EntityPackets1_14(); - entityPacket.register(this); + entityPackets = new EntityPackets1_14(); + entityPackets.register(this); new PlayerPackets1_14().register(this); new SoundPackets1_14().register(this); diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java index deb5f193..e9e74104 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java @@ -2,6 +2,9 @@ package nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.packets; import com.google.common.collect.ImmutableSet; import nl.matsv.viabackwards.ViaBackwards; +import nl.matsv.viabackwards.api.entities.storage.EntityTracker; +import nl.matsv.viabackwards.api.entities.types.AbstractEntityType; +import nl.matsv.viabackwards.api.entities.types.EntityType1_14; import nl.matsv.viabackwards.api.rewriters.BlockItemRewriter; import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.Protocol1_13_2To1_14; import us.myles.ViaVersion.api.PacketWrapper; @@ -10,9 +13,12 @@ import us.myles.ViaVersion.api.minecraft.Environment; import us.myles.ViaVersion.api.minecraft.chunks.Chunk; import us.myles.ViaVersion.api.minecraft.chunks.ChunkSection; import us.myles.ViaVersion.api.minecraft.item.Item; +import us.myles.ViaVersion.api.minecraft.metadata.Metadata; +import us.myles.ViaVersion.api.minecraft.metadata.types.MetaType1_13_2; import us.myles.ViaVersion.api.remapper.PacketHandler; import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.api.type.Type; +import us.myles.ViaVersion.api.type.types.version.Types1_13; import us.myles.ViaVersion.packets.State; import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.ChatRewriter; import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.types.Chunk1_13Type; @@ -26,7 +32,9 @@ import us.myles.viaversion.libs.opennbt.tag.builtin.ListTag; import us.myles.viaversion.libs.opennbt.tag.builtin.StringTag; import us.myles.viaversion.libs.opennbt.tag.builtin.Tag; +import java.util.ArrayList; import java.util.Arrays; +import java.util.List; import java.util.Set; public class BlockItemPackets1_14 extends BlockItemRewriter { @@ -224,6 +232,31 @@ public class BlockItemPackets1_14 extends BlockItemRewriter 3) { + ViaBackwards.getPlatform().getLogger().warning("Received invalid horse armor: " + item); + wrapper.cancel(); + return; + } + List metadataList = new ArrayList<>(); + metadataList.add(new Metadata(16, MetaType1_13_2.VarInt, armorType)); + wrapper.write(Types1_13.METADATA_LIST, metadataList); + } + } + }); } }); diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java index 18139b24..56f9f797 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java @@ -289,6 +289,9 @@ public class EntityPackets1_14 extends EntityRewriter { @Override protected void registerRewrites() { + setDisplayNameJson(true); + setDisplayNameMetaType(MetaType1_13_2.OptChat); + regEntType(EntityType1_14.EntityType.CAT, EntityType1_14.EntityType.OCELOT).mobName("Cat").spawnMetadata(e -> { // e.add(new Metadata(13, MetaType1_13_2.Byte, (byte) 0x4)); // Tamed cat }); @@ -426,7 +429,7 @@ public class EntityPackets1_14 extends EntityRewriter { Metadata meta = e.getData(); int typeId = meta.getMetaType().getTypeID(); if (typeId > 15) { - System.out.println("new 1.14 metadata was not handled: " + meta + " entity: " + e.getEntity().getType()); + ViaBackwards.getPlatform().getLogger().warning("New 1.14 metadata was not handled: " + meta + " entity: " + e.getEntity().getType()); return null; } return meta; diff --git a/core/src/main/resources/assets/viabackwards/data/mapping-1.13.2to1.14.json b/core/src/main/resources/assets/viabackwards/data/mapping-1.13.2to1.14.json index 84c6b376..195f31a7 100644 --- a/core/src/main/resources/assets/viabackwards/data/mapping-1.13.2to1.14.json +++ b/core/src/main/resources/assets/viabackwards/data/mapping-1.13.2to1.14.json @@ -2525,16 +2525,16 @@ "minecraft:cartography_table": "minecraft:crafting_table", "minecraft:fletching_table": "minecraft:crafting_table", "minecraft:smithing_table": "minecraft:crafting_table", - "minecraft:lantern[hanging=true]": "redstone_lamp[lit=true]", - "minecraft:lantern[hanging=false]": "redstone_lamp[lit=true]", - "minecraft:composter[level=0]": "[level=0]", - "minecraft:composter[level=1]": "[level=0]", - "minecraft:composter[level=2]": "[level=1]", - "minecraft:composter[level=3]": "[level=1]", - "minecraft:composter[level=4]": "[level=1]", - "minecraft:composter[level=5]": "[level=2]", - "minecraft:composter[level=6]": "[level=2]", - "minecraft:composter[level=7]": "[level=2]", - "minecraft:composter[level=8]": "[level=3]" + "minecraft:lantern[hanging=true]": "minecraft:redstone_lamp[lit=true]", + "minecraft:lantern[hanging=false]": "minecraft:redstone_lamp[lit=true]", + "minecraft:composter[level=0]": "minecraft:cauldron[level=0]", + "minecraft:composter[level=1]": "minecraft:cauldron[level=0]", + "minecraft:composter[level=2]": "minecraft:cauldron[level=1]", + "minecraft:composter[level=3]": "minecraft:cauldron[level=1]", + "minecraft:composter[level=4]": "minecraft:cauldron[level=1]", + "minecraft:composter[level=5]": "minecraft:cauldron[level=2]", + "minecraft:composter[level=6]": "minecraft:cauldron[level=2]", + "minecraft:composter[level=7]": "minecraft:cauldron[level=2]", + "minecraft:composter[level=8]": "minecraft:cauldron[level=3]" } } \ No newline at end of file