diff --git a/common/src/main/java/com/viaversion/viabackwards/api/entities/storage/EntityData.java b/common/src/main/java/com/viaversion/viabackwards/api/entities/storage/EntityData.java index e117aecd..22ccc8e6 100644 --- a/common/src/main/java/com/viaversion/viabackwards/api/entities/storage/EntityData.java +++ b/common/src/main/java/com/viaversion/viabackwards/api/entities/storage/EntityData.java @@ -21,6 +21,7 @@ package com.viaversion.viabackwards.api.entities.storage; import com.viaversion.viabackwards.ViaBackwards; import com.viaversion.viabackwards.api.BackwardsProtocol; import com.viaversion.viaversion.api.minecraft.entities.EntityType; +import com.viaversion.viaversion.libs.opennbt.tag.builtin.StringTag; import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ChatRewriter; import java.util.Locale; import org.checkerframework.checker.nullness.qual.Nullable; @@ -30,7 +31,7 @@ public class EntityData { private final int id; private final int replacementId; private final String key; - private NameVisibility nameVisibility = NameVisibility.NONE; + private ComponentType componentType = ComponentType.NONE; private MetaCreator defaultMeta; public EntityData(BackwardsProtocol protocol, EntityType type, int replacementId) { @@ -45,12 +46,17 @@ public class EntityData { } public EntityData jsonName() { - this.nameVisibility = NameVisibility.JSON; + this.componentType = ComponentType.JSON; + return this; + } + + public EntityData tagName() { + this.componentType = ComponentType.TAG; return this; } public EntityData plainName() { - this.nameVisibility = NameVisibility.PLAIN; + this.componentType = ComponentType.PLAIN; return this; } @@ -70,8 +76,8 @@ public class EntityData { /** * @return custom mobname, can be either a String or a JsonElement */ - public @Nullable Object mobName() { - if (nameVisibility == NameVisibility.NONE) { + public @Nullable Object entityName() { + if (componentType == ComponentType.NONE) { return null; } @@ -80,7 +86,12 @@ public class EntityData { ViaBackwards.getPlatform().getLogger().warning("Entity name for " + key + " not found in protocol " + protocol.getClass().getSimpleName()); name = key; } - return nameVisibility == NameVisibility.JSON ? ChatRewriter.legacyTextToJson(name) : name; + if (componentType == ComponentType.JSON) { + return ChatRewriter.legacyTextToJson(name); + } else if (componentType == ComponentType.TAG) { + return new StringTag(name); + } + return name; } public int replacementId() { @@ -115,9 +126,10 @@ public class EntityData { void createMeta(WrappedMetadata storage); } - private enum NameVisibility { + private enum ComponentType { PLAIN, JSON, + TAG, NONE } } diff --git a/common/src/main/java/com/viaversion/viabackwards/api/rewriters/EntityRewriterBase.java b/common/src/main/java/com/viaversion/viabackwards/api/rewriters/EntityRewriterBase.java index 7053941e..525b5b09 100644 --- a/common/src/main/java/com/viaversion/viabackwards/api/rewriters/EntityRewriterBase.java +++ b/common/src/main/java/com/viaversion/viabackwards/api/rewriters/EntityRewriterBase.java @@ -76,21 +76,22 @@ public abstract class EntityRewriterBase { @@ -44,7 +43,7 @@ public final class EntityPackets1_20 extends EntityRewriter1.20 item particle rewrite + // TODO VB: Entity, new poses, particle final SoundRewriter soundRewriter = new SoundRewriter<>(this); soundRewriter.register1_19_3Sound(ClientboundPackets1_20_3.SOUND); soundRewriter.registerEntitySound(ClientboundPackets1_20_3.ENTITY_SOUND); @@ -282,12 +283,13 @@ public final class Protocol1_20_2To1_20_3 extends BackwardsProtocol { @@ -50,8 +54,82 @@ public final class BlockItemPacketRewriter1_20_3 extends ItemRewriter(protocol).register(ClientboundPackets1_20_3.DECLARE_RECIPES); + protocol.registerClientbound(ClientboundPackets1_20_3.SPAWN_PARTICLE, new PacketHandlers() { + @Override + public void register() { + map(Type.VAR_INT); // 0 - Particle ID + map(Type.BOOLEAN); // 1 - Long Distance + map(Type.DOUBLE); // 2 - X + map(Type.DOUBLE); // 3 - Y + map(Type.DOUBLE); // 4 - Z + map(Type.FLOAT); // 5 - Offset X + map(Type.FLOAT); // 6 - Offset Y + map(Type.FLOAT); // 7 - Offset Z + map(Type.FLOAT); // 8 - Particle Data + map(Type.INT); // 9 - Particle Count + handler(wrapper -> { + final int id = wrapper.get(Type.VAR_INT, 0); + final ParticleMappings particleMappings = protocol.getMappingData().getParticleMappings(); + if (id == particleMappings.id("vibration")) { + final int positionSourceType = wrapper.read(Type.VAR_INT); + if (positionSourceType == 0) { + wrapper.write(Type.STRING, "minecraft:block"); + } else if (positionSourceType == 1) { + wrapper.write(Type.STRING, "minecraft:entity"); + } else { + ViaBackwards.getPlatform().getLogger().warning("Unknown position source type: " + positionSourceType); + wrapper.cancel(); + } + } + }); + handler(getSpawnParticleHandler(Type.VAR_INT)); + } + }); + + new RecipeRewriter1_20_3(protocol) { + @Override + public void handleCraftingShaped(final PacketWrapper wrapper) throws Exception { + // Move width and height up + final String group = wrapper.read(Type.STRING); + final int craftingBookCategory = wrapper.read(Type.VAR_INT); + + final int width = wrapper.passthrough(Type.VAR_INT); + final int height = wrapper.passthrough(Type.VAR_INT); + + wrapper.write(Type.STRING, group); + wrapper.write(Type.VAR_INT, craftingBookCategory); + + final int ingredients = height * width; + for (int i = 0; i < ingredients; i++) { + handleIngredient(wrapper); + } + rewrite(wrapper.passthrough(itemType())); // Result + wrapper.passthrough(Type.BOOLEAN); // Show notification + } + }.register(ClientboundPackets1_20_3.DECLARE_RECIPES); + + protocol.registerClientbound(ClientboundPackets1_20_3.EXPLOSION, wrapper -> { + wrapper.passthrough(Type.DOUBLE); // X + wrapper.passthrough(Type.DOUBLE); // Y + wrapper.passthrough(Type.DOUBLE); // Z + wrapper.passthrough(Type.FLOAT); // Power + final int blocks = wrapper.passthrough(Type.VAR_INT); + for (int i = 0; i < blocks; i++) { + wrapper.passthrough(Type.BYTE); // Relative X + wrapper.passthrough(Type.BYTE); // Relative Y + wrapper.passthrough(Type.BYTE); // Relative Z + } + wrapper.passthrough(Type.FLOAT); // Knockback X + wrapper.passthrough(Type.FLOAT); // Knockback Y + wrapper.passthrough(Type.FLOAT); // Knockback Z + + // TODO Probably needs handling + wrapper.read(Type.VAR_INT); // Block interaction type + wrapper.read(Type.VAR_INT); // Small explosion particle + wrapper.read(Type.VAR_INT); // Large explosion particle + wrapper.read(Type.STRING); // Explosion sound + wrapper.read(Type.OPTIONAL_FLOAT); // Sound range + }); } } \ No newline at end of file diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_2to1_20_3/rewriter/EntityPacketRewriter1_20_3.java b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_2to1_20_3/rewriter/EntityPacketRewriter1_20_3.java index d6cbda86..ccea483a 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_2to1_20_3/rewriter/EntityPacketRewriter1_20_3.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_2to1_20_3/rewriter/EntityPacketRewriter1_20_3.java @@ -19,8 +19,10 @@ package com.viaversion.viabackwards.protocol.protocol1_20_2to1_20_3.rewriter; import com.viaversion.viabackwards.api.rewriters.EntityRewriter; import com.viaversion.viabackwards.protocol.protocol1_20_2to1_20_3.Protocol1_20_2To1_20_3; +import com.viaversion.viaversion.api.data.ParticleMappings; +import com.viaversion.viaversion.api.minecraft.Particle; import com.viaversion.viaversion.api.minecraft.entities.EntityType; -import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_19_4; +import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_20_3; import com.viaversion.viaversion.api.minecraft.metadata.MetaType; import com.viaversion.viaversion.api.protocol.packet.State; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; @@ -34,7 +36,7 @@ import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.Clientb public final class EntityPacketRewriter1_20_3 extends EntityRewriter { public EntityPacketRewriter1_20_3(final Protocol1_20_2To1_20_3 protocol) { - super(protocol); + super(protocol, Types1_20_2.META_TYPES.optionalComponentType, Types1_20_2.META_TYPES.booleanType); } @Override @@ -86,11 +88,32 @@ public final class EntityPacketRewriter1_20_3 extends EntityRewriterremoveArgument(0).getValue(); + if (positionSourceType == 0) { + particle.add(0, Type.STRING, "minecraft:block"); + } else { // Entity + particle.add(0, Type.STRING, "minecraft:entity"); + } + } + + rewriteParticle(particle); + } else if (type == Types1_20_3.META_TYPES.poseType) { + final int pose = meta.value(); + if (pose >= 15) { + event.cancel(); + } } + + meta.setMetaType(Types1_20_2.META_TYPES.byId(type.typeId())); }); registerMetaTypeHandler( @@ -102,16 +125,24 @@ public final class EntityPacketRewriter1_20_3 extends EntityRewriter { + filter().filterFamily(EntityTypes1_20_3.MINECART_ABSTRACT).index(11).handler((event, meta) -> { final int blockState = meta.value(); meta.setValue(protocol.getMappingData().getNewBlockStateId(blockState)); }); - filter().type(EntityTypes1_19_4.TNT).removeIndex(9); // Block state + filter().type(EntityTypes1_20_3.TNT).removeIndex(9); // Block state + } + + @Override + public void onMappingDataLoaded() { + mapTypes(); + + mapEntityTypeWithData(EntityTypes1_20_3.BREEZE, EntityTypes1_20_3.BLAZE).jsonName(); + mapEntityTypeWithData(EntityTypes1_20_3.WIND_CHARGE, EntityTypes1_20_3.LLAMA_SPIT).jsonName(); } @Override public EntityType typeFromId(final int type) { - return EntityTypes1_19_4.getTypeFromId(type); + return EntityTypes1_20_3.getTypeFromId(type); } } \ No newline at end of file diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20to1_20_2/rewriter/EntityPacketRewriter1_20_2.java b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20to1_20_2/rewriter/EntityPacketRewriter1_20_2.java index 6b5b0a3f..6bb2a6d5 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20to1_20_2/rewriter/EntityPacketRewriter1_20_2.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20to1_20_2/rewriter/EntityPacketRewriter1_20_2.java @@ -34,7 +34,7 @@ import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.Clientbou public final class EntityPacketRewriter1_20_2 extends EntityRewriter { public EntityPacketRewriter1_20_2(final Protocol1_20To1_20_2 protocol) { - super(protocol); + super(protocol, Types1_20.META_TYPES.optionalComponentType, Types1_20.META_TYPES.booleanType); } @Override diff --git a/common/src/main/resources/assets/viabackwards/data/mappings-1.20.3to1.20.2.nbt b/common/src/main/resources/assets/viabackwards/data/mappings-1.20.3to1.20.2.nbt index 40e5ea48..b48b4806 100644 Binary files a/common/src/main/resources/assets/viabackwards/data/mappings-1.20.3to1.20.2.nbt and b/common/src/main/resources/assets/viabackwards/data/mappings-1.20.3to1.20.2.nbt differ diff --git a/gradle.properties b/gradle.properties index 5ab19a1d..a0ec978c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -projectVersion=4.9.0-23w44a-SNAPSHOT +projectVersion=4.9.0-23w45a-SNAPSHOT # Smile emoji mcVersions=1.20.2, 1.20.1, 1.20, 1.19.4, 1.19.3, 1.19.2, 1.19.1, 1.19, 1.18.2, 1.18.1, 1.18, 1.17.1, 1.17, 1.16.5, 1.16.4, 1.16.3, 1.16.2, 1.16.1, 1.16, 1.15.2, 1.15.1, 1.15, 1.14.4, 1.14.3, 1.14.2, 1.14.1, 1.14, 1.13.2, 1.13.1, 1.13, 1.12.2, 1.12.1, 1.12, 1.11.2, 1.11.1, 1.11, 1.10.2, 1.10.1, 1.10 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b652b0bb..18b23577 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,7 +3,7 @@ metadata.format.version = "1.1" [versions] # ViaVersion -viaver = "4.9.0-23w44a-SNAPSHOT" +viaver = "4.9.0-23w45a-SNAPSHOT" # Common provided netty = "4.0.20.Final" diff --git a/template/src/main/java/com/viaversion/viabackwards/template/protocol/Protocol1_98To_99.java b/template/src/main/java/com/viaversion/viabackwards/template/protocol/Protocol1_98To_99.java index ce7977b9..c8ec6f5e 100644 --- a/template/src/main/java/com/viaversion/viabackwards/template/protocol/Protocol1_98To_99.java +++ b/template/src/main/java/com/viaversion/viabackwards/template/protocol/Protocol1_98To_99.java @@ -24,15 +24,15 @@ import com.viaversion.viabackwards.api.rewriters.TranslatableRewriter; import com.viaversion.viabackwards.template.protocol.rewriter.BlockItemPacketRewriter1_99; import com.viaversion.viabackwards.template.protocol.rewriter.EntityPacketRewriter1_99; import com.viaversion.viaversion.api.connection.UserConnection; -import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_19_4; +import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_20_3; import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType; import com.viaversion.viaversion.data.entity.EntityTrackerBase; import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ClientboundConfigurationPackets1_20_2; -import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ClientboundPackets1_20_2; import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ServerboundConfigurationPackets1_20_2; -import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ServerboundPackets1_20_2; import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.Protocol1_20_3To1_20_2; +import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundPackets1_20_3; +import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ServerboundPackets1_20_3; import com.viaversion.viaversion.rewriter.ComponentRewriter.ReadType; import com.viaversion.viaversion.rewriter.StatisticsRewriter; import com.viaversion.viaversion.rewriter.TagRewriter; @@ -41,55 +41,55 @@ import org.checkerframework.checker.nullness.qual.Nullable; // Placeholders to replace (in the entire package): // Protocol1_98To_99, EntityPacketRewriter1_99, BlockItemPacketRewriter1_99 // Protocol1_20_3To1_20_2 (the ViaVersion protocol class the mappings depend on) -// ClientboundPackets1_20_2 -// ServerboundPackets1_20_2 +// ClientboundPackets1_20_3 +// ServerboundPackets1_20_3 // ClientboundConfigurationPackets1_20_2 // ServerboundConfigurationPackets1_20_2 // EntityTypes1_19_4 (UNMAPPED type) // 1.99, 1.98 -public final class Protocol1_98To_99 extends BackwardsProtocol { +public final class Protocol1_98To_99 extends BackwardsProtocol { // ViaBackwards uses its own mappings and also needs a translatablerewriter for translation mappings public static final BackwardsMappings MAPPINGS = new BackwardsMappings("1.99", "1.98", Protocol1_20_3To1_20_2.class); private final EntityPacketRewriter1_99 entityRewriter = new EntityPacketRewriter1_99(this); private final BlockItemPacketRewriter1_99 itemRewriter = new BlockItemPacketRewriter1_99(this); - private final TranslatableRewriter translatableRewriter = new TranslatableRewriter<>(this, ReadType.NBT); + private final TranslatableRewriter translatableRewriter = new TranslatableRewriter<>(this, ReadType.NBT); public Protocol1_98To_99() { - super(ClientboundPackets1_20_2.class, ClientboundPackets1_20_2.class, ServerboundPackets1_20_2.class, ServerboundPackets1_20_2.class); + super(ClientboundPackets1_20_3.class, ClientboundPackets1_20_3.class, ServerboundPackets1_20_3.class, ServerboundPackets1_20_3.class); } @Override protected void registerPackets() { super.registerPackets(); - final TagRewriter tagRewriter = new TagRewriter<>(this); - tagRewriter.registerGeneric(ClientboundPackets1_20_2.TAGS); + final TagRewriter tagRewriter = new TagRewriter<>(this); + tagRewriter.registerGeneric(ClientboundPackets1_20_3.TAGS); - final SoundRewriter soundRewriter = new SoundRewriter<>(this); - soundRewriter.register1_19_3Sound(ClientboundPackets1_20_2.SOUND); - soundRewriter.registerSound(ClientboundPackets1_20_2.ENTITY_SOUND); - soundRewriter.registerStopSound(ClientboundPackets1_20_2.STOP_SOUND); + final SoundRewriter soundRewriter = new SoundRewriter<>(this); + soundRewriter.register1_19_3Sound(ClientboundPackets1_20_3.SOUND); + soundRewriter.registerSound(ClientboundPackets1_20_3.ENTITY_SOUND); + soundRewriter.registerStopSound(ClientboundPackets1_20_3.STOP_SOUND); - new StatisticsRewriter<>(this).register(ClientboundPackets1_20_2.STATISTICS); + new StatisticsRewriter<>(this).register(ClientboundPackets1_20_3.STATISTICS); // Registers translatable mappings (missing a whole bunch still) - //translatableRewriter.registerOpenWindow(ClientboundPackets1_20_2.OPEN_WINDOW); // Handled by registerOpenWindow in item rewriters - translatableRewriter.registerComponentPacket(ClientboundPackets1_20_2.ACTIONBAR); - translatableRewriter.registerComponentPacket(ClientboundPackets1_20_2.TITLE_TEXT); - translatableRewriter.registerComponentPacket(ClientboundPackets1_20_2.TITLE_SUBTITLE); - translatableRewriter.registerBossBar(ClientboundPackets1_20_2.BOSSBAR); - translatableRewriter.registerComponentPacket(ClientboundPackets1_20_2.DISCONNECT); - translatableRewriter.registerTabList(ClientboundPackets1_20_2.TAB_LIST); - translatableRewriter.registerCombatKill1_20(ClientboundPackets1_20_2.COMBAT_KILL); - translatableRewriter.registerComponentPacket(ClientboundPackets1_20_2.SYSTEM_CHAT); - translatableRewriter.registerComponentPacket(ClientboundPackets1_20_2.DISGUISED_CHAT); + //translatableRewriter.registerOpenWindow(ClientboundPackets1_20_3.OPEN_WINDOW); // Handled by registerOpenWindow in item rewriters + translatableRewriter.registerComponentPacket(ClientboundPackets1_20_3.ACTIONBAR); + translatableRewriter.registerComponentPacket(ClientboundPackets1_20_3.TITLE_TEXT); + translatableRewriter.registerComponentPacket(ClientboundPackets1_20_3.TITLE_SUBTITLE); + translatableRewriter.registerBossBar(ClientboundPackets1_20_3.BOSSBAR); + translatableRewriter.registerComponentPacket(ClientboundPackets1_20_3.DISCONNECT); + translatableRewriter.registerTabList(ClientboundPackets1_20_3.TAB_LIST); + translatableRewriter.registerCombatKill1_20(ClientboundPackets1_20_3.COMBAT_KILL); + translatableRewriter.registerComponentPacket(ClientboundPackets1_20_3.SYSTEM_CHAT); + translatableRewriter.registerComponentPacket(ClientboundPackets1_20_3.DISGUISED_CHAT); translatableRewriter.registerPing(); } @Override public void init(final UserConnection user) { - addEntityTracker(user, new EntityTrackerBase(user, EntityTypes1_19_4.PLAYER)); + addEntityTracker(user, new EntityTrackerBase(user, EntityTypes1_20_3.PLAYER)); } @Override @@ -108,7 +108,7 @@ public final class Protocol1_98To_99 extends BackwardsProtocol getTranslatableRewriter() { + public TranslatableRewriter getTranslatableRewriter() { return translatableRewriter; } diff --git a/template/src/main/java/com/viaversion/viabackwards/template/protocol/rewriter/BlockItemPacketRewriter1_99.java b/template/src/main/java/com/viaversion/viabackwards/template/protocol/rewriter/BlockItemPacketRewriter1_99.java index 77957c37..0772a7c7 100644 --- a/template/src/main/java/com/viaversion/viabackwards/template/protocol/rewriter/BlockItemPacketRewriter1_99.java +++ b/template/src/main/java/com/viaversion/viabackwards/template/protocol/rewriter/BlockItemPacketRewriter1_99.java @@ -21,15 +21,15 @@ import com.viaversion.viabackwards.api.rewriters.ItemRewriter; import com.viaversion.viabackwards.template.protocol.Protocol1_98To_99; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_20_2; -import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ClientboundPackets1_20_2; -import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ServerboundPackets1_20_2; import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.rewriter.RecipeRewriter1_20_2; +import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundPackets1_20_3; +import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ServerboundPackets1_20_3; import com.viaversion.viaversion.rewriter.BlockRewriter; // To replace if needed: // ChunkType1_20_2 // RecipeRewriter1_20_2 -public final class BlockItemPacketRewriter1_99 extends ItemRewriter { +public final class BlockItemPacketRewriter1_99 extends ItemRewriter { public BlockItemPacketRewriter1_99(final Protocol1_98To_99 protocol) { super(protocol, Type.ITEM1_20_2, Type.ITEM1_20_2_ARRAY); @@ -37,26 +37,26 @@ public final class BlockItemPacketRewriter1_99 extends ItemRewriter blockRewriter = BlockRewriter.for1_20_2(protocol); - blockRewriter.registerBlockAction(ClientboundPackets1_20_2.BLOCK_ACTION); - blockRewriter.registerBlockChange(ClientboundPackets1_20_2.BLOCK_CHANGE); - blockRewriter.registerVarLongMultiBlockChange1_20(ClientboundPackets1_20_2.MULTI_BLOCK_CHANGE); - blockRewriter.registerEffect(ClientboundPackets1_20_2.EFFECT, 1010, 2001); - blockRewriter.registerChunkData1_19(ClientboundPackets1_20_2.CHUNK_DATA, ChunkType1_20_2::new); - blockRewriter.registerBlockEntityData(ClientboundPackets1_20_2.BLOCK_ENTITY_DATA); + final BlockRewriter blockRewriter = BlockRewriter.for1_20_2(protocol); + blockRewriter.registerBlockAction(ClientboundPackets1_20_3.BLOCK_ACTION); + blockRewriter.registerBlockChange(ClientboundPackets1_20_3.BLOCK_CHANGE); + blockRewriter.registerVarLongMultiBlockChange1_20(ClientboundPackets1_20_3.MULTI_BLOCK_CHANGE); + blockRewriter.registerEffect(ClientboundPackets1_20_3.EFFECT, 1010, 2001); + blockRewriter.registerChunkData1_19(ClientboundPackets1_20_3.CHUNK_DATA, ChunkType1_20_2::new); + blockRewriter.registerBlockEntityData(ClientboundPackets1_20_3.BLOCK_ENTITY_DATA); - // registerOpenWindow(ClientboundPackets1_20_2.OPEN_WINDOW); - registerSetCooldown(ClientboundPackets1_20_2.COOLDOWN); - registerWindowItems1_17_1(ClientboundPackets1_20_2.WINDOW_ITEMS); - registerSetSlot1_17_1(ClientboundPackets1_20_2.SET_SLOT); - registerAdvancements1_20_3(ClientboundPackets1_20_2.ADVANCEMENTS); - registerEntityEquipmentArray(ClientboundPackets1_20_2.ENTITY_EQUIPMENT); - registerClickWindow1_17_1(ServerboundPackets1_20_2.CLICK_WINDOW); - registerTradeList1_19(ClientboundPackets1_20_2.TRADE_LIST); - registerCreativeInvAction(ServerboundPackets1_20_2.CREATIVE_INVENTORY_ACTION); - registerWindowPropertyEnchantmentHandler(ClientboundPackets1_20_2.WINDOW_PROPERTY); - registerSpawnParticle1_19(ClientboundPackets1_20_2.SPAWN_PARTICLE); + // registerOpenWindow(ClientboundPackets1_20_3.OPEN_WINDOW); + registerSetCooldown(ClientboundPackets1_20_3.COOLDOWN); + registerWindowItems1_17_1(ClientboundPackets1_20_3.WINDOW_ITEMS); + registerSetSlot1_17_1(ClientboundPackets1_20_3.SET_SLOT); + registerAdvancements1_20_3(ClientboundPackets1_20_3.ADVANCEMENTS); + registerEntityEquipmentArray(ClientboundPackets1_20_3.ENTITY_EQUIPMENT); + registerClickWindow1_17_1(ServerboundPackets1_20_3.CLICK_WINDOW); + registerTradeList1_19(ClientboundPackets1_20_3.TRADE_LIST); + registerCreativeInvAction(ServerboundPackets1_20_3.CREATIVE_INVENTORY_ACTION); + registerWindowPropertyEnchantmentHandler(ClientboundPackets1_20_3.WINDOW_PROPERTY); + registerSpawnParticle1_19(ClientboundPackets1_20_3.SPAWN_PARTICLE); - new RecipeRewriter1_20_2<>(protocol).register(ClientboundPackets1_20_2.DECLARE_RECIPES); + new RecipeRewriter1_20_2<>(protocol).register(ClientboundPackets1_20_3.DECLARE_RECIPES); } } \ No newline at end of file diff --git a/template/src/main/java/com/viaversion/viabackwards/template/protocol/rewriter/EntityPacketRewriter1_99.java b/template/src/main/java/com/viaversion/viabackwards/template/protocol/rewriter/EntityPacketRewriter1_99.java index 50f71063..46eeaaff 100644 --- a/template/src/main/java/com/viaversion/viabackwards/template/protocol/rewriter/EntityPacketRewriter1_99.java +++ b/template/src/main/java/com/viaversion/viabackwards/template/protocol/rewriter/EntityPacketRewriter1_99.java @@ -19,29 +19,29 @@ package com.viaversion.viabackwards.template.protocol.rewriter; import com.viaversion.viabackwards.api.rewriters.EntityRewriter; import com.viaversion.viabackwards.template.protocol.Protocol1_98To_99; -import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_19_4; import com.viaversion.viaversion.api.minecraft.entities.EntityType; +import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_20_3; import com.viaversion.viaversion.api.protocol.packet.State; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.api.type.types.version.Types1_20_3; import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ClientboundConfigurationPackets1_20_2; -import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ClientboundPackets1_20_2; +import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundPackets1_20_3; // Replace if needed // Types1_OLD // Types1_20_3 -public final class EntityPacketRewriter1_99 extends EntityRewriter { +public final class EntityPacketRewriter1_99 extends EntityRewriter { public EntityPacketRewriter1_99(final Protocol1_98To_99 protocol) { - super(protocol); + super(protocol, Types1_20_3.META_TYPES.optionalComponentType, Types1_20_3.META_TYPES.booleanType); } @Override public void registerPackets() { - registerTrackerWithData1_19(ClientboundPackets1_20_2.SPAWN_ENTITY, EntityTypes1_19_4.FALLING_BLOCK); - registerMetadataRewriter(ClientboundPackets1_20_2.ENTITY_METADATA, /*Types1_OLD.METADATA_LIST, */Types1_20_3.METADATA_LIST); // Specify old and new metadata list if changed - registerRemoveEntities(ClientboundPackets1_20_2.REMOVE_ENTITIES); + registerTrackerWithData1_19(ClientboundPackets1_20_3.SPAWN_ENTITY, EntityTypes1_20_3.FALLING_BLOCK); + registerMetadataRewriter(ClientboundPackets1_20_3.ENTITY_METADATA, /*Types1_OLD.METADATA_LIST, */Types1_20_3.METADATA_LIST); // Specify old and new metadata list if changed + registerRemoveEntities(ClientboundPackets1_20_3.REMOVE_ENTITIES); protocol.registerClientbound(State.CONFIGURATION, ClientboundConfigurationPackets1_20_2.REGISTRY_DATA, new PacketHandlers() { @Override @@ -52,7 +52,7 @@ public final class EntityPacketRewriter1_99 extends EntityRewriter { + filter().filterFamily(EntityTypes1_20_3.MINECART_ABSTRACT).index(11).handler((event, meta) -> { final int blockState = meta.value(); meta.setValue(protocol.getMappingData().getNewBlockStateId(blockState)); }); @@ -116,11 +116,11 @@ public final class EntityPacketRewriter1_99 extends EntityRewriter