From 1e455b039118ca0db53ee283f8eedc5261fdcf92 Mon Sep 17 00:00:00 2001 From: KennyTV Date: Wed, 8 Jul 2020 21:02:14 +0200 Subject: [PATCH] 20w28a --- .../packets/BlockItemPackets1_13.java | 4 +- .../Protocol1_16_1To1_16_2.java | 29 ++++---- .../packets/BlockItemPackets1_16_2.java | 67 +++++++++++++------ .../packets/EntityPackets1_16_2.java | 19 +++--- pom.xml | 2 +- 5 files changed, 74 insertions(+), 47 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/BlockItemPackets1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/BlockItemPackets1_13.java index e8ac292f..f2123f96 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/BlockItemPackets1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/BlockItemPackets1_13.java @@ -246,9 +246,9 @@ public class BlockItemPackets1_13 extends nl.matsv.viabackwards.api.rewriters.It int chunkZ = wrapper.get(Type.INT, 1); int block = record.getBlockId(); Position position = new Position( - (record.getHorizontal() >> 4 & 15) + (chunkX * 16), + record.getSectionX() + (chunkX * 16), record.getY(), - (record.getHorizontal() & 15) + (chunkZ * 16)); + record.getSectionZ() + (chunkZ * 16)); // Store if needed storage.checkAndStore(position, block); diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_16_1to1_16_2/Protocol1_16_1To1_16_2.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_16_1to1_16_2/Protocol1_16_1To1_16_2.java index c1f5a945..48a70f24 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_16_1to1_16_2/Protocol1_16_1To1_16_2.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_16_1to1_16_2/Protocol1_16_1To1_16_2.java @@ -14,6 +14,7 @@ import us.myles.ViaVersion.api.remapper.PacketHandler; import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.api.rewriters.TagRewriter; import us.myles.ViaVersion.api.type.Type; +import us.myles.ViaVersion.protocols.protocol1_16_2to1_16_1.ClientboundPackets1_16_2; import us.myles.ViaVersion.protocols.protocol1_16_2to1_16_1.Protocol1_16_2To1_16_1; import us.myles.ViaVersion.protocols.protocol1_16_2to1_16_1.ServerboundPackets1_16_2; import us.myles.ViaVersion.protocols.protocol1_16_2to1_16_1.data.MappingData; @@ -21,13 +22,13 @@ import us.myles.ViaVersion.protocols.protocol1_16to1_15_2.ClientboundPackets1_16 import us.myles.ViaVersion.protocols.protocol1_16to1_15_2.ServerboundPackets1_16; import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; -public class Protocol1_16_1To1_16_2 extends BackwardsProtocol { +public class Protocol1_16_1To1_16_2 extends BackwardsProtocol { private BlockItemPackets1_16_2 blockItemPackets; private TranslatableRewriter translatableRewriter; public Protocol1_16_1To1_16_2() { - super(ClientboundPackets1_16.class, ClientboundPackets1_16.class, ServerboundPackets1_16_2.class, ServerboundPackets1_16.class); + super(ClientboundPackets1_16_2.class, ClientboundPackets1_16.class, ServerboundPackets1_16_2.class, ServerboundPackets1_16.class); } @Override @@ -35,13 +36,13 @@ public class Protocol1_16_1To1_16_2 extends BackwardsProtocol BackwardsMappings.soundMappings.getNewId(id), stringId -> BackwardsMappings.soundMappings.getNewId(stringId)); - soundRewriter.registerSound(ClientboundPackets1_16.SOUND); - soundRewriter.registerSound(ClientboundPackets1_16.ENTITY_SOUND); - soundRewriter.registerNamedSound(ClientboundPackets1_16.NAMED_SOUND); - soundRewriter.registerStopSound(ClientboundPackets1_16.STOP_SOUND); + soundRewriter.registerSound(ClientboundPackets1_16_2.SOUND); + soundRewriter.registerSound(ClientboundPackets1_16_2.ENTITY_SOUND); + soundRewriter.registerNamedSound(ClientboundPackets1_16_2.NAMED_SOUND); + soundRewriter.registerStopSound(ClientboundPackets1_16_2.STOP_SOUND); // Recipe book data has been split into 2 separate packets registerIncoming(ServerboundPackets1_16.RECIPE_BOOK_DATA, new PacketRemapper() { @@ -92,7 +93,7 @@ public class Protocol1_16_1To1_16_2 extends BackwardsProtocol BackwardsMappings.blockMappings.getNewId(id), id -> - MappingData.oldToNewItems.inverse().get(id), entityPackets::getOldEntityId).register(ClientboundPackets1_16.TAGS); + MappingData.oldToNewItems.inverse().get(id), entityPackets::getOldEntityId).register(ClientboundPackets1_16_2.TAGS); } public static int getNewBlockStateId(int id) { diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_16_1to1_16_2/packets/BlockItemPackets1_16_2.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_16_1to1_16_2/packets/BlockItemPackets1_16_2.java index 583f3d29..40dc94d3 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_16_1to1_16_2/packets/BlockItemPackets1_16_2.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_16_1to1_16_2/packets/BlockItemPackets1_16_2.java @@ -1,18 +1,20 @@ package nl.matsv.viabackwards.protocol.protocol1_16_1to1_16_2.packets; import nl.matsv.viabackwards.ViaBackwards; -import nl.matsv.viabackwards.api.rewriters.EnchantmentRewriter; import nl.matsv.viabackwards.api.rewriters.TranslatableRewriter; import nl.matsv.viabackwards.protocol.protocol1_16_1to1_16_2.Protocol1_16_1To1_16_2; import nl.matsv.viabackwards.protocol.protocol1_16_1to1_16_2.data.BackwardsMappings; +import us.myles.ViaVersion.api.minecraft.BlockChangeRecord; +import us.myles.ViaVersion.api.minecraft.BlockChangeRecord1_8; import us.myles.ViaVersion.api.minecraft.chunks.Chunk; import us.myles.ViaVersion.api.minecraft.chunks.ChunkSection; import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.api.rewriters.BlockRewriter; import us.myles.ViaVersion.api.rewriters.ItemRewriter; import us.myles.ViaVersion.api.type.Type; +import us.myles.ViaVersion.protocols.protocol1_16_2to1_16_1.ClientboundPackets1_16_2; import us.myles.ViaVersion.protocols.protocol1_16_2to1_16_1.data.MappingData; -import us.myles.ViaVersion.protocols.protocol1_16to1_15_2.ClientboundPackets1_16; +import us.myles.ViaVersion.protocols.protocol1_16_2to1_16_1.types.Chunk1_16_2Type; import us.myles.ViaVersion.protocols.protocol1_16to1_15_2.ServerboundPackets1_16; import us.myles.ViaVersion.protocols.protocol1_16to1_15_2.data.RecipeRewriter1_16; import us.myles.ViaVersion.protocols.protocol1_16to1_15_2.types.Chunk1_16Type; @@ -20,8 +22,6 @@ import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; public class BlockItemPackets1_16_2 extends nl.matsv.viabackwards.api.rewriters.ItemRewriter { - private EnchantmentRewriter enchantmentRewriter; - public BlockItemPackets1_16_2(Protocol1_16_1To1_16_2 protocol, TranslatableRewriter translatableRewriter) { super(protocol, translatableRewriter, BlockItemPackets1_16_2::getOldItemId, BlockItemPackets1_16_2::getNewItemId, id -> BackwardsMappings.itemMappings.getMappedItem(id)); @@ -32,16 +32,16 @@ public class BlockItemPackets1_16_2 extends nl.matsv.viabackwards.api.rewriters. ItemRewriter itemRewriter = new ItemRewriter(protocol, this::handleItemToClient, this::handleItemToServer); BlockRewriter blockRewriter = new BlockRewriter(protocol, Type.POSITION1_14, Protocol1_16_1To1_16_2::getNewBlockStateId, Protocol1_16_1To1_16_2::getNewBlockId); - new RecipeRewriter1_16(protocol, this::handleItemToClient).registerDefaultHandler(ClientboundPackets1_16.DECLARE_RECIPES); + new RecipeRewriter1_16(protocol, this::handleItemToClient).registerDefaultHandler(ClientboundPackets1_16_2.DECLARE_RECIPES); - itemRewriter.registerSetCooldown(ClientboundPackets1_16.COOLDOWN, BlockItemPackets1_16_2::getOldItemId); - itemRewriter.registerWindowItems(ClientboundPackets1_16.WINDOW_ITEMS, Type.FLAT_VAR_INT_ITEM_ARRAY); - itemRewriter.registerSetSlot(ClientboundPackets1_16.SET_SLOT, Type.FLAT_VAR_INT_ITEM); - itemRewriter.registerEntityEquipmentArray(ClientboundPackets1_16.ENTITY_EQUIPMENT, Type.FLAT_VAR_INT_ITEM); - itemRewriter.registerTradeList(ClientboundPackets1_16.TRADE_LIST, Type.FLAT_VAR_INT_ITEM); - itemRewriter.registerAdvancements(ClientboundPackets1_16.ADVANCEMENTS, Type.FLAT_VAR_INT_ITEM); + itemRewriter.registerSetCooldown(ClientboundPackets1_16_2.COOLDOWN, BlockItemPackets1_16_2::getOldItemId); + itemRewriter.registerWindowItems(ClientboundPackets1_16_2.WINDOW_ITEMS, Type.FLAT_VAR_INT_ITEM_ARRAY); + itemRewriter.registerSetSlot(ClientboundPackets1_16_2.SET_SLOT, Type.FLAT_VAR_INT_ITEM); + itemRewriter.registerEntityEquipmentArray(ClientboundPackets1_16_2.ENTITY_EQUIPMENT, Type.FLAT_VAR_INT_ITEM); + itemRewriter.registerTradeList(ClientboundPackets1_16_2.TRADE_LIST, Type.FLAT_VAR_INT_ITEM); + itemRewriter.registerAdvancements(ClientboundPackets1_16_2.ADVANCEMENTS, Type.FLAT_VAR_INT_ITEM); - protocol.registerOutgoing(ClientboundPackets1_16.UNLOCK_RECIPES, new PacketRemapper() { + protocol.registerOutgoing(ClientboundPackets1_16_2.UNLOCK_RECIPES, new PacketRemapper() { @Override public void registerMap() { handler(wrapper -> { @@ -59,17 +59,20 @@ public class BlockItemPackets1_16_2 extends nl.matsv.viabackwards.api.rewriters. } }); - blockRewriter.registerAcknowledgePlayerDigging(ClientboundPackets1_16.ACKNOWLEDGE_PLAYER_DIGGING); - blockRewriter.registerBlockAction(ClientboundPackets1_16.BLOCK_ACTION); - blockRewriter.registerBlockChange(ClientboundPackets1_16.BLOCK_CHANGE); - blockRewriter.registerMultiBlockChange(ClientboundPackets1_16.MULTI_BLOCK_CHANGE); + blockRewriter.registerAcknowledgePlayerDigging(ClientboundPackets1_16_2.ACKNOWLEDGE_PLAYER_DIGGING); + blockRewriter.registerBlockAction(ClientboundPackets1_16_2.BLOCK_ACTION); + blockRewriter.registerBlockChange(ClientboundPackets1_16_2.BLOCK_CHANGE); - protocol.registerOutgoing(ClientboundPackets1_16.CHUNK_DATA, new PacketRemapper() { + protocol.registerOutgoing(ClientboundPackets1_16_2.CHUNK_DATA, new PacketRemapper() { @Override public void registerMap() { handler(wrapper -> { ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); - Chunk chunk = wrapper.passthrough(new Chunk1_16Type(clientWorld)); + Chunk chunk = wrapper.read(new Chunk1_16_2Type(clientWorld)); + wrapper.write(new Chunk1_16Type(clientWorld), chunk); + + //TODO handle biome ids + for (int i = 0; i < chunk.getSections().length; i++) { ChunkSection section = chunk.getSections()[i]; if (section == null) continue; @@ -82,8 +85,32 @@ public class BlockItemPackets1_16_2 extends nl.matsv.viabackwards.api.rewriters. } }); - blockRewriter.registerEffect(ClientboundPackets1_16.EFFECT, 1010, 2001, BlockItemPackets1_16_2::getOldItemId); - blockRewriter.registerSpawnParticle(ClientboundPackets1_16.SPAWN_PARTICLE, 3, 23, 34, + protocol.registerOutgoing(ClientboundPackets1_16_2.MULTI_BLOCK_CHANGE, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + wrapper.cancel(); + long chunkPosition = wrapper.read(Type.LONG); + int chunkX = (int) (chunkPosition >> 42); + int chunkY = (int) (chunkPosition << 44 >> 44); + int chunkZ = (int) (chunkPosition << 22 >> 42); + wrapper.write(Type.INT, chunkX); + wrapper.write(Type.INT, chunkZ); + + BlockChangeRecord[] blockChangeRecord = wrapper.read(Type.VAR_LONG_BLOCK_CHANGE_RECORD_ARRAY); + wrapper.write(Type.BLOCK_CHANGE_RECORD_ARRAY, blockChangeRecord); + for (int i = 0; i < blockChangeRecord.length; i++) { + BlockChangeRecord record = blockChangeRecord[i]; + int blockId = Protocol1_16_1To1_16_2.getNewBlockStateId(record.getBlockId()); + // Relative y -> absolute y + blockChangeRecord[i] = new BlockChangeRecord1_8(record.getSectionX(), record.getY(chunkY), record.getSectionZ(), blockId); + } + }); + } + }); + + blockRewriter.registerEffect(ClientboundPackets1_16_2.EFFECT, 1010, 2001, BlockItemPackets1_16_2::getOldItemId); + blockRewriter.registerSpawnParticle(ClientboundPackets1_16_2.SPAWN_PARTICLE, 3, 23, 34, null, this::handleItemToClient, Type.FLAT_VAR_INT_ITEM, Type.DOUBLE); itemRewriter.registerClickWindow(ServerboundPackets1_16.CLICK_WINDOW, Type.FLAT_VAR_INT_ITEM); diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_16_1to1_16_2/packets/EntityPackets1_16_2.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_16_1to1_16_2/packets/EntityPackets1_16_2.java index b355699e..dc7c9775 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_16_1to1_16_2/packets/EntityPackets1_16_2.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_16_1to1_16_2/packets/EntityPackets1_16_2.java @@ -12,7 +12,7 @@ import us.myles.ViaVersion.api.minecraft.metadata.types.MetaType1_14; import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.api.type.Type; import us.myles.ViaVersion.api.type.types.version.Types1_14; -import us.myles.ViaVersion.protocols.protocol1_16to1_15_2.ClientboundPackets1_16; +import us.myles.ViaVersion.protocols.protocol1_16_2to1_16_1.ClientboundPackets1_16_2; import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; import us.myles.viaversion.libs.gson.JsonElement; @@ -24,15 +24,15 @@ public class EntityPackets1_16_2 extends EntityRewriter @Override protected void registerPackets() { - registerSpawnTrackerWithData(ClientboundPackets1_16.SPAWN_ENTITY, Entity1_16_2Types.EntityType.FALLING_BLOCK, Protocol1_16_1To1_16_2::getNewBlockStateId); - registerSpawnTracker(ClientboundPackets1_16.SPAWN_MOB); - registerExtraTracker(ClientboundPackets1_16.SPAWN_EXPERIENCE_ORB, Entity1_16_2Types.EntityType.EXPERIENCE_ORB); - registerExtraTracker(ClientboundPackets1_16.SPAWN_PAINTING, Entity1_16_2Types.EntityType.PAINTING); - registerExtraTracker(ClientboundPackets1_16.SPAWN_PLAYER, Entity1_16_2Types.EntityType.PLAYER); - registerEntityDestroy(ClientboundPackets1_16.DESTROY_ENTITIES); - registerMetadataRewriter(ClientboundPackets1_16.ENTITY_METADATA, Types1_14.METADATA_LIST); + registerSpawnTrackerWithData(ClientboundPackets1_16_2.SPAWN_ENTITY, Entity1_16_2Types.EntityType.FALLING_BLOCK, Protocol1_16_1To1_16_2::getNewBlockStateId); + registerSpawnTracker(ClientboundPackets1_16_2.SPAWN_MOB); + registerExtraTracker(ClientboundPackets1_16_2.SPAWN_EXPERIENCE_ORB, Entity1_16_2Types.EntityType.EXPERIENCE_ORB); + registerExtraTracker(ClientboundPackets1_16_2.SPAWN_PAINTING, Entity1_16_2Types.EntityType.PAINTING); + registerExtraTracker(ClientboundPackets1_16_2.SPAWN_PLAYER, Entity1_16_2Types.EntityType.PLAYER); + registerEntityDestroy(ClientboundPackets1_16_2.DESTROY_ENTITIES); + registerMetadataRewriter(ClientboundPackets1_16_2.ENTITY_METADATA, Types1_14.METADATA_LIST); - protocol.registerOutgoing(ClientboundPackets1_16.JOIN_GAME, new PacketRemapper() { + protocol.registerOutgoing(ClientboundPackets1_16_2.JOIN_GAME, new PacketRemapper() { @Override public void registerMap() { map(Type.INT); // Entity ID @@ -63,7 +63,6 @@ public class EntityPackets1_16_2 extends EntityRewriter }); } }); - } @Override diff --git a/pom.xml b/pom.xml index 3cf4b408..f45ca8a7 100644 --- a/pom.xml +++ b/pom.xml @@ -65,7 +65,7 @@ us.myles viaversion - 3.0.2-20w27a + 3.0.2-20w28a provided