3
0
Mirror von https://github.com/ViaVersion/ViaVersion.git synchronisiert 2024-12-26 16:12:42 +01:00

fix entity metadata in spawn packet being ignored

Dieser Commit ist enthalten in:
Gerrygames 2019-12-11 02:00:51 +01:00
Ursprung 68ac978d45
Commit 84624a4884

Datei anzeigen

@ -3,6 +3,7 @@ package us.myles.ViaVersion.protocols.protocol1_15to1_14_4.packets;
import com.google.common.base.Optional; import com.google.common.base.Optional;
import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.PacketWrapper;
import us.myles.ViaVersion.api.entities.Entity1_15Types; 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.protocol.Protocol;
import us.myles.ViaVersion.api.remapper.PacketHandler; import us.myles.ViaVersion.api.remapper.PacketHandler;
import us.myles.ViaVersion.api.remapper.PacketRemapper; 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.Protocol1_15To1_14_4;
import us.myles.ViaVersion.protocols.protocol1_15to1_14_4.storage.EntityTracker; import us.myles.ViaVersion.protocols.protocol1_15to1_14_4.storage.EntityTracker;
import java.util.List;
import java.util.UUID; import java.util.UUID;
public class EntityPackets { public class EntityPackets {
@ -72,7 +74,6 @@ public class EntityPackets {
map(Type.SHORT); // 9 - Velocity X map(Type.SHORT); // 9 - Velocity X
map(Type.SHORT); // 10 - Velocity Y map(Type.SHORT); // 10 - Velocity Y
map(Type.SHORT); // 11 - Velocity Z map(Type.SHORT); // 11 - Velocity Z
map(Types1_14.METADATA_LIST, Type.NOTHING); // removed - probably sent in an update packet?
handler(new PacketHandler() { handler(new PacketHandler() {
@Override @Override
@ -82,6 +83,13 @@ public class EntityPackets {
Entity1_15Types.EntityType entityType = Entity1_15Types.getTypeFromId(getNewEntityId(typeId)); Entity1_15Types.EntityType entityType = Entity1_15Types.getTypeFromId(getNewEntityId(typeId));
wrapper.user().get(EntityTracker.class).addEntity(entityId, entityType); wrapper.user().get(EntityTracker.class).addEntity(entityId, entityType);
wrapper.set(Type.VAR_INT, 1, entityType.getId()); wrapper.set(Type.VAR_INT, 1, entityType.getId());
List<Metadata> 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.DOUBLE); // 4 - Z
map(Type.BYTE); // 5 - Yaw map(Type.BYTE); // 5 - Yaw
map(Type.BYTE); // 6 - Pitch map(Type.BYTE); // 6 - Pitch
map(Types1_14.METADATA_LIST, Type.NOTHING); // removed - probably sent in an update packet?
handler(new PacketHandler() { handler(new PacketHandler() {
@Override @Override
public void handle(PacketWrapper wrapper) throws Exception { public void handle(PacketWrapper wrapper) throws Exception {
int entityId = wrapper.get(Type.VAR_INT, 0); int entityId = wrapper.get(Type.VAR_INT, 0);
Entity1_15Types.EntityType entityType = Entity1_15Types.EntityType.PLAYER; Entity1_15Types.EntityType entityType = Entity1_15Types.EntityType.PLAYER;
wrapper.user().get(EntityTracker.class).addEntity(entityId, entityType); wrapper.user().get(EntityTracker.class).addEntity(entityId, entityType);
List<Metadata> 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);
} }
}); });
} }