From 84624a488415787a957b3e623fcf67b6de138f91 Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Wed, 11 Dec 2019 02:00:51 +0100 Subject: [PATCH] fix entity metadata in spawn packet being ignored --- .../packets/EntityPackets.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_15to1_14_4/packets/EntityPackets.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_15to1_14_4/packets/EntityPackets.java index 582a3d93f..f546b710f 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_15to1_14_4/packets/EntityPackets.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_15to1_14_4/packets/EntityPackets.java @@ -3,6 +3,7 @@ package us.myles.ViaVersion.protocols.protocol1_15to1_14_4.packets; import com.google.common.base.Optional; import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.entities.Entity1_15Types; +import us.myles.ViaVersion.api.minecraft.metadata.Metadata; import us.myles.ViaVersion.api.protocol.Protocol; import us.myles.ViaVersion.api.remapper.PacketHandler; import us.myles.ViaVersion.api.remapper.PacketRemapper; @@ -13,6 +14,7 @@ import us.myles.ViaVersion.protocols.protocol1_15to1_14_4.MetadataRewriter; import us.myles.ViaVersion.protocols.protocol1_15to1_14_4.Protocol1_15To1_14_4; import us.myles.ViaVersion.protocols.protocol1_15to1_14_4.storage.EntityTracker; +import java.util.List; import java.util.UUID; public class EntityPackets { @@ -72,7 +74,6 @@ public class EntityPackets { map(Type.SHORT); // 9 - Velocity X map(Type.SHORT); // 10 - Velocity Y map(Type.SHORT); // 11 - Velocity Z - map(Types1_14.METADATA_LIST, Type.NOTHING); // removed - probably sent in an update packet? handler(new PacketHandler() { @Override @@ -82,6 +83,13 @@ public class EntityPackets { Entity1_15Types.EntityType entityType = Entity1_15Types.getTypeFromId(getNewEntityId(typeId)); wrapper.user().get(EntityTracker.class).addEntity(entityId, entityType); wrapper.set(Type.VAR_INT, 1, entityType.getId()); + + List metadata = wrapper.read(Types1_14.METADATA_LIST); + MetadataRewriter.handleMetadata(entityId, entityType, metadata, wrapper.user()); + PacketWrapper metadataUpdate = wrapper.create(0x44); + metadataUpdate.write(Type.VAR_INT, entityId); + metadataUpdate.write(Types1_14.METADATA_LIST, metadata); + metadataUpdate.send(Protocol1_15To1_14_4.class); } }); } @@ -98,15 +106,20 @@ public class EntityPackets { map(Type.DOUBLE); // 4 - Z map(Type.BYTE); // 5 - Yaw map(Type.BYTE); // 6 - Pitch - map(Types1_14.METADATA_LIST, Type.NOTHING); // removed - probably sent in an update packet? handler(new PacketHandler() { @Override public void handle(PacketWrapper wrapper) throws Exception { int entityId = wrapper.get(Type.VAR_INT, 0); - Entity1_15Types.EntityType entityType = Entity1_15Types.EntityType.PLAYER; wrapper.user().get(EntityTracker.class).addEntity(entityId, entityType); + + List metadata = wrapper.read(Types1_14.METADATA_LIST); + MetadataRewriter.handleMetadata(entityId, entityType, metadata, wrapper.user()); + PacketWrapper metadataUpdate = wrapper.create(0x44); + metadataUpdate.write(Type.VAR_INT, entityId); + metadataUpdate.write(Types1_14.METADATA_LIST, metadata); + metadataUpdate.send(Protocol1_15To1_14_4.class); } }); }