Search in sources :

Example 21 with Metadata

use of com.viaversion.viaversion.api.minecraft.metadata.Metadata in project ViaVersion by ViaVersion.

the class MetadataRewriter1_16To1_15_2 method handleMetadata.

@Override
public void handleMetadata(int entityId, EntityType type, Metadata metadata, List<Metadata> metadatas, UserConnection connection) throws Exception {
    metadata.setMetaType(Types1_16.META_TYPES.byId(metadata.metaType().typeId()));
    if (metadata.metaType() == Types1_16.META_TYPES.itemType) {
        protocol.getItemRewriter().handleItemToClient((Item) metadata.getValue());
    } else if (metadata.metaType() == Types1_16.META_TYPES.blockStateType) {
        int data = (int) metadata.getValue();
        metadata.setValue(protocol.getMappingData().getNewBlockStateId(data));
    } else if (metadata.metaType() == Types1_16.META_TYPES.particleType) {
        rewriteParticle((Particle) metadata.getValue());
    }
    if (type == null)
        return;
    if (type.isOrHasParent(Entity1_16Types.MINECART_ABSTRACT) && metadata.id() == 10) {
        // Convert to new block id
        int data = (int) metadata.getValue();
        metadata.setValue(protocol.getMappingData().getNewBlockStateId(data));
    }
    if (type.isOrHasParent(Entity1_16Types.ABSTRACT_ARROW)) {
        if (metadata.id() == 8) {
            metadatas.remove(metadata);
        } else if (metadata.id() > 8) {
            metadata.setId(metadata.id() - 1);
        }
    }
    if (type == Entity1_16Types.WOLF) {
        if (metadata.id() == 16) {
            byte mask = metadata.value();
            int angerTime = (mask & 0x02) != 0 ? Integer.MAX_VALUE : 0;
            metadatas.add(new Metadata(20, Types1_16.META_TYPES.varIntType, angerTime));
        }
    }
}
Also used : Metadata(com.viaversion.viaversion.api.minecraft.metadata.Metadata)

Example 22 with Metadata

use of com.viaversion.viaversion.api.minecraft.metadata.Metadata in project ViaVersion by ViaVersion.

the class EntityTracker1_9 method sendMetadataBuffer.

public void sendMetadataBuffer(int entityId) {
    List<Metadata> metadataList = metadataBuffer.get(entityId);
    if (metadataList != null) {
        PacketWrapper wrapper = PacketWrapper.create(ClientboundPackets1_9.ENTITY_METADATA, null, user());
        wrapper.write(Type.VAR_INT, entityId);
        wrapper.write(Types1_9.METADATA_LIST, metadataList);
        Via.getManager().getProtocolManager().getProtocol(Protocol1_9To1_8.class).get(MetadataRewriter1_9To1_8.class).handleMetadata(entityId, metadataList, user());
        handleMetadata(entityId, metadataList);
        if (!metadataList.isEmpty()) {
            try {
                wrapper.scheduleSend(Protocol1_9To1_8.class);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        metadataBuffer.remove(entityId);
    }
}
Also used : PacketWrapper(com.viaversion.viaversion.api.protocol.packet.PacketWrapper) Metadata(com.viaversion.viaversion.api.minecraft.metadata.Metadata) MetadataRewriter1_9To1_8(com.viaversion.viaversion.protocols.protocol1_9to1_8.metadata.MetadataRewriter1_9To1_8)

Example 23 with Metadata

use of com.viaversion.viaversion.api.minecraft.metadata.Metadata in project ViaBackwards by ViaVersion.

the class EntityPackets1_12 method registerRewrites.

@Override
protected void registerRewrites() {
    mapEntityTypeWithData(Entity1_12Types.EntityType.PARROT, Entity1_12Types.EntityType.BAT).plainName().spawnMetadata(storage -> storage.add(new Metadata(12, MetaType1_12.Byte, (byte) 0x00)));
    mapEntityTypeWithData(Entity1_12Types.EntityType.ILLUSION_ILLAGER, Entity1_12Types.EntityType.EVOCATION_ILLAGER).plainName();
    // Handle Illager
    filter().filterFamily(Entity1_12Types.EntityType.EVOCATION_ILLAGER).cancel(12);
    filter().filterFamily(Entity1_12Types.EntityType.EVOCATION_ILLAGER).index(13).toIndex(12);
    filter().type(Entity1_12Types.EntityType.ILLUSION_ILLAGER).index(0).handler((event, meta) -> {
        byte mask = (byte) meta.getValue();
        if ((mask & 0x20) == 0x20) {
            mask &= ~0x20;
        }
        meta.setValue(mask);
    });
    // Create Parrot storage
    filter().filterFamily(Entity1_12Types.EntityType.PARROT).handler((event, meta) -> {
        StoredEntityData data = storedEntityData(event);
        if (!data.has(ParrotStorage.class)) {
            data.put(new ParrotStorage());
        }
    });
    // Parrot remove animal metadata
    // Is baby
    filter().type(Entity1_12Types.EntityType.PARROT).cancel(12);
    filter().type(Entity1_12Types.EntityType.PARROT).index(13).handler((event, meta) -> {
        StoredEntityData data = storedEntityData(event);
        ParrotStorage storage = data.get(ParrotStorage.class);
        boolean isSitting = (((byte) meta.getValue()) & 0x01) == 0x01;
        boolean isTamed = (((byte) meta.getValue()) & 0x04) == 0x04;
        if (!storage.isTamed() && isTamed) {
        // TODO do something to let the user know it's done
        }
        storage.setTamed(isTamed);
        if (isSitting) {
            event.setIndex(12);
            meta.setValue((byte) 0x01);
            storage.setSitting(true);
        } else if (storage.isSitting()) {
            event.setIndex(12);
            meta.setValue((byte) 0x00);
            storage.setSitting(false);
        } else {
            event.cancel();
        }
    });
    // Flags (Is sitting etc, might be useful in the future
    // Owner
    filter().type(Entity1_12Types.EntityType.PARROT).cancel(14);
    // Variant
    filter().type(Entity1_12Types.EntityType.PARROT).cancel(15);
    // Left shoulder entity data
    filter().type(Entity1_12Types.EntityType.PLAYER).index(15).handler((event, meta) -> {
        CompoundTag tag = (CompoundTag) meta.getValue();
        ShoulderTracker tracker = event.user().get(ShoulderTracker.class);
        if (tag.isEmpty() && tracker.getLeftShoulder() != null) {
            tracker.setLeftShoulder(null);
            tracker.update();
        } else if (tag.contains("id") && event.entityId() == tracker.getEntityId()) {
            String id = (String) tag.get("id").getValue();
            if (tracker.getLeftShoulder() == null || !tracker.getLeftShoulder().equals(id)) {
                tracker.setLeftShoulder(id);
                tracker.update();
            }
        }
        event.cancel();
    });
    // Right shoulder entity data
    filter().type(Entity1_12Types.EntityType.PLAYER).index(16).handler((event, meta) -> {
        CompoundTag tag = (CompoundTag) event.meta().getValue();
        ShoulderTracker tracker = event.user().get(ShoulderTracker.class);
        if (tag.isEmpty() && tracker.getRightShoulder() != null) {
            tracker.setRightShoulder(null);
            tracker.update();
        } else if (tag.contains("id") && event.entityId() == tracker.getEntityId()) {
            String id = (String) tag.get("id").getValue();
            if (tracker.getRightShoulder() == null || !tracker.getRightShoulder().equals(id)) {
                tracker.setRightShoulder(id);
                tracker.update();
            }
        }
        event.cancel();
    });
}
Also used : ShoulderTracker(com.viaversion.viabackwards.protocol.protocol1_11_1to1_12.data.ShoulderTracker) Metadata(com.viaversion.viaversion.api.minecraft.metadata.Metadata) StoredEntityData(com.viaversion.viaversion.api.data.entity.StoredEntityData) CompoundTag(com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag) ParrotStorage(com.viaversion.viabackwards.protocol.protocol1_11_1to1_12.data.ParrotStorage)

Example 24 with Metadata

use of com.viaversion.viaversion.api.minecraft.metadata.Metadata in project ViaBackwards by ViaVersion.

the class EntityPackets1_13 method registerRewrites.

@Override
protected void registerRewrites() {
    // Rewrite new Entity 'drowned'
    mapEntityTypeWithData(Entity1_13Types.EntityType.DROWNED, Entity1_13Types.EntityType.ZOMBIE_VILLAGER).plainName();
    // Fishy
    mapEntityTypeWithData(Entity1_13Types.EntityType.COD, Entity1_13Types.EntityType.SQUID).plainName();
    mapEntityTypeWithData(Entity1_13Types.EntityType.SALMON, Entity1_13Types.EntityType.SQUID).plainName();
    mapEntityTypeWithData(Entity1_13Types.EntityType.PUFFERFISH, Entity1_13Types.EntityType.SQUID).plainName();
    mapEntityTypeWithData(Entity1_13Types.EntityType.TROPICAL_FISH, Entity1_13Types.EntityType.SQUID).plainName();
    // Phantom
    mapEntityTypeWithData(Entity1_13Types.EntityType.PHANTOM, Entity1_13Types.EntityType.PARROT).plainName().spawnMetadata(storage -> {
        // The phantom is grey/blue so let's do yellow/blue
        storage.add(new Metadata(15, MetaType1_12.VarInt, 3));
    });
    // Dolphin
    mapEntityTypeWithData(Entity1_13Types.EntityType.DOLPHIN, Entity1_13Types.EntityType.SQUID).plainName();
    // Turtle
    mapEntityTypeWithData(Entity1_13Types.EntityType.TURTLE, Entity1_13Types.EntityType.OCELOT).plainName();
    // Rewrite Meta types
    filter().handler((event, meta) -> {
        int typeId = meta.metaType().typeId();
        // Rewrite optional chat to string
        if (typeId == 5) {
            // Json -> Legacy is done below
            meta.setTypeAndValue(MetaType1_12.String, meta.getValue() != null ? meta.getValue().toString() : "");
        } else // Rewrite items
        if (typeId == 6) {
            Item item = (Item) meta.getValue();
            meta.setTypeAndValue(MetaType1_12.Slot, protocol.getItemRewriter().handleItemToClient(item));
        } else // Discontinue particles
        if (typeId == 15) {
            event.cancel();
        } else // Rewrite to 1.12 ids
        if (typeId > 5) {
            meta.setMetaType(MetaType1_12.byId(typeId - 1));
        }
    });
    // Rewrite Custom Name from Chat to String
    filter().filterFamily(Entity1_13Types.EntityType.ENTITY).index(2).handler((event, meta) -> {
        String value = meta.getValue().toString();
        if (!value.isEmpty()) {
            meta.setValue(ChatRewriter.jsonToLegacyText(value));
        }
    });
    // Handle zombie metadata
    filter().filterFamily(Entity1_13Types.EntityType.ZOMBIE).removeIndex(15);
    // Handle turtle metadata (Remove them all for now)
    // Home pos
    filter().type(Entity1_13Types.EntityType.TURTLE).cancel(13);
    // Has egg
    filter().type(Entity1_13Types.EntityType.TURTLE).cancel(14);
    // Laying egg
    filter().type(Entity1_13Types.EntityType.TURTLE).cancel(15);
    // Travel pos
    filter().type(Entity1_13Types.EntityType.TURTLE).cancel(16);
    // Going home
    filter().type(Entity1_13Types.EntityType.TURTLE).cancel(17);
    // Traveling
    filter().type(Entity1_13Types.EntityType.TURTLE).cancel(18);
    // Remove additional fish meta
    filter().filterFamily(Entity1_13Types.EntityType.ABSTRACT_FISHES).cancel(12);
    filter().filterFamily(Entity1_13Types.EntityType.ABSTRACT_FISHES).cancel(13);
    // Remove phantom size
    filter().type(Entity1_13Types.EntityType.PHANTOM).cancel(12);
    // Remove boat splash timer
    filter().type(Entity1_13Types.EntityType.BOAT).cancel(12);
    // Remove Trident special loyalty level
    filter().type(Entity1_13Types.EntityType.TRIDENT).cancel(7);
    // Handle new wolf colors
    filter().type(Entity1_13Types.EntityType.WOLF).index(17).handler((event, meta) -> {
        meta.setValue(15 - (int) meta.getValue());
    });
    // Rewrite AreaEffectCloud
    filter().type(Entity1_13Types.EntityType.AREA_EFFECT_CLOUD).index(9).handler((event, meta) -> {
        Particle particle = (Particle) meta.getValue();
        ParticleMapping.ParticleData data = ParticleMapping.getMapping(particle.getId());
        int firstArg = 0;
        int secondArg = 0;
        int[] particleArgs = data.rewriteMeta(protocol, particle.getArguments());
        if (particleArgs != null && particleArgs.length != 0) {
            if (data.getHandler().isBlockHandler() && particleArgs[0] == 0) {
                // Air doesn't have a break particle for sub 1.13 clients -> glass pane
                particleArgs[0] = 102;
            }
            firstArg = particleArgs[0];
            secondArg = particleArgs.length == 2 ? particleArgs[1] : 0;
        }
        event.createExtraMeta(new Metadata(9, MetaType1_12.VarInt, data.getHistoryId()));
        event.createExtraMeta(new Metadata(10, MetaType1_12.VarInt, firstArg));
        event.createExtraMeta(new Metadata(11, MetaType1_12.VarInt, secondArg));
        event.cancel();
    });
}
Also used : Particle(com.viaversion.viaversion.api.type.types.Particle) Item(com.viaversion.viaversion.api.minecraft.item.Item) Metadata(com.viaversion.viaversion.api.minecraft.metadata.Metadata) ParticleMapping(com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.data.ParticleMapping)

Example 25 with Metadata

use of com.viaversion.viaversion.api.minecraft.metadata.Metadata in project ViaBackwards by ViaVersion.

the class EntityPackets1_14 method registerRewrites.

@Override
protected void registerRewrites() {
    mapTypes(Entity1_14Types.values(), Entity1_13Types.EntityType.class);
    mapEntityTypeWithData(Entity1_14Types.CAT, Entity1_14Types.OCELOT).jsonName();
    mapEntityTypeWithData(Entity1_14Types.TRADER_LLAMA, Entity1_14Types.LLAMA).jsonName();
    mapEntityTypeWithData(Entity1_14Types.FOX, Entity1_14Types.WOLF).jsonName();
    mapEntityTypeWithData(Entity1_14Types.PANDA, Entity1_14Types.POLAR_BEAR).jsonName();
    mapEntityTypeWithData(Entity1_14Types.PILLAGER, Entity1_14Types.VILLAGER).jsonName();
    mapEntityTypeWithData(Entity1_14Types.WANDERING_TRADER, Entity1_14Types.VILLAGER).jsonName();
    mapEntityTypeWithData(Entity1_14Types.RAVAGER, Entity1_14Types.COW).jsonName();
    filter().handler((event, meta) -> {
        int typeId = meta.metaType().typeId();
        if (typeId <= 15) {
            meta.setMetaType(Types1_13_2.META_TYPES.byId(typeId));
        }
        MetaType type = meta.metaType();
        if (type == Types1_13_2.META_TYPES.itemType) {
            Item item = (Item) meta.getValue();
            meta.setValue(protocol.getItemRewriter().handleItemToClient(item));
        } else if (type == Types1_13_2.META_TYPES.blockStateType) {
            int blockstate = meta.value();
            meta.setValue(protocol.getMappingData().getNewBlockStateId(blockstate));
        }
    });
    filter().type(Entity1_14Types.PILLAGER).cancel(15);
    filter().type(Entity1_14Types.FOX).cancel(15);
    filter().type(Entity1_14Types.FOX).cancel(16);
    filter().type(Entity1_14Types.FOX).cancel(17);
    filter().type(Entity1_14Types.FOX).cancel(18);
    filter().type(Entity1_14Types.PANDA).cancel(15);
    filter().type(Entity1_14Types.PANDA).cancel(16);
    filter().type(Entity1_14Types.PANDA).cancel(17);
    filter().type(Entity1_14Types.PANDA).cancel(18);
    filter().type(Entity1_14Types.PANDA).cancel(19);
    filter().type(Entity1_14Types.PANDA).cancel(20);
    filter().type(Entity1_14Types.CAT).cancel(18);
    filter().type(Entity1_14Types.CAT).cancel(19);
    filter().type(Entity1_14Types.CAT).cancel(20);
    filter().handler((event, meta) -> {
        EntityType type = event.entityType();
        if (type == null)
            return;
        if (type.isOrHasParent(Entity1_14Types.ABSTRACT_ILLAGER_BASE) || type == Entity1_14Types.RAVAGER || type == Entity1_14Types.WITCH) {
            int index = event.index();
            if (index == 14) {
                event.cancel();
            } else if (index > 14) {
                event.setIndex(index - 1);
            }
        }
    });
    filter().type(Entity1_14Types.AREA_EFFECT_CLOUD).index(10).handler((event, meta) -> {
        rewriteParticle((Particle) meta.getValue());
    });
    filter().type(Entity1_14Types.FIREWORK_ROCKET).index(8).handler((event, meta) -> {
        meta.setMetaType(Types1_13_2.META_TYPES.varIntType);
        Integer value = (Integer) meta.getValue();
        if (value == null) {
            meta.setValue(0);
        }
    });
    filter().filterFamily(Entity1_14Types.ABSTRACT_ARROW).removeIndex(9);
    // Head shake timer
    filter().type(Entity1_14Types.VILLAGER).cancel(15);
    MetaHandler villagerDataHandler = (event, meta) -> {
        VillagerData villagerData = (VillagerData) meta.getValue();
        meta.setTypeAndValue(Types1_13_2.META_TYPES.varIntType, villagerDataToProfession(villagerData));
        if (meta.id() == 16) {
            // decreased by 2 again in one of the following handlers
            event.setIndex(15);
        }
    };
    filter().type(Entity1_14Types.ZOMBIE_VILLAGER).index(18).handler(villagerDataHandler);
    filter().type(Entity1_14Types.VILLAGER).index(16).handler(villagerDataHandler);
    // Holding arms up - from bitfield into own boolean
    filter().filterFamily(Entity1_14Types.ABSTRACT_SKELETON).index(13).handler((event, meta) -> {
        byte value = (byte) meta.getValue();
        if ((value & 4) != 0) {
            event.createExtraMeta(new Metadata(14, Types1_13_2.META_TYPES.booleanType, true));
        }
    });
    filter().filterFamily(Entity1_14Types.ZOMBIE).index(13).handler((event, meta) -> {
        byte value = (byte) meta.getValue();
        if ((value & 4) != 0) {
            event.createExtraMeta(new Metadata(16, Types1_13_2.META_TYPES.booleanType, true));
        }
    });
    filter().filterFamily(Entity1_14Types.ZOMBIE).addIndex(16);
    // Remove bed location
    filter().filterFamily(Entity1_14Types.LIVINGENTITY).handler((event, meta) -> {
        int index = event.index();
        if (index == 12) {
            Position position = (Position) meta.getValue();
            if (position != null) {
                // Use bed
                PacketWrapper wrapper = PacketWrapper.create(ClientboundPackets1_13.USE_BED, null, event.user());
                wrapper.write(Type.VAR_INT, event.entityId());
                wrapper.write(Type.POSITION, position);
                try {
                    wrapper.scheduleSend(Protocol1_13_2To1_14.class);
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
            }
            event.cancel();
        } else if (index > 12) {
            event.setIndex(index - 1);
        }
    });
    // Pose
    filter().removeIndex(6);
    filter().type(Entity1_14Types.OCELOT).index(13).handler((event, meta) -> {
        event.setIndex(15);
        meta.setTypeAndValue(Types1_13_2.META_TYPES.varIntType, 0);
    });
    filter().type(Entity1_14Types.CAT).handler((event, meta) -> {
        if (event.index() == 15) {
            meta.setValue(1);
        } else if (event.index() == 13) {
            meta.setValue((byte) ((byte) meta.getValue() & 0x4));
        }
    });
    filter().handler((event, meta) -> {
        if (meta.metaType().typeId() > 15) {
            throw new IllegalArgumentException("Unhandled metadata: " + meta);
        }
    });
}
Also used : PacketHandler(com.viaversion.viaversion.api.protocol.remapper.PacketHandler) MetaType(com.viaversion.viaversion.api.minecraft.metadata.MetaType) PacketWrapper(com.viaversion.viaversion.api.protocol.packet.PacketWrapper) Entity1_13Types(com.viaversion.viaversion.api.minecraft.entities.Entity1_13Types) EntityPositionStorage1_14(com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.storage.EntityPositionStorage1_14) Item(com.viaversion.viaversion.api.minecraft.item.Item) Metadata(com.viaversion.viaversion.api.minecraft.metadata.Metadata) Types1_14(com.viaversion.viaversion.api.type.types.version.Types1_14) PacketRemapper(com.viaversion.viaversion.api.protocol.remapper.PacketRemapper) Type(com.viaversion.viaversion.api.type.Type) ChunkLightStorage(com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.storage.ChunkLightStorage) Protocol1_13_2To1_14(com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.Protocol1_13_2To1_14) EntityData(com.viaversion.viabackwards.api.entities.storage.EntityData) Particle(com.viaversion.viaversion.api.type.types.Particle) LegacyEntityRewriter(com.viaversion.viabackwards.api.rewriters.LegacyEntityRewriter) Position(com.viaversion.viaversion.api.minecraft.Position) Types1_13_2(com.viaversion.viaversion.api.type.types.version.Types1_13_2) ClientWorld(com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld) EntityTracker(com.viaversion.viaversion.api.data.entity.EntityTracker) EntityType(com.viaversion.viaversion.api.minecraft.entities.EntityType) VillagerData(com.viaversion.viaversion.api.minecraft.VillagerData) EntityPositionHandler(com.viaversion.viabackwards.api.entities.storage.EntityPositionHandler) ClientboundPackets1_13(com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ClientboundPackets1_13) DifficultyStorage(com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.storage.DifficultyStorage) MetaHandler(com.viaversion.viaversion.rewriter.meta.MetaHandler) ViaBackwards(com.viaversion.viabackwards.ViaBackwards) ClientboundPackets1_14(com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ClientboundPackets1_14) Entity1_14Types(com.viaversion.viaversion.api.minecraft.entities.Entity1_14Types) Position(com.viaversion.viaversion.api.minecraft.Position) Metadata(com.viaversion.viaversion.api.minecraft.metadata.Metadata) EntityType(com.viaversion.viaversion.api.minecraft.entities.EntityType) Item(com.viaversion.viaversion.api.minecraft.item.Item) PacketWrapper(com.viaversion.viaversion.api.protocol.packet.PacketWrapper) VillagerData(com.viaversion.viaversion.api.minecraft.VillagerData) Entity1_13Types(com.viaversion.viaversion.api.minecraft.entities.Entity1_13Types) MetaHandler(com.viaversion.viaversion.rewriter.meta.MetaHandler) MetaType(com.viaversion.viaversion.api.minecraft.metadata.MetaType)

Aggregations

Metadata (com.viaversion.viaversion.api.minecraft.metadata.Metadata)37 PacketWrapper (com.viaversion.viaversion.api.protocol.packet.PacketWrapper)21 PacketRemapper (com.viaversion.viaversion.api.protocol.remapper.PacketRemapper)15 PacketHandler (com.viaversion.viaversion.api.protocol.remapper.PacketHandler)14 EntityType (com.viaversion.viaversion.api.minecraft.entities.EntityType)11 Item (com.viaversion.viaversion.api.minecraft.item.Item)10 Type (com.viaversion.viaversion.api.type.Type)8 StoredEntityData (com.viaversion.viaversion.api.data.entity.StoredEntityData)6 MetaType (com.viaversion.viaversion.api.minecraft.metadata.MetaType)6 EntityData (com.viaversion.viabackwards.api.entities.storage.EntityData)5 LegacyEntityRewriter (com.viaversion.viabackwards.api.rewriters.LegacyEntityRewriter)5 Particle (com.viaversion.viaversion.api.type.types.Particle)5 ClientboundPackets1_13 (com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ClientboundPackets1_13)5 ViaBackwards (com.viaversion.viabackwards.ViaBackwards)4 WrappedMetadata (com.viaversion.viabackwards.api.entities.storage.WrappedMetadata)4 Entity1_13Types (com.viaversion.viaversion.api.minecraft.entities.Entity1_13Types)4 DataItem (com.viaversion.viaversion.api.minecraft.item.DataItem)4 ArrayList (java.util.ArrayList)4 EntityPositionHandler (com.viaversion.viabackwards.api.entities.storage.EntityPositionHandler)3 Block (com.viaversion.viabackwards.utils.Block)3