From d484545bef8b893d47113d07525f109e468a742a Mon Sep 17 00:00:00 2001 From: Matsv Date: Mon, 5 Feb 2018 20:51:34 +0100 Subject: [PATCH 001/171] Change keepAlive's initial value to fix Gerrygames/ViaRewind#14 --- .../KeepAliveTracker.java | 28 +++++++++++++++++++ .../Protocol1_12_1To1_12_2.java | 6 ++-- .../KeepAliveTracker.java | 18 ------------ 3 files changed, 31 insertions(+), 21 deletions(-) create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_1to1_12_2/KeepAliveTracker.java delete mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_12_1/KeepAliveTracker.java diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_1to1_12_2/KeepAliveTracker.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_1to1_12_2/KeepAliveTracker.java new file mode 100644 index 00000000..300d2bc7 --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_1to1_12_2/KeepAliveTracker.java @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2016 Matsv + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package nl.matsv.viabackwards.protocol.protocol1_12_1to1_12_2; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import us.myles.ViaVersion.api.data.StoredObject; +import us.myles.ViaVersion.api.data.UserConnection; + +@Getter +@Setter +@ToString +public class KeepAliveTracker extends StoredObject { + private long keepAlive = Integer.MAX_VALUE; + + public KeepAliveTracker(UserConnection user) { + super(user); + } +} diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_1to1_12_2/Protocol1_12_1To1_12_2.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_1to1_12_2/Protocol1_12_1To1_12_2.java index 67d5eb18..820f21b3 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_1to1_12_2/Protocol1_12_1To1_12_2.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_1to1_12_2/Protocol1_12_1To1_12_2.java @@ -11,7 +11,6 @@ package nl.matsv.viabackwards.protocol.protocol1_12_1to1_12_2; import nl.matsv.viabackwards.api.BackwardsProtocol; -import nl.matsv.viabackwards.protocol.protocol1_12to1_12_1.KeepAliveTracker; import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.data.UserConnection; import us.myles.ViaVersion.api.remapper.PacketHandler; @@ -36,7 +35,8 @@ public class Protocol1_12_1To1_12_2 extends BackwardsProtocol { } }); } - }); // Keep alive + }); + // Incoming // 0xb - Keep alive registerIncoming(State.PLAY, 0xb, 0xb, new PacketRemapper() { @@ -53,7 +53,7 @@ public class Protocol1_12_1To1_12_2 extends BackwardsProtocol { } packetWrapper.write(Type.LONG, realKeepAlive); // Reset KeepAliveTracker (to prevent sending same valid value in a row causing a timeout) - packetWrapper.user().get(KeepAliveTracker.class).setKeepAlive(Long.MIN_VALUE); + packetWrapper.user().get(KeepAliveTracker.class).setKeepAlive(Integer.MAX_VALUE); } }); } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_12_1/KeepAliveTracker.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_12_1/KeepAliveTracker.java deleted file mode 100644 index 07b02154..00000000 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_12_1/KeepAliveTracker.java +++ /dev/null @@ -1,18 +0,0 @@ -package nl.matsv.viabackwards.protocol.protocol1_12to1_12_1; - -import lombok.Getter; -import lombok.Setter; -import lombok.ToString; -import us.myles.ViaVersion.api.data.StoredObject; -import us.myles.ViaVersion.api.data.UserConnection; - -@Getter -@Setter -@ToString -public class KeepAliveTracker extends StoredObject { - private long keepAlive; - - public KeepAliveTracker(UserConnection user) { - super(user); - } -} From a5599deb8e90d65a23e66e5cbb24af8595e9f978 Mon Sep 17 00:00:00 2001 From: Marco Neuhaus Date: Mon, 12 Nov 2018 23:47:11 +0100 Subject: [PATCH 002/171] add Support 1.13.2 to 1.13.1 little particle fix for 1.13.1 to 1.13 --- .../api/ViaBackwardsPlatform.java | 6 +- .../Protocol1_13_1To1_13_2.java | 83 ++++++++++ .../packets/EntityPackets.java | 101 ++++++++++++ .../packets/InventoryPackets.java | 154 ++++++++++++++++++ .../packets/WorldPackets.java | 42 +++++ .../packets/WorldPackets.java | 2 + 6 files changed, 386 insertions(+), 2 deletions(-) create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/Protocol1_13_1To1_13_2.java create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/EntityPackets.java create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/InventoryPackets.java create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/WorldPackets.java diff --git a/core/src/main/java/nl/matsv/viabackwards/api/ViaBackwardsPlatform.java b/core/src/main/java/nl/matsv/viabackwards/api/ViaBackwardsPlatform.java index b5de2b87..f6e13725 100644 --- a/core/src/main/java/nl/matsv/viabackwards/api/ViaBackwardsPlatform.java +++ b/core/src/main/java/nl/matsv/viabackwards/api/ViaBackwardsPlatform.java @@ -17,6 +17,7 @@ import nl.matsv.viabackwards.protocol.protocol1_12_1to1_12_2.Protocol1_12_1To1_1 import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.Protocol1_12_2To1_13; import nl.matsv.viabackwards.protocol.protocol1_12to1_11_1.Protocol1_11_1To1_12; import nl.matsv.viabackwards.protocol.protocol1_12to1_12_1.Protocol1_12To1_12_1; +import nl.matsv.viabackwards.protocol.protocol1_13_1to1_13_2.Protocol1_13_1To1_13_2; import nl.matsv.viabackwards.protocol.protocol1_13to1_13_1.Protocol1_13To1_13_1; import nl.matsv.viabackwards.protocol.protocol1_9_4to1_10.Protocol1_9_4To1_10; import us.myles.ViaVersion.api.protocol.ProtocolRegistry; @@ -40,8 +41,9 @@ public interface ViaBackwardsPlatform { ProtocolRegistry.registerProtocol(new Protocol1_11_1To1_12(), Collections.singletonList(ProtocolVersion.v1_11_1.getId()), ProtocolVersion.v1_12.getId()); ProtocolRegistry.registerProtocol(new Protocol1_12To1_12_1(), Collections.singletonList(ProtocolVersion.v1_12.getId()), ProtocolVersion.v1_12_1.getId()); ProtocolRegistry.registerProtocol(new Protocol1_12_1To1_12_2(), Collections.singletonList(ProtocolVersion.v1_12_1.getId()), ProtocolVersion.v1_12_2.getId()); - ProtocolRegistry.registerProtocol(new Protocol1_13To1_13_1(), Collections.singletonList(ProtocolVersion.v1_13.getId()), ProtocolVersion.v1_13_1.getId()) - ProtocolRegistry.registerProtocol(new Protocol1_12_2To1_13(), Collections.singletonList(ProtocolVersion.v1_12_2.getId()), ProtocolVersion.v1_13.getId()) + ProtocolRegistry.registerProtocol(new Protocol1_12_2To1_13(), Collections.singletonList(ProtocolVersion.v1_12_2.getId()), ProtocolVersion.v1_13.getId()); + ProtocolRegistry.registerProtocol(new Protocol1_13To1_13_1(), Collections.singletonList(ProtocolVersion.v1_13.getId()), ProtocolVersion.v1_13_1.getId()); + ProtocolRegistry.registerProtocol(new Protocol1_13_1To1_13_2(), Collections.singletonList(ProtocolVersion.v1_13_1.getId()), ProtocolVersion.v1_13_2.getId()); } } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/Protocol1_13_1To1_13_2.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/Protocol1_13_1To1_13_2.java new file mode 100644 index 00000000..41f4164a --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/Protocol1_13_1To1_13_2.java @@ -0,0 +1,83 @@ +package nl.matsv.viabackwards.protocol.protocol1_13_1to1_13_2; + +import nl.matsv.viabackwards.api.BackwardsProtocol; +import us.myles.ViaVersion.api.PacketWrapper; +import us.myles.ViaVersion.api.data.UserConnection; +import us.myles.ViaVersion.api.minecraft.item.Item; +import us.myles.ViaVersion.api.remapper.PacketHandler; +import us.myles.ViaVersion.api.remapper.PacketRemapper; +import us.myles.ViaVersion.api.type.Type; +import us.myles.ViaVersion.packets.State; +import nl.matsv.viabackwards.protocol.protocol1_13_1to1_13_2.packets.EntityPackets; +import nl.matsv.viabackwards.protocol.protocol1_13_1to1_13_2.packets.InventoryPackets; +import nl.matsv.viabackwards.protocol.protocol1_13_1to1_13_2.packets.WorldPackets; + +/** + * Created by Marco Neuhaus on 12.11.2018 for the Project ViaBackwards. + */ +public class Protocol1_13_1To1_13_2 extends BackwardsProtocol { + + @Override + protected void registerPackets() { + InventoryPackets.register(this); + WorldPackets.register(this); + EntityPackets.register(this); + + //Edit Book + registerIncoming(State.PLAY, 0x0B, 0x0B, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.FLAT_VAR_INT_ITEM, Type.FLAT_ITEM); + map(Type.BOOLEAN); + } + }); + + // Advancements + registerOutgoing(State.PLAY, 0x51, 0x51, new PacketRemapper() { + @Override + public void registerMap() { + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + wrapper.passthrough(Type.BOOLEAN); // Reset/clear + int size = wrapper.passthrough(Type.VAR_INT); // Mapping size + + for (int i = 0; i < size; i++) { + wrapper.passthrough(Type.STRING); // Identifier + + // Parent + if (wrapper.passthrough(Type.BOOLEAN)) + wrapper.passthrough(Type.STRING); + + // Display data + if (wrapper.passthrough(Type.BOOLEAN)) { + wrapper.passthrough(Type.STRING); // Title + wrapper.passthrough(Type.STRING); // Description + Item icon = wrapper.read(Type.FLAT_VAR_INT_ITEM); + wrapper.write(Type.FLAT_ITEM, icon); + wrapper.passthrough(Type.VAR_INT); // Frame type + int flags = wrapper.passthrough(Type.INT); // Flags + if ((flags & 1) != 0) + wrapper.passthrough(Type.STRING); // Background texture + wrapper.passthrough(Type.FLOAT); // X + wrapper.passthrough(Type.FLOAT); // Y + } + + wrapper.passthrough(Type.STRING_ARRAY); // Criteria + + int arrayLength = wrapper.passthrough(Type.VAR_INT); + for (int array = 0; array < arrayLength; array++) { + wrapper.passthrough(Type.STRING_ARRAY); // String array + } + } + } + }); + } + }); + } + + @Override + public void init(UserConnection userConnection) { + + } +} diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/EntityPackets.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/EntityPackets.java new file mode 100644 index 00000000..3dc4115a --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/EntityPackets.java @@ -0,0 +1,101 @@ +package nl.matsv.viabackwards.protocol.protocol1_13_1to1_13_2.packets; + +import us.myles.ViaVersion.api.PacketWrapper; +import us.myles.ViaVersion.api.minecraft.metadata.Metadata; +import us.myles.ViaVersion.api.minecraft.metadata.types.MetaType1_13; +import us.myles.ViaVersion.api.minecraft.metadata.types.MetaType1_13_2; +import us.myles.ViaVersion.api.protocol.Protocol; +import us.myles.ViaVersion.api.remapper.PacketHandler; +import us.myles.ViaVersion.api.remapper.PacketRemapper; +import us.myles.ViaVersion.api.type.Type; +import us.myles.ViaVersion.api.type.types.version.Types1_13; +import us.myles.ViaVersion.api.type.types.version.Types1_13_2; +import us.myles.ViaVersion.packets.State; + +/** + * Created by Marco Neuhaus on 12.11.2018 for the Project ViaBackwards. + */ +public class EntityPackets { + + + public static void register(Protocol protocol) { + // Spawn mob packet + protocol.registerOutgoing(State.PLAY, 0x3, 0x3, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); // 0 - Entity ID + map(Type.UUID); // 1 - Entity UUID + map(Type.VAR_INT); // 2 - Entity Type + map(Type.DOUBLE); // 3 - X + map(Type.DOUBLE); // 4 - Y + map(Type.DOUBLE); // 5 - Z + map(Type.BYTE); // 6 - Yaw + map(Type.BYTE); // 7 - Pitch + map(Type.BYTE); // 8 - Head Pitch + map(Type.SHORT); // 9 - Velocity X + map(Type.SHORT); // 10 - Velocity Y + map(Type.SHORT); // 11 - Velocity Z + map(Types1_13_2.METADATA_LIST, Types1_13.METADATA_LIST); // 12 - Metadata + + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + for (Metadata metadata : wrapper.get(Types1_13.METADATA_LIST, 0)) { + if (metadata.getMetaType() == MetaType1_13_2.Slot) { + metadata.setMetaType(MetaType1_13.Slot); + } + } + } + }); + } + }); + + // Spawn player packet + protocol.registerOutgoing(State.PLAY, 0x05, 0x05, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); // 0 - Entity ID + map(Type.UUID); // 1 - Player UUID + map(Type.DOUBLE); // 2 - X + map(Type.DOUBLE); // 3 - Y + map(Type.DOUBLE); // 4 - Z + map(Type.BYTE); // 5 - Yaw + map(Type.BYTE); // 6 - Pitch + map(Types1_13_2.METADATA_LIST, Types1_13.METADATA_LIST); // 7 - Metadata + + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + for (Metadata metadata : wrapper.get(Types1_13.METADATA_LIST, 0)) { + if (metadata.getMetaType() == MetaType1_13_2.Slot) { + metadata.setMetaType(MetaType1_13.Slot); + } + } + } + }); + } + }); + + + // Metadata packet + protocol.registerOutgoing(State.PLAY, 0x3F, 0x3F, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); // 0 - Entity ID + map(Types1_13_2.METADATA_LIST, Types1_13.METADATA_LIST); // 1 - Metadata list + + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + for (Metadata metadata : wrapper.get(Types1_13.METADATA_LIST, 0)) { + if (metadata.getMetaType() == MetaType1_13_2.Slot) { + metadata.setMetaType(MetaType1_13.Slot); + } + } + } + }); + } + }); + } + +} diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/InventoryPackets.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/InventoryPackets.java new file mode 100644 index 00000000..2c525864 --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/InventoryPackets.java @@ -0,0 +1,154 @@ +package nl.matsv.viabackwards.protocol.protocol1_13_1to1_13_2.packets; + +import us.myles.ViaVersion.api.PacketWrapper; +import us.myles.ViaVersion.api.protocol.Protocol; +import us.myles.ViaVersion.api.remapper.PacketHandler; +import us.myles.ViaVersion.api.remapper.PacketRemapper; +import us.myles.ViaVersion.api.type.Type; +import us.myles.ViaVersion.packets.State; + +/** + * Created by Marco Neuhaus on 12.11.2018 for the Project ViaBackwards. + */ +public class InventoryPackets { + + public static void register(Protocol protocol) { + + /* + Outgoing packets + */ + + // Set slot packet + protocol.registerOutgoing(State.PLAY, 0x17, 0x17, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE); // 0 - Window ID + map(Type.SHORT); // 1 - Slot ID + map(Type.FLAT_VAR_INT_ITEM, Type.FLAT_ITEM); // 2 - Slot Value + } + }); + + // Window items packet + protocol.registerOutgoing(State.PLAY, 0x15, 0x15, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.UNSIGNED_BYTE); // 0 - Window ID + map(Type.FLAT_VAR_INT_ITEM_ARRAY, Type.FLAT_ITEM_ARRAY); // 1 - Window Values + } + }); + + // Plugin message + protocol.registerOutgoing(State.PLAY, 0x19, 0x19, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.STRING); // Channel + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + String channel = wrapper.get(Type.STRING, 0); + if (channel.equals("minecraft:trader_list") || channel.equals("trader_list")) { + wrapper.passthrough(Type.INT); // Passthrough Window ID + + int size = wrapper.passthrough(Type.UNSIGNED_BYTE); + for (int i = 0; i < size; i++) { + // Input Item + wrapper.write(Type.FLAT_ITEM, wrapper.read(Type.FLAT_VAR_INT_ITEM)); + // Output Item + wrapper.write(Type.FLAT_ITEM, wrapper.read(Type.FLAT_VAR_INT_ITEM)); + + boolean secondItem = wrapper.passthrough(Type.BOOLEAN); // Has second item + if (secondItem) { + wrapper.write(Type.FLAT_ITEM, wrapper.read(Type.FLAT_VAR_INT_ITEM)); + } + + wrapper.passthrough(Type.BOOLEAN); // Trade disabled + wrapper.passthrough(Type.INT); // Number of tools uses + wrapper.passthrough(Type.INT); // Maximum number of trade uses + } + } + } + }); + } + }); + + // Entity Equipment Packet + protocol.registerOutgoing(State.PLAY, 0x42, 0x42, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); // 0 - Entity ID + map(Type.VAR_INT); // 1 - Slot ID + map(Type.FLAT_VAR_INT_ITEM, Type.FLAT_ITEM); // 2 - Item + } + }); + + // // Declare Recipes + protocol.registerOutgoing(State.PLAY, 0x54, 0x54, new PacketRemapper() { + @Override + public void registerMap() { + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + int recipesNo = wrapper.passthrough(Type.VAR_INT); + for (int i = 0; i < recipesNo; i++) { + wrapper.passthrough(Type.STRING); // Id + String type = wrapper.passthrough(Type.STRING); + if (type.equals("crafting_shapeless")) { + wrapper.passthrough(Type.STRING); // Group + int ingredientsNo = wrapper.passthrough(Type.VAR_INT); + for (int i1 = 0; i1 < ingredientsNo; i1++) { + wrapper.write(Type.FLAT_ITEM_ARRAY_VAR_INT, wrapper.read(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT)); + } + wrapper.write(Type.FLAT_ITEM, wrapper.read(Type.FLAT_VAR_INT_ITEM)); + } else if (type.equals("crafting_shaped")) { + int ingredientsNo = wrapper.passthrough(Type.VAR_INT) * wrapper.passthrough(Type.VAR_INT); + wrapper.passthrough(Type.STRING); // Group + for (int i1 = 0; i1 < ingredientsNo; i1++) { + wrapper.write(Type.FLAT_ITEM_ARRAY_VAR_INT, wrapper.read(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT)); + } + wrapper.write(Type.FLAT_ITEM, wrapper.read(Type.FLAT_VAR_INT_ITEM)); + } else if (type.equals("smelting")) { + wrapper.passthrough(Type.STRING); // Group + // Ingredient start + wrapper.write(Type.FLAT_ITEM_ARRAY_VAR_INT, wrapper.read(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT)); + // Ingredient end + wrapper.write(Type.FLAT_ITEM, wrapper.read(Type.FLAT_VAR_INT_ITEM)); + wrapper.passthrough(Type.FLOAT); // EXP + wrapper.passthrough(Type.VAR_INT); // Cooking time + } + } + } + }); + } + }); + + + /* + Incoming packets + */ + + // Click window packet + protocol.registerIncoming(State.PLAY, 0x08, 0x08, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.UNSIGNED_BYTE); // 0 - Window ID + map(Type.SHORT); // 1 - Slot + map(Type.BYTE); // 2 - Button + map(Type.SHORT); // 3 - Action number + map(Type.VAR_INT); // 4 - Mode + map(Type.FLAT_ITEM, Type.FLAT_VAR_INT_ITEM); // 5 - Clicked Item + } + } + ); + + // Creative Inventory Action + protocol.registerIncoming(State.PLAY, 0x24, 0x24, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.SHORT); // 0 - Slot + map(Type.FLAT_ITEM, Type.FLAT_VAR_INT_ITEM); // 1 - Clicked Item + } + } + ); + } + +} diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/WorldPackets.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/WorldPackets.java new file mode 100644 index 00000000..9141483e --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/WorldPackets.java @@ -0,0 +1,42 @@ +package nl.matsv.viabackwards.protocol.protocol1_13_1to1_13_2.packets; + +import us.myles.ViaVersion.api.PacketWrapper; +import us.myles.ViaVersion.api.protocol.Protocol; +import us.myles.ViaVersion.api.remapper.PacketHandler; +import us.myles.ViaVersion.api.remapper.PacketRemapper; +import us.myles.ViaVersion.api.type.Type; +import us.myles.ViaVersion.packets.State; + +/** + * Created by Marco Neuhaus on 12.11.2018 for the Project ViaBackwards. + */ +public class WorldPackets { + + public static void register(Protocol protocol) { + //spawn particle + protocol.registerOutgoing(State.PLAY, 0x24, 0x24, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // 0 - Particle ID + map(Type.BOOLEAN); // 1 - Long Distance + map(Type.FLOAT); // 2 - X + map(Type.FLOAT); // 3 - Y + map(Type.FLOAT); // 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(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + int id = wrapper.get(Type.INT, 0); + if (id == 27) { + wrapper.write(Type.FLAT_ITEM, wrapper.read(Type.FLAT_VAR_INT_ITEM)); + } + } + }); + } + }); + } +} diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/WorldPackets.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/WorldPackets.java index 222f5eed..3fd244d0 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/WorldPackets.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/WorldPackets.java @@ -175,6 +175,8 @@ public class WorldPackets { if(id == 3 || id == 20){ int data = wrapper.passthrough(Type.VAR_INT); wrapper.set(Type.VAR_INT, 0, Protocol1_13To1_13_1.getNewBlockStateId(data)); + } else if (id == 27) { + InventoryPackets.toClient(wrapper.passthrough(Type.FLAT_ITEM)); } } }); From ae3142c2f5b5877ff84d60950c70c4590ec9c20a Mon Sep 17 00:00:00 2001 From: Marco Neuhaus Date: Mon, 12 Nov 2018 23:52:56 +0100 Subject: [PATCH 003/171] remove fileheader --- .../protocol1_13_1to1_13_2/Protocol1_13_1To1_13_2.java | 3 --- .../protocol/protocol1_13_1to1_13_2/packets/EntityPackets.java | 3 --- .../protocol1_13_1to1_13_2/packets/InventoryPackets.java | 3 --- .../protocol/protocol1_13_1to1_13_2/packets/WorldPackets.java | 3 --- 4 files changed, 12 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/Protocol1_13_1To1_13_2.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/Protocol1_13_1To1_13_2.java index 41f4164a..f487d237 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/Protocol1_13_1To1_13_2.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/Protocol1_13_1To1_13_2.java @@ -12,9 +12,6 @@ import nl.matsv.viabackwards.protocol.protocol1_13_1to1_13_2.packets.EntityPacke import nl.matsv.viabackwards.protocol.protocol1_13_1to1_13_2.packets.InventoryPackets; import nl.matsv.viabackwards.protocol.protocol1_13_1to1_13_2.packets.WorldPackets; -/** - * Created by Marco Neuhaus on 12.11.2018 for the Project ViaBackwards. - */ public class Protocol1_13_1To1_13_2 extends BackwardsProtocol { @Override diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/EntityPackets.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/EntityPackets.java index 3dc4115a..ad4ecd2d 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/EntityPackets.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/EntityPackets.java @@ -12,9 +12,6 @@ import us.myles.ViaVersion.api.type.types.version.Types1_13; import us.myles.ViaVersion.api.type.types.version.Types1_13_2; import us.myles.ViaVersion.packets.State; -/** - * Created by Marco Neuhaus on 12.11.2018 for the Project ViaBackwards. - */ public class EntityPackets { diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/InventoryPackets.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/InventoryPackets.java index 2c525864..cf43be02 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/InventoryPackets.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/InventoryPackets.java @@ -7,9 +7,6 @@ import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.api.type.Type; import us.myles.ViaVersion.packets.State; -/** - * Created by Marco Neuhaus on 12.11.2018 for the Project ViaBackwards. - */ public class InventoryPackets { public static void register(Protocol protocol) { diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/WorldPackets.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/WorldPackets.java index 9141483e..9fc17e0a 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/WorldPackets.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/WorldPackets.java @@ -7,9 +7,6 @@ import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.api.type.Type; import us.myles.ViaVersion.packets.State; -/** - * Created by Marco Neuhaus on 12.11.2018 for the Project ViaBackwards. - */ public class WorldPackets { public static void register(Protocol protocol) { From d0dec2539d6d635ec573c329c2d5437ed2bcfdb6 Mon Sep 17 00:00:00 2001 From: Marco Neuhaus Date: Tue, 13 Nov 2018 10:59:33 +0100 Subject: [PATCH 004/171] fix books --- .../protocol1_13_1to1_13_2/Protocol1_13_1To1_13_2.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/Protocol1_13_1To1_13_2.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/Protocol1_13_1To1_13_2.java index f487d237..d724dce7 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/Protocol1_13_1To1_13_2.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/Protocol1_13_1To1_13_2.java @@ -24,8 +24,7 @@ public class Protocol1_13_1To1_13_2 extends BackwardsProtocol { registerIncoming(State.PLAY, 0x0B, 0x0B, new PacketRemapper() { @Override public void registerMap() { - map(Type.FLAT_VAR_INT_ITEM, Type.FLAT_ITEM); - map(Type.BOOLEAN); + map(Type.FLAT_ITEM, Type.FLAT_VAR_INT_ITEM); } }); From 7296017ab8e55c585f66482accc426b7c444460c Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Tue, 20 Nov 2018 15:32:49 +0100 Subject: [PATCH 005/171] ViaVersion 2.0.0 compatibility --- .../api/rewriters/BlockItemRewriter.java | 65 ++++++++++++------- .../packets/BlockItemPackets1_11.java | 4 +- .../packets/BlockItemPackets1_12.java | 4 +- .../packets/BlockItemPackets1_10.java | 4 +- pom.xml | 2 +- 5 files changed, 50 insertions(+), 29 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/api/rewriters/BlockItemRewriter.java b/core/src/main/java/nl/matsv/viabackwards/api/rewriters/BlockItemRewriter.java index c8ebd273..3ad77ff2 100644 --- a/core/src/main/java/nl/matsv/viabackwards/api/rewriters/BlockItemRewriter.java +++ b/core/src/main/java/nl/matsv/viabackwards/api/rewriters/BlockItemRewriter.java @@ -138,10 +138,18 @@ public abstract class BlockItemRewriter extends Rew if (!(tag.contains("x") && tag.contains("y") && tag.contains("z"))) continue; Pos pos = new Pos( - (int) tag.get("x").getValue() % 16, + (int) tag.get("x").getValue() & 0xF, (int) tag.get("y").getValue(), - (int) tag.get("z").getValue() % 16); + (int) tag.get("z").getValue() & 0xF); tags.put(pos, tag); + + // Handle given Block Entities + ChunkSection section = chunk.getSections()[pos.getY() >> 4]; + if (section == null) continue; + int block = section.getFlatBlock(pos.getX(), pos.getY() & 0xF, pos.getZ()); + int btype = block >> 4; + if (!hasBlockEntityHandler(btype)) continue; + replacementData.get(btype).getBlockEntityHandler().handleOrNewCompoundTag(block, tag); } for (int i = 0; i < chunk.getSections().length; i++) { @@ -149,32 +157,45 @@ public abstract class BlockItemRewriter extends Rew if (section == null) continue; + boolean hasBlockEntityHandler = false; + + // Map blocks + for (int j = 0; j < section.getPaletteSize(); j++) { + int block = section.getPaletteEntry(j); + int btype = block >> 4; + int meta = block & 0xF; + + if (containsBlock(btype)) { + Block b = handleBlock(btype, meta); + section.setPaletteEntry(j, (b.getId() << 4) | (b.getData() & 0xF)); + } + + hasBlockEntityHandler = hasBlockEntityHandler || hasBlockEntityHandler(btype); + } + + if (!hasBlockEntityHandler) continue; + + // We need to handle a Block Entity :( for (int x = 0; x < 16; x++) { for (int y = 0; y < 16; y++) { for (int z = 0; z < 16; z++) { - int block = section.getBlock(x, y, z); + int block = section.getFlatBlock(x, y, z); int btype = block >> 4; int meta = block & 15; - if (containsBlock(btype)) { - Block b = handleBlock(btype, meta); // Type / data - section.setBlock(x, y, z, b.getId(), b.getData()); - } - // Entity Tags - if (hasBlockEntityHandler(btype)) { - Pos pos = new Pos(x, (y + (i << 4)), z); - CompoundTag tag = null; - if (tags.containsKey(pos)) { - tag = tags.get(pos); - } else { - tag = new CompoundTag(""); - tag.put(new IntTag("x", x + (chunk.getX() << 4))); - tag.put(new IntTag("y", y + (i << 4))); - tag.put(new IntTag("z", z + (chunk.getZ() << 4))); - chunk.getBlockEntities().add(tag); - } - replacementData.get(btype).getBlockEntityHandler().handleOrNewCompoundTag(block, tag); - } + if (!hasBlockEntityHandler(btype)) continue; + + Pos pos = new Pos(x, (y + (i << 4)), z); + + // Already handled above + if (tags.containsKey(pos)) continue; + + CompoundTag tag = new CompoundTag(""); + tag.put(new IntTag("x", x + (chunk.getX() << 4))); + tag.put(new IntTag("y", y + (i << 4))); + tag.put(new IntTag("z", z + (chunk.getZ() << 4))); + replacementData.get(btype).getBlockEntityHandler().handleOrNewCompoundTag(block, tag); + chunk.getBlockEntities().add(tag); } } } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_10to1_11/packets/BlockItemPackets1_11.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_10to1_11/packets/BlockItemPackets1_11.java index 80509d0a..10519452 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_10to1_11/packets/BlockItemPackets1_11.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_10to1_11/packets/BlockItemPackets1_11.java @@ -22,13 +22,13 @@ import nl.matsv.viabackwards.protocol.protocol1_12to1_11_1.data.BlockColors; import nl.matsv.viabackwards.utils.Block; import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.data.UserConnection; +import us.myles.ViaVersion.api.minecraft.chunks.Chunk; import us.myles.ViaVersion.api.minecraft.item.Item; import us.myles.ViaVersion.api.minecraft.metadata.Metadata; import us.myles.ViaVersion.api.remapper.PacketHandler; import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.api.type.Type; import us.myles.ViaVersion.packets.State; -import us.myles.ViaVersion.protocols.protocol1_9_1_2to1_9_3_4.chunks.Chunk1_9_3_4; import us.myles.ViaVersion.protocols.protocol1_9_1_2to1_9_3_4.types.Chunk1_9_3_4Type; import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; import us.myles.viaversion.libs.opennbt.tag.builtin.CompoundTag; @@ -226,7 +226,7 @@ public class BlockItemPackets1_11 extends BlockItemRewriter ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); Chunk1_9_3_4Type type = new Chunk1_9_3_4Type(clientWorld); // Use the 1.10 Chunk type since nothing changed. - Chunk1_9_3_4 chunk = (Chunk1_9_3_4) wrapper.passthrough(type); + Chunk chunk = wrapper.passthrough(type); handleChunk(chunk); diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/packets/BlockItemPackets1_12.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/packets/BlockItemPackets1_12.java index bd60e6fd..fc87650f 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/packets/BlockItemPackets1_12.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/packets/BlockItemPackets1_12.java @@ -15,13 +15,13 @@ import nl.matsv.viabackwards.protocol.protocol1_12to1_11_1.Protocol1_11_1To1_12; import nl.matsv.viabackwards.protocol.protocol1_12to1_11_1.data.BlockColors; import nl.matsv.viabackwards.utils.Block; import us.myles.ViaVersion.api.PacketWrapper; +import us.myles.ViaVersion.api.minecraft.chunks.Chunk; import us.myles.ViaVersion.api.minecraft.item.Item; import us.myles.ViaVersion.api.minecraft.metadata.Metadata; import us.myles.ViaVersion.api.remapper.PacketHandler; import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.api.type.Type; import us.myles.ViaVersion.packets.State; -import us.myles.ViaVersion.protocols.protocol1_9_1_2to1_9_3_4.chunks.Chunk1_9_3_4; import us.myles.ViaVersion.protocols.protocol1_9_1_2to1_9_3_4.types.Chunk1_9_3_4Type; import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; import us.myles.viaversion.libs.opennbt.tag.builtin.CompoundTag; @@ -171,7 +171,7 @@ public class BlockItemPackets1_12 extends BlockItemRewriter ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); Chunk1_9_3_4Type type = new Chunk1_9_3_4Type(clientWorld); - Chunk1_9_3_4 chunk = (Chunk1_9_3_4) wrapper.passthrough(type); + Chunk chunk = wrapper.passthrough(type); handleChunk(chunk); } diff --git a/pom.xml b/pom.xml index 37264eec..9a000266 100644 --- a/pom.xml +++ b/pom.xml @@ -65,7 +65,7 @@ us.myles viaversion - 1.4.1 + 2.0.0-SNAPSHOT provided From f0ef119440651bd6d104f35dad709e9ffdeca5c1 Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Thu, 16 Aug 2018 15:15:44 +0200 Subject: [PATCH 006/171] Rewrite map colors added in 1.12 --- .../data/MapColorMapping.java | 78 +++++++++++++++++++ .../packets/BlockItemPackets1_12.java | 38 +++++++++ 2 files changed, 116 insertions(+) create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/data/MapColorMapping.java diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/data/MapColorMapping.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/data/MapColorMapping.java new file mode 100644 index 00000000..14b2406c --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/data/MapColorMapping.java @@ -0,0 +1,78 @@ +package nl.matsv.viabackwards.protocol.protocol1_12to1_11_1.data; + +import java.util.HashMap; +import java.util.Map; + +public class MapColorMapping { + private static Map mapping = new HashMap<>(); + static { + mapping.put(144, 59); // (148, 124, 114) -> (148, 124, 114) + mapping.put(145, 56); // (180, 153, 139) -> (180, 153, 139) + mapping.put(146, 56); // (209, 177, 161) -> (209, 177, 161) + mapping.put(147, 45); // (111, 94, 85) -> (111, 94, 85) + mapping.put(148, 63); // (112, 58, 25) -> (112, 58, 25) + mapping.put(149, 60); // (137, 71, 31) -> (137, 71, 31) + mapping.put(150, 60); // (159, 82, 36) -> (159, 82, 36) + mapping.put(151, 136); // (84, 43, 19) -> (84, 43, 19) + mapping.put(152, 83); // (105, 61, 76) -> (105, 61, 76) + mapping.put(153, 83); // (129, 75, 93) -> (129, 75, 93) + mapping.put(154, 80); // (149, 87, 108) -> (149, 87, 108) + mapping.put(155, 115); // (79, 46, 57) -> (79, 46, 57) + mapping.put(156, 39); // (79, 76, 97) -> (79, 76, 97) + mapping.put(157, 39); // (97, 93, 119) -> (97, 93, 119) + mapping.put(158, 36); // (112, 108, 138) -> (112, 108, 138) + mapping.put(159, 47); // (59, 57, 73) -> (59, 57, 73) + mapping.put(160, 60); // (131, 94, 25) -> (131, 94, 25) + mapping.put(161, 61); // (160, 115, 31) -> (160, 115, 31) + mapping.put(162, 62); // (186, 133, 36) -> (186, 133, 36) + mapping.put(163, 137); // (98, 70, 19) -> (98, 70, 19) + mapping.put(164, 108); // (73, 83, 37) -> (73, 83, 37) + mapping.put(165, 108); // (89, 101, 46) -> (89, 101, 46) + mapping.put(166, 109); // (103, 117, 53) -> (103, 117, 53) + mapping.put(167, 111); // (55, 62, 28) -> (55, 62, 28) + mapping.put(168, 112); // (113, 54, 55) -> (113, 54, 55) + mapping.put(169, 113); // (138, 66, 67) -> (138, 66, 67) + mapping.put(170, 114); // (160, 77, 78) -> (160, 77, 78) + mapping.put(171, 115); // (85, 41, 41) -> (85, 41, 41) + mapping.put(172, 118); // (40, 29, 25) -> (40, 29, 25) + mapping.put(173, 107); // (49, 35, 30) -> (49, 35, 30) + mapping.put(174, 107); // (57, 41, 35) -> (57, 41, 35) + mapping.put(175, 118); // (30, 22, 19) -> (30, 22, 19) + mapping.put(176, 91); // (95, 76, 69) -> (95, 76, 69) + mapping.put(177, 45); // (116, 92, 85) -> (116, 92, 85) + mapping.put(178, 46); // (135, 107, 98) -> (135, 107, 98) + mapping.put(179, 47); // (71, 57, 52) -> (71, 57, 52) + mapping.put(180, 85); // (61, 65, 65) -> (61, 65, 65) + mapping.put(181, 44); // (75, 79, 79) -> (75, 79, 79) + mapping.put(182, 27); // (87, 92, 92) -> (87, 92, 92) + mapping.put(183, 84); // (46, 49, 49) -> (46, 49, 49) + mapping.put(184, 83); // (86, 52, 62) -> (86, 52, 62) + mapping.put(185, 83); // (105, 63, 76) -> (105, 63, 76) + mapping.put(186, 83); // (122, 73, 88) -> (122, 73, 88) + mapping.put(187, 84); // (65, 39, 47) -> (65, 39, 47) + mapping.put(188, 84); // (54, 44, 65) -> (54, 44, 65) + mapping.put(189, 71); // (66, 53, 79) -> (66, 53, 79) + mapping.put(190, 71); // (76, 62, 92) -> (76, 62, 92) + mapping.put(191, 87); // (40, 33, 49) -> (40, 33, 49) + mapping.put(192, 107); // (54, 35, 25) -> (54, 35, 25) + mapping.put(193, 139); // (66, 43, 30) -> (66, 43, 30) + mapping.put(194, 43); // (76, 50, 35) -> (76, 50, 35) + mapping.put(195, 107); // (40, 26, 19) -> (40, 26, 19) + mapping.put(196, 111); // (54, 58, 30) -> (54, 58, 30) + mapping.put(197, 111); // (66, 71, 36) -> (66, 71, 36) + mapping.put(198, 111); // (76, 82, 42) -> (76, 82, 42) + mapping.put(199, 107); // (40, 43, 22) -> (40, 43, 22) + mapping.put(200, 112); // (100, 42, 32) -> (100, 42, 32) + mapping.put(201, 113); // (123, 52, 40) -> (123, 52, 40) + mapping.put(202, 113); // (142, 60, 46) -> (142, 60, 46) + mapping.put(203, 115); // (75, 32, 24) -> (75, 32, 24) + mapping.put(204, 116); // (26, 16, 11) -> (26, 16, 11) + mapping.put(205, 117); // (32, 19, 14) -> (32, 19, 14) + mapping.put(206, 107); // (37, 22, 16) -> (37, 22, 16) + mapping.put(207, 119); // (20, 12, 8) -> (20, 12, 8) + } + + public static int getNearestOldColor(int color) { + return mapping.getOrDefault(color, color); + } +} diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/packets/BlockItemPackets1_12.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/packets/BlockItemPackets1_12.java index fc87650f..354dd452 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/packets/BlockItemPackets1_12.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/packets/BlockItemPackets1_12.java @@ -13,6 +13,7 @@ package nl.matsv.viabackwards.protocol.protocol1_12to1_11_1.packets; import nl.matsv.viabackwards.api.rewriters.BlockItemRewriter; import nl.matsv.viabackwards.protocol.protocol1_12to1_11_1.Protocol1_11_1To1_12; import nl.matsv.viabackwards.protocol.protocol1_12to1_11_1.data.BlockColors; +import nl.matsv.viabackwards.protocol.protocol1_12to1_11_1.data.MapColorMapping; import nl.matsv.viabackwards.utils.Block; import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.minecraft.chunks.Chunk; @@ -34,6 +35,43 @@ public class BlockItemPackets1_12 extends BlockItemRewriter 143) { + color = (short) MapColorMapping.getNearestOldColor(color); + data[i] = (byte) color; + } + } + wrapper.write(Type.BYTE_ARRAY, data); + } + }); + } + }); + // Set slot packet protocol.registerOutgoing(State.PLAY, 0x16, 0x16, new PacketRemapper() { @Override From b9a2404f9ce49f7fa265effa437b6dc5d5ebd77e Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Wed, 16 Jan 2019 12:47:30 +0100 Subject: [PATCH 007/171] some more progress on 1.13 --- .../Protocol1_12_2To1_13.java | 44 ++-- .../data/PaintingMapping.java | 45 ++++ .../packets/BlockItemPackets1_13.java | 193 +++++++++++++++++- .../packets/EntityPackets1_13.java | 40 ++++ .../packets/PlayerPacket1_13.java | 89 ++++++++ .../packets/InventoryPackets.java | 2 +- 6 files changed, 385 insertions(+), 28 deletions(-) create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/PaintingMapping.java create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java index dd04b730..95f445b3 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java @@ -12,7 +12,10 @@ package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13; import nl.matsv.viabackwards.api.BackwardsProtocol; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.data.BackwardsMappings; +import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.data.PaintingMapping; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.packets.BlockItemPackets1_13; +import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.packets.EntityPackets1_13; +import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.packets.PlayerPacket1_13; import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.data.UserConnection; import us.myles.ViaVersion.api.remapper.PacketHandler; @@ -25,31 +28,30 @@ public class Protocol1_12_2To1_13 extends BackwardsProtocol { @Override protected void registerPackets() { new BlockItemPackets1_13().register(this); + new EntityPackets1_13().register(this); + new PlayerPacket1_13().register(this); // Thanks to https://wiki.vg/index.php?title=Pre-release_protocol&oldid=14150 - out(State.PLAY, 0x00, 0x00, cancel()); - out(State.PLAY, 0x04, 0x04, cancel());// Spawn Painting TODO MODIFIED + out(State.PLAY, 0x00, 0x00, cancel()); // Spawn Object TODO type ids + out(State.PLAY, 0x03, 0x03, cancel()); // Spawn Mob TODO Metadata, type ids out(State.PLAY, 0x07, 0x07, cancel()); // Statistics TODO MODIFIED out(State.PLAY, 0x09, 0x09, cancel()); // Update Block Entity TODO MODIFIED - out(State.PLAY, 0x0B, 0x0B, cancel()); // Block Change TODO MODIFIED out(State.PLAY, 0x0E, 0x0F); // Chat Message (clientbound) out(State.PLAY, 0x0F, 0x10, cancel()); // Multi Block Change TODO MODIFIED out(State.PLAY, 0x10, 0x0E, cancel()); // Tab-Complete (clientbound) TODO MODIFIED out(State.PLAY, 0x11, -1, cancel()); // Declare Commands TODO NEW - out(State.PLAY, 0x12, 0x11, cancel()); // Confirm Transaction (clientbound) - out(State.PLAY, 0x13, 0x12, cancel()); // Close Window (clientbound) - out(State.PLAY, 0x14, 0x13, cancel()); // Open Window - out(State.PLAY, 0x15, 0x14, cancel()); // Window Items - out(State.PLAY, 0x16, 0x15, cancel()); // Window Property - out(State.PLAY, 0x17, 0x16, cancel()); // Set Slot - out(State.PLAY, 0x18, 0x17); // Set Cooldown + out(State.PLAY, 0x12, 0x11); // Confirm Transaction (clientbound) + out(State.PLAY, 0x13, 0x12); // Close Window (clientbound) + out(State.PLAY, 0x14, 0x13); // Open Window + out(State.PLAY, 0x16, 0x15); // Window Property + out(State.PLAY, 0x18, 0x17); // Set Cooldown out(State.PLAY, 0x19, 0x18); // Plugin Message (clientbound) TODO MODIFIED out(State.PLAY, 0x1A, 0x19, cancel()); // Named Sound Effect TODO MODIFIED out(State.PLAY, 0x1B, 0x1A); // Disconnect (play) out(State.PLAY, 0x1C, 0x1B); // Entity Status - out(State.PLAY, 0x1D, -1, cancel()); // NBT Query Response TODO NEW + out(State.PLAY, 0x1D, -1, cancel()); // NBT Query Response (client won't send a request, so the server should not answer) out(State.PLAY, 0x1E, 0x1C); // Explosion out(State.PLAY, 0x1F, 0x1D); // Unload Chunk out(State.PLAY, 0x20, 0x1E); // Change Game State @@ -59,7 +61,6 @@ public class Protocol1_12_2To1_13 extends BackwardsProtocol { - out(State.PLAY, 0x23, 0x21, cancel()); // Effect TODO MODIFIED out(State.PLAY, 0x24, 0x22, cancel()); // Spawn Particle TODO MODIFIED out(State.PLAY, 0x25, 0x23, new PacketRemapper() { @Override @@ -78,7 +79,6 @@ public class Protocol1_12_2To1_13 extends BackwardsProtocol { }); } }); // Join Game - out(State.PLAY, 0x26, 0x24, cancel()); // Map TODO MODIFIED out(State.PLAY, 0x27, 0x25); // Entity out(State.PLAY, 0x28, 0x26); // Entity Relative Move out(State.PLAY, 0x29, 0x27); // Entity Look And Relative Move @@ -101,17 +101,14 @@ public class Protocol1_12_2To1_13 extends BackwardsProtocol { out(State.PLAY, 0x3A, 0x37); // Select Advancement Tab out(State.PLAY, 0x3B, 0x38); // World Border out(State.PLAY, 0x3C, 0x39); // Camera - out(State.PLAY, 0x3D, 0x3A, cancel()); // Held Item Change (clientbound) + out(State.PLAY, 0x3D, 0x3A); // Held Item Change (clientbound) out(State.PLAY, 0x3E, 0x3B); // Display Scoreboard out(State.PLAY, 0x3F, 0x3C, cancel()); // Entity Metadata out(State.PLAY, 0x40, 0x3D); // Attach Entity out(State.PLAY, 0x41, 0x3E); // Entity Velocity - out(State.PLAY, 0x42, 0x3F, cancel()); // Entity Equipment out(State.PLAY, 0x43, 0x40); // Set Experience out(State.PLAY, 0x44, 0x41); // Update Health - out(State.PLAY, 0x45, 0x42, cancel()); // Scoreboard Objective TODO MODIFIED out(State.PLAY, 0x46, 0x43); // Set Passengers - out(State.PLAY, 0x47, 0x44, cancel()); // Teams TODO MODIFIED out(State.PLAY, 0x48, 0x45); // Update Score out(State.PLAY, 0x49, 0x46); // Spawn Position out(State.PLAY, 0x4A, 0x47); // Time Update @@ -119,24 +116,21 @@ public class Protocol1_12_2To1_13 extends BackwardsProtocol { out(State.PLAY, 0x4C, -1, cancel()); // Stop Sound TODO NEW out(State.PLAY, 0x4D, 0x49); // Sound Effect out(State.PLAY, 0x4E, 0x4A); // Player List Header And Footer - out(State.PLAY, 0x4F, 0x4B, cancel()); // Collect Item + out(State.PLAY, 0x4F, 0x4B); // Collect Item out(State.PLAY, 0x50, 0x4C); // Entity Teleport out(State.PLAY, 0x51, 0x4D, cancel()); // Advancements out(State.PLAY, 0x52, 0x4E); // Entity Properties out(State.PLAY, 0x53, 0x4F); // Entity Effect out(State.PLAY, 0x54, -1, cancel()); // Declare Recipes TODO NEW - out(State.PLAY, 0x55, -1, cancel()); // Tags TODO NEW + out(State.PLAY, 0x55, -1, cancel()); // Tags (the client won't need this) - in(State.PLAY, 0x01, -1, cancel()); // Query Block NBT TODO NEW - in(State.PLAY, 0x05, 0x01); // Tab-Complete (serverbound) TODO MODIFIED - in(State.PLAY, 0x06, 0x05); //Confirm Transaction (serverbound) + in(State.PLAY, 0x05, 0x01, cancel()); // Tab-Complete (serverbound) TODO MODIFIED + in(State.PLAY, 0x06, 0x05); // Confirm Transaction (serverbound) in(State.PLAY, 0x07, 0x06); // Enchant Item - in(State.PLAY, 0x08, 0x07); // Click Window in(State.PLAY, 0x09, 0x08); // Close Window (serverbound) in(State.PLAY, 0x0A, 0x09, cancel()); // Plugin message (serverbound) TODO MODIFIED in(State.PLAY, 0x0B, -1, cancel()); // Edit Book TODO NEW - in(State.PLAY, 0x0C, -1, cancel()); // Query Entity NBT TODO NEW in(State.PLAY, 0x0D, 0x0A); // Use Entity in(State.PLAY, 0x0E, 0x0B); // Keep Alive (serverbound) in(State.PLAY, 0x0F, 0x0C); // Player @@ -160,7 +154,6 @@ public class Protocol1_12_2To1_13 extends BackwardsProtocol { in(State.PLAY, 0x21, 0x1A); // Held Item Change (serverbound) in(State.PLAY, 0x22, -1, cancel()); // Update Command Block TODO NEW in(State.PLAY, 0x23, -1, cancel()); // Update Command Block Minecart TODO NEW - in(State.PLAY, 0x24, 0x1B); // Creative Inventory Action in(State.PLAY, 0x25, -1, cancel()); // Update Structure Block TODO NEW in(State.PLAY, 0x26, 0x1C); // Update Sign in(State.PLAY, 0x27, 0x1D); // Animation (serverbound) @@ -194,6 +187,7 @@ public class Protocol1_12_2To1_13 extends BackwardsProtocol { static { BackwardsMappings.init(); + PaintingMapping.init(); } } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/PaintingMapping.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/PaintingMapping.java new file mode 100644 index 00000000..bfb85bd7 --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/PaintingMapping.java @@ -0,0 +1,45 @@ +package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.data; + +import java.util.HashMap; +import java.util.Map; + +public class PaintingMapping { + private static Map paintings = new HashMap<>(); + + public static void init() { + add("kebab"); + add("aztec"); + add("alban"); + add("aztec2"); + add("bomb"); + add("plant"); + add("wasteland"); + add("pool"); + add("courbet"); + add("sea"); + add("sunset"); + add("creebet"); + add("wanderer"); + add("graham"); + add("match"); + add("bust"); + add("stage"); + add("void"); + add("skullandroses"); + add("wither"); + add("fighters"); + add("pointer"); + add("pigscene"); + add("burningskull"); + add("skeleton"); + add("donkeykong"); + } + + private static void add(String motive) { + paintings.put(paintings.size(), motive); + } + + public static String getStringId(int id) { + return paintings.getOrDefault(id, "kebab"); + } +} 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 5d0ad65a..fe48d5db 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 @@ -15,11 +15,16 @@ import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.Protocol1_12_2To1_13; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.data.BackwardsMappings; import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.Via; +import us.myles.ViaVersion.api.minecraft.BlockChangeRecord; import us.myles.ViaVersion.api.minecraft.chunks.Chunk; import us.myles.ViaVersion.api.minecraft.chunks.ChunkSection; +import us.myles.ViaVersion.api.minecraft.item.Item; import us.myles.ViaVersion.api.remapper.PacketHandler; import us.myles.ViaVersion.api.remapper.PacketRemapper; +import us.myles.ViaVersion.api.type.Type; import us.myles.ViaVersion.packets.State; +import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.data.MappingData; +import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.packets.InventoryPackets; import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.types.Chunk1_13Type; import us.myles.ViaVersion.protocols.protocol1_9_1_2to1_9_3_4.types.Chunk1_9_3_4Type; import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; @@ -28,6 +33,74 @@ public class BlockItemPackets1_13 extends BlockItemRewriter> 4); + } else if (id == 2001) { // Block break + block break sound + data = toOldId(data); + int blockId = data >> 4; + int blockData = data & 0xF; + wrapper.set(Type.INT, 1, data = (blockId & 0xFFF) | (blockData << 12)); + } + } + }); + } + }); + + //Map + protocol.out(State.PLAY, 0x26, 0x24, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); + map(Type.BYTE); + map(Type.BOOLEAN); + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + int iconCount = wrapper.passthrough(Type.VAR_INT); + for (int i = 0; i < iconCount; i++) { + int type = wrapper.read(Type.VAR_INT); + byte x = wrapper.read(Type.BYTE); + byte z = wrapper.read(Type.BYTE); + byte direction = wrapper.read(Type.BYTE); + if (wrapper.read(Type.BOOLEAN)) { + wrapper.read(Type.STRING); + } + if (type > 9) continue; + wrapper.write(Type.BYTE, (byte) ((type << 4) | (direction & 0x0F))); + wrapper.write(Type.BYTE, x); + wrapper.write(Type.BYTE, z); + } + } + }); + } + }); + + //Entity Equipment + protocol.out(State.PLAY, 0x42, 0x3F, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); + map(Type.VAR_INT); + map(Type.FLAT_ITEM, Type.ITEM); + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + Item item = wrapper.get(Type.ITEM, 0); + toClient(item); + } + }); + } + }); + + + //Set Creative Slot + protocol.in(State.PLAY, 0x24, 0x1B, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.SHORT); + map(Type.ITEM, Type.FLAT_ITEM); + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + Item item = wrapper.get(Type.FLAT_ITEM, 0); + toServer(item); + } + }); + } + }); + + //Click Window + protocol.in(State.PLAY, 0x08, 0x07, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.UNSIGNED_BYTE); + map(Type.SHORT); + map(Type.BYTE); + map(Type.SHORT); + map(Type.VAR_INT); + map(Type.ITEM, Type.FLAT_ITEM); + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + Item item = wrapper.get(Type.FLAT_ITEM, 0); + toServer(item); + } + }); + } + }); } - public static int toNewId(int oldId) { + public static int toOldId(int oldId) { if (oldId < 0) { oldId = 0; // Some plugins use negative numbers to clear blocks, remap them to air. } @@ -84,6 +265,14 @@ public class BlockItemPackets1_13 extends BlockItemRewriter { + + @Override + protected void registerPackets(Protocol1_12_2To1_13 protocol) { + + //Spawn Painting + protocol.out(State.PLAY, 0x04, 0x04, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); + map(Type.UUID); + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + int motive = wrapper.read(Type.VAR_INT); + String title = PaintingMapping.getStringId(motive); + wrapper.write(Type.STRING, title); + } + }); + } + }); + + } + + @Override + protected void registerRewrites() { + + } +} diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java new file mode 100644 index 00000000..adbbbe39 --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java @@ -0,0 +1,89 @@ +package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.packets; + +import nl.matsv.viabackwards.api.rewriters.Rewriter; +import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.Protocol1_12_2To1_13; +import us.myles.ViaVersion.api.PacketWrapper; +import us.myles.ViaVersion.api.remapper.PacketHandler; +import us.myles.ViaVersion.api.remapper.PacketRemapper; +import us.myles.ViaVersion.api.type.Type; +import us.myles.ViaVersion.packets.State; +import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.ChatRewriter; + +public class PlayerPacket1_13 extends Rewriter { + @Override + protected void registerPackets(Protocol1_12_2To1_13 protocol) { + + //Scoreboard Objective + protocol.out(State.PLAY, 0x45, 0x42, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.STRING); + map(Type.BYTE); + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + byte mode = wrapper.get(Type.BYTE, 0); + if (mode == 0 || mode == 2) { + String value = wrapper.read(Type.STRING); + value = ChatRewriter.jsonTextToLegacy(value); + if (value.length() > 32) value = value.substring(0, 32); + wrapper.write(Type.STRING, value); + int type = wrapper.read(Type.VAR_INT); + wrapper.write(Type.STRING, type == 1 ? "hearts" : "integer"); + } + } + }); + } + }); + + //Teams + protocol.out(State.PLAY, 0x47, 0x44, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.STRING); + map(Type.BYTE); + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + byte action = wrapper.get(Type.BYTE, 0); + if (action == 0 || action == 2) { + String displayName = wrapper.read(Type.STRING); + displayName = ChatRewriter.jsonTextToLegacy(displayName); + if (displayName.length() > 32) displayName = displayName.substring(0, 32); + wrapper.write(Type.STRING, displayName); + + String prefix = wrapper.read(Type.STRING); + String suffix = wrapper.read(Type.STRING); + + wrapper.passthrough(Type.BYTE); //Flags + + wrapper.passthrough(Type.STRING); //Name Tag Visibility + wrapper.passthrough(Type.STRING); //Collision Rule + + int colour = wrapper.read(Type.VAR_INT); + if (colour == 21) { + colour = -1; + } + + wrapper.write(Type.BYTE, (byte) colour); + + wrapper.write(Type.STRING, ChatRewriter.jsonTextToLegacy(prefix)); + wrapper.write(Type.STRING, ChatRewriter.jsonTextToLegacy(suffix)); + } + + if (action == 0 || action == 3 || action == 4) { + wrapper.passthrough(Type.STRING_ARRAY); // Entities + } + } + }); + } + }); + + + } + + @Override + protected void registerRewrites() { + + } +} diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/InventoryPackets.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/InventoryPackets.java index cf43be02..ecd88eec 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/InventoryPackets.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/InventoryPackets.java @@ -78,7 +78,7 @@ public class InventoryPackets { } }); - // // Declare Recipes + // Declare Recipes protocol.registerOutgoing(State.PLAY, 0x54, 0x54, new PacketRemapper() { @Override public void registerMap() { From c950fe2125438c7428237434a88f170442b171ae Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Wed, 16 Jan 2019 14:41:40 +0100 Subject: [PATCH 008/171] sound and entity id mappings --- .../api/entities/types/EntityType1_13.java | 309 ++++++++++++++++++ .../Protocol1_12_2To1_13.java | 15 +- .../data/EntityTypeMapping.java | 27 ++ .../data/NamedSoundMapping.java | 26 ++ .../data/SoundMapping.java | 44 +++ .../packets/EntityPackets1_13.java | 188 +++++++++++ .../packets/SoundPackets1_13.java | 60 ++++ 7 files changed, 665 insertions(+), 4 deletions(-) create mode 100644 core/src/main/java/nl/matsv/viabackwards/api/entities/types/EntityType1_13.java create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/EntityTypeMapping.java create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/NamedSoundMapping.java create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/SoundMapping.java create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/SoundPackets1_13.java diff --git a/core/src/main/java/nl/matsv/viabackwards/api/entities/types/EntityType1_13.java b/core/src/main/java/nl/matsv/viabackwards/api/entities/types/EntityType1_13.java new file mode 100644 index 00000000..a968e7e2 --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/api/entities/types/EntityType1_13.java @@ -0,0 +1,309 @@ +package nl.matsv.viabackwards.api.entities.types; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import nl.matsv.viabackwards.ViaBackwards; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + + +public class EntityType1_13 { + + public static EntityType getTypeFromId(int typeID, boolean isObject) { + Optional type; + + if (isObject) + type = ObjectType.getPCEntity(typeID); + else + type = EntityType.findById(typeID); + + if (!type.isPresent()) { + ViaBackwards.getPlatform().getLogger().severe("[EntityType1_13] Could not find type id " + typeID + " isObject=" + isObject); + return EntityType.ENTITY; // Fall back to the basic ENTITY + } + + return type.get(); + } + + @AllArgsConstructor + @Getter + public enum EntityType implements AbstractEntityType { + ENTITY(-1), + + AREA_EFFECT_CLOUD(0, ENTITY), + ENDER_CRYSTAL(16, ENTITY), + EVOCATION_FANGS(20, ENTITY), + XP_ORB(22, ENTITY), + EYE_OF_ENDER_SIGNAL(23, ENTITY), + FALLING_BLOCK(24, ENTITY), + FIREWORKS_ROCKET(25, ENTITY), + ITEM(32, ENTITY), + LLAMA_SPIT(37, ENTITY), + TNT(55, ENTITY), + SHULKER_BULLET(60, ENTITY), + FISHING_BOBBER(93, ENTITY), + + LIVINGENTITY(-1, ENTITY), + ARMOR_STAND(1, LIVINGENTITY), + PLAYER(92, LIVINGENTITY), + + ABSTRACT_INSENTIENT(-1, LIVINGENTITY), + ENDER_DRAGON(17, ABSTRACT_INSENTIENT), + + ABSTRACT_CREATURE(-1, ABSTRACT_INSENTIENT), + + ABSTRACT_AGEABLE(-1, ABSTRACT_CREATURE), + VILLAGER(79, ABSTRACT_AGEABLE), + + // Animals + ABSTRACT_ANIMAL(-1, ABSTRACT_AGEABLE), + CHICKEN(7, ABSTRACT_ANIMAL), + COW(9, ABSTRACT_ANIMAL), + MOOSHROOM(47, COW), + PIG(51, ABSTRACT_ANIMAL), + POLAR_BEAR(54, ABSTRACT_ANIMAL), + RABBIT(56, ABSTRACT_ANIMAL), + SHEEP(58, ABSTRACT_ANIMAL), + TURTLE(73, ABSTRACT_ANIMAL), + + ABSTRACT_TAMEABLE_ANIMAL(-1, ABSTRACT_ANIMAL), + OCELOT(48, ABSTRACT_TAMEABLE_ANIMAL), + WOLF(86, ABSTRACT_TAMEABLE_ANIMAL), + + ABSTRACT_PARROT(-1, ABSTRACT_TAMEABLE_ANIMAL), + PARROT(50, ABSTRACT_PARROT), + + + // Horses + ABSTRACT_HORSE(-1, ABSTRACT_ANIMAL), + CHESTED_HORSE(-1, ABSTRACT_HORSE), + DONKEY(11, CHESTED_HORSE), + MULE(46, CHESTED_HORSE), + LLAMA(36, CHESTED_HORSE), + HORSE(29, ABSTRACT_HORSE), + SKELETON_HORSE(63, ABSTRACT_HORSE), + ZOMBIE_HORSE(88, ABSTRACT_HORSE), + + // Golem + ABSTRACT_GOLEM(-1, ABSTRACT_CREATURE), + SNOWMAN(66, ABSTRACT_GOLEM), + VILLAGER_GOLEM(80, ABSTRACT_GOLEM), + SHULKER(59, ABSTRACT_GOLEM), + + // Fish + ABSTRACT_FISHES(-1, ABSTRACT_CREATURE), + COD_MOB(8, ABSTRACT_FISHES), + PUFFER_FISH(52, ABSTRACT_FISHES), + SALMON_MOB(57, ABSTRACT_FISHES), + TROPICAL_FISH(72, ABSTRACT_FISHES), + + + // Monsters + ABSTRACT_MONSTER(-1, ABSTRACT_CREATURE), + BLAZE(4, ABSTRACT_MONSTER), + CREEPER(10, ABSTRACT_MONSTER), + ENDERMITE(19, ABSTRACT_MONSTER), + ENDERMAN(18, ABSTRACT_MONSTER), + GIANT(27, ABSTRACT_MONSTER), + SILVERFISH(61, ABSTRACT_MONSTER), + VEX(78, ABSTRACT_MONSTER), + WITCH(82, ABSTRACT_MONSTER), + WITHER(83, ABSTRACT_MONSTER), + + // Illagers + ABSTRACT_ILLAGER_BASE(-1, ABSTRACT_MONSTER), + ABSTRACT_EVO_ILLU_ILLAGER(-1, ABSTRACT_ILLAGER_BASE), + EVOCATION_ILLAGER(21, ABSTRACT_EVO_ILLU_ILLAGER), + ILLUSION_ILLAGER(31, ABSTRACT_EVO_ILLU_ILLAGER), + VINDICATION_ILLAGER(81, ABSTRACT_ILLAGER_BASE), + + // Skeletons + ABSTRACT_SKELETON(-1, ABSTRACT_MONSTER), + SKELETON(62, ABSTRACT_SKELETON), + STRAY(71, ABSTRACT_SKELETON), + WITHER_SKELETON(84, ABSTRACT_SKELETON), + + // Guardians + GUARDIAN(28, ABSTRACT_MONSTER), + ELDER_GUARDIAN(15, GUARDIAN), + + // Spiders + SPIDER(69, ABSTRACT_MONSTER), + CAVE_SPIDER(6, SPIDER), + + // Zombies - META CHECKED + ZOMBIE(87, ABSTRACT_MONSTER), + DROWNED(14, ZOMBIE), + HUSK(30, ZOMBIE), + ZOMBIE_PIGMAN(53, ZOMBIE), + ZOMBIE_VILLAGER(89, ZOMBIE), + + // Flying entities + ABSTRACT_FLYING(-1, ABSTRACT_INSENTIENT), + GHAST(26, ABSTRACT_FLYING), + PHANTOM(90, ABSTRACT_FLYING), + + ABSTRACT_AMBIENT(-1, ABSTRACT_INSENTIENT), + BAT(3, ABSTRACT_AMBIENT), + + ABSTRACT_WATERMOB(-1, ABSTRACT_INSENTIENT), + SQUID(70, ABSTRACT_WATERMOB), + + // Slimes + SLIME(64, ABSTRACT_INSENTIENT), + MAGMA_CUBE(38, SLIME), + + // Hangable objects + ABSTRACT_HANGING(-1, ENTITY), + LEASH_KNOT(35, ABSTRACT_HANGING), + ITEM_FRAME(33, ABSTRACT_HANGING), + PAINTING(49, ABSTRACT_HANGING), + + ABSTRACT_LIGHTNING(-1, ENTITY), + LIGHTNING_BOLT(91, ABSTRACT_LIGHTNING), + + // Arrows + ABSTRACT_ARROW(-1, ENTITY), + ARROW(2, ABSTRACT_ARROW), + SPECTRAL_ARROW(68, ABSTRACT_ARROW), + TRIDENT(94, ABSTRACT_ARROW), + + // Fireballs + ABSTRACT_FIREBALL(-1, ENTITY), + DRAGON_FIREBALL(13, ABSTRACT_FIREBALL), + FIREBALL(34, ABSTRACT_FIREBALL), + SMALL_FIREBALL(65, ABSTRACT_FIREBALL), + WITHER_SKULL(85, ABSTRACT_FIREBALL), + + // Projectiles + PROJECTILE_ABSTRACT(-1, ENTITY), + SNOWBALL(67, PROJECTILE_ABSTRACT), + ENDER_PEARL(75, PROJECTILE_ABSTRACT), + EGG(74, PROJECTILE_ABSTRACT), + POTION(77, PROJECTILE_ABSTRACT), + XP_BOTTLE(76, PROJECTILE_ABSTRACT), + + // Vehicles + MINECART_ABSTRACT(-1, ENTITY), + CHESTED_MINECART_ABSTRACT(-1, MINECART_ABSTRACT), + CHEST_MINECART(40, CHESTED_MINECART_ABSTRACT), + HOPPER_MINECART(43, CHESTED_MINECART_ABSTRACT), + MINECART(39, MINECART_ABSTRACT), + FURNACE_MINECART(42, MINECART_ABSTRACT), + COMMANDBLOCK_MINECART(41, MINECART_ABSTRACT), + TNT_MINECART(45, MINECART_ABSTRACT), + SPAWNER_MINECART(44, MINECART_ABSTRACT), + BOAT(5, ENTITY); + + + private final int id; + private final EntityType parent; + + EntityType(int id) { + this.id = id; + this.parent = null; + } + + public static Optional findById(int id) { + if (id == -1) // Check if this is called + return Optional.empty(); + + for (EntityType ent : EntityType.values()) + if (ent.getId() == id) + return Optional.of(ent); + + return Optional.empty(); + } + + public boolean is(AbstractEntityType... types) { + for (AbstractEntityType type : types) + if (is(type)) + return true; + return false; + } + + public boolean is(AbstractEntityType type) { + return this == type; + } + + public boolean isOrHasParent(AbstractEntityType type) { + EntityType parent = this; + + do { + if (parent == type) + return true; + + parent = parent.getParent(); + } while (parent != null); + + return false; + } + + @Override + public List getParents() { + List types = new ArrayList<>(); + EntityType parent = this; + + do { + types.add(parent); + parent = parent.getParent(); + } while (parent != null); + + return types; + } + } + + @AllArgsConstructor + @Getter + public enum ObjectType implements AbstractObjectType { + BOAT(1, EntityType.BOAT), + ITEM(2, EntityType.ITEM), + AREA_EFFECT_CLOUD(3, EntityType.AREA_EFFECT_CLOUD), + MINECART(10, EntityType.MINECART_ABSTRACT), + TNT_PRIMED(50, EntityType.TNT), + ENDER_CRYSTAL(51, EntityType.ENDER_CRYSTAL), + TIPPED_ARROW(60, EntityType.ARROW), + SNOWBALL(61, EntityType.SNOWBALL), + EGG(62, EntityType.EGG), + FIREBALL(63, EntityType.FIREBALL), + SMALL_FIREBALL(64, EntityType.SMALL_FIREBALL), + ENDER_PEARL(65, EntityType.ENDER_PEARL), + WITHER_SKULL(66, EntityType.WITHER_SKULL), + SHULKER_BULLET(67, EntityType.SHULKER_BULLET), + LIAMA_SPIT(68, EntityType.LLAMA_SPIT), + FALLING_BLOCK(70, EntityType.FALLING_BLOCK), + ITEM_FRAME(71, EntityType.ITEM_FRAME), + ENDER_SIGNAL(72, EntityType.EYE_OF_ENDER_SIGNAL), + POTION(73, EntityType.POTION), + THROWN_EXP_BOTTLE(75, EntityType.XP_BOTTLE), + FIREWORK(76, EntityType.FIREWORKS_ROCKET), + LEASH(77, EntityType.LEASH_KNOT), + ARMOR_STAND(78, EntityType.ARMOR_STAND), + EVOCATION_FANGS(79, EntityType.EVOCATION_FANGS), + FISHIHNG_HOOK(90, EntityType.FISHING_BOBBER), + SPECTRAL_ARROW(91, EntityType.SPECTRAL_ARROW), + DRAGON_FIREBALL(93, EntityType.DRAGON_FIREBALL); + + private final int id; + private final EntityType type; + + public static Optional findById(int id) { + if (id == -1) + return Optional.empty(); + + for (ObjectType ent : ObjectType.values()) + if (ent.getId() == id) + return Optional.of(ent); + + return Optional.empty(); + } + + public static Optional getPCEntity(int id) { + Optional output = findById(id); + + return output.map(ObjectType::getType); + } + } +} diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java index 95f445b3..ea9edb15 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java @@ -11,11 +11,14 @@ package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13; import nl.matsv.viabackwards.api.BackwardsProtocol; +import nl.matsv.viabackwards.api.entities.storage.EntityTracker; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.data.BackwardsMappings; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.data.PaintingMapping; +import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.data.SoundMapping; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.packets.BlockItemPackets1_13; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.packets.EntityPackets1_13; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.packets.PlayerPacket1_13; +import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.packets.SoundPackets1_13; import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.data.UserConnection; import us.myles.ViaVersion.api.remapper.PacketHandler; @@ -30,12 +33,11 @@ public class Protocol1_12_2To1_13 extends BackwardsProtocol { new BlockItemPackets1_13().register(this); new EntityPackets1_13().register(this); new PlayerPacket1_13().register(this); + new SoundPackets1_13().register(this); // Thanks to https://wiki.vg/index.php?title=Pre-release_protocol&oldid=14150 - out(State.PLAY, 0x00, 0x00, cancel()); // Spawn Object TODO type ids - out(State.PLAY, 0x03, 0x03, cancel()); // Spawn Mob TODO Metadata, type ids out(State.PLAY, 0x07, 0x07, cancel()); // Statistics TODO MODIFIED out(State.PLAY, 0x09, 0x09, cancel()); // Update Block Entity TODO MODIFIED out(State.PLAY, 0x0E, 0x0F); // Chat Message (clientbound) @@ -48,7 +50,6 @@ public class Protocol1_12_2To1_13 extends BackwardsProtocol { out(State.PLAY, 0x16, 0x15); // Window Property out(State.PLAY, 0x18, 0x17); // Set Cooldown out(State.PLAY, 0x19, 0x18); // Plugin Message (clientbound) TODO MODIFIED - out(State.PLAY, 0x1A, 0x19, cancel()); // Named Sound Effect TODO MODIFIED out(State.PLAY, 0x1B, 0x1A); // Disconnect (play) out(State.PLAY, 0x1C, 0x1B); // Entity Status out(State.PLAY, 0x1D, -1, cancel()); // NBT Query Response (client won't send a request, so the server should not answer) @@ -114,7 +115,6 @@ public class Protocol1_12_2To1_13 extends BackwardsProtocol { out(State.PLAY, 0x4A, 0x47); // Time Update out(State.PLAY, 0x4B, 0x48); // Title out(State.PLAY, 0x4C, -1, cancel()); // Stop Sound TODO NEW - out(State.PLAY, 0x4D, 0x49); // Sound Effect out(State.PLAY, 0x4E, 0x4A); // Player List Header And Footer out(State.PLAY, 0x4F, 0x4B); // Collect Item out(State.PLAY, 0x50, 0x4C); // Entity Teleport @@ -169,6 +169,12 @@ public class Protocol1_12_2To1_13 extends BackwardsProtocol { if (!user.has(ClientWorld.class)) user.put(new ClientWorld(user)); + // Register EntityTracker if it doesn't exist yet. + if (!user.has(EntityTracker.class)) + user.put(new EntityTracker(user)); + + // Init protocol in EntityTracker + user.get(EntityTracker.class).initProtocol(this); } public PacketRemapper cancel() { @@ -188,6 +194,7 @@ public class Protocol1_12_2To1_13 extends BackwardsProtocol { static { BackwardsMappings.init(); PaintingMapping.init(); + SoundMapping.init(); } } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/EntityTypeMapping.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/EntityTypeMapping.java new file mode 100644 index 00000000..e3ba3962 --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/EntityTypeMapping.java @@ -0,0 +1,27 @@ +package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.data; + +import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.data.EntityTypeRewriter; + +import java.lang.reflect.Field; +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; + +public class EntityTypeMapping { + private static Map entityTypes = new HashMap<>(); + + static { + try { + Field field = EntityTypeRewriter.class.getDeclaredField("entityTypes"); + field.setAccessible(true); + Map entityTypes = (Map) field.get(null); + entityTypes.forEach((type1_12, type1_13) -> EntityTypeMapping.entityTypes.put(type1_13, type1_12)); + } catch (NoSuchFieldException | IllegalAccessException ex) { + ex.printStackTrace(); + } + } + + public static Optional getOldId(int type1_13) { + return Optional.ofNullable(entityTypes.get(type1_13)); + } +} diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/NamedSoundMapping.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/NamedSoundMapping.java new file mode 100644 index 00000000..e6f167d9 --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/NamedSoundMapping.java @@ -0,0 +1,26 @@ +package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.data; + +import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.data.NamedSoundRewriter; + +import java.lang.reflect.Field; +import java.util.HashMap; +import java.util.Map; + +public class NamedSoundMapping { + private static Map sounds = new HashMap<>(); + + static { + try { + Field field = NamedSoundRewriter.class.getDeclaredField("oldToNew"); + field.setAccessible(true); + Map sounds = (Map) field.get(null); + sounds.forEach((sound1_12, sound1_13) -> NamedSoundMapping.sounds.put(sound1_13, sound1_12)); + } catch (NoSuchFieldException | IllegalAccessException ex) { + ex.printStackTrace(); + } + } + + public static String getOldId(String sound1_13) { + return sounds.get(sound1_13); + } +} diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/SoundMapping.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/SoundMapping.java new file mode 100644 index 00000000..99fa1628 --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/SoundMapping.java @@ -0,0 +1,44 @@ +package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.data; + +import us.myles.viaversion.libs.gson.JsonArray; +import us.myles.viaversion.libs.gson.JsonElement; +import us.myles.viaversion.libs.gson.JsonObject; + +import java.util.Arrays; + +import static us.myles.ViaVersion.protocols.protocol1_13to1_12_2.data.MappingData.loadData; + +public class SoundMapping { + private static short[] sounds = new short[662]; + + public static void init() { + JsonObject mapping1_12 = loadData("mapping-1.12.json"); + JsonObject mapping1_13 = loadData("mapping-1.13.json"); + + Arrays.fill(sounds, (short) -1); + mapIdentifiers(sounds, mapping1_13.getAsJsonArray("sounds"), mapping1_12.getAsJsonArray("sounds")); + } + + private static void mapIdentifiers(short[] output, JsonArray oldIdentifiers, JsonArray newIdentifiers) { + for (int i = 0; i < oldIdentifiers.size(); i++) { + JsonElement v = oldIdentifiers.get(i); + Integer index = findIndex(newIdentifiers, v.getAsString()); + if (index == null) continue; //There will be missing sounds, since we are goind backwards + output[i] = index.shortValue(); + } + } + + private static Integer findIndex(JsonArray array, String value) { + for (int i = 0; i < array.size(); i++) { + JsonElement v = array.get(i); + if (v.getAsString().equals(value)) { + return i; + } + } + return null; + } + + public static int getOldSound(int newSound) { + return newSound >= sounds.length ? -1 : sounds[newSound]; + } +} diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java index f382a92f..add94acb 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java @@ -1,25 +1,213 @@ package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.packets; +import nl.matsv.viabackwards.ViaBackwards; +import nl.matsv.viabackwards.api.entities.types.EntityType1_13; import nl.matsv.viabackwards.api.rewriters.EntityRewriter; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.Protocol1_12_2To1_13; +import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.data.EntityTypeMapping; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.data.PaintingMapping; import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.remapper.PacketHandler; import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.api.type.Type; +import us.myles.ViaVersion.api.type.types.version.Types1_12; +import us.myles.ViaVersion.api.type.types.version.Types1_13; import us.myles.ViaVersion.packets.State; +import java.util.Optional; + public class EntityPackets1_13 extends EntityRewriter { @Override protected void registerPackets(Protocol1_12_2To1_13 protocol) { + //Spawn Object + protocol.out(State.PLAY, 0x00, 0x00, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); + map(Type.UUID); + map(Type.BYTE); + map(Type.DOUBLE); + map(Type.DOUBLE); + map(Type.DOUBLE); + map(Type.BYTE); + map(Type.BYTE); + map(Type.INT); + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + byte type = wrapper.get(Type.BYTE, 0); + EntityType1_13.EntityType entityType = EntityType1_13.getTypeFromId(type, true); + if (entityType == null) { + ViaBackwards.getPlatform().getLogger().warning("Could not find 1.13 entity type " + type); + return; + } + addTrackedEntity( + wrapper.user(), + wrapper.get(Type.VAR_INT, 0), + entityType + ); + } + }); + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + Optional type = EntityType1_13.ObjectType.findById(wrapper.get(Type.BYTE, 0)); + if (type.isPresent() && type.get() == EntityType1_13.ObjectType.FALLING_BLOCK) { + int blockState = wrapper.get(Type.INT, 0); + int combined = BlockItemPackets1_13.toOldId(blockState); + combined = ((combined >> 4) & 0xFFF) | ((combined & 0xF) << 12); + wrapper.set(Type.INT, 0, combined); + } else if (type.isPresent() && type.get() == EntityType1_13.ObjectType.ITEM_FRAME) { + int data = wrapper.get(Type.INT, 0); + switch (data) { + case 3: + data = 0; + break; + case 4: + data = 1; + break; + case 5: + data = 3; + break; + } + wrapper.set(Type.INT, 0, data); + } + } + }); + } + }); + + //Spawn Experience Orb + protocol.out(State.PLAY, 0x01, 0x01, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + addTrackedEntity( + wrapper.user(), + wrapper.get(Type.VAR_INT, 0), + EntityType1_13.EntityType.XP_ORB + ); + } + }); + } + }); + + //Spawn Global Entity + protocol.registerOutgoing(State.PLAY, 0x02, 0x02, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); + map(Type.BYTE); + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + addTrackedEntity( + wrapper.user(), + wrapper.get(Type.VAR_INT, 0), + EntityType1_13.EntityType.LIGHTNING_BOLT + ); + } + }); + } + }); + + //Spawn Mob + protocol.out(State.PLAY, 0x03, 0x03, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); + map(Type.UUID); + map(Type.VAR_INT); + map(Type.DOUBLE); + map(Type.DOUBLE); + map(Type.DOUBLE); + map(Type.BYTE); + map(Type.BYTE); + map(Type.BYTE); + map(Type.SHORT); + map(Type.SHORT); + map(Type.SHORT); + map(Types1_13.METADATA_LIST, Types1_12.METADATA_LIST); + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + int type = wrapper.get(Type.VAR_INT, 1); + EntityType1_13.EntityType entityType = EntityType1_13.getTypeFromId(type, false); + addTrackedEntity( + wrapper.user(), + wrapper.get(Type.VAR_INT, 0), + entityType + ); + Optional oldId = EntityTypeMapping.getOldId(type); + if (!oldId.isPresent()) { + ViaBackwards.getPlatform().getLogger().warning("Could not find 1.12 entity type for 1.13 entity type " + type + "/" + entityType); + return; + } else { + wrapper.set(Type.VAR_INT, 1, oldId.get()); + } + } + }); + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + wrapper.get(Types1_12.METADATA_LIST, 0).clear(); //TODO handle metadata + } + }); + } + }); + + // Spawn Player + protocol.registerOutgoing(State.PLAY, 0x05, 0x05, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); + map(Type.UUID); + map(Type.DOUBLE); + map(Type.DOUBLE); + map(Type.DOUBLE); + map(Type.BYTE); + map(Type.BYTE); + map(Types1_13.METADATA_LIST, Types1_12.METADATA_LIST); + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + addTrackedEntity( + wrapper.user(), + wrapper.get(Type.VAR_INT, 0), + EntityType1_13.EntityType.PLAYER + ); + } + }); + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + wrapper.get(Types1_12.METADATA_LIST, 0).clear(); //TODO handle metadata + } + }); + } + }); + //Spawn Painting protocol.out(State.PLAY, 0x04, 0x04, new PacketRemapper() { @Override public void registerMap() { map(Type.VAR_INT); map(Type.UUID); + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + addTrackedEntity( + wrapper.user(), + wrapper.get(Type.VAR_INT, 0), + EntityType1_13.EntityType.PAINTING + ); + } + }); handler(new PacketHandler() { @Override public void handle(PacketWrapper wrapper) throws Exception { diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/SoundPackets1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/SoundPackets1_13.java new file mode 100644 index 00000000..2e037045 --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/SoundPackets1_13.java @@ -0,0 +1,60 @@ +package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.packets; + +import nl.matsv.viabackwards.api.rewriters.Rewriter; +import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.Protocol1_12_2To1_13; +import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.data.NamedSoundMapping; +import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.data.SoundMapping; +import us.myles.ViaVersion.api.PacketWrapper; +import us.myles.ViaVersion.api.remapper.PacketHandler; +import us.myles.ViaVersion.api.remapper.PacketRemapper; +import us.myles.ViaVersion.api.type.Type; +import us.myles.ViaVersion.packets.State; + +public class SoundPackets1_13 extends Rewriter { + @Override + protected void registerPackets(Protocol1_12_2To1_13 protocol) { + + //Named Sound Event + protocol.out(State.PLAY, 0x1A, 0x19, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.STRING); + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + String newSound = wrapper.get(Type.STRING, 0); + String oldSound = NamedSoundMapping.getOldId(newSound); + if (oldSound != null) { + wrapper.set(Type.STRING, 0, oldSound); + } + } + }); + } + }); + + //Sound Effect + protocol.out(State.PLAY, 0x4D, 0x49, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + int newSound = wrapper.get(Type.VAR_INT, 0); + int oldSound = SoundMapping.getOldSound(newSound); + if (oldSound == -1) { + wrapper.cancel(); + } else { + wrapper.set(Type.VAR_INT, 0, oldSound); + } + } + }); + } + }); + } + + @Override + protected void registerRewrites() { + + } +} From 8d7fee16b84076a89de160e4d50183069b30a187 Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Thu, 17 Jan 2019 17:30:25 +0100 Subject: [PATCH 009/171] Plugin messages/new packets --- .../Protocol1_12_2To1_13.java | 10 -- .../packets/BlockItemPackets1_13.java | 2 +- .../packets/EntityPackets1_13.java | 4 +- .../packets/PlayerPacket1_13.java | 160 +++++++++++++++++- .../packets/SoundPackets1_13.java | 26 +++ .../Protocol1_13To1_13_1.java | 1 + 6 files changed, 189 insertions(+), 14 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java index ea9edb15..43492ebb 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java @@ -41,7 +41,6 @@ public class Protocol1_12_2To1_13 extends BackwardsProtocol { out(State.PLAY, 0x07, 0x07, cancel()); // Statistics TODO MODIFIED out(State.PLAY, 0x09, 0x09, cancel()); // Update Block Entity TODO MODIFIED out(State.PLAY, 0x0E, 0x0F); // Chat Message (clientbound) - out(State.PLAY, 0x0F, 0x10, cancel()); // Multi Block Change TODO MODIFIED out(State.PLAY, 0x10, 0x0E, cancel()); // Tab-Complete (clientbound) TODO MODIFIED out(State.PLAY, 0x11, -1, cancel()); // Declare Commands TODO NEW out(State.PLAY, 0x12, 0x11); // Confirm Transaction (clientbound) @@ -49,7 +48,6 @@ public class Protocol1_12_2To1_13 extends BackwardsProtocol { out(State.PLAY, 0x14, 0x13); // Open Window out(State.PLAY, 0x16, 0x15); // Window Property out(State.PLAY, 0x18, 0x17); // Set Cooldown - out(State.PLAY, 0x19, 0x18); // Plugin Message (clientbound) TODO MODIFIED out(State.PLAY, 0x1B, 0x1A); // Disconnect (play) out(State.PLAY, 0x1C, 0x1B); // Entity Status out(State.PLAY, 0x1D, -1, cancel()); // NBT Query Response (client won't send a request, so the server should not answer) @@ -114,7 +112,6 @@ public class Protocol1_12_2To1_13 extends BackwardsProtocol { out(State.PLAY, 0x49, 0x46); // Spawn Position out(State.PLAY, 0x4A, 0x47); // Time Update out(State.PLAY, 0x4B, 0x48); // Title - out(State.PLAY, 0x4C, -1, cancel()); // Stop Sound TODO NEW out(State.PLAY, 0x4E, 0x4A); // Player List Header And Footer out(State.PLAY, 0x4F, 0x4B); // Collect Item out(State.PLAY, 0x50, 0x4C); // Entity Teleport @@ -129,8 +126,6 @@ public class Protocol1_12_2To1_13 extends BackwardsProtocol { in(State.PLAY, 0x06, 0x05); // Confirm Transaction (serverbound) in(State.PLAY, 0x07, 0x06); // Enchant Item in(State.PLAY, 0x09, 0x08); // Close Window (serverbound) - in(State.PLAY, 0x0A, 0x09, cancel()); // Plugin message (serverbound) TODO MODIFIED - in(State.PLAY, 0x0B, -1, cancel()); // Edit Book TODO NEW in(State.PLAY, 0x0D, 0x0A); // Use Entity in(State.PLAY, 0x0E, 0x0B); // Keep Alive (serverbound) in(State.PLAY, 0x0F, 0x0C); // Player @@ -139,22 +134,17 @@ public class Protocol1_12_2To1_13 extends BackwardsProtocol { in(State.PLAY, 0x12, 0x0F); // Player Look in(State.PLAY, 0x13, 0x10); // Vehicle Move (serverbound) in(State.PLAY, 0x14, 0x11); // Steer Boat - in(State.PLAY, 0x15, -1, cancel()); // Pick Item TODO NEW in(State.PLAY, 0x16, 0x12, cancel()); // Craft Recipe Request TODO MODIFIED in(State.PLAY, 0x17, 0x13); // Player Abilities (serverbound) in(State.PLAY, 0x18, 0x14); // Player Digging in(State.PLAY, 0x19, 0x15); // Entity Action in(State.PLAY, 0x1A, 0x16); // Steer Vehicle in(State.PLAY, 0x1B, 0x17); // Recipe Book Data - in(State.PLAY, 0x1C, -1, cancel()); // Name Item TODO NEW in(State.PLAY, 0x1D, 0x18); // Resource Pack Status in(State.PLAY, 0x1E, 0x19); // Advancement Tab in(State.PLAY, 0x1F, -1); // Select Trade in(State.PLAY, 0x20, -1); // Set Beacon Effect in(State.PLAY, 0x21, 0x1A); // Held Item Change (serverbound) - in(State.PLAY, 0x22, -1, cancel()); // Update Command Block TODO NEW - in(State.PLAY, 0x23, -1, cancel()); // Update Command Block Minecart TODO NEW - in(State.PLAY, 0x25, -1, cancel()); // Update Structure Block TODO NEW in(State.PLAY, 0x26, 0x1C); // Update Sign in(State.PLAY, 0x27, 0x1D); // Animation (serverbound) in(State.PLAY, 0x28, 0x1E); // Spectate 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 fe48d5db..1f350fb7 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 @@ -144,7 +144,7 @@ public class BlockItemPackets1_13 extends BlockItemRewriter { }); //Spawn Global Entity - protocol.registerOutgoing(State.PLAY, 0x02, 0x02, new PacketRemapper() { + protocol.out(State.PLAY, 0x02, 0x02, new PacketRemapper() { @Override public void registerMap() { map(Type.VAR_INT); @@ -162,7 +162,7 @@ public class EntityPackets1_13 extends EntityRewriter { }); // Spawn Player - protocol.registerOutgoing(State.PLAY, 0x05, 0x05, new PacketRemapper() { + protocol.out(State.PLAY, 0x05, 0x05, new PacketRemapper() { @Override public void registerMap() { map(Type.VAR_INT); diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java index adbbbe39..9da73f67 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java @@ -1,18 +1,71 @@ package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.packets; +import nl.matsv.viabackwards.ViaBackwards; import nl.matsv.viabackwards.api.rewriters.Rewriter; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.Protocol1_12_2To1_13; import us.myles.ViaVersion.api.PacketWrapper; +import us.myles.ViaVersion.api.minecraft.Position; +import us.myles.ViaVersion.api.minecraft.item.Item; import us.myles.ViaVersion.api.remapper.PacketHandler; import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.api.type.Type; import us.myles.ViaVersion.packets.State; import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.ChatRewriter; +import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.packets.InventoryPackets; public class PlayerPacket1_13 extends Rewriter { @Override protected void registerPackets(Protocol1_12_2To1_13 protocol) { + //Plugin Message + protocol.out(State.PLAY, 0x19, 0x18, new PacketRemapper() { + @Override + public void registerMap() { + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + String channel = wrapper.read(Type.STRING); + if (channel.equals("minecraft:trader_list")) { + wrapper.write(Type.STRING, "MC|TrList"); + wrapper.passthrough(Type.INT); //Passthrough Window ID + + int size = wrapper.passthrough(Type.UNSIGNED_BYTE); + for (int i = 0; i < size; i++) { + //Input Item + Item input = wrapper.read(Type.FLAT_ITEM); + BlockItemPackets1_13.toClient(input); + wrapper.write(Type.ITEM, input); + //Output Item + Item output = wrapper.read(Type.FLAT_ITEM); + BlockItemPackets1_13.toClient(output); + wrapper.write(Type.ITEM, output); + + boolean secondItem = wrapper.passthrough(Type.BOOLEAN); //Has second item + if (secondItem) { + //Second Item + Item second = wrapper.read(Type.FLAT_ITEM); + BlockItemPackets1_13.toClient(second); + wrapper.write(Type.ITEM, second); + } + + wrapper.passthrough(Type.BOOLEAN); //Trade disabled + wrapper.passthrough(Type.INT); //Number of tools uses + wrapper.passthrough(Type.INT); //Maximum number of trade uses + } + } else { + String oldChannel = InventoryPackets.getOldPluginChannelId(channel); + if (oldChannel == null) { + ViaBackwards.getPlatform().getLogger().warning("Could not find old channel for " + channel); + wrapper.cancel(); + return; + } + wrapper.write(Type.STRING, oldChannel); + } + } + }); + } + }); + //Scoreboard Objective protocol.out(State.PLAY, 0x45, 0x42, new PacketRemapper() { @Override @@ -72,14 +125,119 @@ public class PlayerPacket1_13 extends Rewriter { } if (action == 0 || action == 3 || action == 4) { - wrapper.passthrough(Type.STRING_ARRAY); // Entities + wrapper.passthrough(Type.STRING_ARRAY); //Entities } } }); } }); + //Plugin Message + protocol.in(State.PLAY, 0x0A, 0x09, new PacketRemapper() { + @Override + public void registerMap() { + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + String channel = wrapper.read(Type.STRING); + if (channel.equals("MC|BSign") || channel.equals("MC|BEdit")) { + wrapper.setId(0x0B); + Item book = wrapper.read(Type.ITEM); + System.out.println(book); + BlockItemPackets1_13.toServer(book); + System.out.println(book); + wrapper.write(Type.FLAT_ITEM, book); + boolean signing = channel.equals("MC|BSign"); + System.out.println(channel); + System.out.println(signing); + wrapper.write(Type.BOOLEAN, signing); + } else if (channel.equals("MC|ItemName")) { + wrapper.setId(0x1C); + } else if (channel.equals("MC|AdvCmd")) { + byte type = wrapper.read(Type.BYTE); + if (type == 0) { + //Information from https://wiki.vg/index.php?title=Plugin_channels&oldid=14089 + //The Notchain client only uses this for command block minecarts and uses MC|AutoCmd for blocks, but the Notchian server still accepts it for either. + //Maybe older versions used this and we need to implement this? The issues is that we would have to save the command block types + wrapper.setId(0x22); + wrapper.cancel(); + ViaBackwards.getPlatform().getLogger().warning("Client send MC|AdvCmd custom payload to update command block, weird!"); + } else if (type == 1) { + wrapper.setId(0x23); + wrapper.write(Type.VAR_INT, wrapper.read(Type.INT)); //Entity Id + wrapper.passthrough(Type.STRING); //Command + wrapper.passthrough(Type.BOOLEAN); //Track Output + } else { + wrapper.cancel(); + } + } else if (channel.equals("MC|AutoCmd")) { + wrapper.setId(0x22); + Integer x = wrapper.read(Type.INT); + Integer y = wrapper.read(Type.INT); + Integer z = wrapper.read(Type.INT); + wrapper.write(Type.POSITION, new Position(x.longValue(), y.longValue(), z.longValue())); + wrapper.passthrough(Type.STRING); //Command + byte flags = 0; + if (wrapper.read(Type.BOOLEAN)) flags |= 0x01; //Track Output + String mode = wrapper.read(Type.STRING); + int modeId = mode.equals("SEQUENCE") ? 0 : mode.equals("AUTO") ? 1 : 2; + wrapper.write(Type.VAR_INT, modeId); + if (wrapper.read(Type.BOOLEAN)) flags |= 0x02; //Is conditional + if (wrapper.read(Type.BOOLEAN)) flags |= 0x04; //Automatic + } else if (channel.equals("MC|Struct")) { + wrapper.setId(0x25); + Integer x = wrapper.read(Type.INT); + Integer y = wrapper.read(Type.INT); + Integer z = wrapper.read(Type.INT); + wrapper.write(Type.POSITION, new Position(x.longValue(), y.longValue(), z.longValue())); + wrapper.write(Type.VAR_INT, wrapper.read(Type.BYTE) - 1); + String mode = wrapper.read(Type.STRING); + int modeId = mode.equals("SAVE") ? 0 : mode.equals("LOAD") ? 1 : mode.equals("CORNER") ? 2 : 3; + wrapper.write(Type.VAR_INT, modeId); + wrapper.passthrough(Type.STRING); //Name + wrapper.write(Type.BYTE, wrapper.read(Type.INT).byteValue()); //Offset X + wrapper.write(Type.BYTE, wrapper.read(Type.INT).byteValue()); //Offset Y + wrapper.write(Type.BYTE, wrapper.read(Type.INT).byteValue()); //Offset Z + wrapper.write(Type.BYTE, wrapper.read(Type.INT).byteValue()); //Size X + wrapper.write(Type.BYTE, wrapper.read(Type.INT).byteValue()); //Size Y + wrapper.write(Type.BYTE, wrapper.read(Type.INT).byteValue()); //Size Z + String mirror = wrapper.read(Type.STRING); + int mirrorId = mode.equals("NONE") ? 0 : mode.equals("LEFT_RIGHT") ? 1 : 2; + String rotation = wrapper.read(Type.STRING); + int rotationId = mode.equals("NONE") ? 0 : mode.equals("CLOCKWISE_90") ? 1 : mode.equals("CLOCKWISE_180") ? 2 : 3; + wrapper.passthrough(Type.STRING); //Metadata + byte flags = 0; + if (wrapper.read(Type.BOOLEAN)) flags |= 0x01; //Ignore entities + if (wrapper.read(Type.BOOLEAN)) flags |= 0x02; //Show air + if (wrapper.read(Type.BOOLEAN)) flags |= 0x04; //Show bounding box + wrapper.passthrough(Type.FLOAT); //Integrity + wrapper.passthrough(Type.VAR_LONG); //Seed + wrapper.write(Type.BYTE, flags); + } else if (channel.equals("MC|Beacon")) { + wrapper.setId(0x20); + wrapper.write(Type.VAR_INT, wrapper.read(Type.INT)); //Primary Effect + wrapper.write(Type.VAR_INT, wrapper.read(Type.INT)); //Secondary Effect + } else if (channel.equals("MC|TrSel")) { + wrapper.setId(0x1F); + wrapper.write(Type.VAR_INT, wrapper.read(Type.INT)); //Slot + } else if (channel.equals("MC|PickItem")) { + wrapper.setId(0x15); + } else { + String newChannel = InventoryPackets.getNewPluginChannelId(channel); + if (newChannel == null) { + ViaBackwards.getPlatform().getLogger().warning("Could not find new channel for " + channel); + wrapper.cancel(); + return; + } + wrapper.write(Type.STRING, newChannel); + //TODO REGISTER and UNREGISTER (see ViaVersion) + wrapper.cancel(); + } + } + }); + } + }); } @Override diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/SoundPackets1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/SoundPackets1_13.java index 2e037045..c82a4221 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/SoundPackets1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/SoundPackets1_13.java @@ -11,6 +11,8 @@ import us.myles.ViaVersion.api.type.Type; import us.myles.ViaVersion.packets.State; public class SoundPackets1_13 extends Rewriter { + private static final String[] SOUND_SOURCES = {"master", "music", "record", "weather", "block", "hostile", "neutral", "player", "ambient", "voice"}; + @Override protected void registerPackets(Protocol1_12_2To1_13 protocol) { @@ -32,6 +34,30 @@ public class SoundPackets1_13 extends Rewriter { } }); + //Stop Sound + protocol.out(State.PLAY, 0x4C, 0x18, new PacketRemapper() { + @Override + public void registerMap() { + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + wrapper.write(Type.STRING, "MC|StopSound"); + byte flags = wrapper.read(Type.BYTE); + String source; + if ((flags & 0x01) != 0) { + source = SOUND_SOURCES[wrapper.read(Type.VAR_INT)]; + } else { + source = ""; + } + String sound = (flags & 0x02) != 0 ? wrapper.read(Type.STRING) : ""; + + wrapper.write(Type.STRING, source); + wrapper.write(Type.STRING, sound); + } + }); + } + }); + //Sound Effect protocol.out(State.PLAY, 0x4D, 0x49, new PacketRemapper() { @Override diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/Protocol1_13To1_13_1.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/Protocol1_13To1_13_1.java index b884a825..1f629fbc 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/Protocol1_13To1_13_1.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/Protocol1_13To1_13_1.java @@ -47,6 +47,7 @@ public class Protocol1_13To1_13_1 extends BackwardsProtocol { handler(new PacketHandler() { @Override public void handle(PacketWrapper wrapper) throws Exception { + InventoryPackets.toServer(wrapper.get(Type.FLAT_ITEM, 0)); wrapper.write(Type.VAR_INT, 0); } }); From 9ad0c3460314e9d3d80cba456ab00f642abb9d6b Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Fri, 18 Jan 2019 11:42:29 +0100 Subject: [PATCH 010/171] most of the easy block mappings --- .../data/BackwardsMappings.java | 65 +- .../data/mapping-1.12.2to1.13.json | 4277 +++++++++++++++++ 2 files changed, 4328 insertions(+), 14 deletions(-) create mode 100644 core/src/main/resources/assets/viabackwards/data/mapping-1.12.2to1.13.json diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/BackwardsMappings.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/BackwardsMappings.java index 34d146ca..fd257d65 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/BackwardsMappings.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/BackwardsMappings.java @@ -10,35 +10,62 @@ package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.data; +import nl.matsv.viabackwards.ViaBackwards; import us.myles.ViaVersion.api.Via; +import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.data.MappingData; +import us.myles.ViaVersion.util.GsonUtil; import us.myles.viaversion.libs.gson.JsonElement; import us.myles.viaversion.libs.gson.JsonObject; +import us.myles.viaversion.libs.gson.JsonPrimitive; +import java.io.IOException; +import java.io.InputStreamReader; import java.util.Arrays; import java.util.Map; -import static us.myles.ViaVersion.protocols.protocol1_13to1_12_2.data.MappingData.loadData; - public class BackwardsMappings { public static BlockMappings blockMappings; public static void init() { - us.myles.viaversion.libs.gson.JsonObject mapping1_12 = loadData("mapping-1.12.json"); - us.myles.viaversion.libs.gson.JsonObject mapping1_13 = loadData("mapping-1.13.json"); + us.myles.viaversion.libs.gson.JsonObject mapping1_12 = MappingData.loadData("mapping-1.12.json"); + us.myles.viaversion.libs.gson.JsonObject mapping1_13 = MappingData.loadData("mapping-1.13.json"); + us.myles.viaversion.libs.gson.JsonObject mapping1_12_2to1_13 = loadData("mapping-1.12.2to1.13.json"); Via.getPlatform().getLogger().info("Loading block mapping..."); - blockMappings = new BlockMappingsShortArray(mapping1_13.getAsJsonObject("blocks"), mapping1_12.getAsJsonObject("blocks")); + blockMappings = new BlockMappingsShortArray(mapping1_13.getAsJsonObject("blocks"), mapping1_12.getAsJsonObject("blocks"), mapping1_12_2to1_13.getAsJsonObject("blockstates")); } - private static void mapIdentifiers(short[] output, JsonObject oldIdentifiers, JsonObject newIdentifiers) { - for (Map.Entry entry : oldIdentifiers.entrySet()) { - Map.Entry value = findValue(newIdentifiers, entry.getValue().getAsString()); + private static void mapIdentifiers(short[] output, JsonObject newIdentifiers, JsonObject oldIdentifiers, JsonObject mapping) { + for (Map.Entry entry : newIdentifiers.entrySet()) { + String key = entry.getValue().getAsString(); + Map.Entry value = findValue(oldIdentifiers, key); if (value == null) { - if (!Via.getConfig().isSuppress1_13ConversionErrors() || Via.getManager().isDebug()) { - Via.getPlatform().getLogger().warning("No key for " + entry.getValue() + " :( "); + JsonPrimitive replacement = mapping.getAsJsonPrimitive(key); + if (replacement == null && key.contains("[")) { + replacement = mapping.getAsJsonPrimitive(key.substring(0, key.indexOf('['))); } - continue; + if (replacement != null) { + if (replacement.getAsString().startsWith("id:")) { + String id = replacement.getAsString().replace("id:", ""); + value = findValue(oldIdentifiers, oldIdentifiers.getAsJsonPrimitive(id).getAsString()); + } else { + value = findValue(oldIdentifiers, replacement.getAsString()); + } + } + if (value == null) { + if (!Via.getConfig().isSuppress1_13ConversionErrors() || Via.getManager().isDebug()) { + if (replacement != null) { + ViaBackwards.getPlatform().getLogger().warning("No key for " + entry.getValue() + "/" + replacement.getAsString() + " :( "); + } else { + ViaBackwards.getPlatform().getLogger().warning("No key for " + entry.getValue() + " :( "); + } + } + continue; + } + } + if (!key.equals(value.getValue().getAsString())) { + ViaBackwards.getPlatform().getLogger().info("Mapping " + key + " -> " + value.getValue()); } output[Integer.parseInt(entry.getKey())] = Short.parseShort(value.getKey()); } @@ -55,16 +82,26 @@ public class BackwardsMappings { return null; } + public static JsonObject loadData(String name) { + try (InputStreamReader reader = new InputStreamReader(BackwardsMappings.class.getClassLoader().getResourceAsStream("assets/viabackwards/data/" + name))) { + return GsonUtil.getGson().fromJson(reader, JsonObject.class); + } catch (IOException ex) { + ex.printStackTrace(); + } + + return null; + } + public interface BlockMappings { int getNewBlock(int old); } private static class BlockMappingsShortArray implements BlockMappings { - private short[] oldToNew = new short[4084 * 6]; + private short[] oldToNew = new short[8582]; - private BlockMappingsShortArray(JsonObject oldMapping, JsonObject newMapping) { + private BlockMappingsShortArray(JsonObject newIdentifiers, JsonObject oldIdentifiers, JsonObject mapping) { Arrays.fill(oldToNew, (short) -1); - mapIdentifiers(oldToNew, oldMapping, newMapping); + mapIdentifiers(oldToNew, newIdentifiers, oldIdentifiers, mapping); } @Override diff --git a/core/src/main/resources/assets/viabackwards/data/mapping-1.12.2to1.13.json b/core/src/main/resources/assets/viabackwards/data/mapping-1.12.2to1.13.json new file mode 100644 index 00000000..e037d90e --- /dev/null +++ b/core/src/main/resources/assets/viabackwards/data/mapping-1.12.2to1.13.json @@ -0,0 +1,4277 @@ +{ + "blockstates": { + "minecraft:grass_block": "minecraft:grass_block[snowy=false]", + "minecraft:podzol[snowy=true]": "minecraft:podzol[snowy=false]", + "minecraft:stripped_spruce_log[axis=x]": "minecraft:spruce_log[axis=x]", + "minecraft:stripped_spruce_log[axis=y]": "minecraft:spruce_log[axis=y]", + "minecraft:stripped_spruce_log[axis=z]": "minecraft:spruce_log[axis=z]", + "minecraft:stripped_birch_log[axis=x]": "minecraft:birch_log[axis=x]", + "minecraft:stripped_birch_log[axis=y]": "minecraft:birch_log[axis=y]", + "minecraft:stripped_birch_log[axis=z]": "minecraft:birch_log[axis=z]", + "minecraft:stripped_jungle_log[axis=x]": "minecraft:jungle_log[axis=x]", + "minecraft:stripped_jungle_log[axis=y]": "minecraft:jungle_log[axis=y]", + "minecraft:stripped_jungle_log[axis=z]": "minecraft:jungle_log[axis=z]", + "minecraft:stripped_acacia_log[axis=x]": "minecraft:acacia_log[axis=x]", + "minecraft:stripped_acacia_log[axis=y]": "minecraft:acacia_log[axis=y]", + "minecraft:stripped_acacia_log[axis=z]": "minecraft:acacia_log[axis=z]", + "minecraft:stripped_dark_oak_log[axis=x]": "minecraft:dark_oak_log[axis=x]", + "minecraft:stripped_dark_oak_log[axis=y]": "minecraft:dark_oak_log[axis=y]", + "minecraft:stripped_dark_oak_log[axis=z]": "minecraft:dark_oak_log[axis=z]", + "minecraft:stripped_oak_log[axis=x]": "minecraft:oak_log[axis=x]", + "minecraft:stripped_oak_log[axis=y]": "minecraft:oak_log[axis=y]", + "minecraft:stripped_oak_log[axis=z]": "minecraft:oak_log[axis=z]", + "minecraft:oak_wood": "minecraft:oak_wood[axis=y]", + "minecraft:spruce_wood": "minecraft:spruce_wood[axis=y]", + "minecraft:birch_wood": "minecraft:birch_wood[axis=y]", + "minecraft:jungle_wood": "minecraft:jungle_wood[axis=y]", + "minecraft:acacia_wood": "minecraft:acacia_wood[axis=y]", + "minecraft:dark_oak_wood": "minecraft:dark_oak_wood[axis=y]", + "minecraft:stripped_oak_wood": "minecraft:oak_wood[axis=y]", + "minecraft:stripped_spruce_wood": "minecraft:spruce_wood[axis=y]", + "minecraft:stripped_birch_wood": "minecraft:birch_wood[axis=y]", + "minecraft:stripped_jungle_wood": "minecraft:jungle_wood[axis=y]", + "minecraft:stripped_acacia_wood": "minecraft:acacia_wood[axis=y]", + "minecraft:stripped_dark_oak_wood": "minecraft:dark_oak_wood[axis=y]", + "minecraft:oak_leaves[distance=3,persistent=true]": "minecraft:oak_leaves[distance=2,persistent=true]", + "minecraft:oak_leaves[distance=3,persistent=false]": "minecraft:oak_leaves[distance=2,persistent=false]", + "minecraft:oak_leaves[distance=4,persistent=true]": "minecraft:oak_leaves[distance=2,persistent=true]", + "minecraft:oak_leaves[distance=4,persistent=false]": "minecraft:oak_leaves[distance=2,persistent=false]", + "minecraft:oak_leaves[distance=5,persistent=true]": "minecraft:oak_leaves[distance=2,persistent=true]", + "minecraft:oak_leaves[distance=5,persistent=false]": "minecraft:oak_leaves[distance=2,persistent=false]", + "minecraft:oak_leaves[distance=6,persistent=true]": "minecraft:oak_leaves[distance=2,persistent=true]", + "minecraft:oak_leaves[distance=6,persistent=false]": "minecraft:oak_leaves[distance=2,persistent=false]", + "minecraft:oak_leaves[distance=7,persistent=true]": "minecraft:oak_leaves[distance=2,persistent=true]", + "minecraft:oak_leaves[distance=7,persistent=false]": "minecraft:oak_leaves[distance=2,persistent=false]", + "minecraft:spruce_leaves[distance=3,persistent=true]": "minecraft:spruce_leaves[distance=2,persistent=true]", + "minecraft:spruce_leaves[distance=3,persistent=false]": "minecraft:spruce_leaves[distance=2,persistent=false]", + "minecraft:spruce_leaves[distance=4,persistent=true]": "minecraft:spruce_leaves[distance=2,persistent=true]", + "minecraft:spruce_leaves[distance=4,persistent=false]": "minecraft:spruce_leaves[distance=2,persistent=false]", + "minecraft:spruce_leaves[distance=5,persistent=true]": "minecraft:spruce_leaves[distance=2,persistent=true]", + "minecraft:spruce_leaves[distance=5,persistent=false]": "minecraft:spruce_leaves[distance=2,persistent=false]", + "minecraft:spruce_leaves[distance=6,persistent=true]": "minecraft:spruce_leaves[distance=2,persistent=true]", + "minecraft:spruce_leaves[distance=6,persistent=false]": "minecraft:spruce_leaves[distance=2,persistent=false]", + "minecraft:spruce_leaves[distance=7,persistent=true]": "minecraft:spruce_leaves[distance=2,persistent=true]", + "minecraft:spruce_leaves[distance=7,persistent=false]": "minecraft:spruce_leaves[distance=2,persistent=false]", + "minecraft:birch_leaves[distance=3,persistent=true]": "minecraft:birch_leaves[distance=2,persistent=true]", + "minecraft:birch_leaves[distance=3,persistent=false]": "minecraft:birch_leaves[distance=2,persistent=false]", + "minecraft:birch_leaves[distance=4,persistent=true]": "minecraft:birch_leaves[distance=2,persistent=true]", + "minecraft:birch_leaves[distance=4,persistent=false]": "minecraft:birch_leaves[distance=2,persistent=false]", + "minecraft:birch_leaves[distance=5,persistent=true]": "minecraft:birch_leaves[distance=2,persistent=true]", + "minecraft:birch_leaves[distance=5,persistent=false]": "minecraft:birch_leaves[distance=2,persistent=false]", + "minecraft:birch_leaves[distance=6,persistent=true]": "minecraft:birch_leaves[distance=2,persistent=true]", + "minecraft:birch_leaves[distance=6,persistent=false]": "minecraft:birch_leaves[distance=2,persistent=false]", + "minecraft:birch_leaves[distance=7,persistent=true]": "minecraft:birch_leaves[distance=2,persistent=true]", + "minecraft:birch_leaves[distance=7,persistent=false]": "minecraft:birch_leaves[distance=2,persistent=false]", + "minecraft:jungle_leaves[distance=3,persistent=true]": "minecraft:jungle_leaves[distance=2,persistent=true]", + "minecraft:jungle_leaves[distance=3,persistent=false]": "minecraft:jungle_leaves[distance=2,persistent=false]", + "minecraft:jungle_leaves[distance=4,persistent=true]": "minecraft:jungle_leaves[distance=2,persistent=true]", + "minecraft:jungle_leaves[distance=4,persistent=false]": "minecraft:jungle_leaves[distance=2,persistent=false]", + "minecraft:jungle_leaves[distance=5,persistent=true]": "minecraft:jungle_leaves[distance=2,persistent=true]", + "minecraft:jungle_leaves[distance=5,persistent=false]": "minecraft:jungle_leaves[distance=2,persistent=false]", + "minecraft:jungle_leaves[distance=6,persistent=true]": "minecraft:jungle_leaves[distance=2,persistent=true]", + "minecraft:jungle_leaves[distance=6,persistent=false]": "minecraft:jungle_leaves[distance=2,persistent=false]", + "minecraft:jungle_leaves[distance=7,persistent=true]": "minecraft:jungle_leaves[distance=2,persistent=true]", + "minecraft:jungle_leaves[distance=7,persistent=false]": "minecraft:jungle_leaves[distance=2,persistent=false]", + "minecraft:acacia_leaves[distance=3,persistent=true]": "minecraft:acacia_leaves[distance=2,persistent=true]", + "minecraft:acacia_leaves[distance=3,persistent=false]": "minecraft:acacia_leaves[distance=2,persistent=false]", + "minecraft:acacia_leaves[distance=4,persistent=true]": "minecraft:acacia_leaves[distance=2,persistent=true]", + "minecraft:acacia_leaves[distance=4,persistent=false]": "minecraft:acacia_leaves[distance=2,persistent=false]", + "minecraft:acacia_leaves[distance=5,persistent=true]": "minecraft:acacia_leaves[distance=2,persistent=true]", + "minecraft:acacia_leaves[distance=5,persistent=false]": "minecraft:acacia_leaves[distance=2,persistent=false]", + "minecraft:acacia_leaves[distance=6,persistent=true]": "minecraft:acacia_leaves[distance=2,persistent=true]", + "minecraft:acacia_leaves[distance=6,persistent=false]": "minecraft:acacia_leaves[distance=2,persistent=false]", + "minecraft:acacia_leaves[distance=7,persistent=true]": "minecraft:acacia_leaves[distance=2,persistent=true]", + "minecraft:acacia_leaves[distance=7,persistent=false]": "minecraft:acacia_leaves[distance=2,persistent=false]", + "minecraft:dark_oak_leaves[distance=3,persistent=true]": "minecraft:dark_oak_leaves[distance=2,persistent=true]", + "minecraft:dark_oak_leaves[distance=3,persistent=false]": "minecraft:dark_oak_leaves[distance=2,persistent=false]", + "minecraft:dark_oak_leaves[distance=4,persistent=true]": "minecraft:dark_oak_leaves[distance=2,persistent=true]", + "minecraft:dark_oak_leaves[distance=4,persistent=false]": "minecraft:dark_oak_leaves[distance=2,persistent=false]", + "minecraft:dark_oak_leaves[distance=5,persistent=true]": "minecraft:dark_oak_leaves[distance=2,persistent=true]", + "minecraft:dark_oak_leaves[distance=5,persistent=false]": "minecraft:dark_oak_leaves[distance=2,persistent=false]", + "minecraft:dark_oak_leaves[distance=6,persistent=true]": "minecraft:dark_oak_leaves[distance=2,persistent=true]", + "minecraft:dark_oak_leaves[distance=6,persistent=false]": "minecraft:dark_oak_leaves[distance=2,persistent=false]", + "minecraft:dark_oak_leaves[distance=7,persistent=true]": "minecraft:dark_oak_leaves[distance=2,persistent=true]", + "minecraft:dark_oak_leaves[distance=7,persistent=false]": "minecraft:dark_oak_leaves[distance=2,persistent=false]", + "minecraft:note_block": "minecraft:note_block[instrument=harp,note=0,powered=false]", + "minecraft:white_bed[facing=north,occupied=true,part=head]": "minecraft:red_bed[facing=north,occupied=false,part=head]", + "minecraft:white_bed[facing=north,occupied=true,part=foot]": "minecraft:red_bed[facing=north,occupied=false,part=foot]", + "minecraft:white_bed[facing=north,occupied=false,part=head]": "minecraft:red_bed[facing=north,occupied=false,part=head]", + "minecraft:white_bed[facing=north,occupied=false,part=foot]": "minecraft:red_bed[facing=north,occupied=false,part=foot]", + "minecraft:white_bed[facing=south,occupied=true,part=head]": "minecraft:red_bed[facing=south,occupied=false,part=head]", + "minecraft:white_bed[facing=south,occupied=true,part=foot]": "minecraft:red_bed[facing=south,occupied=false,part=foot]", + "minecraft:white_bed[facing=south,occupied=false,part=head]": "minecraft:red_bed[facing=south,occupied=false,part=head]", + "minecraft:white_bed[facing=south,occupied=false,part=foot]": "minecraft:red_bed[facing=south,occupied=false,part=foot]", + "minecraft:white_bed[facing=west,occupied=true,part=head]": "minecraft:red_bed[facing=west,occupied=false,part=head]", + "minecraft:white_bed[facing=west,occupied=true,part=foot]": "minecraft:red_bed[facing=west,occupied=false,part=foot]", + "minecraft:white_bed[facing=west,occupied=false,part=head]": "minecraft:red_bed[facing=west,occupied=false,part=head]", + "minecraft:white_bed[facing=west,occupied=false,part=foot]": "minecraft:red_bed[facing=west,occupied=false,part=foot]", + "minecraft:white_bed[facing=east,occupied=true,part=head]": "minecraft:red_bed[facing=east,occupied=false,part=head]", + "minecraft:white_bed[facing=east,occupied=true,part=foot]": "minecraft:red_bed[facing=east,occupied=false,part=foot]", + "minecraft:white_bed[facing=east,occupied=false,part=head]": "minecraft:red_bed[facing=east,occupied=false,part=head]", + "minecraft:white_bed[facing=east,occupied=false,part=foot]": "minecraft:red_bed[facing=east,occupied=false,part=foot]", + "minecraft:orange_bed[facing=north,occupied=true,part=head]": "minecraft:red_bed[facing=north,occupied=false,part=head]", + "minecraft:orange_bed[facing=north,occupied=true,part=foot]": "minecraft:red_bed[facing=north,occupied=false,part=foot]", + "minecraft:orange_bed[facing=north,occupied=false,part=head]": "minecraft:red_bed[facing=north,occupied=false,part=head]", + "minecraft:orange_bed[facing=north,occupied=false,part=foot]": "minecraft:red_bed[facing=north,occupied=false,part=foot]", + "minecraft:orange_bed[facing=south,occupied=true,part=head]": "minecraft:red_bed[facing=south,occupied=false,part=head]", + "minecraft:orange_bed[facing=south,occupied=true,part=foot]": "minecraft:red_bed[facing=south,occupied=false,part=foot]", + "minecraft:orange_bed[facing=south,occupied=false,part=head]": "minecraft:red_bed[facing=south,occupied=false,part=head]", + "minecraft:orange_bed[facing=south,occupied=false,part=foot]": "minecraft:red_bed[facing=south,occupied=false,part=foot]", + "minecraft:orange_bed[facing=west,occupied=true,part=head]": "minecraft:red_bed[facing=west,occupied=false,part=head]", + "minecraft:orange_bed[facing=west,occupied=true,part=foot]": "minecraft:red_bed[facing=west,occupied=false,part=foot]", + "minecraft:orange_bed[facing=west,occupied=false,part=head]": "minecraft:red_bed[facing=west,occupied=false,part=head]", + "minecraft:orange_bed[facing=west,occupied=false,part=foot]": "minecraft:red_bed[facing=west,occupied=false,part=foot]", + "minecraft:orange_bed[facing=east,occupied=true,part=head]": "minecraft:red_bed[facing=east,occupied=false,part=head]", + "minecraft:orange_bed[facing=east,occupied=true,part=foot]": "minecraft:red_bed[facing=east,occupied=false,part=foot]", + "minecraft:orange_bed[facing=east,occupied=false,part=head]": "minecraft:red_bed[facing=east,occupied=false,part=head]", + "minecraft:orange_bed[facing=east,occupied=false,part=foot]": "minecraft:red_bed[facing=east,occupied=false,part=foot]", + "minecraft:magenta_bed[facing=north,occupied=true,part=head]": "minecraft:red_bed[facing=north,occupied=false,part=head]", + "minecraft:magenta_bed[facing=north,occupied=true,part=foot]": "minecraft:red_bed[facing=north,occupied=false,part=foot]", + "minecraft:magenta_bed[facing=north,occupied=false,part=head]": "minecraft:red_bed[facing=north,occupied=false,part=head]", + "minecraft:magenta_bed[facing=north,occupied=false,part=foot]": "minecraft:red_bed[facing=north,occupied=false,part=foot]", + "minecraft:magenta_bed[facing=south,occupied=true,part=head]": "minecraft:red_bed[facing=south,occupied=false,part=head]", + "minecraft:magenta_bed[facing=south,occupied=true,part=foot]": "minecraft:red_bed[facing=south,occupied=false,part=foot]", + "minecraft:magenta_bed[facing=south,occupied=false,part=head]": "minecraft:red_bed[facing=south,occupied=false,part=head]", + "minecraft:magenta_bed[facing=south,occupied=false,part=foot]": "minecraft:red_bed[facing=south,occupied=false,part=foot]", + "minecraft:magenta_bed[facing=west,occupied=true,part=head]": "minecraft:red_bed[facing=west,occupied=false,part=head]", + "minecraft:magenta_bed[facing=west,occupied=true,part=foot]": "minecraft:red_bed[facing=west,occupied=false,part=foot]", + "minecraft:magenta_bed[facing=west,occupied=false,part=head]": "minecraft:red_bed[facing=west,occupied=false,part=head]", + "minecraft:magenta_bed[facing=west,occupied=false,part=foot]": "minecraft:red_bed[facing=west,occupied=false,part=foot]", + "minecraft:magenta_bed[facing=east,occupied=true,part=head]": "minecraft:red_bed[facing=east,occupied=false,part=head]", + "minecraft:magenta_bed[facing=east,occupied=true,part=foot]": "minecraft:red_bed[facing=east,occupied=false,part=foot]", + "minecraft:magenta_bed[facing=east,occupied=false,part=head]": "minecraft:red_bed[facing=east,occupied=false,part=head]", + "minecraft:magenta_bed[facing=east,occupied=false,part=foot]": "minecraft:red_bed[facing=east,occupied=false,part=foot]", + "minecraft:light_blue_bed[facing=north,occupied=true,part=head]": "minecraft:red_bed[facing=north,occupied=false,part=head]", + "minecraft:light_blue_bed[facing=north,occupied=true,part=foot]": "minecraft:red_bed[facing=north,occupied=false,part=foot]", + "minecraft:light_blue_bed[facing=north,occupied=false,part=head]": "minecraft:red_bed[facing=north,occupied=false,part=head]", + "minecraft:light_blue_bed[facing=north,occupied=false,part=foot]": "minecraft:red_bed[facing=north,occupied=false,part=foot]", + "minecraft:light_blue_bed[facing=south,occupied=true,part=head]": "minecraft:red_bed[facing=south,occupied=false,part=head]", + "minecraft:light_blue_bed[facing=south,occupied=true,part=foot]": "minecraft:red_bed[facing=south,occupied=false,part=foot]", + "minecraft:light_blue_bed[facing=south,occupied=false,part=head]": "minecraft:red_bed[facing=south,occupied=false,part=head]", + "minecraft:light_blue_bed[facing=south,occupied=false,part=foot]": "minecraft:red_bed[facing=south,occupied=false,part=foot]", + "minecraft:light_blue_bed[facing=west,occupied=true,part=head]": "minecraft:red_bed[facing=west,occupied=false,part=head]", + "minecraft:light_blue_bed[facing=west,occupied=true,part=foot]": "minecraft:red_bed[facing=west,occupied=false,part=foot]", + "minecraft:light_blue_bed[facing=west,occupied=false,part=head]": "minecraft:red_bed[facing=west,occupied=false,part=head]", + "minecraft:light_blue_bed[facing=west,occupied=false,part=foot]": "minecraft:red_bed[facing=west,occupied=false,part=foot]", + "minecraft:light_blue_bed[facing=east,occupied=true,part=head]": "minecraft:red_bed[facing=east,occupied=false,part=head]", + "minecraft:light_blue_bed[facing=east,occupied=true,part=foot]": "minecraft:red_bed[facing=east,occupied=false,part=foot]", + "minecraft:light_blue_bed[facing=east,occupied=false,part=head]": "minecraft:red_bed[facing=east,occupied=false,part=head]", + "minecraft:light_blue_bed[facing=east,occupied=false,part=foot]": "minecraft:red_bed[facing=east,occupied=false,part=foot]", + "minecraft:yellow_bed[facing=north,occupied=true,part=head]": "minecraft:red_bed[facing=north,occupied=false,part=head]", + "minecraft:yellow_bed[facing=north,occupied=true,part=foot]": "minecraft:red_bed[facing=north,occupied=false,part=foot]", + "minecraft:yellow_bed[facing=north,occupied=false,part=head]": "minecraft:red_bed[facing=north,occupied=false,part=head]", + "minecraft:yellow_bed[facing=north,occupied=false,part=foot]": "minecraft:red_bed[facing=north,occupied=false,part=foot]", + "minecraft:yellow_bed[facing=south,occupied=true,part=head]": "minecraft:red_bed[facing=south,occupied=false,part=head]", + "minecraft:yellow_bed[facing=south,occupied=true,part=foot]": "minecraft:red_bed[facing=south,occupied=false,part=foot]", + "minecraft:yellow_bed[facing=south,occupied=false,part=head]": "minecraft:red_bed[facing=south,occupied=false,part=head]", + "minecraft:yellow_bed[facing=south,occupied=false,part=foot]": "minecraft:red_bed[facing=south,occupied=false,part=foot]", + "minecraft:yellow_bed[facing=west,occupied=true,part=head]": "minecraft:red_bed[facing=west,occupied=false,part=head]", + "minecraft:yellow_bed[facing=west,occupied=true,part=foot]": "minecraft:red_bed[facing=west,occupied=false,part=foot]", + "minecraft:yellow_bed[facing=west,occupied=false,part=head]": "minecraft:red_bed[facing=west,occupied=false,part=head]", + "minecraft:yellow_bed[facing=west,occupied=false,part=foot]": "minecraft:red_bed[facing=west,occupied=false,part=foot]", + "minecraft:yellow_bed[facing=east,occupied=true,part=head]": "minecraft:red_bed[facing=east,occupied=false,part=head]", + "minecraft:yellow_bed[facing=east,occupied=true,part=foot]": "minecraft:red_bed[facing=east,occupied=false,part=foot]", + "minecraft:yellow_bed[facing=east,occupied=false,part=head]": "minecraft:red_bed[facing=east,occupied=false,part=head]", + "minecraft:yellow_bed[facing=east,occupied=false,part=foot]": "minecraft:red_bed[facing=east,occupied=false,part=foot]", + "minecraft:lime_bed[facing=north,occupied=true,part=head]": "minecraft:red_bed[facing=north,occupied=false,part=head]", + "minecraft:lime_bed[facing=north,occupied=true,part=foot]": "minecraft:red_bed[facing=north,occupied=false,part=foot]", + "minecraft:lime_bed[facing=north,occupied=false,part=head]": "minecraft:red_bed[facing=north,occupied=false,part=head]", + "minecraft:lime_bed[facing=north,occupied=false,part=foot]": "minecraft:red_bed[facing=north,occupied=false,part=foot]", + "minecraft:lime_bed[facing=south,occupied=true,part=head]": "minecraft:red_bed[facing=south,occupied=false,part=head]", + "minecraft:lime_bed[facing=south,occupied=true,part=foot]": "minecraft:red_bed[facing=south,occupied=false,part=foot]", + "minecraft:lime_bed[facing=south,occupied=false,part=head]": "minecraft:red_bed[facing=south,occupied=false,part=head]", + "minecraft:lime_bed[facing=south,occupied=false,part=foot]": "minecraft:red_bed[facing=south,occupied=false,part=foot]", + "minecraft:lime_bed[facing=west,occupied=true,part=head]": "minecraft:red_bed[facing=west,occupied=false,part=head]", + "minecraft:lime_bed[facing=west,occupied=true,part=foot]": "minecraft:red_bed[facing=west,occupied=false,part=foot]", + "minecraft:lime_bed[facing=west,occupied=false,part=head]": "minecraft:red_bed[facing=west,occupied=false,part=head]", + "minecraft:lime_bed[facing=west,occupied=false,part=foot]": "minecraft:red_bed[facing=west,occupied=false,part=foot]", + "minecraft:lime_bed[facing=east,occupied=true,part=head]": "minecraft:red_bed[facing=east,occupied=false,part=head]", + "minecraft:lime_bed[facing=east,occupied=true,part=foot]": "minecraft:red_bed[facing=east,occupied=false,part=foot]", + "minecraft:lime_bed[facing=east,occupied=false,part=head]": "minecraft:red_bed[facing=east,occupied=false,part=head]", + "minecraft:lime_bed[facing=east,occupied=false,part=foot]": "minecraft:red_bed[facing=east,occupied=false,part=foot]", + "minecraft:pink_bed[facing=north,occupied=true,part=head]": "minecraft:red_bed[facing=north,occupied=false,part=head]", + "minecraft:pink_bed[facing=north,occupied=true,part=foot]": "minecraft:red_bed[facing=north,occupied=false,part=foot]", + "minecraft:pink_bed[facing=north,occupied=false,part=head]": "minecraft:red_bed[facing=north,occupied=false,part=head]", + "minecraft:pink_bed[facing=north,occupied=false,part=foot]": "minecraft:red_bed[facing=north,occupied=false,part=foot]", + "minecraft:pink_bed[facing=south,occupied=true,part=head]": "minecraft:red_bed[facing=south,occupied=false,part=head]", + "minecraft:pink_bed[facing=south,occupied=true,part=foot]": "minecraft:red_bed[facing=south,occupied=false,part=foot]", + "minecraft:pink_bed[facing=south,occupied=false,part=head]": "minecraft:red_bed[facing=south,occupied=false,part=head]", + "minecraft:pink_bed[facing=south,occupied=false,part=foot]": "minecraft:red_bed[facing=south,occupied=false,part=foot]", + "minecraft:pink_bed[facing=west,occupied=true,part=head]": "minecraft:red_bed[facing=west,occupied=false,part=head]", + "minecraft:pink_bed[facing=west,occupied=true,part=foot]": "minecraft:red_bed[facing=west,occupied=false,part=foot]", + "minecraft:pink_bed[facing=west,occupied=false,part=head]": "minecraft:red_bed[facing=west,occupied=false,part=head]", + "minecraft:pink_bed[facing=west,occupied=false,part=foot]": "minecraft:red_bed[facing=west,occupied=false,part=foot]", + "minecraft:pink_bed[facing=east,occupied=true,part=head]": "minecraft:red_bed[facing=east,occupied=false,part=head]", + "minecraft:pink_bed[facing=east,occupied=true,part=foot]": "minecraft:red_bed[facing=east,occupied=false,part=foot]", + "minecraft:pink_bed[facing=east,occupied=false,part=head]": "minecraft:red_bed[facing=east,occupied=false,part=head]", + "minecraft:pink_bed[facing=east,occupied=false,part=foot]": "minecraft:red_bed[facing=east,occupied=false,part=foot]", + "minecraft:gray_bed[facing=north,occupied=true,part=head]": "minecraft:red_bed[facing=north,occupied=false,part=head]", + "minecraft:gray_bed[facing=north,occupied=true,part=foot]": "minecraft:red_bed[facing=north,occupied=false,part=foot]", + "minecraft:gray_bed[facing=north,occupied=false,part=head]": "minecraft:red_bed[facing=north,occupied=false,part=head]", + "minecraft:gray_bed[facing=north,occupied=false,part=foot]": "minecraft:red_bed[facing=north,occupied=false,part=foot]", + "minecraft:gray_bed[facing=south,occupied=true,part=head]": "minecraft:red_bed[facing=south,occupied=false,part=head]", + "minecraft:gray_bed[facing=south,occupied=true,part=foot]": "minecraft:red_bed[facing=south,occupied=false,part=foot]", + "minecraft:gray_bed[facing=south,occupied=false,part=head]": "minecraft:red_bed[facing=south,occupied=false,part=head]", + "minecraft:gray_bed[facing=south,occupied=false,part=foot]": "minecraft:red_bed[facing=south,occupied=false,part=foot]", + "minecraft:gray_bed[facing=west,occupied=true,part=head]": "minecraft:red_bed[facing=west,occupied=false,part=head]", + "minecraft:gray_bed[facing=west,occupied=true,part=foot]": "minecraft:red_bed[facing=west,occupied=false,part=foot]", + "minecraft:gray_bed[facing=west,occupied=false,part=head]": "minecraft:red_bed[facing=west,occupied=false,part=head]", + "minecraft:gray_bed[facing=west,occupied=false,part=foot]": "minecraft:red_bed[facing=west,occupied=false,part=foot]", + "minecraft:gray_bed[facing=east,occupied=true,part=head]": "minecraft:red_bed[facing=east,occupied=false,part=head]", + "minecraft:gray_bed[facing=east,occupied=true,part=foot]": "minecraft:red_bed[facing=east,occupied=false,part=foot]", + "minecraft:gray_bed[facing=east,occupied=false,part=head]": "minecraft:red_bed[facing=east,occupied=false,part=head]", + "minecraft:gray_bed[facing=east,occupied=false,part=foot]": "minecraft:red_bed[facing=east,occupied=false,part=foot]", + "minecraft:light_gray_bed[facing=north,occupied=true,part=head]": "minecraft:red_bed[facing=north,occupied=false,part=head]", + "minecraft:light_gray_bed[facing=north,occupied=true,part=foot]": "minecraft:red_bed[facing=north,occupied=false,part=foot]", + "minecraft:light_gray_bed[facing=north,occupied=false,part=head]": "minecraft:red_bed[facing=north,occupied=false,part=head]", + "minecraft:light_gray_bed[facing=north,occupied=false,part=foot]": "minecraft:red_bed[facing=north,occupied=false,part=foot]", + "minecraft:light_gray_bed[facing=south,occupied=true,part=head]": "minecraft:red_bed[facing=south,occupied=false,part=head]", + "minecraft:light_gray_bed[facing=south,occupied=true,part=foot]": "minecraft:red_bed[facing=south,occupied=false,part=foot]", + "minecraft:light_gray_bed[facing=south,occupied=false,part=head]": "minecraft:red_bed[facing=south,occupied=false,part=head]", + "minecraft:light_gray_bed[facing=south,occupied=false,part=foot]": "minecraft:red_bed[facing=south,occupied=false,part=foot]", + "minecraft:light_gray_bed[facing=west,occupied=true,part=head]": "minecraft:red_bed[facing=west,occupied=false,part=head]", + "minecraft:light_gray_bed[facing=west,occupied=true,part=foot]": "minecraft:red_bed[facing=west,occupied=false,part=foot]", + "minecraft:light_gray_bed[facing=west,occupied=false,part=head]": "minecraft:red_bed[facing=west,occupied=false,part=head]", + "minecraft:light_gray_bed[facing=west,occupied=false,part=foot]": "minecraft:red_bed[facing=west,occupied=false,part=foot]", + "minecraft:light_gray_bed[facing=east,occupied=true,part=head]": "minecraft:red_bed[facing=east,occupied=false,part=head]", + "minecraft:light_gray_bed[facing=east,occupied=true,part=foot]": "minecraft:red_bed[facing=east,occupied=false,part=foot]", + "minecraft:light_gray_bed[facing=east,occupied=false,part=head]": "minecraft:red_bed[facing=east,occupied=false,part=head]", + "minecraft:light_gray_bed[facing=east,occupied=false,part=foot]": "minecraft:red_bed[facing=east,occupied=false,part=foot]", + "minecraft:cyan_bed[facing=north,occupied=true,part=head]": "minecraft:red_bed[facing=north,occupied=false,part=head]", + "minecraft:cyan_bed[facing=north,occupied=true,part=foot]": "minecraft:red_bed[facing=north,occupied=false,part=foot]", + "minecraft:cyan_bed[facing=north,occupied=false,part=head]": "minecraft:red_bed[facing=north,occupied=false,part=head]", + "minecraft:cyan_bed[facing=north,occupied=false,part=foot]": "minecraft:red_bed[facing=north,occupied=false,part=foot]", + "minecraft:cyan_bed[facing=south,occupied=true,part=head]": "minecraft:red_bed[facing=south,occupied=false,part=head]", + "minecraft:cyan_bed[facing=south,occupied=true,part=foot]": "minecraft:red_bed[facing=south,occupied=false,part=foot]", + "minecraft:cyan_bed[facing=south,occupied=false,part=head]": "minecraft:red_bed[facing=south,occupied=false,part=head]", + "minecraft:cyan_bed[facing=south,occupied=false,part=foot]": "minecraft:red_bed[facing=south,occupied=false,part=foot]", + "minecraft:cyan_bed[facing=west,occupied=true,part=head]": "minecraft:red_bed[facing=west,occupied=false,part=head]", + "minecraft:cyan_bed[facing=west,occupied=true,part=foot]": "minecraft:red_bed[facing=west,occupied=false,part=foot]", + "minecraft:cyan_bed[facing=west,occupied=false,part=head]": "minecraft:red_bed[facing=west,occupied=false,part=head]", + "minecraft:cyan_bed[facing=west,occupied=false,part=foot]": "minecraft:red_bed[facing=west,occupied=false,part=foot]", + "minecraft:cyan_bed[facing=east,occupied=true,part=head]": "minecraft:red_bed[facing=east,occupied=false,part=head]", + "minecraft:cyan_bed[facing=east,occupied=true,part=foot]": "minecraft:red_bed[facing=east,occupied=false,part=foot]", + "minecraft:cyan_bed[facing=east,occupied=false,part=head]": "minecraft:red_bed[facing=east,occupied=false,part=head]", + "minecraft:cyan_bed[facing=east,occupied=false,part=foot]": "minecraft:red_bed[facing=east,occupied=false,part=foot]", + "minecraft:purple_bed[facing=north,occupied=true,part=head]": "minecraft:red_bed[facing=north,occupied=false,part=head]", + "minecraft:purple_bed[facing=north,occupied=true,part=foot]": "minecraft:red_bed[facing=north,occupied=false,part=foot]", + "minecraft:purple_bed[facing=north,occupied=false,part=head]": "minecraft:red_bed[facing=north,occupied=false,part=head]", + "minecraft:purple_bed[facing=north,occupied=false,part=foot]": "minecraft:red_bed[facing=north,occupied=false,part=foot]", + "minecraft:purple_bed[facing=south,occupied=true,part=head]": "minecraft:red_bed[facing=south,occupied=false,part=head]", + "minecraft:purple_bed[facing=south,occupied=true,part=foot]": "minecraft:red_bed[facing=south,occupied=false,part=foot]", + "minecraft:purple_bed[facing=south,occupied=false,part=head]": "minecraft:red_bed[facing=south,occupied=false,part=head]", + "minecraft:purple_bed[facing=south,occupied=false,part=foot]": "minecraft:red_bed[facing=south,occupied=false,part=foot]", + "minecraft:purple_bed[facing=west,occupied=true,part=head]": "minecraft:red_bed[facing=west,occupied=false,part=head]", + "minecraft:purple_bed[facing=west,occupied=true,part=foot]": "minecraft:red_bed[facing=west,occupied=false,part=foot]", + "minecraft:purple_bed[facing=west,occupied=false,part=head]": "minecraft:red_bed[facing=west,occupied=false,part=head]", + "minecraft:purple_bed[facing=west,occupied=false,part=foot]": "minecraft:red_bed[facing=west,occupied=false,part=foot]", + "minecraft:purple_bed[facing=east,occupied=true,part=head]": "minecraft:red_bed[facing=east,occupied=false,part=head]", + "minecraft:purple_bed[facing=east,occupied=true,part=foot]": "minecraft:red_bed[facing=east,occupied=false,part=foot]", + "minecraft:purple_bed[facing=east,occupied=false,part=head]": "minecraft:red_bed[facing=east,occupied=false,part=head]", + "minecraft:purple_bed[facing=east,occupied=false,part=foot]": "minecraft:red_bed[facing=east,occupied=false,part=foot]", + "minecraft:blue_bed[facing=north,occupied=true,part=head]": "minecraft:red_bed[facing=north,occupied=false,part=head]", + "minecraft:blue_bed[facing=north,occupied=true,part=foot]": "minecraft:red_bed[facing=north,occupied=false,part=foot]", + "minecraft:blue_bed[facing=north,occupied=false,part=head]": "minecraft:red_bed[facing=north,occupied=false,part=head]", + "minecraft:blue_bed[facing=north,occupied=false,part=foot]": "minecraft:red_bed[facing=north,occupied=false,part=foot]", + "minecraft:blue_bed[facing=south,occupied=true,part=head]": "minecraft:red_bed[facing=south,occupied=false,part=head]", + "minecraft:blue_bed[facing=south,occupied=true,part=foot]": "minecraft:red_bed[facing=south,occupied=false,part=foot]", + "minecraft:blue_bed[facing=south,occupied=false,part=head]": "minecraft:red_bed[facing=south,occupied=false,part=head]", + "minecraft:blue_bed[facing=south,occupied=false,part=foot]": "minecraft:red_bed[facing=south,occupied=false,part=foot]", + "minecraft:blue_bed[facing=west,occupied=true,part=head]": "minecraft:red_bed[facing=west,occupied=false,part=head]", + "minecraft:blue_bed[facing=west,occupied=true,part=foot]": "minecraft:red_bed[facing=west,occupied=false,part=foot]", + "minecraft:blue_bed[facing=west,occupied=false,part=head]": "minecraft:red_bed[facing=west,occupied=false,part=head]", + "minecraft:blue_bed[facing=west,occupied=false,part=foot]": "minecraft:red_bed[facing=west,occupied=false,part=foot]", + "minecraft:blue_bed[facing=east,occupied=true,part=head]": "minecraft:red_bed[facing=east,occupied=false,part=head]", + "minecraft:blue_bed[facing=east,occupied=true,part=foot]": "minecraft:red_bed[facing=east,occupied=false,part=foot]", + "minecraft:blue_bed[facing=east,occupied=false,part=head]": "minecraft:red_bed[facing=east,occupied=false,part=head]", + "minecraft:blue_bed[facing=east,occupied=false,part=foot]": "minecraft:red_bed[facing=east,occupied=false,part=foot]", + "minecraft:brown_bed[facing=north,occupied=true,part=head]": "minecraft:red_bed[facing=north,occupied=false,part=head]", + "minecraft:brown_bed[facing=north,occupied=true,part=foot]": "minecraft:red_bed[facing=north,occupied=false,part=foot]", + "minecraft:brown_bed[facing=north,occupied=false,part=head]": "minecraft:red_bed[facing=north,occupied=false,part=head]", + "minecraft:brown_bed[facing=north,occupied=false,part=foot]": "minecraft:red_bed[facing=north,occupied=false,part=foot]", + "minecraft:brown_bed[facing=south,occupied=true,part=head]": "minecraft:red_bed[facing=south,occupied=false,part=head]", + "minecraft:brown_bed[facing=south,occupied=true,part=foot]": "minecraft:red_bed[facing=south,occupied=false,part=foot]", + "minecraft:brown_bed[facing=south,occupied=false,part=head]": "minecraft:red_bed[facing=south,occupied=false,part=head]", + "minecraft:brown_bed[facing=south,occupied=false,part=foot]": "minecraft:red_bed[facing=south,occupied=false,part=foot]", + "minecraft:brown_bed[facing=west,occupied=true,part=head]": "minecraft:red_bed[facing=west,occupied=false,part=head]", + "minecraft:brown_bed[facing=west,occupied=true,part=foot]": "minecraft:red_bed[facing=west,occupied=false,part=foot]", + "minecraft:brown_bed[facing=west,occupied=false,part=head]": "minecraft:red_bed[facing=west,occupied=false,part=head]", + "minecraft:brown_bed[facing=west,occupied=false,part=foot]": "minecraft:red_bed[facing=west,occupied=false,part=foot]", + "minecraft:brown_bed[facing=east,occupied=true,part=head]": "minecraft:red_bed[facing=east,occupied=false,part=head]", + "minecraft:brown_bed[facing=east,occupied=true,part=foot]": "minecraft:red_bed[facing=east,occupied=false,part=foot]", + "minecraft:brown_bed[facing=east,occupied=false,part=head]": "minecraft:red_bed[facing=east,occupied=false,part=head]", + "minecraft:brown_bed[facing=east,occupied=false,part=foot]": "minecraft:red_bed[facing=east,occupied=false,part=foot]", + "minecraft:green_bed[facing=north,occupied=true,part=head]": "minecraft:red_bed[facing=north,occupied=false,part=head]", + "minecraft:green_bed[facing=north,occupied=true,part=foot]": "minecraft:red_bed[facing=north,occupied=false,part=foot]", + "minecraft:green_bed[facing=north,occupied=false,part=head]": "minecraft:red_bed[facing=north,occupied=false,part=head]", + "minecraft:green_bed[facing=north,occupied=false,part=foot]": "minecraft:red_bed[facing=north,occupied=false,part=foot]", + "minecraft:green_bed[facing=south,occupied=true,part=head]": "minecraft:red_bed[facing=south,occupied=false,part=head]", + "minecraft:green_bed[facing=south,occupied=true,part=foot]": "minecraft:red_bed[facing=south,occupied=false,part=foot]", + "minecraft:green_bed[facing=south,occupied=false,part=head]": "minecraft:red_bed[facing=south,occupied=false,part=head]", + "minecraft:green_bed[facing=south,occupied=false,part=foot]": "minecraft:red_bed[facing=south,occupied=false,part=foot]", + "minecraft:green_bed[facing=west,occupied=true,part=head]": "minecraft:red_bed[facing=west,occupied=false,part=head]", + "minecraft:green_bed[facing=west,occupied=true,part=foot]": "minecraft:red_bed[facing=west,occupied=false,part=foot]", + "minecraft:green_bed[facing=west,occupied=false,part=head]": "minecraft:red_bed[facing=west,occupied=false,part=head]", + "minecraft:green_bed[facing=west,occupied=false,part=foot]": "minecraft:red_bed[facing=west,occupied=false,part=foot]", + "minecraft:green_bed[facing=east,occupied=true,part=head]": "minecraft:red_bed[facing=east,occupied=false,part=head]", + "minecraft:green_bed[facing=east,occupied=true,part=foot]": "minecraft:red_bed[facing=east,occupied=false,part=foot]", + "minecraft:green_bed[facing=east,occupied=false,part=head]": "minecraft:red_bed[facing=east,occupied=false,part=head]", + "minecraft:green_bed[facing=east,occupied=false,part=foot]": "minecraft:red_bed[facing=east,occupied=false,part=foot]", + "minecraft:red_bed[facing=north,occupied=true,part=head]": "minecraft:red_bed[facing=north,occupied=false,part=head]", + "minecraft:red_bed[facing=north,occupied=true,part=foot]": "minecraft:red_bed[facing=north,occupied=false,part=foot]", + "minecraft:red_bed[facing=south,occupied=true,part=head]": "minecraft:red_bed[facing=south,occupied=false,part=head]", + "minecraft:red_bed[facing=south,occupied=true,part=foot]": "minecraft:red_bed[facing=south,occupied=false,part=foot]", + "minecraft:red_bed[facing=west,occupied=true,part=head]": "minecraft:red_bed[facing=west,occupied=false,part=head]", + "minecraft:red_bed[facing=west,occupied=true,part=foot]": "minecraft:red_bed[facing=west,occupied=false,part=foot]", + "minecraft:red_bed[facing=east,occupied=true,part=head]": "minecraft:red_bed[facing=east,occupied=false,part=head]", + "minecraft:red_bed[facing=east,occupied=true,part=foot]": "minecraft:red_bed[facing=east,occupied=false,part=foot]", + "minecraft:black_bed[facing=north,occupied=true,part=head]": "minecraft:red_bed[facing=north,occupied=false,part=head]", + "minecraft:black_bed[facing=north,occupied=true,part=foot]": "minecraft:red_bed[facing=north,occupied=false,part=foot]", + "minecraft:black_bed[facing=north,occupied=false,part=head]": "minecraft:red_bed[facing=north,occupied=false,part=head]", + "minecraft:black_bed[facing=north,occupied=false,part=foot]": "minecraft:red_bed[facing=north,occupied=false,part=foot]", + "minecraft:black_bed[facing=south,occupied=true,part=head]": "minecraft:red_bed[facing=south,occupied=false,part=head]", + "minecraft:black_bed[facing=south,occupied=true,part=foot]": "minecraft:red_bed[facing=south,occupied=false,part=foot]", + "minecraft:black_bed[facing=south,occupied=false,part=head]": "minecraft:red_bed[facing=south,occupied=false,part=head]", + "minecraft:black_bed[facing=south,occupied=false,part=foot]": "minecraft:red_bed[facing=south,occupied=false,part=foot]", + "minecraft:black_bed[facing=west,occupied=true,part=head]": "minecraft:red_bed[facing=west,occupied=false,part=head]", + "minecraft:black_bed[facing=west,occupied=true,part=foot]": "minecraft:red_bed[facing=west,occupied=false,part=foot]", + "minecraft:black_bed[facing=west,occupied=false,part=head]": "minecraft:red_bed[facing=west,occupied=false,part=head]", + "minecraft:black_bed[facing=west,occupied=false,part=foot]": "minecraft:red_bed[facing=west,occupied=false,part=foot]", + "minecraft:black_bed[facing=east,occupied=true,part=head]": "minecraft:red_bed[facing=east,occupied=false,part=head]", + "minecraft:black_bed[facing=east,occupied=true,part=foot]": "minecraft:red_bed[facing=east,occupied=false,part=foot]", + "minecraft:black_bed[facing=east,occupied=false,part=head]": "minecraft:red_bed[facing=east,occupied=false,part=head]", + "minecraft:black_bed[facing=east,occupied=false,part=foot]": "minecraft:red_bed[facing=east,occupied=false,part=foot]", + "minecraft:seagrass": "minecraft:grass", + "minecraft:tall_seagrass[half=upper]": "id:2809", //2809 / 175:9 is the upper half of every flower in 1.12.2, the lower half determines the type + "minecraft:tall_seagrass[half=lower]": "minecraft:tall_grass[half=lower]", + "minecraft:sunflower[half=upper]": "id:2809", + "minecraft:lilac[half=upper]": "id:2809", + "minecraft:rose_bush[half=upper]": "id:2809", + "minecraft:tall_grass[half=upper]": "id:2809", + "minecraft:large_fern[half=upper]": "id:2809", + "minecraft:kelp": "minecraft:large_fern[half=lower]", + "minecraft:kelp_plant": "minecraft:sunflower[half=lower]", + "minecraft:piston_head[facing=north,short=true,type=normal]": "minecraft:piston_head[facing=north,short=false,type=normal]", + "minecraft:piston_head[facing=north,short=true,type=sticky]": "minecraft:piston_head[facing=north,short=false,type=sticky]", + "minecraft:piston_head[facing=east,short=true,type=normal]": "minecraft:piston_head[facing=east,short=false,type=normal]", + "minecraft:piston_head[facing=east,short=true,type=sticky]": "minecraft:piston_head[facing=east,short=false,type=sticky]", + "minecraft:piston_head[facing=south,short=true,type=normal]": "minecraft:piston_head[facing=south,short=false,type=normal]", + "minecraft:piston_head[facing=south,short=true,type=sticky]": "minecraft:piston_head[facing=south,short=false,type=sticky]", + "minecraft:piston_head[facing=west,short=true,type=normal]": "minecraft:piston_head[facing=west,short=false,type=normal]", + "minecraft:piston_head[facing=west,short=true,type=sticky]": "minecraft:piston_head[facing=west,short=false,type=sticky]", + "minecraft:piston_head[facing=up,short=true,type=normal]": "minecraft:piston_head[facing=up,short=false,type=normal]", + "minecraft:piston_head[facing=up,short=true,type=sticky]": "minecraft:piston_head[facing=up,short=false,type=sticky]", + "minecraft:piston_head[facing=down,short=true,type=normal]": "minecraft:piston_head[facing=down,short=false,type=normal]", + "minecraft:piston_head[facing=down,short=true,type=sticky]": "minecraft:piston_head[facing=down,short=false,type=sticky]", + "minecraft:fire[age=0,east=true,north=true,south=true,up=true,west=true]": "minecraft:fire[age=0,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=0,east=true,north=true,south=true,up=true,west=false]": "minecraft:fire[age=0,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=0,east=true,north=true,south=true,up=false,west=true]": "minecraft:fire[age=0,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=0,east=true,north=true,south=true,up=false,west=false]": "minecraft:fire[age=0,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=0,east=true,north=true,south=false,up=true,west=true]": "minecraft:fire[age=0,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=0,east=true,north=true,south=false,up=true,west=false]": "minecraft:fire[age=0,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=0,east=true,north=true,south=false,up=false,west=true]": "minecraft:fire[age=0,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=0,east=true,north=true,south=false,up=false,west=false]": "minecraft:fire[age=0,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=0,east=true,north=false,south=true,up=true,west=true]": "minecraft:fire[age=0,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=0,east=true,north=false,south=true,up=true,west=false]": "minecraft:fire[age=0,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=0,east=true,north=false,south=true,up=false,west=true]": "minecraft:fire[age=0,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=0,east=true,north=false,south=true,up=false,west=false]": "minecraft:fire[age=0,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=0,east=true,north=false,south=false,up=true,west=true]": "minecraft:fire[age=0,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=0,east=true,north=false,south=false,up=true,west=false]": "minecraft:fire[age=0,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=0,east=true,north=false,south=false,up=false,west=true]": "minecraft:fire[age=0,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=0,east=true,north=false,south=false,up=false,west=false]": "minecraft:fire[age=0,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=0,east=false,north=true,south=true,up=true,west=true]": "minecraft:fire[age=0,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=0,east=false,north=true,south=true,up=true,west=false]": "minecraft:fire[age=0,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=0,east=false,north=true,south=true,up=false,west=true]": "minecraft:fire[age=0,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=0,east=false,north=true,south=true,up=false,west=false]": "minecraft:fire[age=0,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=0,east=false,north=true,south=false,up=true,west=true]": "minecraft:fire[age=0,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=0,east=false,north=true,south=false,up=true,west=false]": "minecraft:fire[age=0,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=0,east=false,north=true,south=false,up=false,west=true]": "minecraft:fire[age=0,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=0,east=false,north=true,south=false,up=false,west=false]": "minecraft:fire[age=0,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=0,east=false,north=false,south=true,up=true,west=true]": "minecraft:fire[age=0,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=0,east=false,north=false,south=true,up=true,west=false]": "minecraft:fire[age=0,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=0,east=false,north=false,south=true,up=false,west=true]": "minecraft:fire[age=0,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=0,east=false,north=false,south=true,up=false,west=false]": "minecraft:fire[age=0,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=0,east=false,north=false,south=false,up=true,west=true]": "minecraft:fire[age=0,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=0,east=false,north=false,south=false,up=true,west=false]": "minecraft:fire[age=0,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=0,east=false,north=false,south=false,up=false,west=true]": "minecraft:fire[age=0,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=1,east=true,north=true,south=true,up=true,west=true]": "minecraft:fire[age=1,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=1,east=true,north=true,south=true,up=true,west=false]": "minecraft:fire[age=1,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=1,east=true,north=true,south=true,up=false,west=true]": "minecraft:fire[age=1,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=1,east=true,north=true,south=true,up=false,west=false]": "minecraft:fire[age=1,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=1,east=true,north=true,south=false,up=true,west=true]": "minecraft:fire[age=1,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=1,east=true,north=true,south=false,up=true,west=false]": "minecraft:fire[age=1,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=1,east=true,north=true,south=false,up=false,west=true]": "minecraft:fire[age=1,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=1,east=true,north=true,south=false,up=false,west=false]": "minecraft:fire[age=1,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=1,east=true,north=false,south=true,up=true,west=true]": "minecraft:fire[age=1,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=1,east=true,north=false,south=true,up=true,west=false]": "minecraft:fire[age=1,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=1,east=true,north=false,south=true,up=false,west=true]": "minecraft:fire[age=1,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=1,east=true,north=false,south=true,up=false,west=false]": "minecraft:fire[age=1,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=1,east=true,north=false,south=false,up=true,west=true]": "minecraft:fire[age=1,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=1,east=true,north=false,south=false,up=true,west=false]": "minecraft:fire[age=1,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=1,east=true,north=false,south=false,up=false,west=true]": "minecraft:fire[age=1,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=1,east=true,north=false,south=false,up=false,west=false]": "minecraft:fire[age=1,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=1,east=false,north=true,south=true,up=true,west=true]": "minecraft:fire[age=1,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=1,east=false,north=true,south=true,up=true,west=false]": "minecraft:fire[age=1,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=1,east=false,north=true,south=true,up=false,west=true]": "minecraft:fire[age=1,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=1,east=false,north=true,south=true,up=false,west=false]": "minecraft:fire[age=1,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=1,east=false,north=true,south=false,up=true,west=true]": "minecraft:fire[age=1,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=1,east=false,north=true,south=false,up=true,west=false]": "minecraft:fire[age=1,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=1,east=false,north=true,south=false,up=false,west=true]": "minecraft:fire[age=1,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=1,east=false,north=true,south=false,up=false,west=false]": "minecraft:fire[age=1,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=1,east=false,north=false,south=true,up=true,west=true]": "minecraft:fire[age=1,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=1,east=false,north=false,south=true,up=true,west=false]": "minecraft:fire[age=1,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=1,east=false,north=false,south=true,up=false,west=true]": "minecraft:fire[age=1,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=1,east=false,north=false,south=true,up=false,west=false]": "minecraft:fire[age=1,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=1,east=false,north=false,south=false,up=true,west=true]": "minecraft:fire[age=1,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=1,east=false,north=false,south=false,up=true,west=false]": "minecraft:fire[age=1,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=1,east=false,north=false,south=false,up=false,west=true]": "minecraft:fire[age=1,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=2,east=true,north=true,south=true,up=true,west=true]": "minecraft:fire[age=2,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=2,east=true,north=true,south=true,up=true,west=false]": "minecraft:fire[age=2,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=2,east=true,north=true,south=true,up=false,west=true]": "minecraft:fire[age=2,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=2,east=true,north=true,south=true,up=false,west=false]": "minecraft:fire[age=2,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=2,east=true,north=true,south=false,up=true,west=true]": "minecraft:fire[age=2,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=2,east=true,north=true,south=false,up=true,west=false]": "minecraft:fire[age=2,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=2,east=true,north=true,south=false,up=false,west=true]": "minecraft:fire[age=2,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=2,east=true,north=true,south=false,up=false,west=false]": "minecraft:fire[age=2,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=2,east=true,north=false,south=true,up=true,west=true]": "minecraft:fire[age=2,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=2,east=true,north=false,south=true,up=true,west=false]": "minecraft:fire[age=2,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=2,east=true,north=false,south=true,up=false,west=true]": "minecraft:fire[age=2,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=2,east=true,north=false,south=true,up=false,west=false]": "minecraft:fire[age=2,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=2,east=true,north=false,south=false,up=true,west=true]": "minecraft:fire[age=2,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=2,east=true,north=false,south=false,up=true,west=false]": "minecraft:fire[age=2,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=2,east=true,north=false,south=false,up=false,west=true]": "minecraft:fire[age=2,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=2,east=true,north=false,south=false,up=false,west=false]": "minecraft:fire[age=2,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=2,east=false,north=true,south=true,up=true,west=true]": "minecraft:fire[age=2,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=2,east=false,north=true,south=true,up=true,west=false]": "minecraft:fire[age=2,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=2,east=false,north=true,south=true,up=false,west=true]": "minecraft:fire[age=2,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=2,east=false,north=true,south=true,up=false,west=false]": "minecraft:fire[age=2,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=2,east=false,north=true,south=false,up=true,west=true]": "minecraft:fire[age=2,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=2,east=false,north=true,south=false,up=true,west=false]": "minecraft:fire[age=2,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=2,east=false,north=true,south=false,up=false,west=true]": "minecraft:fire[age=2,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=2,east=false,north=true,south=false,up=false,west=false]": "minecraft:fire[age=2,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=2,east=false,north=false,south=true,up=true,west=true]": "minecraft:fire[age=2,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=2,east=false,north=false,south=true,up=true,west=false]": "minecraft:fire[age=2,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=2,east=false,north=false,south=true,up=false,west=true]": "minecraft:fire[age=2,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=2,east=false,north=false,south=true,up=false,west=false]": "minecraft:fire[age=2,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=2,east=false,north=false,south=false,up=true,west=true]": "minecraft:fire[age=2,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=2,east=false,north=false,south=false,up=true,west=false]": "minecraft:fire[age=2,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=2,east=false,north=false,south=false,up=false,west=true]": "minecraft:fire[age=2,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=3,east=true,north=true,south=true,up=true,west=true]": "minecraft:fire[age=3,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=3,east=true,north=true,south=true,up=true,west=false]": "minecraft:fire[age=3,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=3,east=true,north=true,south=true,up=false,west=true]": "minecraft:fire[age=3,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=3,east=true,north=true,south=true,up=false,west=false]": "minecraft:fire[age=3,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=3,east=true,north=true,south=false,up=true,west=true]": "minecraft:fire[age=3,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=3,east=true,north=true,south=false,up=true,west=false]": "minecraft:fire[age=3,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=3,east=true,north=true,south=false,up=false,west=true]": "minecraft:fire[age=3,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=3,east=true,north=true,south=false,up=false,west=false]": "minecraft:fire[age=3,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=3,east=true,north=false,south=true,up=true,west=true]": "minecraft:fire[age=3,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=3,east=true,north=false,south=true,up=true,west=false]": "minecraft:fire[age=3,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=3,east=true,north=false,south=true,up=false,west=true]": "minecraft:fire[age=3,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=3,east=true,north=false,south=true,up=false,west=false]": "minecraft:fire[age=3,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=3,east=true,north=false,south=false,up=true,west=true]": "minecraft:fire[age=3,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=3,east=true,north=false,south=false,up=true,west=false]": "minecraft:fire[age=3,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=3,east=true,north=false,south=false,up=false,west=true]": "minecraft:fire[age=3,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=3,east=true,north=false,south=false,up=false,west=false]": "minecraft:fire[age=3,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=3,east=false,north=true,south=true,up=true,west=true]": "minecraft:fire[age=3,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=3,east=false,north=true,south=true,up=true,west=false]": "minecraft:fire[age=3,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=3,east=false,north=true,south=true,up=false,west=true]": "minecraft:fire[age=3,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=3,east=false,north=true,south=true,up=false,west=false]": "minecraft:fire[age=3,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=3,east=false,north=true,south=false,up=true,west=true]": "minecraft:fire[age=3,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=3,east=false,north=true,south=false,up=true,west=false]": "minecraft:fire[age=3,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=3,east=false,north=true,south=false,up=false,west=true]": "minecraft:fire[age=3,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=3,east=false,north=true,south=false,up=false,west=false]": "minecraft:fire[age=3,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=3,east=false,north=false,south=true,up=true,west=true]": "minecraft:fire[age=3,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=3,east=false,north=false,south=true,up=true,west=false]": "minecraft:fire[age=3,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=3,east=false,north=false,south=true,up=false,west=true]": "minecraft:fire[age=3,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=3,east=false,north=false,south=true,up=false,west=false]": "minecraft:fire[age=3,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=3,east=false,north=false,south=false,up=true,west=true]": "minecraft:fire[age=3,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=3,east=false,north=false,south=false,up=true,west=false]": "minecraft:fire[age=3,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=3,east=false,north=false,south=false,up=false,west=true]": "minecraft:fire[age=3,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=4,east=true,north=true,south=true,up=true,west=true]": "minecraft:fire[age=4,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=4,east=true,north=true,south=true,up=true,west=false]": "minecraft:fire[age=4,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=4,east=true,north=true,south=true,up=false,west=true]": "minecraft:fire[age=4,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=4,east=true,north=true,south=true,up=false,west=false]": "minecraft:fire[age=4,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=4,east=true,north=true,south=false,up=true,west=true]": "minecraft:fire[age=4,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=4,east=true,north=true,south=false,up=true,west=false]": "minecraft:fire[age=4,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=4,east=true,north=true,south=false,up=false,west=true]": "minecraft:fire[age=4,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=4,east=true,north=true,south=false,up=false,west=false]": "minecraft:fire[age=4,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=4,east=true,north=false,south=true,up=true,west=true]": "minecraft:fire[age=4,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=4,east=true,north=false,south=true,up=true,west=false]": "minecraft:fire[age=4,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=4,east=true,north=false,south=true,up=false,west=true]": "minecraft:fire[age=4,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=4,east=true,north=false,south=true,up=false,west=false]": "minecraft:fire[age=4,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=4,east=true,north=false,south=false,up=true,west=true]": "minecraft:fire[age=4,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=4,east=true,north=false,south=false,up=true,west=false]": "minecraft:fire[age=4,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=4,east=true,north=false,south=false,up=false,west=true]": "minecraft:fire[age=4,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=4,east=true,north=false,south=false,up=false,west=false]": "minecraft:fire[age=4,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=4,east=false,north=true,south=true,up=true,west=true]": "minecraft:fire[age=4,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=4,east=false,north=true,south=true,up=true,west=false]": "minecraft:fire[age=4,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=4,east=false,north=true,south=true,up=false,west=true]": "minecraft:fire[age=4,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=4,east=false,north=true,south=true,up=false,west=false]": "minecraft:fire[age=4,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=4,east=false,north=true,south=false,up=true,west=true]": "minecraft:fire[age=4,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=4,east=false,north=true,south=false,up=true,west=false]": "minecraft:fire[age=4,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=4,east=false,north=true,south=false,up=false,west=true]": "minecraft:fire[age=4,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=4,east=false,north=true,south=false,up=false,west=false]": "minecraft:fire[age=4,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=4,east=false,north=false,south=true,up=true,west=true]": "minecraft:fire[age=4,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=4,east=false,north=false,south=true,up=true,west=false]": "minecraft:fire[age=4,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=4,east=false,north=false,south=true,up=false,west=true]": "minecraft:fire[age=4,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=4,east=false,north=false,south=true,up=false,west=false]": "minecraft:fire[age=4,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=4,east=false,north=false,south=false,up=true,west=true]": "minecraft:fire[age=4,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=4,east=false,north=false,south=false,up=true,west=false]": "minecraft:fire[age=4,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=4,east=false,north=false,south=false,up=false,west=true]": "minecraft:fire[age=4,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=5,east=true,north=true,south=true,up=true,west=true]": "minecraft:fire[age=5,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=5,east=true,north=true,south=true,up=true,west=false]": "minecraft:fire[age=5,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=5,east=true,north=true,south=true,up=false,west=true]": "minecraft:fire[age=5,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=5,east=true,north=true,south=true,up=false,west=false]": "minecraft:fire[age=5,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=5,east=true,north=true,south=false,up=true,west=true]": "minecraft:fire[age=5,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=5,east=true,north=true,south=false,up=true,west=false]": "minecraft:fire[age=5,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=5,east=true,north=true,south=false,up=false,west=true]": "minecraft:fire[age=5,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=5,east=true,north=true,south=false,up=false,west=false]": "minecraft:fire[age=5,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=5,east=true,north=false,south=true,up=true,west=true]": "minecraft:fire[age=5,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=5,east=true,north=false,south=true,up=true,west=false]": "minecraft:fire[age=5,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=5,east=true,north=false,south=true,up=false,west=true]": "minecraft:fire[age=5,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=5,east=true,north=false,south=true,up=false,west=false]": "minecraft:fire[age=5,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=5,east=true,north=false,south=false,up=true,west=true]": "minecraft:fire[age=5,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=5,east=true,north=false,south=false,up=true,west=false]": "minecraft:fire[age=5,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=5,east=true,north=false,south=false,up=false,west=true]": "minecraft:fire[age=5,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=5,east=true,north=false,south=false,up=false,west=false]": "minecraft:fire[age=5,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=5,east=false,north=true,south=true,up=true,west=true]": "minecraft:fire[age=5,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=5,east=false,north=true,south=true,up=true,west=false]": "minecraft:fire[age=5,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=5,east=false,north=true,south=true,up=false,west=true]": "minecraft:fire[age=5,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=5,east=false,north=true,south=true,up=false,west=false]": "minecraft:fire[age=5,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=5,east=false,north=true,south=false,up=true,west=true]": "minecraft:fire[age=5,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=5,east=false,north=true,south=false,up=true,west=false]": "minecraft:fire[age=5,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=5,east=false,north=true,south=false,up=false,west=true]": "minecraft:fire[age=5,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=5,east=false,north=true,south=false,up=false,west=false]": "minecraft:fire[age=5,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=5,east=false,north=false,south=true,up=true,west=true]": "minecraft:fire[age=5,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=5,east=false,north=false,south=true,up=true,west=false]": "minecraft:fire[age=5,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=5,east=false,north=false,south=true,up=false,west=true]": "minecraft:fire[age=5,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=5,east=false,north=false,south=true,up=false,west=false]": "minecraft:fire[age=5,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=5,east=false,north=false,south=false,up=true,west=true]": "minecraft:fire[age=5,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=5,east=false,north=false,south=false,up=true,west=false]": "minecraft:fire[age=5,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=5,east=false,north=false,south=false,up=false,west=true]": "minecraft:fire[age=5,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=6,east=true,north=true,south=true,up=true,west=true]": "minecraft:fire[age=6,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=6,east=true,north=true,south=true,up=true,west=false]": "minecraft:fire[age=6,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=6,east=true,north=true,south=true,up=false,west=true]": "minecraft:fire[age=6,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=6,east=true,north=true,south=true,up=false,west=false]": "minecraft:fire[age=6,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=6,east=true,north=true,south=false,up=true,west=true]": "minecraft:fire[age=6,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=6,east=true,north=true,south=false,up=true,west=false]": "minecraft:fire[age=6,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=6,east=true,north=true,south=false,up=false,west=true]": "minecraft:fire[age=6,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=6,east=true,north=true,south=false,up=false,west=false]": "minecraft:fire[age=6,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=6,east=true,north=false,south=true,up=true,west=true]": "minecraft:fire[age=6,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=6,east=true,north=false,south=true,up=true,west=false]": "minecraft:fire[age=6,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=6,east=true,north=false,south=true,up=false,west=true]": "minecraft:fire[age=6,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=6,east=true,north=false,south=true,up=false,west=false]": "minecraft:fire[age=6,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=6,east=true,north=false,south=false,up=true,west=true]": "minecraft:fire[age=6,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=6,east=true,north=false,south=false,up=true,west=false]": "minecraft:fire[age=6,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=6,east=true,north=false,south=false,up=false,west=true]": "minecraft:fire[age=6,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=6,east=true,north=false,south=false,up=false,west=false]": "minecraft:fire[age=6,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=6,east=false,north=true,south=true,up=true,west=true]": "minecraft:fire[age=6,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=6,east=false,north=true,south=true,up=true,west=false]": "minecraft:fire[age=6,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=6,east=false,north=true,south=true,up=false,west=true]": "minecraft:fire[age=6,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=6,east=false,north=true,south=true,up=false,west=false]": "minecraft:fire[age=6,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=6,east=false,north=true,south=false,up=true,west=true]": "minecraft:fire[age=6,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=6,east=false,north=true,south=false,up=true,west=false]": "minecraft:fire[age=6,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=6,east=false,north=true,south=false,up=false,west=true]": "minecraft:fire[age=6,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=6,east=false,north=true,south=false,up=false,west=false]": "minecraft:fire[age=6,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=6,east=false,north=false,south=true,up=true,west=true]": "minecraft:fire[age=6,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=6,east=false,north=false,south=true,up=true,west=false]": "minecraft:fire[age=6,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=6,east=false,north=false,south=true,up=false,west=true]": "minecraft:fire[age=6,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=6,east=false,north=false,south=true,up=false,west=false]": "minecraft:fire[age=6,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=6,east=false,north=false,south=false,up=true,west=true]": "minecraft:fire[age=6,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=6,east=false,north=false,south=false,up=true,west=false]": "minecraft:fire[age=6,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=6,east=false,north=false,south=false,up=false,west=true]": "minecraft:fire[age=6,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=7,east=true,north=true,south=true,up=true,west=true]": "minecraft:fire[age=7,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=7,east=true,north=true,south=true,up=true,west=false]": "minecraft:fire[age=7,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=7,east=true,north=true,south=true,up=false,west=true]": "minecraft:fire[age=7,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=7,east=true,north=true,south=true,up=false,west=false]": "minecraft:fire[age=7,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=7,east=true,north=true,south=false,up=true,west=true]": "minecraft:fire[age=7,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=7,east=true,north=true,south=false,up=true,west=false]": "minecraft:fire[age=7,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=7,east=true,north=true,south=false,up=false,west=true]": "minecraft:fire[age=7,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=7,east=true,north=true,south=false,up=false,west=false]": "minecraft:fire[age=7,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=7,east=true,north=false,south=true,up=true,west=true]": "minecraft:fire[age=7,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=7,east=true,north=false,south=true,up=true,west=false]": "minecraft:fire[age=7,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=7,east=true,north=false,south=true,up=false,west=true]": "minecraft:fire[age=7,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=7,east=true,north=false,south=true,up=false,west=false]": "minecraft:fire[age=7,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=7,east=true,north=false,south=false,up=true,west=true]": "minecraft:fire[age=7,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=7,east=true,north=false,south=false,up=true,west=false]": "minecraft:fire[age=7,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=7,east=true,north=false,south=false,up=false,west=true]": "minecraft:fire[age=7,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=7,east=true,north=false,south=false,up=false,west=false]": "minecraft:fire[age=7,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=7,east=false,north=true,south=true,up=true,west=true]": "minecraft:fire[age=7,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=7,east=false,north=true,south=true,up=true,west=false]": "minecraft:fire[age=7,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=7,east=false,north=true,south=true,up=false,west=true]": "minecraft:fire[age=7,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=7,east=false,north=true,south=true,up=false,west=false]": "minecraft:fire[age=7,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=7,east=false,north=true,south=false,up=true,west=true]": "minecraft:fire[age=7,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=7,east=false,north=true,south=false,up=true,west=false]": "minecraft:fire[age=7,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=7,east=false,north=true,south=false,up=false,west=true]": "minecraft:fire[age=7,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=7,east=false,north=true,south=false,up=false,west=false]": "minecraft:fire[age=7,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=7,east=false,north=false,south=true,up=true,west=true]": "minecraft:fire[age=7,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=7,east=false,north=false,south=true,up=true,west=false]": "minecraft:fire[age=7,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=7,east=false,north=false,south=true,up=false,west=true]": "minecraft:fire[age=7,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=7,east=false,north=false,south=true,up=false,west=false]": "minecraft:fire[age=7,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=7,east=false,north=false,south=false,up=true,west=true]": "minecraft:fire[age=7,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=7,east=false,north=false,south=false,up=true,west=false]": "minecraft:fire[age=7,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=7,east=false,north=false,south=false,up=false,west=true]": "minecraft:fire[age=7,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=8,east=true,north=true,south=true,up=true,west=true]": "minecraft:fire[age=8,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=8,east=true,north=true,south=true,up=true,west=false]": "minecraft:fire[age=8,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=8,east=true,north=true,south=true,up=false,west=true]": "minecraft:fire[age=8,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=8,east=true,north=true,south=true,up=false,west=false]": "minecraft:fire[age=8,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=8,east=true,north=true,south=false,up=true,west=true]": "minecraft:fire[age=8,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=8,east=true,north=true,south=false,up=true,west=false]": "minecraft:fire[age=8,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=8,east=true,north=true,south=false,up=false,west=true]": "minecraft:fire[age=8,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=8,east=true,north=true,south=false,up=false,west=false]": "minecraft:fire[age=8,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=8,east=true,north=false,south=true,up=true,west=true]": "minecraft:fire[age=8,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=8,east=true,north=false,south=true,up=true,west=false]": "minecraft:fire[age=8,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=8,east=true,north=false,south=true,up=false,west=true]": "minecraft:fire[age=8,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=8,east=true,north=false,south=true,up=false,west=false]": "minecraft:fire[age=8,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=8,east=true,north=false,south=false,up=true,west=true]": "minecraft:fire[age=8,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=8,east=true,north=false,south=false,up=true,west=false]": "minecraft:fire[age=8,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=8,east=true,north=false,south=false,up=false,west=true]": "minecraft:fire[age=8,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=8,east=true,north=false,south=false,up=false,west=false]": "minecraft:fire[age=8,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=8,east=false,north=true,south=true,up=true,west=true]": "minecraft:fire[age=8,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=8,east=false,north=true,south=true,up=true,west=false]": "minecraft:fire[age=8,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=8,east=false,north=true,south=true,up=false,west=true]": "minecraft:fire[age=8,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=8,east=false,north=true,south=true,up=false,west=false]": "minecraft:fire[age=8,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=8,east=false,north=true,south=false,up=true,west=true]": "minecraft:fire[age=8,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=8,east=false,north=true,south=false,up=true,west=false]": "minecraft:fire[age=8,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=8,east=false,north=true,south=false,up=false,west=true]": "minecraft:fire[age=8,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=8,east=false,north=true,south=false,up=false,west=false]": "minecraft:fire[age=8,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=8,east=false,north=false,south=true,up=true,west=true]": "minecraft:fire[age=8,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=8,east=false,north=false,south=true,up=true,west=false]": "minecraft:fire[age=8,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=8,east=false,north=false,south=true,up=false,west=true]": "minecraft:fire[age=8,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=8,east=false,north=false,south=true,up=false,west=false]": "minecraft:fire[age=8,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=8,east=false,north=false,south=false,up=true,west=true]": "minecraft:fire[age=8,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=8,east=false,north=false,south=false,up=true,west=false]": "minecraft:fire[age=8,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=8,east=false,north=false,south=false,up=false,west=true]": "minecraft:fire[age=8,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=9,east=true,north=true,south=true,up=true,west=true]": "minecraft:fire[age=9,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=9,east=true,north=true,south=true,up=true,west=false]": "minecraft:fire[age=9,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=9,east=true,north=true,south=true,up=false,west=true]": "minecraft:fire[age=9,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=9,east=true,north=true,south=true,up=false,west=false]": "minecraft:fire[age=9,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=9,east=true,north=true,south=false,up=true,west=true]": "minecraft:fire[age=9,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=9,east=true,north=true,south=false,up=true,west=false]": "minecraft:fire[age=9,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=9,east=true,north=true,south=false,up=false,west=true]": "minecraft:fire[age=9,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=9,east=true,north=true,south=false,up=false,west=false]": "minecraft:fire[age=9,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=9,east=true,north=false,south=true,up=true,west=true]": "minecraft:fire[age=9,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=9,east=true,north=false,south=true,up=true,west=false]": "minecraft:fire[age=9,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=9,east=true,north=false,south=true,up=false,west=true]": "minecraft:fire[age=9,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=9,east=true,north=false,south=true,up=false,west=false]": "minecraft:fire[age=9,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=9,east=true,north=false,south=false,up=true,west=true]": "minecraft:fire[age=9,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=9,east=true,north=false,south=false,up=true,west=false]": "minecraft:fire[age=9,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=9,east=true,north=false,south=false,up=false,west=true]": "minecraft:fire[age=9,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=9,east=true,north=false,south=false,up=false,west=false]": "minecraft:fire[age=9,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=9,east=false,north=true,south=true,up=true,west=true]": "minecraft:fire[age=9,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=9,east=false,north=true,south=true,up=true,west=false]": "minecraft:fire[age=9,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=9,east=false,north=true,south=true,up=false,west=true]": "minecraft:fire[age=9,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=9,east=false,north=true,south=true,up=false,west=false]": "minecraft:fire[age=9,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=9,east=false,north=true,south=false,up=true,west=true]": "minecraft:fire[age=9,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=9,east=false,north=true,south=false,up=true,west=false]": "minecraft:fire[age=9,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=9,east=false,north=true,south=false,up=false,west=true]": "minecraft:fire[age=9,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=9,east=false,north=true,south=false,up=false,west=false]": "minecraft:fire[age=9,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=9,east=false,north=false,south=true,up=true,west=true]": "minecraft:fire[age=9,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=9,east=false,north=false,south=true,up=true,west=false]": "minecraft:fire[age=9,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=9,east=false,north=false,south=true,up=false,west=true]": "minecraft:fire[age=9,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=9,east=false,north=false,south=true,up=false,west=false]": "minecraft:fire[age=9,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=9,east=false,north=false,south=false,up=true,west=true]": "minecraft:fire[age=9,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=9,east=false,north=false,south=false,up=true,west=false]": "minecraft:fire[age=9,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=9,east=false,north=false,south=false,up=false,west=true]": "minecraft:fire[age=9,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=10,east=true,north=true,south=true,up=true,west=true]": "minecraft:fire[age=10,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=10,east=true,north=true,south=true,up=true,west=false]": "minecraft:fire[age=10,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=10,east=true,north=true,south=true,up=false,west=true]": "minecraft:fire[age=10,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=10,east=true,north=true,south=true,up=false,west=false]": "minecraft:fire[age=10,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=10,east=true,north=true,south=false,up=true,west=true]": "minecraft:fire[age=10,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=10,east=true,north=true,south=false,up=true,west=false]": "minecraft:fire[age=10,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=10,east=true,north=true,south=false,up=false,west=true]": "minecraft:fire[age=10,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=10,east=true,north=true,south=false,up=false,west=false]": "minecraft:fire[age=10,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=10,east=true,north=false,south=true,up=true,west=true]": "minecraft:fire[age=10,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=10,east=true,north=false,south=true,up=true,west=false]": "minecraft:fire[age=10,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=10,east=true,north=false,south=true,up=false,west=true]": "minecraft:fire[age=10,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=10,east=true,north=false,south=true,up=false,west=false]": "minecraft:fire[age=10,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=10,east=true,north=false,south=false,up=true,west=true]": "minecraft:fire[age=10,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=10,east=true,north=false,south=false,up=true,west=false]": "minecraft:fire[age=10,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=10,east=true,north=false,south=false,up=false,west=true]": "minecraft:fire[age=10,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=10,east=true,north=false,south=false,up=false,west=false]": "minecraft:fire[age=10,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=10,east=false,north=true,south=true,up=true,west=true]": "minecraft:fire[age=10,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=10,east=false,north=true,south=true,up=true,west=false]": "minecraft:fire[age=10,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=10,east=false,north=true,south=true,up=false,west=true]": "minecraft:fire[age=10,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=10,east=false,north=true,south=true,up=false,west=false]": "minecraft:fire[age=10,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=10,east=false,north=true,south=false,up=true,west=true]": "minecraft:fire[age=10,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=10,east=false,north=true,south=false,up=true,west=false]": "minecraft:fire[age=10,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=10,east=false,north=true,south=false,up=false,west=true]": "minecraft:fire[age=10,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=10,east=false,north=true,south=false,up=false,west=false]": "minecraft:fire[age=10,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=10,east=false,north=false,south=true,up=true,west=true]": "minecraft:fire[age=10,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=10,east=false,north=false,south=true,up=true,west=false]": "minecraft:fire[age=10,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=10,east=false,north=false,south=true,up=false,west=true]": "minecraft:fire[age=10,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=10,east=false,north=false,south=true,up=false,west=false]": "minecraft:fire[age=10,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=10,east=false,north=false,south=false,up=true,west=true]": "minecraft:fire[age=10,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=10,east=false,north=false,south=false,up=true,west=false]": "minecraft:fire[age=10,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=10,east=false,north=false,south=false,up=false,west=true]": "minecraft:fire[age=10,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=11,east=true,north=true,south=true,up=true,west=true]": "minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=11,east=true,north=true,south=true,up=true,west=false]": "minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=11,east=true,north=true,south=true,up=false,west=true]": "minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=11,east=true,north=true,south=true,up=false,west=false]": "minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=11,east=true,north=true,south=false,up=true,west=true]": "minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=11,east=true,north=true,south=false,up=true,west=false]": "minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=11,east=true,north=true,south=false,up=false,west=true]": "minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=11,east=true,north=true,south=false,up=false,west=false]": "minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=11,east=true,north=false,south=true,up=true,west=true]": "minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=11,east=true,north=false,south=true,up=true,west=false]": "minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=11,east=true,north=false,south=true,up=false,west=true]": "minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=11,east=true,north=false,south=true,up=false,west=false]": "minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=11,east=true,north=false,south=false,up=true,west=true]": "minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=11,east=true,north=false,south=false,up=true,west=false]": "minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=11,east=true,north=false,south=false,up=false,west=true]": "minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=11,east=true,north=false,south=false,up=false,west=false]": "minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=11,east=false,north=true,south=true,up=true,west=true]": "minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=11,east=false,north=true,south=true,up=true,west=false]": "minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=11,east=false,north=true,south=true,up=false,west=true]": "minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=11,east=false,north=true,south=true,up=false,west=false]": "minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=11,east=false,north=true,south=false,up=true,west=true]": "minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=11,east=false,north=true,south=false,up=true,west=false]": "minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=11,east=false,north=true,south=false,up=false,west=true]": "minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=11,east=false,north=true,south=false,up=false,west=false]": "minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=11,east=false,north=false,south=true,up=true,west=true]": "minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=11,east=false,north=false,south=true,up=true,west=false]": "minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=11,east=false,north=false,south=true,up=false,west=true]": "minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=11,east=false,north=false,south=true,up=false,west=false]": "minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=11,east=false,north=false,south=false,up=true,west=true]": "minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=11,east=false,north=false,south=false,up=true,west=false]": "minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=true]": "minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=12,east=true,north=true,south=true,up=true,west=true]": "minecraft:fire[age=12,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=12,east=true,north=true,south=true,up=true,west=false]": "minecraft:fire[age=12,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=12,east=true,north=true,south=true,up=false,west=true]": "minecraft:fire[age=12,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=12,east=true,north=true,south=true,up=false,west=false]": "minecraft:fire[age=12,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=12,east=true,north=true,south=false,up=true,west=true]": "minecraft:fire[age=12,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=12,east=true,north=true,south=false,up=true,west=false]": "minecraft:fire[age=12,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=12,east=true,north=true,south=false,up=false,west=true]": "minecraft:fire[age=12,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=12,east=true,north=true,south=false,up=false,west=false]": "minecraft:fire[age=12,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=12,east=true,north=false,south=true,up=true,west=true]": "minecraft:fire[age=12,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=12,east=true,north=false,south=true,up=true,west=false]": "minecraft:fire[age=12,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=12,east=true,north=false,south=true,up=false,west=true]": "minecraft:fire[age=12,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=12,east=true,north=false,south=true,up=false,west=false]": "minecraft:fire[age=12,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=12,east=true,north=false,south=false,up=true,west=true]": "minecraft:fire[age=12,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=12,east=true,north=false,south=false,up=true,west=false]": "minecraft:fire[age=12,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=12,east=true,north=false,south=false,up=false,west=true]": "minecraft:fire[age=12,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=12,east=true,north=false,south=false,up=false,west=false]": "minecraft:fire[age=12,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=12,east=false,north=true,south=true,up=true,west=true]": "minecraft:fire[age=12,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=12,east=false,north=true,south=true,up=true,west=false]": "minecraft:fire[age=12,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=12,east=false,north=true,south=true,up=false,west=true]": "minecraft:fire[age=12,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=12,east=false,north=true,south=true,up=false,west=false]": "minecraft:fire[age=12,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=12,east=false,north=true,south=false,up=true,west=true]": "minecraft:fire[age=12,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=12,east=false,north=true,south=false,up=true,west=false]": "minecraft:fire[age=12,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=12,east=false,north=true,south=false,up=false,west=true]": "minecraft:fire[age=12,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=12,east=false,north=true,south=false,up=false,west=false]": "minecraft:fire[age=12,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=12,east=false,north=false,south=true,up=true,west=true]": "minecraft:fire[age=12,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=12,east=false,north=false,south=true,up=true,west=false]": "minecraft:fire[age=12,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=12,east=false,north=false,south=true,up=false,west=true]": "minecraft:fire[age=12,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=12,east=false,north=false,south=true,up=false,west=false]": "minecraft:fire[age=12,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=12,east=false,north=false,south=false,up=true,west=true]": "minecraft:fire[age=12,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=12,east=false,north=false,south=false,up=true,west=false]": "minecraft:fire[age=12,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=12,east=false,north=false,south=false,up=false,west=true]": "minecraft:fire[age=12,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=13,east=true,north=true,south=true,up=true,west=true]": "minecraft:fire[age=13,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=13,east=true,north=true,south=true,up=true,west=false]": "minecraft:fire[age=13,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=13,east=true,north=true,south=true,up=false,west=true]": "minecraft:fire[age=13,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=13,east=true,north=true,south=true,up=false,west=false]": "minecraft:fire[age=13,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=13,east=true,north=true,south=false,up=true,west=true]": "minecraft:fire[age=13,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=13,east=true,north=true,south=false,up=true,west=false]": "minecraft:fire[age=13,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=13,east=true,north=true,south=false,up=false,west=true]": "minecraft:fire[age=13,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=13,east=true,north=true,south=false,up=false,west=false]": "minecraft:fire[age=13,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=13,east=true,north=false,south=true,up=true,west=true]": "minecraft:fire[age=13,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=13,east=true,north=false,south=true,up=true,west=false]": "minecraft:fire[age=13,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=13,east=true,north=false,south=true,up=false,west=true]": "minecraft:fire[age=13,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=13,east=true,north=false,south=true,up=false,west=false]": "minecraft:fire[age=13,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=13,east=true,north=false,south=false,up=true,west=true]": "minecraft:fire[age=13,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=13,east=true,north=false,south=false,up=true,west=false]": "minecraft:fire[age=13,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=13,east=true,north=false,south=false,up=false,west=true]": "minecraft:fire[age=13,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=13,east=true,north=false,south=false,up=false,west=false]": "minecraft:fire[age=13,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=13,east=false,north=true,south=true,up=true,west=true]": "minecraft:fire[age=13,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=13,east=false,north=true,south=true,up=true,west=false]": "minecraft:fire[age=13,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=13,east=false,north=true,south=true,up=false,west=true]": "minecraft:fire[age=13,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=13,east=false,north=true,south=true,up=false,west=false]": "minecraft:fire[age=13,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=13,east=false,north=true,south=false,up=true,west=true]": "minecraft:fire[age=13,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=13,east=false,north=true,south=false,up=true,west=false]": "minecraft:fire[age=13,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=13,east=false,north=true,south=false,up=false,west=true]": "minecraft:fire[age=13,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=13,east=false,north=true,south=false,up=false,west=false]": "minecraft:fire[age=13,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=13,east=false,north=false,south=true,up=true,west=true]": "minecraft:fire[age=13,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=13,east=false,north=false,south=true,up=true,west=false]": "minecraft:fire[age=13,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=13,east=false,north=false,south=true,up=false,west=true]": "minecraft:fire[age=13,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=13,east=false,north=false,south=true,up=false,west=false]": "minecraft:fire[age=13,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=13,east=false,north=false,south=false,up=true,west=true]": "minecraft:fire[age=13,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=13,east=false,north=false,south=false,up=true,west=false]": "minecraft:fire[age=13,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=13,east=false,north=false,south=false,up=false,west=true]": "minecraft:fire[age=13,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=14,east=true,north=true,south=true,up=true,west=true]": "minecraft:fire[age=14,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=14,east=true,north=true,south=true,up=true,west=false]": "minecraft:fire[age=14,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=14,east=true,north=true,south=true,up=false,west=true]": "minecraft:fire[age=14,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=14,east=true,north=true,south=true,up=false,west=false]": "minecraft:fire[age=14,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=14,east=true,north=true,south=false,up=true,west=true]": "minecraft:fire[age=14,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=14,east=true,north=true,south=false,up=true,west=false]": "minecraft:fire[age=14,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=14,east=true,north=true,south=false,up=false,west=true]": "minecraft:fire[age=14,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=14,east=true,north=true,south=false,up=false,west=false]": "minecraft:fire[age=14,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=14,east=true,north=false,south=true,up=true,west=true]": "minecraft:fire[age=14,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=14,east=true,north=false,south=true,up=true,west=false]": "minecraft:fire[age=14,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=14,east=true,north=false,south=true,up=false,west=true]": "minecraft:fire[age=14,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=14,east=true,north=false,south=true,up=false,west=false]": "minecraft:fire[age=14,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=14,east=true,north=false,south=false,up=true,west=true]": "minecraft:fire[age=14,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=14,east=true,north=false,south=false,up=true,west=false]": "minecraft:fire[age=14,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=14,east=true,north=false,south=false,up=false,west=true]": "minecraft:fire[age=14,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=14,east=true,north=false,south=false,up=false,west=false]": "minecraft:fire[age=14,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=14,east=false,north=true,south=true,up=true,west=true]": "minecraft:fire[age=14,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=14,east=false,north=true,south=true,up=true,west=false]": "minecraft:fire[age=14,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=14,east=false,north=true,south=true,up=false,west=true]": "minecraft:fire[age=14,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=14,east=false,north=true,south=true,up=false,west=false]": "minecraft:fire[age=14,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=14,east=false,north=true,south=false,up=true,west=true]": "minecraft:fire[age=14,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=14,east=false,north=true,south=false,up=true,west=false]": "minecraft:fire[age=14,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=14,east=false,north=true,south=false,up=false,west=true]": "minecraft:fire[age=14,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=14,east=false,north=true,south=false,up=false,west=false]": "minecraft:fire[age=14,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=14,east=false,north=false,south=true,up=true,west=true]": "minecraft:fire[age=14,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=14,east=false,north=false,south=true,up=true,west=false]": "minecraft:fire[age=14,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=14,east=false,north=false,south=true,up=false,west=true]": "minecraft:fire[age=14,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=14,east=false,north=false,south=true,up=false,west=false]": "minecraft:fire[age=14,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=14,east=false,north=false,south=false,up=true,west=true]": "minecraft:fire[age=14,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=14,east=false,north=false,south=false,up=true,west=false]": "minecraft:fire[age=14,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=14,east=false,north=false,south=false,up=false,west=true]": "minecraft:fire[age=14,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=15,east=true,north=true,south=true,up=true,west=true]": "minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=15,east=true,north=true,south=true,up=true,west=false]": "minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=15,east=true,north=true,south=true,up=false,west=true]": "minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=15,east=true,north=true,south=true,up=false,west=false]": "minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=15,east=true,north=true,south=false,up=true,west=true]": "minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=15,east=true,north=true,south=false,up=true,west=false]": "minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=15,east=true,north=true,south=false,up=false,west=true]": "minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=15,east=true,north=true,south=false,up=false,west=false]": "minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=15,east=true,north=false,south=true,up=true,west=true]": "minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=15,east=true,north=false,south=true,up=true,west=false]": "minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=15,east=true,north=false,south=true,up=false,west=true]": "minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=15,east=true,north=false,south=true,up=false,west=false]": "minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=15,east=true,north=false,south=false,up=true,west=true]": "minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=15,east=true,north=false,south=false,up=true,west=false]": "minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=15,east=true,north=false,south=false,up=false,west=true]": "minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=15,east=true,north=false,south=false,up=false,west=false]": "minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=15,east=false,north=true,south=true,up=true,west=true]": "minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=15,east=false,north=true,south=true,up=true,west=false]": "minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=15,east=false,north=true,south=true,up=false,west=true]": "minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=15,east=false,north=true,south=true,up=false,west=false]": "minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=15,east=false,north=true,south=false,up=true,west=true]": "minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=15,east=false,north=true,south=false,up=true,west=false]": "minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=15,east=false,north=true,south=false,up=false,west=true]": "minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=15,east=false,north=true,south=false,up=false,west=false]": "minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=15,east=false,north=false,south=true,up=true,west=true]": "minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=15,east=false,north=false,south=true,up=true,west=false]": "minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=15,east=false,north=false,south=true,up=false,west=true]": "minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=15,east=false,north=false,south=true,up=false,west=false]": "minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=15,east=false,north=false,south=false,up=true,west=true]": "minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=15,east=false,north=false,south=false,up=true,west=false]": "minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=false]", + "minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=true]": "minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=false]", + "minecraft:oak_stairs[facing=north,half=top,shape=straight,waterlogged=true]": "minecraft:oak_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]": "minecraft:oak_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]": "minecraft:oak_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]": "minecraft:oak_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]": "minecraft:oak_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]": "minecraft:oak_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]": "minecraft:oak_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]": "minecraft:oak_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]": "minecraft:oak_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=south,half=top,shape=straight,waterlogged=true]": "minecraft:oak_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]": "minecraft:oak_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]": "minecraft:oak_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]": "minecraft:oak_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]": "minecraft:oak_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]": "minecraft:oak_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]": "minecraft:oak_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]": "minecraft:oak_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]": "minecraft:oak_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]": "minecraft:oak_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:oak_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:oak_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:oak_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:oak_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:oak_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:oak_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:oak_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:oak_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=west,half=top,shape=straight,waterlogged=true]": "minecraft:oak_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]": "minecraft:oak_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]": "minecraft:oak_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]": "minecraft:oak_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]": "minecraft:oak_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]": "minecraft:oak_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]": "minecraft:oak_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]": "minecraft:oak_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]": "minecraft:oak_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]": "minecraft:oak_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:oak_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:oak_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:oak_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:oak_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:oak_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:oak_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:oak_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:oak_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=east,half=top,shape=straight,waterlogged=true]": "minecraft:oak_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]": "minecraft:oak_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]": "minecraft:oak_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]": "minecraft:oak_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]": "minecraft:oak_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]": "minecraft:oak_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]": "minecraft:oak_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]": "minecraft:oak_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]": "minecraft:oak_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]": "minecraft:oak_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:oak_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:oak_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:oak_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:oak_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:oak_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:oak_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:oak_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:oak_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:oak_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=north,half=top,shape=straight,waterlogged=true]": "minecraft:purpur_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]": "minecraft:purpur_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]": "minecraft:purpur_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]": "minecraft:purpur_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]": "minecraft:purpur_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]": "minecraft:purpur_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]": "minecraft:purpur_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]": "minecraft:purpur_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]": "minecraft:purpur_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]": "minecraft:purpur_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:purpur_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:purpur_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:purpur_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:purpur_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:purpur_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:purpur_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:purpur_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:purpur_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=south,half=top,shape=straight,waterlogged=true]": "minecraft:purpur_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]": "minecraft:purpur_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]": "minecraft:purpur_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]": "minecraft:purpur_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]": "minecraft:purpur_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]": "minecraft:purpur_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]": "minecraft:purpur_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]": "minecraft:purpur_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]": "minecraft:purpur_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]": "minecraft:purpur_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:purpur_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:purpur_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:purpur_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:purpur_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:purpur_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:purpur_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:purpur_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:purpur_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=west,half=top,shape=straight,waterlogged=true]": "minecraft:purpur_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]": "minecraft:purpur_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]": "minecraft:purpur_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]": "minecraft:purpur_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]": "minecraft:purpur_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]": "minecraft:purpur_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]": "minecraft:purpur_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]": "minecraft:purpur_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]": "minecraft:purpur_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]": "minecraft:purpur_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:purpur_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:purpur_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:purpur_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:purpur_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:purpur_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:purpur_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:purpur_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:purpur_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=east,half=top,shape=straight,waterlogged=true]": "minecraft:purpur_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]": "minecraft:purpur_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]": "minecraft:purpur_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]": "minecraft:purpur_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]": "minecraft:purpur_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]": "minecraft:purpur_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]": "minecraft:purpur_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]": "minecraft:purpur_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]": "minecraft:purpur_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]": "minecraft:purpur_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:purpur_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:purpur_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:purpur_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:purpur_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:purpur_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:purpur_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:purpur_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:purpur_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:purpur_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=north,half=top,shape=straight,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]": "minecraft:brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]": "minecraft:brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]": "minecraft:brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]": "minecraft:brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=south,half=top,shape=straight,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]": "minecraft:brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]": "minecraft:brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]": "minecraft:brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]": "minecraft:brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=west,half=top,shape=straight,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]": "minecraft:brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]": "minecraft:brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]": "minecraft:brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]": "minecraft:brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=east,half=top,shape=straight,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]": "minecraft:brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]": "minecraft:brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]": "minecraft:brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]": "minecraft:brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=north,half=top,shape=straight,waterlogged=true]": "minecraft:nether_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]": "minecraft:nether_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]": "minecraft:nether_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]": "minecraft:nether_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]": "minecraft:nether_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]": "minecraft:nether_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]": "minecraft:nether_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]": "minecraft:nether_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]": "minecraft:nether_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]": "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=south,half=top,shape=straight,waterlogged=true]": "minecraft:nether_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]": "minecraft:nether_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]": "minecraft:nether_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]": "minecraft:nether_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]": "minecraft:nether_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]": "minecraft:nether_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]": "minecraft:nether_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]": "minecraft:nether_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]": "minecraft:nether_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]": "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=west,half=top,shape=straight,waterlogged=true]": "minecraft:nether_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]": "minecraft:nether_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]": "minecraft:nether_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]": "minecraft:nether_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]": "minecraft:nether_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]": "minecraft:nether_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]": "minecraft:nether_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]": "minecraft:nether_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]": "minecraft:nether_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]": "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=east,half=top,shape=straight,waterlogged=true]": "minecraft:nether_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]": "minecraft:nether_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]": "minecraft:nether_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]": "minecraft:nether_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]": "minecraft:nether_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]": "minecraft:nether_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]": "minecraft:nether_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]": "minecraft:nether_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]": "minecraft:nether_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]": "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=true]": "minecraft:sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=true]": "minecraft:sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=true]": "minecraft:sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=true]": "minecraft:sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:sandstone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=north,half=top,shape=straight,waterlogged=true]": "minecraft:spruce_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]": "minecraft:spruce_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]": "minecraft:spruce_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]": "minecraft:spruce_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]": "minecraft:spruce_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]": "minecraft:spruce_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]": "minecraft:spruce_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]": "minecraft:spruce_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]": "minecraft:spruce_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]": "minecraft:spruce_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:spruce_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:spruce_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:spruce_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:spruce_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:spruce_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:spruce_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:spruce_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:spruce_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=south,half=top,shape=straight,waterlogged=true]": "minecraft:spruce_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]": "minecraft:spruce_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]": "minecraft:spruce_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]": "minecraft:spruce_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]": "minecraft:spruce_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]": "minecraft:spruce_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]": "minecraft:spruce_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]": "minecraft:spruce_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]": "minecraft:spruce_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]": "minecraft:spruce_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:spruce_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:spruce_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:spruce_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:spruce_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:spruce_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:spruce_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:spruce_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:spruce_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=west,half=top,shape=straight,waterlogged=true]": "minecraft:spruce_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]": "minecraft:spruce_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]": "minecraft:spruce_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]": "minecraft:spruce_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]": "minecraft:spruce_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]": "minecraft:spruce_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]": "minecraft:spruce_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]": "minecraft:spruce_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]": "minecraft:spruce_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]": "minecraft:spruce_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:spruce_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:spruce_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:spruce_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:spruce_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:spruce_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:spruce_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:spruce_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:spruce_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=east,half=top,shape=straight,waterlogged=true]": "minecraft:spruce_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]": "minecraft:spruce_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]": "minecraft:spruce_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]": "minecraft:spruce_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]": "minecraft:spruce_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]": "minecraft:spruce_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]": "minecraft:spruce_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]": "minecraft:spruce_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]": "minecraft:spruce_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]": "minecraft:spruce_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:spruce_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:spruce_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:spruce_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:spruce_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:spruce_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:spruce_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:spruce_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:spruce_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:spruce_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=north,half=top,shape=straight,waterlogged=true]": "minecraft:birch_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]": "minecraft:birch_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]": "minecraft:birch_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]": "minecraft:birch_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]": "minecraft:birch_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]": "minecraft:birch_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]": "minecraft:birch_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]": "minecraft:birch_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]": "minecraft:birch_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]": "minecraft:birch_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:birch_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:birch_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:birch_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:birch_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:birch_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:birch_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:birch_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:birch_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=south,half=top,shape=straight,waterlogged=true]": "minecraft:birch_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]": "minecraft:birch_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]": "minecraft:birch_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]": "minecraft:birch_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]": "minecraft:birch_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]": "minecraft:birch_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]": "minecraft:birch_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]": "minecraft:birch_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]": "minecraft:birch_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]": "minecraft:birch_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:birch_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:birch_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:birch_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:birch_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:birch_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:birch_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:birch_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:birch_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=west,half=top,shape=straight,waterlogged=true]": "minecraft:birch_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]": "minecraft:birch_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]": "minecraft:birch_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]": "minecraft:birch_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]": "minecraft:birch_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]": "minecraft:birch_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]": "minecraft:birch_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]": "minecraft:birch_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]": "minecraft:birch_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]": "minecraft:birch_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:birch_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:birch_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:birch_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:birch_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:birch_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:birch_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:birch_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:birch_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=east,half=top,shape=straight,waterlogged=true]": "minecraft:birch_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]": "minecraft:birch_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]": "minecraft:birch_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]": "minecraft:birch_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]": "minecraft:birch_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]": "minecraft:birch_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]": "minecraft:birch_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]": "minecraft:birch_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]": "minecraft:birch_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]": "minecraft:birch_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:birch_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:birch_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:birch_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:birch_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:birch_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:birch_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:birch_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:birch_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:birch_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=north,half=top,shape=straight,waterlogged=true]": "minecraft:jungle_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]": "minecraft:jungle_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]": "minecraft:jungle_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]": "minecraft:jungle_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]": "minecraft:jungle_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]": "minecraft:jungle_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]": "minecraft:jungle_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]": "minecraft:jungle_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]": "minecraft:jungle_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]": "minecraft:jungle_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:jungle_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:jungle_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:jungle_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:jungle_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:jungle_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:jungle_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:jungle_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:jungle_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=south,half=top,shape=straight,waterlogged=true]": "minecraft:jungle_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]": "minecraft:jungle_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]": "minecraft:jungle_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]": "minecraft:jungle_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]": "minecraft:jungle_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]": "minecraft:jungle_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]": "minecraft:jungle_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]": "minecraft:jungle_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]": "minecraft:jungle_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]": "minecraft:jungle_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:jungle_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:jungle_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:jungle_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:jungle_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:jungle_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:jungle_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:jungle_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:jungle_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=west,half=top,shape=straight,waterlogged=true]": "minecraft:jungle_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]": "minecraft:jungle_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]": "minecraft:jungle_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]": "minecraft:jungle_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]": "minecraft:jungle_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]": "minecraft:jungle_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]": "minecraft:jungle_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]": "minecraft:jungle_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]": "minecraft:jungle_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]": "minecraft:jungle_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:jungle_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:jungle_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:jungle_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:jungle_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:jungle_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:jungle_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:jungle_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:jungle_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=east,half=top,shape=straight,waterlogged=true]": "minecraft:jungle_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]": "minecraft:jungle_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]": "minecraft:jungle_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]": "minecraft:jungle_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]": "minecraft:jungle_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]": "minecraft:jungle_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]": "minecraft:jungle_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]": "minecraft:jungle_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]": "minecraft:jungle_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]": "minecraft:jungle_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:jungle_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:jungle_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:jungle_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:jungle_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:jungle_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:jungle_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:jungle_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:jungle_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:jungle_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=north,half=top,shape=straight,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=south,half=top,shape=straight,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=west,half=top,shape=straight,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=east,half=top,shape=straight,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:quartz_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=north,half=top,shape=straight,waterlogged=true]": "minecraft:acacia_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]": "minecraft:acacia_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]": "minecraft:acacia_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]": "minecraft:acacia_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]": "minecraft:acacia_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]": "minecraft:acacia_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]": "minecraft:acacia_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]": "minecraft:acacia_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]": "minecraft:acacia_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]": "minecraft:acacia_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:acacia_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:acacia_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:acacia_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:acacia_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:acacia_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:acacia_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:acacia_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:acacia_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=south,half=top,shape=straight,waterlogged=true]": "minecraft:acacia_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]": "minecraft:acacia_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]": "minecraft:acacia_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]": "minecraft:acacia_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]": "minecraft:acacia_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]": "minecraft:acacia_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]": "minecraft:acacia_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]": "minecraft:acacia_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]": "minecraft:acacia_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]": "minecraft:acacia_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:acacia_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:acacia_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:acacia_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:acacia_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:acacia_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:acacia_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:acacia_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:acacia_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=west,half=top,shape=straight,waterlogged=true]": "minecraft:acacia_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]": "minecraft:acacia_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]": "minecraft:acacia_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]": "minecraft:acacia_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]": "minecraft:acacia_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]": "minecraft:acacia_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]": "minecraft:acacia_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]": "minecraft:acacia_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]": "minecraft:acacia_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]": "minecraft:acacia_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:acacia_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:acacia_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:acacia_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:acacia_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:acacia_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:acacia_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:acacia_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:acacia_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=east,half=top,shape=straight,waterlogged=true]": "minecraft:acacia_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]": "minecraft:acacia_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]": "minecraft:acacia_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]": "minecraft:acacia_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]": "minecraft:acacia_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]": "minecraft:acacia_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]": "minecraft:acacia_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]": "minecraft:acacia_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]": "minecraft:acacia_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]": "minecraft:acacia_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:acacia_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:acacia_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:acacia_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:acacia_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:acacia_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:acacia_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:acacia_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:acacia_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:acacia_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=north,half=top,shape=straight,waterlogged=true]": "minecraft:dark_oak_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]": "minecraft:dark_oak_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]": "minecraft:dark_oak_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]": "minecraft:dark_oak_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]": "minecraft:dark_oak_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]": "minecraft:dark_oak_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]": "minecraft:dark_oak_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]": "minecraft:dark_oak_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]": "minecraft:dark_oak_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]": "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=south,half=top,shape=straight,waterlogged=true]": "minecraft:dark_oak_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]": "minecraft:dark_oak_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]": "minecraft:dark_oak_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]": "minecraft:dark_oak_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]": "minecraft:dark_oak_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]": "minecraft:dark_oak_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]": "minecraft:dark_oak_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]": "minecraft:dark_oak_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]": "minecraft:dark_oak_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]": "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=west,half=top,shape=straight,waterlogged=true]": "minecraft:dark_oak_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]": "minecraft:dark_oak_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]": "minecraft:dark_oak_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]": "minecraft:dark_oak_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]": "minecraft:dark_oak_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]": "minecraft:dark_oak_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]": "minecraft:dark_oak_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]": "minecraft:dark_oak_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]": "minecraft:dark_oak_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]": "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=east,half=top,shape=straight,waterlogged=true]": "minecraft:dark_oak_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]": "minecraft:dark_oak_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]": "minecraft:dark_oak_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]": "minecraft:dark_oak_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]": "minecraft:dark_oak_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]": "minecraft:dark_oak_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]": "minecraft:dark_oak_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]": "minecraft:dark_oak_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]": "minecraft:dark_oak_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]": "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=north,half=top,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=south,half=top,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=west,half=top,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=east,half=top,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=north,half=top,shape=straight,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]": "minecraft:brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]": "minecraft:brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]": "minecraft:brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]": "minecraft:brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=south,half=top,shape=straight,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]": "minecraft:brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]": "minecraft:brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]": "minecraft:brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]": "minecraft:brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=west,half=top,shape=straight,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]": "minecraft:brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]": "minecraft:brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]": "minecraft:brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]": "minecraft:brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=east,half=top,shape=straight,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]": "minecraft:brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]": "minecraft:brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]": "minecraft:brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]": "minecraft:brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=straight,waterlogged=true]": "stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]": "stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]": "stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]": "stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]": "stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]": "stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]": "stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]": "stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]": "stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]": "stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]": "stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]": "stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]": "stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]": "stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]": "stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]": "stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]": "stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]": "stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=straight,waterlogged=true]": "stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]": "stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]": "stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]": "stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]": "stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]": "stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]": "stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]": "stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]": "stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]": "stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]": "stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]": "stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]": "stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]": "stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]": "stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]": "stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]": "stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]": "stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=straight,waterlogged=true]": "stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]": "stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]": "stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]": "stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]": "stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]": "stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]": "stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]": "stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]": "stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]": "stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]": "stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]": "stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]": "stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]": "stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]": "stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]": "stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]": "stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]": "stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=straight,waterlogged=true]": "stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]": "stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]": "stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]": "stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]": "stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]": "stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]": "stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]": "stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]": "stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]": "stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]": "stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]": "stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]": "stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]": "stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]": "stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]": "stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]": "stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]": "stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:chest[facing=north,type=single,waterlogged=true]": "minecraft:chest[facing=north,type=single,waterlogged=false]", + "minecraft:chest[facing=north,type=left,waterlogged=true]": "minecraft:chest[facing=north,type=single,waterlogged=false]", + "minecraft:chest[facing=north,type=left,waterlogged=false]": "minecraft:chest[facing=north,type=single,waterlogged=false]", + "minecraft:chest[facing=north,type=right,waterlogged=true]": "minecraft:chest[facing=north,type=single,waterlogged=false]", + "minecraft:chest[facing=north,type=right,waterlogged=false]": "minecraft:chest[facing=north,type=single,waterlogged=false]", + "minecraft:chest[facing=south,type=single,waterlogged=true]": "minecraft:chest[facing=south,type=single,waterlogged=false]", + "minecraft:chest[facing=south,type=left,waterlogged=true]": "minecraft:chest[facing=south,type=single,waterlogged=false]", + "minecraft:chest[facing=south,type=left,waterlogged=false]": "minecraft:chest[facing=south,type=single,waterlogged=false]", + "minecraft:chest[facing=south,type=right,waterlogged=true]": "minecraft:chest[facing=south,type=single,waterlogged=false]", + "minecraft:chest[facing=south,type=right,waterlogged=false]": "minecraft:chest[facing=south,type=single,waterlogged=false]", + "minecraft:chest[facing=west,type=single,waterlogged=true]": "minecraft:chest[facing=west,type=single,waterlogged=false]", + "minecraft:chest[facing=west,type=left,waterlogged=true]": "minecraft:chest[facing=west,type=single,waterlogged=false]", + "minecraft:chest[facing=west,type=left,waterlogged=false]": "minecraft:chest[facing=west,type=single,waterlogged=false]", + "minecraft:chest[facing=west,type=right,waterlogged=true]": "minecraft:chest[facing=west,type=single,waterlogged=false]", + "minecraft:chest[facing=west,type=right,waterlogged=false]": "minecraft:chest[facing=west,type=single,waterlogged=false]", + "minecraft:chest[facing=east,type=single,waterlogged=true]": "minecraft:chest[facing=east,type=single,waterlogged=false]", + "minecraft:chest[facing=east,type=left,waterlogged=true]": "minecraft:chest[facing=east,type=single,waterlogged=false]", + "minecraft:chest[facing=east,type=left,waterlogged=false]": "minecraft:chest[facing=east,type=single,waterlogged=false]", + "minecraft:chest[facing=east,type=right,waterlogged=true]": "minecraft:chest[facing=east,type=single,waterlogged=false]", + "minecraft:chest[facing=east,type=right,waterlogged=false]": "minecraft:chest[facing=east,type=single,waterlogged=false]", + "minecraft:trapped_chest[facing=north,type=single,waterlogged=true]": "minecraft:trapped_chest[facing=north,type=single,waterlogged=false]", + "minecraft:trapped_chest[facing=north,type=left,waterlogged=true]": "minecraft:trapped_chest[facing=north,type=single,waterlogged=false]", + "minecraft:trapped_chest[facing=north,type=left,waterlogged=false]": "minecraft:trapped_chest[facing=north,type=single,waterlogged=false]", + "minecraft:trapped_chest[facing=north,type=right,waterlogged=true]": "minecraft:trapped_chest[facing=north,type=single,waterlogged=false]", + "minecraft:trapped_chest[facing=north,type=right,waterlogged=false]": "minecraft:trapped_chest[facing=north,type=single,waterlogged=false]", + "minecraft:trapped_chest[facing=south,type=single,waterlogged=true]": "minecraft:trapped_chest[facing=south,type=single,waterlogged=false]", + "minecraft:trapped_chest[facing=south,type=left,waterlogged=true]": "minecraft:trapped_chest[facing=south,type=single,waterlogged=false]", + "minecraft:trapped_chest[facing=south,type=left,waterlogged=false]": "minecraft:trapped_chest[facing=south,type=single,waterlogged=false]", + "minecraft:trapped_chest[facing=south,type=right,waterlogged=true]": "minecraft:trapped_chest[facing=south,type=single,waterlogged=false]", + "minecraft:trapped_chest[facing=south,type=right,waterlogged=false]": "minecraft:trapped_chest[facing=south,type=single,waterlogged=false]", + "minecraft:trapped_chest[facing=west,type=single,waterlogged=true]": "minecraft:trapped_chest[facing=west,type=single,waterlogged=false]", + "minecraft:trapped_chest[facing=west,type=left,waterlogged=true]": "minecraft:trapped_chest[facing=west,type=single,waterlogged=false]", + "minecraft:trapped_chest[facing=west,type=left,waterlogged=false]": "minecraft:trapped_chest[facing=west,type=single,waterlogged=false]", + "minecraft:trapped_chest[facing=west,type=right,waterlogged=true]": "minecraft:trapped_chest[facing=west,type=single,waterlogged=false]", + "minecraft:trapped_chest[facing=west,type=right,waterlogged=false]": "minecraft:trapped_chest[facing=west,type=single,waterlogged=false]", + "minecraft:trapped_chest[facing=east,type=single,waterlogged=true]": "minecraft:trapped_chest[facing=east,type=single,waterlogged=false]", + "minecraft:trapped_chest[facing=east,type=left,waterlogged=true]": "minecraft:trapped_chest[facing=east,type=single,waterlogged=false]", + "minecraft:trapped_chest[facing=east,type=left,waterlogged=false]": "minecraft:trapped_chest[facing=east,type=single,waterlogged=false]", + "minecraft:trapped_chest[facing=east,type=right,waterlogged=true]": "minecraft:trapped_chest[facing=east,type=single,waterlogged=false]", + "minecraft:trapped_chest[facing=east,type=right,waterlogged=false]": "minecraft:trapped_chest[facing=east,type=single,waterlogged=false]", + "minecraft:redstone_wire[east=up,north=up,power=0,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=0,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=0,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=0,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=0,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=0,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=0,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=0,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=0,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=1,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=1,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=1,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=1,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=1,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=1,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=1,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=1,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=1,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=2,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=2,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=2,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=2,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=2,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=2,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=2,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=2,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=2,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=3,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=3,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=3,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=3,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=3,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=3,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=3,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=3,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=3,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=4,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=4,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=4,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=4,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=4,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=4,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=4,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=4,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=4,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=5,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=5,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=5,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=5,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=5,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=5,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=5,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=5,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=5,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=6,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=6,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=6,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=6,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=6,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=6,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=6,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=6,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=6,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=7,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=7,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=7,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=7,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=7,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=7,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=7,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=7,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=7,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=8,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=8,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=8,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=8,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=8,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=8,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=8,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=8,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=8,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=9,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=9,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=9,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=9,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=9,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=9,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=9,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=9,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=9,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=10,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=10,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=10,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=10,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=10,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=10,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=10,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=10,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=10,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=11,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=11,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=11,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=11,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=11,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=11,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=11,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=11,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=11,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=12,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=12,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=12,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=12,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=12,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=12,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=12,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=12,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=12,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=13,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=13,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=13,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=13,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=13,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=13,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=13,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=13,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=13,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=14,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=14,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=14,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=14,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=14,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=14,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=14,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=14,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=14,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=15,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=15,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=15,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=15,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=15,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=15,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=15,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=15,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=up,power=15,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=0,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=0,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=0,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=0,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=0,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=0,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=0,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=0,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=0,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=1,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=1,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=1,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=1,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=1,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=1,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=1,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=1,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=1,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=2,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=2,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=2,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=2,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=2,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=2,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=2,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=2,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=2,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=3,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=3,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=3,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=3,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=3,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=3,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=3,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=3,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=3,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=4,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=4,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=4,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=4,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=4,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=4,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=4,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=4,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=4,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=5,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=5,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=5,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=5,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=5,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=5,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=5,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=5,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=5,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=6,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=6,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=6,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=6,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=6,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=6,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=6,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=6,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=6,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=7,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=7,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=7,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=7,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=7,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=7,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=7,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=7,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=7,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=8,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=8,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=8,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=8,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=8,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=8,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=8,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=8,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=8,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=9,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=9,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=9,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=9,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=9,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=9,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=9,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=9,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=9,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=10,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=10,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=10,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=10,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=10,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=10,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=10,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=10,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=10,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=11,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=11,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=11,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=11,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=11,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=11,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=11,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=11,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=11,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=12,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=12,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=12,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=12,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=12,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=12,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=12,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=12,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=12,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=13,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=13,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=13,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=13,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=13,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=13,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=13,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=13,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=13,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=14,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=14,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=14,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=14,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=14,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=14,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=14,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=14,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=14,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=15,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=15,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=15,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=15,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=15,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=15,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=15,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=15,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=side,power=15,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=0,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=0,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=0,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=0,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=0,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=0,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=0,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=0,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=0,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=1,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=1,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=1,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=1,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=1,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=1,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=1,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=1,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=1,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=2,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=2,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=2,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=2,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=2,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=2,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=2,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=2,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=2,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=3,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=3,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=3,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=3,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=3,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=3,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=3,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=3,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=3,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=4,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=4,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=4,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=4,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=4,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=4,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=4,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=4,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=4,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=5,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=5,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=5,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=5,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=5,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=5,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=5,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=5,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=5,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=6,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=6,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=6,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=6,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=6,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=6,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=6,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=6,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=6,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=7,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=7,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=7,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=7,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=7,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=7,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=7,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=7,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=7,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=8,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=8,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=8,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=8,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=8,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=8,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=8,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=8,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=8,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=9,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=9,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=9,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=9,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=9,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=9,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=9,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=9,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=9,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=10,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=10,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=10,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=10,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=10,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=10,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=10,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=10,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=10,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=11,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=11,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=11,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=11,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=11,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=11,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=11,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=11,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=11,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=12,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=12,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=12,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=12,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=12,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=12,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=12,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=12,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=12,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=13,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=13,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=13,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=13,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=13,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=13,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=13,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=13,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=13,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=14,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=14,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=14,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=14,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=14,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=14,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=14,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=14,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=14,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=15,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=15,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=15,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=15,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=15,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=15,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=15,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=15,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=up,north=none,power=15,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=0,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=0,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=0,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=0,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=0,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=0,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=0,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=0,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=0,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=1,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=1,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=1,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=1,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=1,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=1,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=1,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=1,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=1,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=2,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=2,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=2,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=2,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=2,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=2,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=2,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=2,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=2,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=3,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=3,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=3,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=3,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=3,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=3,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=3,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=3,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=3,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=4,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=4,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=4,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=4,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=4,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=4,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=4,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=4,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=4,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=5,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=5,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=5,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=5,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=5,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=5,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=5,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=5,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=5,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=6,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=6,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=6,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=6,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=6,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=6,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=6,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=6,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=6,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=7,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=7,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=7,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=7,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=7,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=7,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=7,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=7,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=7,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=8,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=8,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=8,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=8,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=8,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=8,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=8,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=8,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=8,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=9,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=9,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=9,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=9,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=9,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=9,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=9,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=9,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=9,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=10,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=10,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=10,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=10,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=10,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=10,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=10,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=10,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=10,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=11,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=11,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=11,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=11,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=11,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=11,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=11,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=11,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=11,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=12,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=12,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=12,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=12,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=12,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=12,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=12,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=12,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=12,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=13,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=13,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=13,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=13,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=13,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=13,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=13,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=13,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=13,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=14,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=14,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=14,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=14,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=14,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=14,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=14,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=14,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=14,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=15,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=15,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=15,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=15,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=15,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=15,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=15,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=15,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=up,power=15,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=0,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=0,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=0,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=0,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=0,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=0,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=0,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=0,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=0,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=1,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=1,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=1,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=1,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=1,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=1,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=1,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=1,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=1,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=2,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=2,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=2,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=2,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=2,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=2,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=2,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=2,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=2,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=3,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=3,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=3,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=3,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=3,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=3,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=3,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=3,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=3,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=4,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=4,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=4,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=4,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=4,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=4,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=4,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=4,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=4,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=5,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=5,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=5,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=5,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=5,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=5,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=5,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=5,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=5,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=6,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=6,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=6,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=6,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=6,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=6,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=6,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=6,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=6,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=7,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=7,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=7,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=7,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=7,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=7,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=7,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=7,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=7,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=8,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=8,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=8,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=8,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=8,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=8,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=8,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=8,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=8,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=9,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=9,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=9,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=9,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=9,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=9,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=9,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=9,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=9,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=10,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=10,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=10,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=10,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=10,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=10,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=10,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=10,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=10,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=11,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=11,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=11,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=11,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=11,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=11,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=11,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=11,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=11,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=12,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=12,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=12,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=12,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=12,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=12,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=12,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=12,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=12,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=13,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=13,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=13,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=13,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=13,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=13,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=13,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=13,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=13,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=14,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=14,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=14,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=14,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=14,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=14,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=14,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=14,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=14,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=15,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=15,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=15,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=15,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=15,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=15,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=15,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=15,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=side,power=15,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=0,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=0,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=0,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=0,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=0,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=0,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=0,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=0,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=0,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=1,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=1,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=1,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=1,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=1,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=1,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=1,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=1,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=1,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=2,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=2,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=2,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=2,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=2,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=2,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=2,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=2,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=2,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=3,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=3,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=3,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=3,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=3,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=3,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=3,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=3,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=3,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=4,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=4,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=4,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=4,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=4,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=4,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=4,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=4,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=4,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=5,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=5,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=5,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=5,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=5,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=5,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=5,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=5,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=5,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=6,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=6,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=6,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=6,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=6,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=6,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=6,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=6,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=6,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=7,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=7,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=7,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=7,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=7,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=7,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=7,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=7,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=7,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=8,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=8,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=8,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=8,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=8,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=8,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=8,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=8,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=8,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=9,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=9,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=9,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=9,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=9,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=9,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=9,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=9,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=9,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=10,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=10,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=10,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=10,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=10,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=10,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=10,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=10,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=10,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=11,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=11,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=11,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=11,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=11,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=11,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=11,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=11,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=11,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=12,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=12,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=12,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=12,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=12,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=12,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=12,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=12,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=12,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=13,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=13,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=13,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=13,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=13,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=13,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=13,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=13,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=13,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=14,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=14,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=14,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=14,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=14,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=14,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=14,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=14,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=14,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=15,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=15,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=15,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=15,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=15,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=15,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=15,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=15,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=side,north=none,power=15,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=0,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=0,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=0,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=0,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=0,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=0,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=0,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=0,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=0,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=1,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=1,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=1,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=1,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=1,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=1,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=1,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=1,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=1,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=2,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=2,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=2,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=2,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=2,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=2,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=2,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=2,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=2,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=3,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=3,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=3,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=3,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=3,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=3,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=3,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=3,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=3,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=4,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=4,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=4,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=4,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=4,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=4,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=4,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=4,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=4,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=5,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=5,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=5,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=5,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=5,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=5,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=5,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=5,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=5,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=6,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=6,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=6,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=6,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=6,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=6,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=6,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=6,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=6,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=7,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=7,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=7,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=7,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=7,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=7,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=7,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=7,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=7,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=8,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=8,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=8,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=8,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=8,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=8,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=8,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=8,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=8,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=9,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=9,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=9,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=9,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=9,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=9,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=9,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=9,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=9,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=10,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=10,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=10,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=10,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=10,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=10,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=10,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=10,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=10,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=11,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=11,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=11,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=11,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=11,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=11,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=11,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=11,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=11,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=12,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=12,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=12,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=12,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=12,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=12,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=12,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=12,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=12,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=13,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=13,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=13,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=13,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=13,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=13,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=13,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=13,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=13,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=14,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=14,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=14,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=14,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=14,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=14,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=14,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=14,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=14,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=15,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=15,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=15,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=15,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=15,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=15,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=15,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=15,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=up,power=15,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=0,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=0,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=0,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=0,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=0,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=0,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=0,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=0,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=0,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=1,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=1,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=1,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=1,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=1,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=1,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=1,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=1,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=1,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=2,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=2,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=2,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=2,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=2,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=2,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=2,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=2,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=2,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=3,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=3,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=3,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=3,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=3,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=3,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=3,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=3,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=3,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=4,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=4,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=4,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=4,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=4,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=4,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=4,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=4,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=4,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=5,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=5,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=5,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=5,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=5,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=5,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=5,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=5,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=5,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=6,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=6,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=6,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=6,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=6,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=6,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=6,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=6,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=6,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=7,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=7,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=7,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=7,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=7,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=7,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=7,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=7,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=7,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=8,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=8,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=8,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=8,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=8,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=8,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=8,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=8,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=8,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=9,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=9,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=9,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=9,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=9,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=9,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=9,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=9,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=9,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=10,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=10,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=10,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=10,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=10,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=10,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=10,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=10,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=10,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=11,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=11,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=11,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=11,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=11,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=11,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=11,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=11,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=11,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=12,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=12,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=12,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=12,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=12,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=12,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=12,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=12,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=12,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=13,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=13,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=13,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=13,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=13,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=13,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=13,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=13,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=13,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=14,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=14,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=14,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=14,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=14,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=14,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=14,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=14,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=14,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=15,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=15,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=15,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=15,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=15,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=15,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=15,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=15,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=side,power=15,south=none,west=none]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=0,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=0,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=0,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=0,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=0,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=0,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=1,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=1,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=1,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=1,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=1,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=1,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=2,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=2,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=2,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=2,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=2,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=2,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=3,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=3,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=3,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=3,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=3,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=3,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=4,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=4,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=4,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=4,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=4,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=4,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=5,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=5,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=5,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=5,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=5,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=5,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=6,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=6,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=6,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=6,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=6,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=6,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=7,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=7,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=7,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=7,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=7,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=7,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=8,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=8,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=8,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=8,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=8,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=8,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=9,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=9,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=9,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=9,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=9,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=9,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=10,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=10,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=10,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=10,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=10,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=10,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=11,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=11,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=11,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=11,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=11,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=11,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=12,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=12,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=12,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=12,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=12,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=12,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=13,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=13,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=13,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=13,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=13,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=13,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=14,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=14,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=14,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=14,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=14,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=14,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=15,south=up,west=up]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=15,south=up,west=side]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=15,south=up,west=none]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=15,south=side,west=up]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=15,south=side,west=side]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=15,south=side,west=none]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=up]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=side]": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "minecraft:sign[rotation=0,waterlogged=true]": "minecraft:sign[rotation=0,waterlogged=false]", + "minecraft:sign[rotation=1,waterlogged=true]": "minecraft:sign[rotation=1,waterlogged=false]", + "minecraft:sign[rotation=2,waterlogged=true]": "minecraft:sign[rotation=2,waterlogged=false]", + "minecraft:sign[rotation=3,waterlogged=true]": "minecraft:sign[rotation=3,waterlogged=false]", + "minecraft:sign[rotation=4,waterlogged=true]": "minecraft:sign[rotation=4,waterlogged=false]", + "minecraft:sign[rotation=5,waterlogged=true]": "minecraft:sign[rotation=5,waterlogged=false]", + "minecraft:sign[rotation=6,waterlogged=true]": "minecraft:sign[rotation=6,waterlogged=false]", + "minecraft:sign[rotation=7,waterlogged=true]": "minecraft:sign[rotation=7,waterlogged=false]", + "minecraft:sign[rotation=8,waterlogged=true]": "minecraft:sign[rotation=8,waterlogged=false]", + "minecraft:sign[rotation=9,waterlogged=true]": "minecraft:sign[rotation=9,waterlogged=false]", + "minecraft:sign[rotation=10,waterlogged=true]": "minecraft:sign[rotation=10,waterlogged=false]", + "minecraft:sign[rotation=11,waterlogged=true]": "minecraft:sign[rotation=11,waterlogged=false]", + "minecraft:sign[rotation=12,waterlogged=true]": "minecraft:sign[rotation=12,waterlogged=false]", + "minecraft:sign[rotation=13,waterlogged=true]": "minecraft:sign[rotation=13,waterlogged=false]", + "minecraft:sign[rotation=14,waterlogged=true]": "minecraft:sign[rotation=14,waterlogged=false]", + "minecraft:sign[rotation=15,waterlogged=true]": "minecraft:sign[rotation=15,waterlogged=false]", + "minecraft:ladder[facing=north,waterlogged=true]": "minecraft:ladder[facing=north,waterlogged=false]", + "minecraft:ladder[facing=south,waterlogged=true]": "minecraft:ladder[facing=south,waterlogged=false]", + "minecraft:ladder[facing=west,waterlogged=true]": "minecraft:ladder[facing=west,waterlogged=false]", + "minecraft:ladder[facing=east,waterlogged=true]": "minecraft:ladder[facing=east,waterlogged=false]", + "minecraft:wall_sign[facing=north,waterlogged=true]": "minecraft:wall_sign[facing=north,waterlogged=false]", + "minecraft:wall_sign[facing=south,waterlogged=true]": "minecraft:wall_sign[facing=south,waterlogged=false]", + "minecraft:wall_sign[facing=west,waterlogged=true]": "minecraft:wall_sign[facing=west,waterlogged=false]", + "minecraft:wall_sign[facing=east,waterlogged=true]": "minecraft:wall_sign[facing=east,waterlogged=false]", + "minecraft:spruce_pressure_plate[powered=true]": "minecraft:oak_pressure_plate[powered=true]", + "minecraft:spruce_pressure_plate[powered=false]": "minecraft:oak_pressure_plate[powered=false]", + "minecraft:birch_pressure_plate[powered=true]": "minecraft:oak_pressure_plate[powered=true]", + "minecraft:birch_pressure_plate[powered=false]": "minecraft:oak_pressure_plate[powered=false]", + "minecraft:jungle_pressure_plate[powered=true]": "minecraft:oak_pressure_plate[powered=true]", + "minecraft:jungle_pressure_plate[powered=false]": "minecraft:oak_pressure_plate[powered=false]", + "minecraft:acacia_pressure_plate[powered=true]": "minecraft:oak_pressure_plate[powered=true]", + "minecraft:acacia_pressure_plate[powered=false]": "minecraft:oak_pressure_plate[powered=false]", + "minecraft:dark_oak_pressure_plate[powered=true]": "minecraft:oak_pressure_plate[powered=true]", + "minecraft:dark_oak_pressure_plate[powered=false]": "minecraft:oak_pressure_plate[powered=false]", + "minecraft:stone_button[face=floor,facing=south,powered=true]": "minecraft:stone_button[face=floor,facing=north,powered=true]", + "minecraft:stone_button[face=floor,facing=south,powered=false]": "minecraft:stone_button[face=floor,facing=north,powered=false]", + "minecraft:stone_button[face=floor,facing=west,powered=true]": "minecraft:stone_button[face=floor,facing=north,powered=true]", + "minecraft:stone_button[face=floor,facing=west,powered=false]": "minecraft:stone_button[face=floor,facing=north,powered=false]", + "minecraft:stone_button[face=floor,facing=east,powered=true]": "minecraft:stone_button[face=floor,facing=north,powered=true]", + "minecraft:stone_button[face=floor,facing=east,powered=false]": "minecraft:stone_button[face=floor,facing=north,powered=false]", + "minecraft:stone_button[face=ceiling,facing=south,powered=true]": "minecraft:stone_button[face=ceiling,facing=north,powered=true]", + "minecraft:stone_button[face=ceiling,facing=south,powered=false]": "minecraft:stone_button[face=ceiling,facing=north,powered=false]", + "minecraft:stone_button[face=ceiling,facing=west,powered=true]": "minecraft:stone_button[face=ceiling,facing=north,powered=true]", + "minecraft:stone_button[face=ceiling,facing=west,powered=false]": "minecraft:stone_button[face=ceiling,facing=north,powered=false]", + "minecraft:stone_button[face=ceiling,facing=east,powered=true]": "minecraft:stone_button[face=ceiling,facing=north,powered=true]", + "minecraft:stone_button[face=ceiling,facing=east,powered=false]": "minecraft:stone_button[face=ceiling,facing=north,powered=false]", + "minecraft:oak_button[face=floor,facing=south,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", + "minecraft:oak_button[face=floor,facing=south,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", + "minecraft:oak_button[face=floor,facing=west,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", + "minecraft:oak_button[face=floor,facing=west,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", + "minecraft:oak_button[face=floor,facing=east,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", + "minecraft:oak_button[face=floor,facing=east,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", + "minecraft:oak_button[face=ceiling,facing=south,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", + "minecraft:oak_button[face=ceiling,facing=south,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", + "minecraft:oak_button[face=ceiling,facing=west,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", + "minecraft:oak_button[face=ceiling,facing=west,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", + "minecraft:oak_button[face=ceiling,facing=east,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", + "minecraft:oak_button[face=ceiling,facing=east,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", + "minecraft:spruce_button[face=floor,facing=south,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", + "minecraft:spruce_button[face=floor,facing=south,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", + "minecraft:spruce_button[face=floor,facing=west,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", + "minecraft:spruce_button[face=floor,facing=west,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", + "minecraft:spruce_button[face=floor,facing=east,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", + "minecraft:spruce_button[face=floor,facing=east,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", + "minecraft:spruce_button[face=ceiling,facing=south,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", + "minecraft:spruce_button[face=ceiling,facing=south,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", + "minecraft:spruce_button[face=ceiling,facing=west,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", + "minecraft:spruce_button[face=ceiling,facing=west,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", + "minecraft:spruce_button[face=ceiling,facing=east,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", + "minecraft:spruce_button[face=ceiling,facing=east,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", + "minecraft:birch_button[face=floor,facing=south,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", + "minecraft:birch_button[face=floor,facing=south,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", + "minecraft:birch_button[face=floor,facing=west,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", + "minecraft:birch_button[face=floor,facing=west,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", + "minecraft:birch_button[face=floor,facing=east,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", + "minecraft:birch_button[face=floor,facing=east,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", + "minecraft:birch_button[face=ceiling,facing=south,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", + "minecraft:birch_button[face=ceiling,facing=south,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", + "minecraft:birch_button[face=ceiling,facing=west,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", + "minecraft:birch_button[face=ceiling,facing=west,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", + "minecraft:birch_button[face=ceiling,facing=east,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", + "minecraft:birch_button[face=ceiling,facing=east,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", + "minecraft:jungle_button[face=floor,facing=south,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", + "minecraft:jungle_button[face=floor,facing=south,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", + "minecraft:jungle_button[face=floor,facing=west,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", + "minecraft:jungle_button[face=floor,facing=west,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", + "minecraft:jungle_button[face=floor,facing=east,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", + "minecraft:jungle_button[face=floor,facing=east,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", + "minecraft:jungle_button[face=ceiling,facing=south,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", + "minecraft:jungle_button[face=ceiling,facing=south,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", + "minecraft:jungle_button[face=ceiling,facing=west,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", + "minecraft:jungle_button[face=ceiling,facing=west,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", + "minecraft:jungle_button[face=ceiling,facing=east,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", + "minecraft:jungle_button[face=ceiling,facing=east,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", + "minecraft:acacia_button[face=floor,facing=south,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", + "minecraft:acacia_button[face=floor,facing=south,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", + "minecraft:acacia_button[face=floor,facing=west,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", + "minecraft:acacia_button[face=floor,facing=west,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", + "minecraft:acacia_button[face=floor,facing=east,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", + "minecraft:acacia_button[face=floor,facing=east,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", + "minecraft:acacia_button[face=ceiling,facing=south,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", + "minecraft:acacia_button[face=ceiling,facing=south,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", + "minecraft:acacia_button[face=ceiling,facing=west,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", + "minecraft:acacia_button[face=ceiling,facing=west,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", + "minecraft:acacia_button[face=ceiling,facing=east,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", + "minecraft:acacia_button[face=ceiling,facing=east,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", + "minecraft:dark_oak_button[face=floor,facing=south,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", + "minecraft:dark_oak_button[face=floor,facing=south,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", + "minecraft:dark_oak_button[face=floor,facing=west,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", + "minecraft:dark_oak_button[face=floor,facing=west,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", + "minecraft:dark_oak_button[face=floor,facing=east,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", + "minecraft:dark_oak_button[face=floor,facing=east,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", + "minecraft:dark_oak_button[face=ceiling,facing=south,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", + "minecraft:dark_oak_button[face=ceiling,facing=south,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", + "minecraft:dark_oak_button[face=ceiling,facing=west,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", + "minecraft:dark_oak_button[face=ceiling,facing=west,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", + "minecraft:dark_oak_button[face=ceiling,facing=east,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", + "minecraft:dark_oak_button[face=ceiling,facing=east,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", + "minecraft:oak_fence": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "minecraft:nether_brick_fence": "minecraft:nether_brick_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "minecraft:spruce_fence": "minecraft:spruce_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "minecraft:birch_fence": "minecraft:birch_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "minecraft:jungle_fence": "minecraft:jungle_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "minecraft:dark_oak_fence": "minecraft:dark_oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "minecraft:acacia_fence": "minecraft:acacia_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "minecraft:pumpkin": "minecraft:carved_pumpkin[facing=south]", + "minecraft:repeater[delay=1,facing=north,locked=true,powered=true]": "minecraft:repeater[delay=1,facing=north,locked=false,powered=true]", + "minecraft:repeater[delay=1,facing=north,locked=true,powered=false]": "minecraft:repeater[delay=1,facing=north,locked=false,powered=false]", + "minecraft:repeater[delay=1,facing=south,locked=true,powered=true]": "minecraft:repeater[delay=1,facing=south,locked=false,powered=true]", + "minecraft:repeater[delay=1,facing=south,locked=true,powered=false]": "minecraft:repeater[delay=1,facing=south,locked=false,powered=false]", + "minecraft:repeater[delay=1,facing=west,locked=true,powered=true]": "minecraft:repeater[delay=1,facing=west,locked=false,powered=true]", + "minecraft:repeater[delay=1,facing=west,locked=true,powered=false]": "minecraft:repeater[delay=1,facing=west,locked=false,powered=false]", + "minecraft:repeater[delay=1,facing=east,locked=true,powered=true]": "minecraft:repeater[delay=1,facing=east,locked=false,powered=true]", + "minecraft:repeater[delay=1,facing=east,locked=true,powered=false]": "minecraft:repeater[delay=1,facing=east,locked=false,powered=false]", + "minecraft:repeater[delay=2,facing=north,locked=true,powered=true]": "minecraft:repeater[delay=2,facing=north,locked=false,powered=true]", + "minecraft:repeater[delay=2,facing=north,locked=true,powered=false]": "minecraft:repeater[delay=2,facing=north,locked=false,powered=false]", + "minecraft:repeater[delay=2,facing=south,locked=true,powered=true]": "minecraft:repeater[delay=2,facing=south,locked=false,powered=true]", + "minecraft:repeater[delay=2,facing=south,locked=true,powered=false]": "minecraft:repeater[delay=2,facing=south,locked=false,powered=false]", + "minecraft:repeater[delay=2,facing=west,locked=true,powered=true]": "minecraft:repeater[delay=2,facing=west,locked=false,powered=true]", + "minecraft:repeater[delay=2,facing=west,locked=true,powered=false]": "minecraft:repeater[delay=2,facing=west,locked=false,powered=false]", + "minecraft:repeater[delay=2,facing=east,locked=true,powered=true]": "minecraft:repeater[delay=2,facing=east,locked=false,powered=true]", + "minecraft:repeater[delay=2,facing=east,locked=true,powered=false]": "minecraft:repeater[delay=2,facing=east,locked=false,powered=false]", + "minecraft:repeater[delay=3,facing=north,locked=true,powered=true]": "minecraft:repeater[delay=3,facing=north,locked=false,powered=true]", + "minecraft:repeater[delay=3,facing=north,locked=true,powered=false]": "minecraft:repeater[delay=3,facing=north,locked=false,powered=false]", + "minecraft:repeater[delay=3,facing=south,locked=true,powered=true]": "minecraft:repeater[delay=3,facing=south,locked=false,powered=true]", + "minecraft:repeater[delay=3,facing=south,locked=true,powered=false]": "minecraft:repeater[delay=3,facing=south,locked=false,powered=false]", + "minecraft:repeater[delay=3,facing=west,locked=true,powered=true]": "minecraft:repeater[delay=3,facing=west,locked=false,powered=true]", + "minecraft:repeater[delay=3,facing=west,locked=true,powered=false]": "minecraft:repeater[delay=3,facing=west,locked=false,powered=false]", + "minecraft:repeater[delay=3,facing=east,locked=true,powered=true]": "minecraft:repeater[delay=3,facing=east,locked=false,powered=true]", + "minecraft:repeater[delay=3,facing=east,locked=true,powered=false]": "minecraft:repeater[delay=3,facing=east,locked=false,powered=false]", + "minecraft:repeater[delay=4,facing=north,locked=true,powered=true]": "minecraft:repeater[delay=4,facing=north,locked=false,powered=true]", + "minecraft:repeater[delay=4,facing=north,locked=true,powered=false]": "minecraft:repeater[delay=4,facing=north,locked=false,powered=false]", + "minecraft:repeater[delay=4,facing=south,locked=true,powered=true]": "minecraft:repeater[delay=4,facing=south,locked=false,powered=true]", + "minecraft:repeater[delay=4,facing=south,locked=true,powered=false]": "minecraft:repeater[delay=4,facing=south,locked=false,powered=false]", + "minecraft:repeater[delay=4,facing=west,locked=true,powered=true]": "minecraft:repeater[delay=4,facing=west,locked=false,powered=true]", + "minecraft:repeater[delay=4,facing=west,locked=true,powered=false]": "minecraft:repeater[delay=4,facing=west,locked=false,powered=false]", + "minecraft:repeater[delay=4,facing=east,locked=true,powered=true]": "minecraft:repeater[delay=4,facing=east,locked=false,powered=true]", + "minecraft:repeater[delay=4,facing=east,locked=true,powered=false]": "minecraft:repeater[delay=4,facing=east,locked=false,powered=false]", + "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]": "minecraft:iron_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]": "minecraft:iron_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true]": "minecraft:iron_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]": "minecraft:iron_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]": "minecraft:iron_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true]": "minecraft:iron_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:iron_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:iron_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:iron_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:iron_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:iron_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:iron_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]": "minecraft:iron_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]": "minecraft:iron_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true]": "minecraft:iron_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]": "minecraft:iron_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]": "minecraft:iron_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true]": "minecraft:iron_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:iron_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:iron_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:iron_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:iron_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:iron_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:iron_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]": "minecraft:iron_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]": "minecraft:iron_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true]": "minecraft:iron_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]": "minecraft:iron_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]": "minecraft:iron_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true]": "minecraft:iron_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:iron_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:iron_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:iron_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:iron_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:iron_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:iron_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]": "minecraft:iron_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]": "minecraft:iron_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true]": "minecraft:iron_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]": "minecraft:iron_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]": "minecraft:iron_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true]": "minecraft:iron_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:iron_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:iron_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:iron_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:iron_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:iron_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:iron_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:iron_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:iron_bars": "minecraft:iron_bars[east=false,north=false,south=false,waterlogged=false,west=false]", + "minecraft:glass_pane": "minecraft:glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "minecraft:attached_pumpkin_stem": "minecraft:pumpkin_stem[age=7]", + "minecraft:attached_melon_stem": "minecraft:melon_stem[age=7]", + "minecraft:oak_fence_gate[facing=north,in_wall=true,open=true,powered=true]": "minecraft:oak_fence_gate[facing=north,in_wall=false,open=true,powered=true]", + "minecraft:oak_fence_gate[facing=north,in_wall=true,open=true,powered=false]": "minecraft:oak_fence_gate[facing=north,in_wall=false,open=true,powered=false]", + "minecraft:oak_fence_gate[facing=north,in_wall=true,open=false,powered=true]": "minecraft:oak_fence_gate[facing=north,in_wall=false,open=false,powered=true]", + "minecraft:oak_fence_gate[facing=north,in_wall=true,open=false,powered=false]": "minecraft:oak_fence_gate[facing=north,in_wall=false,open=false,powered=false]", + "minecraft:oak_fence_gate[facing=south,in_wall=true,open=true,powered=true]": "minecraft:oak_fence_gate[facing=south,in_wall=false,open=true,powered=true]", + "minecraft:oak_fence_gate[facing=south,in_wall=true,open=true,powered=false]": "minecraft:oak_fence_gate[facing=south,in_wall=false,open=true,powered=false]", + "minecraft:oak_fence_gate[facing=south,in_wall=true,open=false,powered=true]": "minecraft:oak_fence_gate[facing=south,in_wall=false,open=false,powered=true]", + "minecraft:oak_fence_gate[facing=south,in_wall=true,open=false,powered=false]": "minecraft:oak_fence_gate[facing=south,in_wall=false,open=false,powered=false]", + "minecraft:oak_fence_gate[facing=west,in_wall=true,open=true,powered=true]": "minecraft:oak_fence_gate[facing=west,in_wall=false,open=true,powered=true]", + "minecraft:oak_fence_gate[facing=west,in_wall=true,open=true,powered=false]": "minecraft:oak_fence_gate[facing=west,in_wall=false,open=true,powered=false]", + "minecraft:oak_fence_gate[facing=west,in_wall=true,open=false,powered=true]": "minecraft:oak_fence_gate[facing=west,in_wall=false,open=false,powered=true]", + "minecraft:oak_fence_gate[facing=west,in_wall=true,open=false,powered=false]": "minecraft:oak_fence_gate[facing=west,in_wall=false,open=false,powered=false]", + "minecraft:oak_fence_gate[facing=east,in_wall=true,open=true,powered=true]": "minecraft:oak_fence_gate[facing=east,in_wall=false,open=true,powered=true]", + "minecraft:oak_fence_gate[facing=east,in_wall=true,open=true,powered=false]": "minecraft:oak_fence_gate[facing=east,in_wall=false,open=true,powered=false]", + "minecraft:oak_fence_gate[facing=east,in_wall=true,open=false,powered=true]": "minecraft:oak_fence_gate[facing=east,in_wall=false,open=false,powered=true]", + "minecraft:oak_fence_gate[facing=east,in_wall=true,open=false,powered=false]": "minecraft:oak_fence_gate[facing=east,in_wall=false,open=false,powered=false]", + "minecraft:spruce_fence_gate[facing=north,in_wall=true,open=true,powered=true]": "minecraft:spruce_fence_gate[facing=north,in_wall=false,open=true,powered=true]", + "minecraft:spruce_fence_gate[facing=north,in_wall=true,open=true,powered=false]": "minecraft:spruce_fence_gate[facing=north,in_wall=false,open=true,powered=false]", + "minecraft:spruce_fence_gate[facing=north,in_wall=true,open=false,powered=true]": "minecraft:spruce_fence_gate[facing=north,in_wall=false,open=false,powered=true]", + "minecraft:spruce_fence_gate[facing=north,in_wall=true,open=false,powered=false]": "minecraft:spruce_fence_gate[facing=north,in_wall=false,open=false,powered=false]", + "minecraft:spruce_fence_gate[facing=south,in_wall=true,open=true,powered=true]": "minecraft:spruce_fence_gate[facing=south,in_wall=false,open=true,powered=true]", + "minecraft:spruce_fence_gate[facing=south,in_wall=true,open=true,powered=false]": "minecraft:spruce_fence_gate[facing=south,in_wall=false,open=true,powered=false]", + "minecraft:spruce_fence_gate[facing=south,in_wall=true,open=false,powered=true]": "minecraft:spruce_fence_gate[facing=south,in_wall=false,open=false,powered=true]", + "minecraft:spruce_fence_gate[facing=south,in_wall=true,open=false,powered=false]": "minecraft:spruce_fence_gate[facing=south,in_wall=false,open=false,powered=false]", + "minecraft:spruce_fence_gate[facing=west,in_wall=true,open=true,powered=true]": "minecraft:spruce_fence_gate[facing=west,in_wall=false,open=true,powered=true]", + "minecraft:spruce_fence_gate[facing=west,in_wall=true,open=true,powered=false]": "minecraft:spruce_fence_gate[facing=west,in_wall=false,open=true,powered=false]", + "minecraft:spruce_fence_gate[facing=west,in_wall=true,open=false,powered=true]": "minecraft:spruce_fence_gate[facing=west,in_wall=false,open=false,powered=true]", + "minecraft:spruce_fence_gate[facing=west,in_wall=true,open=false,powered=false]": "minecraft:spruce_fence_gate[facing=west,in_wall=false,open=false,powered=false]", + "minecraft:spruce_fence_gate[facing=east,in_wall=true,open=true,powered=true]": "minecraft:spruce_fence_gate[facing=east,in_wall=false,open=true,powered=true]", + "minecraft:spruce_fence_gate[facing=east,in_wall=true,open=true,powered=false]": "minecraft:spruce_fence_gate[facing=east,in_wall=false,open=true,powered=false]", + "minecraft:spruce_fence_gate[facing=east,in_wall=true,open=false,powered=true]": "minecraft:spruce_fence_gate[facing=east,in_wall=false,open=false,powered=true]", + "minecraft:spruce_fence_gate[facing=east,in_wall=true,open=false,powered=false]": "minecraft:spruce_fence_gate[facing=east,in_wall=false,open=false,powered=false]", + "minecraft:birch_fence_gate[facing=north,in_wall=true,open=true,powered=true]": "minecraft:birch_fence_gate[facing=north,in_wall=false,open=true,powered=true]", + "minecraft:birch_fence_gate[facing=north,in_wall=true,open=true,powered=false]": "minecraft:birch_fence_gate[facing=north,in_wall=false,open=true,powered=false]", + "minecraft:birch_fence_gate[facing=north,in_wall=true,open=false,powered=true]": "minecraft:birch_fence_gate[facing=north,in_wall=false,open=false,powered=true]", + "minecraft:birch_fence_gate[facing=north,in_wall=true,open=false,powered=false]": "minecraft:birch_fence_gate[facing=north,in_wall=false,open=false,powered=false]", + "minecraft:birch_fence_gate[facing=south,in_wall=true,open=true,powered=true]": "minecraft:birch_fence_gate[facing=south,in_wall=false,open=true,powered=true]", + "minecraft:birch_fence_gate[facing=south,in_wall=true,open=true,powered=false]": "minecraft:birch_fence_gate[facing=south,in_wall=false,open=true,powered=false]", + "minecraft:birch_fence_gate[facing=south,in_wall=true,open=false,powered=true]": "minecraft:birch_fence_gate[facing=south,in_wall=false,open=false,powered=true]", + "minecraft:birch_fence_gate[facing=south,in_wall=true,open=false,powered=false]": "minecraft:birch_fence_gate[facing=south,in_wall=false,open=false,powered=false]", + "minecraft:birch_fence_gate[facing=west,in_wall=true,open=true,powered=true]": "minecraft:birch_fence_gate[facing=west,in_wall=false,open=true,powered=true]", + "minecraft:birch_fence_gate[facing=west,in_wall=true,open=true,powered=false]": "minecraft:birch_fence_gate[facing=west,in_wall=false,open=true,powered=false]", + "minecraft:birch_fence_gate[facing=west,in_wall=true,open=false,powered=true]": "minecraft:birch_fence_gate[facing=west,in_wall=false,open=false,powered=true]", + "minecraft:birch_fence_gate[facing=west,in_wall=true,open=false,powered=false]": "minecraft:birch_fence_gate[facing=west,in_wall=false,open=false,powered=false]", + "minecraft:birch_fence_gate[facing=east,in_wall=true,open=true,powered=true]": "minecraft:birch_fence_gate[facing=east,in_wall=false,open=true,powered=true]", + "minecraft:birch_fence_gate[facing=east,in_wall=true,open=true,powered=false]": "minecraft:birch_fence_gate[facing=east,in_wall=false,open=true,powered=false]", + "minecraft:birch_fence_gate[facing=east,in_wall=true,open=false,powered=true]": "minecraft:birch_fence_gate[facing=east,in_wall=false,open=false,powered=true]", + "minecraft:birch_fence_gate[facing=east,in_wall=true,open=false,powered=false]": "minecraft:birch_fence_gate[facing=east,in_wall=false,open=false,powered=false]", + "minecraft:jungle_fence_gate[facing=north,in_wall=true,open=true,powered=true]": "minecraft:jungle_fence_gate[facing=north,in_wall=false,open=true,powered=true]", + "minecraft:jungle_fence_gate[facing=north,in_wall=true,open=true,powered=false]": "minecraft:jungle_fence_gate[facing=north,in_wall=false,open=true,powered=false]", + "minecraft:jungle_fence_gate[facing=north,in_wall=true,open=false,powered=true]": "minecraft:jungle_fence_gate[facing=north,in_wall=false,open=false,powered=true]", + "minecraft:jungle_fence_gate[facing=north,in_wall=true,open=false,powered=false]": "minecraft:jungle_fence_gate[facing=north,in_wall=false,open=false,powered=false]", + "minecraft:jungle_fence_gate[facing=south,in_wall=true,open=true,powered=true]": "minecraft:jungle_fence_gate[facing=south,in_wall=false,open=true,powered=true]", + "minecraft:jungle_fence_gate[facing=south,in_wall=true,open=true,powered=false]": "minecraft:jungle_fence_gate[facing=south,in_wall=false,open=true,powered=false]", + "minecraft:jungle_fence_gate[facing=south,in_wall=true,open=false,powered=true]": "minecraft:jungle_fence_gate[facing=south,in_wall=false,open=false,powered=true]", + "minecraft:jungle_fence_gate[facing=south,in_wall=true,open=false,powered=false]": "minecraft:jungle_fence_gate[facing=south,in_wall=false,open=false,powered=false]", + "minecraft:jungle_fence_gate[facing=west,in_wall=true,open=true,powered=true]": "minecraft:jungle_fence_gate[facing=west,in_wall=false,open=true,powered=true]", + "minecraft:jungle_fence_gate[facing=west,in_wall=true,open=true,powered=false]": "minecraft:jungle_fence_gate[facing=west,in_wall=false,open=true,powered=false]", + "minecraft:jungle_fence_gate[facing=west,in_wall=true,open=false,powered=true]": "minecraft:jungle_fence_gate[facing=west,in_wall=false,open=false,powered=true]", + "minecraft:jungle_fence_gate[facing=west,in_wall=true,open=false,powered=false]": "minecraft:jungle_fence_gate[facing=west,in_wall=false,open=false,powered=false]", + "minecraft:jungle_fence_gate[facing=east,in_wall=true,open=true,powered=true]": "minecraft:jungle_fence_gate[facing=east,in_wall=false,open=true,powered=true]", + "minecraft:jungle_fence_gate[facing=east,in_wall=true,open=true,powered=false]": "minecraft:jungle_fence_gate[facing=east,in_wall=false,open=true,powered=false]", + "minecraft:jungle_fence_gate[facing=east,in_wall=true,open=false,powered=true]": "minecraft:jungle_fence_gate[facing=east,in_wall=false,open=false,powered=true]", + "minecraft:jungle_fence_gate[facing=east,in_wall=true,open=false,powered=false]": "minecraft:jungle_fence_gate[facing=east,in_wall=false,open=false,powered=false]", + "minecraft:dark_oak_fence_gate[facing=north,in_wall=true,open=true,powered=true]": "minecraft:dark_oak_fence_gate[facing=north,in_wall=false,open=true,powered=true]", + "minecraft:dark_oak_fence_gate[facing=north,in_wall=true,open=true,powered=false]": "minecraft:dark_oak_fence_gate[facing=north,in_wall=false,open=true,powered=false]", + "minecraft:dark_oak_fence_gate[facing=north,in_wall=true,open=false,powered=true]": "minecraft:dark_oak_fence_gate[facing=north,in_wall=false,open=false,powered=true]", + "minecraft:dark_oak_fence_gate[facing=north,in_wall=true,open=false,powered=false]": "minecraft:dark_oak_fence_gate[facing=north,in_wall=false,open=false,powered=false]", + "minecraft:dark_oak_fence_gate[facing=south,in_wall=true,open=true,powered=true]": "minecraft:dark_oak_fence_gate[facing=south,in_wall=false,open=true,powered=true]", + "minecraft:dark_oak_fence_gate[facing=south,in_wall=true,open=true,powered=false]": "minecraft:dark_oak_fence_gate[facing=south,in_wall=false,open=true,powered=false]", + "minecraft:dark_oak_fence_gate[facing=south,in_wall=true,open=false,powered=true]": "minecraft:dark_oak_fence_gate[facing=south,in_wall=false,open=false,powered=true]", + "minecraft:dark_oak_fence_gate[facing=south,in_wall=true,open=false,powered=false]": "minecraft:dark_oak_fence_gate[facing=south,in_wall=false,open=false,powered=false]", + "minecraft:dark_oak_fence_gate[facing=west,in_wall=true,open=true,powered=true]": "minecraft:dark_oak_fence_gate[facing=west,in_wall=false,open=true,powered=true]", + "minecraft:dark_oak_fence_gate[facing=west,in_wall=true,open=true,powered=false]": "minecraft:dark_oak_fence_gate[facing=west,in_wall=false,open=true,powered=false]", + "minecraft:dark_oak_fence_gate[facing=west,in_wall=true,open=false,powered=true]": "minecraft:dark_oak_fence_gate[facing=west,in_wall=false,open=false,powered=true]", + "minecraft:dark_oak_fence_gate[facing=west,in_wall=true,open=false,powered=false]": "minecraft:dark_oak_fence_gate[facing=west,in_wall=false,open=false,powered=false]", + "minecraft:dark_oak_fence_gate[facing=east,in_wall=true,open=true,powered=true]": "minecraft:dark_oak_fence_gate[facing=east,in_wall=false,open=true,powered=true]", + "minecraft:dark_oak_fence_gate[facing=east,in_wall=true,open=true,powered=false]": "minecraft:dark_oak_fence_gate[facing=east,in_wall=false,open=true,powered=false]", + "minecraft:dark_oak_fence_gate[facing=east,in_wall=true,open=false,powered=true]": "minecraft:dark_oak_fence_gate[facing=east,in_wall=false,open=false,powered=true]", + "minecraft:dark_oak_fence_gate[facing=east,in_wall=true,open=false,powered=false]": "minecraft:dark_oak_fence_gate[facing=east,in_wall=false,open=false,powered=false]", + "minecraft:acacia_fence_gate[facing=north,in_wall=true,open=true,powered=true]": "minecraft:acacia_fence_gate[facing=north,in_wall=false,open=true,powered=true]", + "minecraft:acacia_fence_gate[facing=north,in_wall=true,open=true,powered=false]": "minecraft:acacia_fence_gate[facing=north,in_wall=false,open=true,powered=false]", + "minecraft:acacia_fence_gate[facing=north,in_wall=true,open=false,powered=true]": "minecraft:acacia_fence_gate[facing=north,in_wall=false,open=false,powered=true]", + "minecraft:acacia_fence_gate[facing=north,in_wall=true,open=false,powered=false]": "minecraft:acacia_fence_gate[facing=north,in_wall=false,open=false,powered=false]", + "minecraft:acacia_fence_gate[facing=south,in_wall=true,open=true,powered=true]": "minecraft:acacia_fence_gate[facing=south,in_wall=false,open=true,powered=true]", + "minecraft:acacia_fence_gate[facing=south,in_wall=true,open=true,powered=false]": "minecraft:acacia_fence_gate[facing=south,in_wall=false,open=true,powered=false]", + "minecraft:acacia_fence_gate[facing=south,in_wall=true,open=false,powered=true]": "minecraft:acacia_fence_gate[facing=south,in_wall=false,open=false,powered=true]", + "minecraft:acacia_fence_gate[facing=south,in_wall=true,open=false,powered=false]": "minecraft:acacia_fence_gate[facing=south,in_wall=false,open=false,powered=false]", + "minecraft:acacia_fence_gate[facing=west,in_wall=true,open=true,powered=true]": "minecraft:acacia_fence_gate[facing=west,in_wall=false,open=true,powered=true]", + "minecraft:acacia_fence_gate[facing=west,in_wall=true,open=true,powered=false]": "minecraft:acacia_fence_gate[facing=west,in_wall=false,open=true,powered=false]", + "minecraft:acacia_fence_gate[facing=west,in_wall=true,open=false,powered=true]": "minecraft:acacia_fence_gate[facing=west,in_wall=false,open=false,powered=true]", + "minecraft:acacia_fence_gate[facing=west,in_wall=true,open=false,powered=false]": "minecraft:acacia_fence_gate[facing=west,in_wall=false,open=false,powered=false]", + "minecraft:acacia_fence_gate[facing=east,in_wall=true,open=true,powered=true]": "minecraft:acacia_fence_gate[facing=east,in_wall=false,open=true,powered=true]", + "minecraft:acacia_fence_gate[facing=east,in_wall=true,open=true,powered=false]": "minecraft:acacia_fence_gate[facing=east,in_wall=false,open=true,powered=false]", + "minecraft:acacia_fence_gate[facing=east,in_wall=true,open=false,powered=true]": "minecraft:acacia_fence_gate[facing=east,in_wall=false,open=false,powered=true]", + "minecraft:acacia_fence_gate[facing=east,in_wall=true,open=false,powered=false]": "minecraft:acacia_fence_gate[facing=east,in_wall=false,open=false,powered=false]", + "minecraft:mycelium[snowy=true]": "minecraft:mycelium[snowy=false]", + "minecraft:ender_chest[facing=north,waterlogged=true]": "minecraft:ender_chest[facing=north,waterlogged=false]", + "minecraft:ender_chest[facing=south,waterlogged=true]": "minecraft:ender_chest[facing=south,waterlogged=false]", + "minecraft:ender_chest[facing=west,waterlogged=true]": "minecraft:ender_chest[facing=west,waterlogged=false]", + "minecraft:ender_chest[facing=east,waterlogged=true]": "minecraft:ender_chest[facing=east,waterlogged=false]", + "minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true]": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=false]": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=false,west=true]": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=false,west=false]": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,powered=false,south=true,west=true]": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,powered=false,south=true,west=false]": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,powered=false,south=false,west=true]": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,powered=false,south=false,west=false]": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=true,east=true,north=false,powered=true,south=true,west=true]": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=true,east=true,north=false,powered=true,south=true,west=false]": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=true,east=true,north=false,powered=true,south=false,west=true]": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=true,east=true,north=false,powered=true,south=false,west=false]": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=true,east=true,north=false,powered=false,south=true,west=true]": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=true,east=true,north=false,powered=false,south=true,west=false]": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=true,east=true,north=false,powered=false,south=false,west=true]": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=true,east=true,north=false,powered=false,south=false,west=false]": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=true,east=false,north=true,powered=true,south=true,west=true]": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=true,east=false,north=true,powered=true,south=true,west=false]": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=true,east=false,north=true,powered=true,south=false,west=true]": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=true,east=false,north=true,powered=true,south=false,west=false]": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=true,east=false,north=true,powered=false,south=true,west=true]": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=true,east=false,north=true,powered=false,south=true,west=false]": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=true,east=false,north=true,powered=false,south=false,west=true]": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=true,east=false,north=true,powered=false,south=false,west=false]": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=true,south=true,west=true]": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=true,south=true,west=false]": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=true,south=false,west=true]": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=false,south=true,west=true]": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=false,south=true,west=false]": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=false,south=false,west=true]": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=false,east=true,north=true,powered=true,south=true,west=true]": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=false,east=true,north=true,powered=true,south=true,west=false]": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=false,east=true,north=true,powered=true,south=false,west=true]": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=false,east=true,north=true,powered=true,south=false,west=false]": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=false,east=true,north=true,powered=false,south=true,west=true]": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=false,east=true,north=true,powered=false,south=true,west=false]": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=false,east=true,north=true,powered=false,south=false,west=true]": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=false,east=true,north=true,powered=false,south=false,west=false]": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=false,east=true,north=false,powered=true,south=true,west=true]": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=false,east=true,north=false,powered=true,south=true,west=false]": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=false,east=true,north=false,powered=true,south=false,west=true]": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=false,east=true,north=false,powered=true,south=false,west=false]": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=false,east=true,north=false,powered=false,south=true,west=true]": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=false,east=true,north=false,powered=false,south=true,west=false]": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=false,east=true,north=false,powered=false,south=false,west=true]": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=false,east=true,north=false,powered=false,south=false,west=false]": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=false,east=false,north=true,powered=true,south=true,west=true]": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=false,east=false,north=true,powered=true,south=true,west=false]": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=false,east=false,north=true,powered=true,south=false,west=true]": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=false,east=false,north=true,powered=true,south=false,west=false]": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=false,east=false,north=true,powered=false,south=true,west=true]": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=false,east=false,north=true,powered=false,south=true,west=false]": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=false,east=false,north=true,powered=false,south=false,west=true]": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=false,east=false,north=true,powered=false,south=false,west=false]": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=true,south=true,west=true]": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=true,south=true,west=false]": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=true,south=false,west=true]": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=false,south=true,west=true]": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=false,south=true,west=false]": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=false,south=false,west=true]": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true]": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=false]": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=false,west=true]": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=false,west=false]": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,powered=false,south=true,west=true]": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,powered=false,south=true,west=false]": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,powered=false,south=false,west=true]": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,powered=false,south=false,west=false]": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=true,east=true,north=false,powered=true,south=true,west=true]": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=true,east=true,north=false,powered=true,south=true,west=false]": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=true,east=true,north=false,powered=true,south=false,west=true]": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=true,east=true,north=false,powered=true,south=false,west=false]": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=true,east=true,north=false,powered=false,south=true,west=true]": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=true,east=true,north=false,powered=false,south=true,west=false]": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=true,east=true,north=false,powered=false,south=false,west=true]": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=true,east=true,north=false,powered=false,south=false,west=false]": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=true,east=false,north=true,powered=true,south=true,west=true]": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=true,east=false,north=true,powered=true,south=true,west=false]": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=true,east=false,north=true,powered=true,south=false,west=true]": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=true,east=false,north=true,powered=true,south=false,west=false]": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=true,east=false,north=true,powered=false,south=true,west=true]": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=true,east=false,north=true,powered=false,south=true,west=false]": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=true,east=false,north=true,powered=false,south=false,west=true]": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=true,east=false,north=true,powered=false,south=false,west=false]": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=true,south=true,west=true]": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=true,south=true,west=false]": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=true,south=false,west=true]": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=false,south=true,west=true]": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=false,south=true,west=false]": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=false,south=false,west=true]": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=false,east=true,north=true,powered=true,south=true,west=true]": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=false,east=true,north=true,powered=true,south=true,west=false]": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=false,east=true,north=true,powered=true,south=false,west=true]": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=false,east=true,north=true,powered=true,south=false,west=false]": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=false,east=true,north=true,powered=false,south=true,west=true]": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=false,east=true,north=true,powered=false,south=true,west=false]": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=false,east=true,north=true,powered=false,south=false,west=true]": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=false,east=true,north=true,powered=false,south=false,west=false]": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=false,east=true,north=false,powered=true,south=true,west=true]": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=false,east=true,north=false,powered=true,south=true,west=false]": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=false,east=true,north=false,powered=true,south=false,west=true]": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=false,east=true,north=false,powered=true,south=false,west=false]": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=false,east=true,north=false,powered=false,south=true,west=true]": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=false,east=true,north=false,powered=false,south=true,west=false]": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=false,east=true,north=false,powered=false,south=false,west=true]": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=false,east=true,north=false,powered=false,south=false,west=false]": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=false,east=false,north=true,powered=true,south=true,west=true]": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=false,east=false,north=true,powered=true,south=true,west=false]": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=false,east=false,north=true,powered=true,south=false,west=true]": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=false,east=false,north=true,powered=true,south=false,west=false]": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=false,east=false,north=true,powered=false,south=true,west=true]": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=false,east=false,north=true,powered=false,south=true,west=false]": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=false,east=false,north=true,powered=false,south=false,west=true]": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=false,east=false,north=true,powered=false,south=false,west=false]": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=true,south=true,west=true]": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=true,south=true,west=false]": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=true,south=false,west=true]": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=true,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=false,south=true,west=true]": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=false,south=true,west=false]": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=false,south=false,west=true]": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=false,south=false,west=false]", + "minecraft:cobblestone_wall": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]", + "minecraft:mossy_cobblestone_wall": "minecraft:mossy_cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]", + "minecraft:potted_oak_sapling": "minecraft:flower_pot", + "minecraft:potted_spruce_sapling": "minecraft:flower_pot", + "minecraft:potted_birch_sapling": "minecraft:flower_pot", + "minecraft:potted_jungle_sapling": "minecraft:flower_pot", + "minecraft:potted_acacia_sapling": "minecraft:flower_pot", + "minecraft:potted_dark_oak_sapling": "minecraft:flower_pot", + "minecraft:potted_fern": "minecraft:flower_pot", + "minecraft:potted_dandelion": "minecraft:flower_pot", + "minecraft:potted_poppy": "minecraft:flower_pot", + "minecraft:potted_blue_orchid": "minecraft:flower_pot", + "minecraft:potted_allium": "minecraft:flower_pot", + "minecraft:potted_azure_bluet": "minecraft:flower_pot", + "minecraft:potted_red_tulip": "minecraft:flower_pot", + "minecraft:potted_orange_tulip": "minecraft:flower_pot", + "minecraft:potted_white_tulip": "minecraft:flower_pot", + "minecraft:potted_pink_tulip": "minecraft:flower_pot", + "minecraft:potted_oxeye_daisy": "minecraft:flower_pot", + "minecraft:potted_red_mushroom": "minecraft:flower_pot", + "minecraft:potted_brown_mushroom": "minecraft:flower_pot", + "minecraft:potted_dead_bush": "minecraft:flower_pot", + "minecraft:potted_cactus": "minecraft:flower_pot", + "minecraft:white_stained_glass_pane": "minecraft:white_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "minecraft:orange_stained_glass_pane": "minecraft:orange_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "minecraft:magenta_stained_glass_pane": "minecraft:magenta_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "minecraft:light_blue_stained_glass_pane": "minecraft:light_blue_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "minecraft:yellow_stained_glass_pane": "minecraft:yellow_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "minecraft:lime_stained_glass_pane": "minecraft:lime_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "minecraft:pink_stained_glass_pane": "minecraft:pink_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "minecraft:gray_stained_glass_pane": "minecraft:gray_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "minecraft:light_gray_stained_glass_pane": "minecraft:light_gray_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "minecraft:cyan_stained_glass_pane": "minecraft:cyan_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "minecraft:purple_stained_glass_pane": "minecraft:purple_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "minecraft:blue_stained_glass_pane": "minecraft:blue_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "minecraft:brown_stained_glass_pane": "minecraft:brown_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "minecraft:green_stained_glass_pane": "minecraft:green_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "minecraft:red_stained_glass_pane": "minecraft:red_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "minecraft:black_stained_glass_pane": "minecraft:black_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "minecraft:prismarine_slab[type=top,waterlogged=true]": "minecraft:cobblestone_slab[type=top,waterlogged=false]", + "minecraft:prismarine_slab[type=top,waterlogged=false]": "minecraft:cobblestone_slab[type=top,waterlogged=false]", + "minecraft:prismarine_slab[type=bottom,waterlogged=true]": "minecraft:cobblestone_slab[type=bottom,waterlogged=false]", + "minecraft:prismarine_slab[type=bottom,waterlogged=false]": "minecraft:cobblestone_slab[type=bottom,waterlogged=false]", + "minecraft:prismarine_slab[type=double,waterlogged=true]": "minecraft:cobblestone_slab[type=double,waterlogged=false]", + "minecraft:prismarine_slab[type=double,waterlogged=false]": "minecraft:cobblestone_slab[type=double,waterlogged=false]", + "minecraft:prismarine_brick_slab[type=top,waterlogged=true]": "minecraft:brick_slab[type=top,waterlogged=false]", + "minecraft:prismarine_brick_slab[type=top,waterlogged=false]": "minecraft:brick_slab[type=top,waterlogged=false]", + "minecraft:prismarine_brick_slab[type=bottom,waterlogged=true]": "minecraft:brick_slab[type=bottom,waterlogged=false]", + "minecraft:prismarine_brick_slab[type=bottom,waterlogged=false]": "minecraft:brick_slab[type=bottom,waterlogged=false]", + "minecraft:prismarine_brick_slab[type=double,waterlogged=true]": "minecraft:brick_slab[type=double,waterlogged=false]", + "minecraft:prismarine_brick_slab[type=double,waterlogged=false]": "minecraft:brick_slab[type=double,waterlogged=false]", + "minecraft:dark_prismarine_slab[type=top,waterlogged=true]": "minecraft:stone_brick_slab[type=top,waterlogged=false]", + "minecraft:dark_prismarine_slab[type=top,waterlogged=false]": "minecraft:stone_brick_slab[type=top,waterlogged=false]", + "minecraft:dark_prismarine_slab[type=bottom,waterlogged=true]": "minecraft:stone_brick_slab[type=bottom,waterlogged=false]", + "minecraft:dark_prismarine_slab[type=bottom,waterlogged=false]": "minecraft:stone_brick_slab[type=bottom,waterlogged=false]", + "minecraft:dark_prismarine_slab[type=double,waterlogged=true]": "minecraft:stone_brick_slab[type=double,waterlogged=false]", + "minecraft:dark_prismarine_slab[type=double,waterlogged=false]": "minecraft:stone_brick_slab[type=double,waterlogged=false]", + "minecraft:oak_slab[type=top,waterlogged=true]": "minecraft:oak_slab[type=top,waterlogged=false]", + "minecraft:oak_slab[type=bottom,waterlogged=true]": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "minecraft:oak_slab[type=double,waterlogged=true]": "minecraft:oak_slab[type=double,waterlogged=false]", + "minecraft:spruce_slab[type=top,waterlogged=true]": "minecraft:spruce_slab[type=top,waterlogged=false]", + "minecraft:spruce_slab[type=bottom,waterlogged=true]": "minecraft:spruce_slab[type=bottom,waterlogged=false]", + "minecraft:spruce_slab[type=double,waterlogged=true]": "minecraft:spruce_slab[type=double,waterlogged=false]", + "minecraft:birch_slab[type=top,waterlogged=true]": "minecraft:birch_slab[type=top,waterlogged=false]", + "minecraft:birch_slab[type=bottom,waterlogged=true]": "minecraft:birch_slab[type=bottom,waterlogged=false]", + "minecraft:birch_slab[type=double,waterlogged=true]": "minecraft:birch_slab[type=double,waterlogged=false]", + "minecraft:jungle_slab[type=top,waterlogged=true]": "minecraft:jungle_slab[type=top,waterlogged=false]", + "minecraft:jungle_slab[type=bottom,waterlogged=true]": "minecraft:jungle_slab[type=bottom,waterlogged=false]", + "minecraft:jungle_slab[type=double,waterlogged=true]": "minecraft:jungle_slab[type=double,waterlogged=false]", + "minecraft:acacia_slab[type=top,waterlogged=true]": "minecraft:acacia_slab[type=top,waterlogged=false]", + "minecraft:acacia_slab[type=bottom,waterlogged=true]": "minecraft:acacia_slab[type=bottom,waterlogged=false]", + "minecraft:acacia_slab[type=double,waterlogged=true]": "minecraft:acacia_slab[type=double,waterlogged=false]", + "minecraft:dark_oak_slab[type=top,waterlogged=true]": "minecraft:dark_oak_slab[type=top,waterlogged=false]", + "minecraft:dark_oak_slab[type=bottom,waterlogged=true]": "minecraft:dark_oak_slab[type=bottom,waterlogged=false]", + "minecraft:dark_oak_slab[type=double,waterlogged=true]": "minecraft:dark_oak_slab[type=double,waterlogged=false]", + "minecraft:stone_slab[type=top,waterlogged=true]": "minecraft:stone_slab[type=top,waterlogged=false]", + "minecraft:stone_slab[type=bottom,waterlogged=true]": "minecraft:stone_slab[type=bottom,waterlogged=false]", + "minecraft:stone_slab[type=double,waterlogged=true]": "minecraft:stone_slab[type=double,waterlogged=false]", + "minecraft:sandstone_slab[type=top,waterlogged=true]": "minecraft:sandstone_slab[type=top,waterlogged=false]", + "minecraft:sandstone_slab[type=bottom,waterlogged=true]": "minecraft:sandstone_slab[type=bottom,waterlogged=false]", + "minecraft:sandstone_slab[type=double,waterlogged=true]": "minecraft:sandstone_slab[type=double,waterlogged=false]", + "minecraft:petrified_oak_slab[type=top,waterlogged=true]": "minecraft:oak_slab[type=top,waterlogged=false]", + "minecraft:petrified_oak_slab[type=bottom,waterlogged=true]": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "minecraft:petrified_oak_slab[type=double,waterlogged=true]": "minecraft:oak_slab[type=double,waterlogged=false]", + "minecraft:cobblestone_slab[type=top,waterlogged=true]": "minecraft:cobblestone_slab[type=top,waterlogged=false]", + "minecraft:cobblestone_slab[type=bottom,waterlogged=true]": "minecraft:cobblestone_slab[type=bottom,waterlogged=false]", + "minecraft:cobblestone_slab[type=double,waterlogged=true]": "minecraft:cobblestone_slab[type=double,waterlogged=false]", + "minecraft:brick_slab[type=top,waterlogged=true]": "minecraft:brick_slab[type=top,waterlogged=false]", + "minecraft:brick_slab[type=bottom,waterlogged=true]": "minecraft:brick_slab[type=bottom,waterlogged=false]", + "minecraft:brick_slab[type=double,waterlogged=true]": "minecraft:brick_slab[type=double,waterlogged=false]", + "minecraft:stone_brick_slab[type=top,waterlogged=true]": "minecraft:stone_brick_slab[type=top,waterlogged=false]", + "minecraft:stone_brick_slab[type=bottom,waterlogged=true]": "minecraft:stone_brick_slab[type=bottom,waterlogged=false]", + "minecraft:stone_brick_slab[type=double,waterlogged=true]": "minecraft:stone_brick_slab[type=double,waterlogged=false]", + "minecraft:nether_brick_slab[type=top,waterlogged=true]": "minecraft:nether_brick_slab[type=top,waterlogged=false]", + "minecraft:nether_brick_slab[type=bottom,waterlogged=true]": "minecraft:nether_brick_slab[type=bottom,waterlogged=false]", + "minecraft:nether_brick_slab[type=double,waterlogged=true]": "minecraft:nether_brick_slab[type=double,waterlogged=false]", + "minecraft:quartz_slab[type=top,waterlogged=true]": "minecraft:quartz_slab[type=top,waterlogged=false]", + "minecraft:quartz_slab[type=bottom,waterlogged=true]": "minecraft:quartz_slab[type=bottom,waterlogged=false]", + "minecraft:quartz_slab[type=double,waterlogged=true]": "minecraft:quartz_slab[type=double,waterlogged=false]", + "minecraft:red_sandstone_slab[type=top,waterlogged=true]": "minecraft:red_sandstone_slab[type=top,waterlogged=false]", + "minecraft:red_sandstone_slab[type=bottom,waterlogged=true]": "minecraft:red_sandstone_slab[type=bottom,waterlogged=false]", + "minecraft:red_sandstone_slab[type=double,waterlogged=true]": "minecraft:red_sandstone_slab[type=double,waterlogged=false]", + "minecraft:purpur_slab[type=top,waterlogged=true]": "minecraft:purpur_slab[type=top,waterlogged=false]", + "minecraft:purpur_slab[type=bottom,waterlogged=true]": "minecraft:purpur_slab[type=bottom,waterlogged=false]", + "minecraft:purpur_slab[type=double,waterlogged=true]": "minecraft:purpur_slab[type=double,waterlogged=false]", + "minecraft:chorus_plant": "minecraft:chorus_plant[down=false,east=false,north=false,south=false,up=false,west=false]", + "minecraft:shulker_box[facing=north]": "minecraft:magenta_shulker_box[facing=north]", + "minecraft:shulker_box[facing=east]": "minecraft:magenta_shulker_box[facing=east]", + "minecraft:shulker_box[facing=south]": "minecraft:magenta_shulker_box[facing=south]", + "minecraft:shulker_box[facing=west]": "minecraft:magenta_shulker_box[facing=west]", + "minecraft:shulker_box[facing=up]": "minecraft:magenta_shulker_box[facing=up]", + "minecraft:shulker_box[facing=down]": "minecraft:magenta_shulker_box[facing=down]", + "minecraft:dried_kelp_block": "minecraft:hay_block[axis=y]", + "minecraft:dead_tube_coral_block": "minecraft:light_gray_wool", + "minecraft:dead_brain_coral_block": "minecraft:light_gray_wool", + "minecraft:dead_bubble_coral_block": "minecraft:light_gray_wool", + "minecraft:dead_fire_coral_block": "minecraft:light_gray_wool", + "minecraft:dead_horn_coral_block": "minecraft:light_gray_wool", + "minecraft:tube_coral_block": "minecraft:blue_wool", + "minecraft:brain_coral_block": "minecraft:pink_wool", + "minecraft:bubble_coral_block": "minecraft:purple_wool", + "minecraft:fire_coral_block": "minecraft:red_wool", + "minecraft:horn_coral_block": "minecraft:yellow_wool", + "minecraft:tube_coral": "minecraft:grass", + "minecraft:brain_coral": "minecraft:grass", + "minecraft:bubble_coral": "minecraft:grass", + "minecraft:fire_coral": "minecraft:grass", + "minecraft:horn_coral": "minecraft:grass", + "minecraft:dead_tube_coral_wall_fan": "minecraft:dead_bush", + "minecraft:dead_brain_coral_wall_fan": "minecraft:dead_bush", + "minecraft:dead_bubble_coral_wall_fan": "minecraft:dead_bush", + "minecraft:dead_fire_coral_wall_fan": "minecraft:dead_bush", + "minecraft:dead_horn_coral_wall_fan": "minecraft:dead_bush", + "minecraft:tube_coral_wall_fan": "minecraft:fern", + "minecraft:brain_coral_wall_fan": "minecraft:fern", + "minecraft:bubble_coral_wall_fan": "minecraft:fern", + "minecraft:fire_coral_wall_fan": "minecraft:fern", + "minecraft:horn_coral_wall_fan": "minecraft:fern", + "minecraft:dead_tube_coral_fan": "minecraft:dead_bush", + "minecraft:dead_brain_coral_fan": "minecraft:dead_bush", + "minecraft:dead_bubble_coral_fan": "minecraft:dead_bush", + "minecraft:dead_fire_coral_fan": "minecraft:dead_bush", + "minecraft:dead_horn_coral_fan": "minecraft:dead_bush", + "minecraft:tube_coral_fan": "minecraft:fern", + "minecraft:brain_coral_fan": "minecraft:fern", + "minecraft:bubble_coral_fan": "minecraft:fern", + "minecraft:fire_coral_fan": "minecraft:fern", + "minecraft:horn_coral_fan": "minecraft:fern", + "minecraft:blue_ice": "minecraft:packed_ice", + "minecraft:void_air": "minecraft:air", + "minecraft:cave_air": "minecraft:air" + } +} \ No newline at end of file From 688654adcc6d283ca4c412dc525b77a70826201e Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Fri, 18 Jan 2019 11:44:41 +0100 Subject: [PATCH 011/171] remove debug --- .../protocol/protocol1_12_2to1_13/data/BackwardsMappings.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/BackwardsMappings.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/BackwardsMappings.java index fd257d65..42a8be00 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/BackwardsMappings.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/BackwardsMappings.java @@ -64,9 +64,6 @@ public class BackwardsMappings { continue; } } - if (!key.equals(value.getValue().getAsString())) { - ViaBackwards.getPlatform().getLogger().info("Mapping " + key + " -> " + value.getValue()); - } output[Integer.parseInt(entry.getKey())] = Short.parseShort(value.getKey()); } } From fbbce29da7c36e48dec156098b3a10b41d238ee1 Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Fri, 18 Jan 2019 13:33:14 +0100 Subject: [PATCH 012/171] fix some missing mappings --- .../data/mapping-1.12.2to1.13.json | 312 ++++++++++++++---- 1 file changed, 239 insertions(+), 73 deletions(-) diff --git a/core/src/main/resources/assets/viabackwards/data/mapping-1.12.2to1.13.json b/core/src/main/resources/assets/viabackwards/data/mapping-1.12.2to1.13.json index e037d90e..12952249 100644 --- a/core/src/main/resources/assets/viabackwards/data/mapping-1.12.2to1.13.json +++ b/core/src/main/resources/assets/viabackwards/data/mapping-1.12.2to1.13.json @@ -1796,6 +1796,7 @@ "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=north,half=top,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=north,half=top,shape=straight,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", @@ -1805,6 +1806,7 @@ "minecraft:prismarine_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", @@ -1814,6 +1816,7 @@ "minecraft:prismarine_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=south,half=top,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=south,half=top,shape=straight,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", @@ -1823,6 +1826,7 @@ "minecraft:prismarine_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", @@ -1832,6 +1836,7 @@ "minecraft:prismarine_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=west,half=top,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=west,half=top,shape=straight,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", @@ -1841,6 +1846,7 @@ "minecraft:prismarine_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", @@ -1850,6 +1856,7 @@ "minecraft:prismarine_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=east,half=top,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=east,half=top,shape=straight,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", @@ -1859,6 +1866,7 @@ "minecraft:prismarine_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", @@ -1868,6 +1876,7 @@ "minecraft:prismarine_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=north,half=top,shape=straight,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]": "minecraft:brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]": "minecraft:brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", @@ -1877,6 +1886,7 @@ "minecraft:prismarine_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]": "minecraft:brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]": "minecraft:brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", @@ -1886,6 +1896,7 @@ "minecraft:prismarine_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=south,half=top,shape=straight,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]": "minecraft:brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]": "minecraft:brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", @@ -1895,6 +1906,7 @@ "minecraft:prismarine_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]": "minecraft:brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]": "minecraft:brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", @@ -1904,6 +1916,7 @@ "minecraft:prismarine_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=west,half=top,shape=straight,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]": "minecraft:brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]": "minecraft:brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", @@ -1913,6 +1926,7 @@ "minecraft:prismarine_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]": "minecraft:brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]": "minecraft:brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", @@ -1922,6 +1936,7 @@ "minecraft:prismarine_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=east,half=top,shape=straight,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]": "minecraft:brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]": "minecraft:brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", @@ -1931,6 +1946,7 @@ "minecraft:prismarine_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]": "minecraft:brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:prismarine_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]": "minecraft:brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", @@ -1939,78 +1955,86 @@ "minecraft:prismarine_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", "minecraft:prismarine_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=straight,waterlogged=true]": "stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]": "stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]": "stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]": "stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]": "stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]": "stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]": "stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]": "stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]": "stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]": "stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]": "stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]": "stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]": "stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]": "stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]": "stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]": "stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]": "stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]": "stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=straight,waterlogged=true]": "stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]": "stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]": "stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]": "stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]": "stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]": "stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]": "stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]": "stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]": "stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]": "stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]": "stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]": "stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]": "stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]": "stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]": "stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]": "stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]": "stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]": "stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=straight,waterlogged=true]": "stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]": "stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]": "stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]": "stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]": "stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]": "stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]": "stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]": "stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]": "stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]": "stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]": "stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]": "stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]": "stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]": "stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]": "stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]": "stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]": "stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]": "stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=straight,waterlogged=true]": "stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]": "stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]": "stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]": "stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]": "stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]": "stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]": "stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]": "stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]": "stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]": "stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]": "stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]": "stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]": "stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]": "stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]": "stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]": "stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]": "stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", - "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]": "stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", "minecraft:red_sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", "minecraft:red_sandstone_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", "minecraft:red_sandstone_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", @@ -3461,60 +3485,120 @@ "minecraft:oak_button[face=ceiling,facing=west,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", "minecraft:oak_button[face=ceiling,facing=east,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", "minecraft:oak_button[face=ceiling,facing=east,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", + "minecraft:spruce_button[face=floor,facing=north,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", + "minecraft:spruce_button[face=floor,facing=north,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", "minecraft:spruce_button[face=floor,facing=south,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", "minecraft:spruce_button[face=floor,facing=south,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", "minecraft:spruce_button[face=floor,facing=west,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", "minecraft:spruce_button[face=floor,facing=west,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", "minecraft:spruce_button[face=floor,facing=east,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", "minecraft:spruce_button[face=floor,facing=east,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", + "minecraft:spruce_button[face=wall,facing=north,powered=true]": "minecraft:oak_button[face=wall,facing=north,powered=true]", + "minecraft:spruce_button[face=wall,facing=north,powered=false]": "minecraft:oak_button[face=wall,facing=north,powered=false]", + "minecraft:spruce_button[face=wall,facing=south,powered=true]": "minecraft:oak_button[face=wall,facing=south,powered=true]", + "minecraft:spruce_button[face=wall,facing=south,powered=false]": "minecraft:oak_button[face=wall,facing=south,powered=false]", + "minecraft:spruce_button[face=wall,facing=west,powered=true]": "minecraft:oak_button[face=wall,facing=west,powered=true]", + "minecraft:spruce_button[face=wall,facing=west,powered=false]": "minecraft:oak_button[face=wall,facing=west,powered=false]", + "minecraft:spruce_button[face=wall,facing=east,powered=true]": "minecraft:oak_button[face=wall,facing=east,powered=true]", + "minecraft:spruce_button[face=wall,facing=east,powered=false]": "minecraft:oak_button[face=wall,facing=east,powered=false]", + "minecraft:spruce_button[face=ceiling,facing=north,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", + "minecraft:spruce_button[face=ceiling,facing=north,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", "minecraft:spruce_button[face=ceiling,facing=south,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", "minecraft:spruce_button[face=ceiling,facing=south,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", "minecraft:spruce_button[face=ceiling,facing=west,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", "minecraft:spruce_button[face=ceiling,facing=west,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", "minecraft:spruce_button[face=ceiling,facing=east,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", "minecraft:spruce_button[face=ceiling,facing=east,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", + "minecraft:birch_button[face=floor,facing=north,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", + "minecraft:birch_button[face=floor,facing=north,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", "minecraft:birch_button[face=floor,facing=south,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", "minecraft:birch_button[face=floor,facing=south,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", "minecraft:birch_button[face=floor,facing=west,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", "minecraft:birch_button[face=floor,facing=west,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", "minecraft:birch_button[face=floor,facing=east,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", "minecraft:birch_button[face=floor,facing=east,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", + "minecraft:birch_button[face=wall,facing=north,powered=true]": "minecraft:oak_button[face=wall,facing=north,powered=true]", + "minecraft:birch_button[face=wall,facing=north,powered=false]": "minecraft:oak_button[face=wall,facing=north,powered=false]", + "minecraft:birch_button[face=wall,facing=south,powered=true]": "minecraft:oak_button[face=wall,facing=south,powered=true]", + "minecraft:birch_button[face=wall,facing=south,powered=false]": "minecraft:oak_button[face=wall,facing=south,powered=false]", + "minecraft:birch_button[face=wall,facing=west,powered=true]": "minecraft:oak_button[face=wall,facing=west,powered=true]", + "minecraft:birch_button[face=wall,facing=west,powered=false]": "minecraft:oak_button[face=wall,facing=west,powered=false]", + "minecraft:birch_button[face=wall,facing=east,powered=true]": "minecraft:oak_button[face=wall,facing=east,powered=true]", + "minecraft:birch_button[face=wall,facing=east,powered=false]": "minecraft:oak_button[face=wall,facing=east,powered=false]", + "minecraft:birch_button[face=ceiling,facing=north,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", + "minecraft:birch_button[face=ceiling,facing=north,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", "minecraft:birch_button[face=ceiling,facing=south,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", "minecraft:birch_button[face=ceiling,facing=south,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", "minecraft:birch_button[face=ceiling,facing=west,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", "minecraft:birch_button[face=ceiling,facing=west,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", "minecraft:birch_button[face=ceiling,facing=east,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", "minecraft:birch_button[face=ceiling,facing=east,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", + "minecraft:jungle_button[face=floor,facing=north,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", + "minecraft:jungle_button[face=floor,facing=north,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", "minecraft:jungle_button[face=floor,facing=south,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", "minecraft:jungle_button[face=floor,facing=south,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", "minecraft:jungle_button[face=floor,facing=west,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", "minecraft:jungle_button[face=floor,facing=west,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", "minecraft:jungle_button[face=floor,facing=east,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", "minecraft:jungle_button[face=floor,facing=east,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", + "minecraft:jungle_button[face=wall,facing=north,powered=true]": "minecraft:oak_button[face=wall,facing=north,powered=true]", + "minecraft:jungle_button[face=wall,facing=north,powered=false]": "minecraft:oak_button[face=wall,facing=north,powered=false]", + "minecraft:jungle_button[face=wall,facing=south,powered=true]": "minecraft:oak_button[face=wall,facing=south,powered=true]", + "minecraft:jungle_button[face=wall,facing=south,powered=false]": "minecraft:oak_button[face=wall,facing=south,powered=false]", + "minecraft:jungle_button[face=wall,facing=west,powered=true]": "minecraft:oak_button[face=wall,facing=west,powered=true]", + "minecraft:jungle_button[face=wall,facing=west,powered=false]": "minecraft:oak_button[face=wall,facing=west,powered=false]", + "minecraft:jungle_button[face=wall,facing=east,powered=true]": "minecraft:oak_button[face=wall,facing=east,powered=true]", + "minecraft:jungle_button[face=wall,facing=east,powered=false]": "minecraft:oak_button[face=wall,facing=east,powered=false]", + "minecraft:jungle_button[face=ceiling,facing=north,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", + "minecraft:jungle_button[face=ceiling,facing=north,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", "minecraft:jungle_button[face=ceiling,facing=south,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", "minecraft:jungle_button[face=ceiling,facing=south,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", "minecraft:jungle_button[face=ceiling,facing=west,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", "minecraft:jungle_button[face=ceiling,facing=west,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", "minecraft:jungle_button[face=ceiling,facing=east,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", "minecraft:jungle_button[face=ceiling,facing=east,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", + "minecraft:acacia_button[face=floor,facing=north,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", + "minecraft:acacia_button[face=floor,facing=north,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", "minecraft:acacia_button[face=floor,facing=south,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", "minecraft:acacia_button[face=floor,facing=south,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", "minecraft:acacia_button[face=floor,facing=west,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", "minecraft:acacia_button[face=floor,facing=west,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", "minecraft:acacia_button[face=floor,facing=east,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", "minecraft:acacia_button[face=floor,facing=east,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", + "minecraft:acacia_button[face=wall,facing=north,powered=true]": "minecraft:oak_button[face=wall,facing=north,powered=true]", + "minecraft:acacia_button[face=wall,facing=north,powered=false]": "minecraft:oak_button[face=wall,facing=north,powered=false]", + "minecraft:acacia_button[face=wall,facing=south,powered=true]": "minecraft:oak_button[face=wall,facing=south,powered=true]", + "minecraft:acacia_button[face=wall,facing=south,powered=false]": "minecraft:oak_button[face=wall,facing=south,powered=false]", + "minecraft:acacia_button[face=wall,facing=west,powered=true]": "minecraft:oak_button[face=wall,facing=west,powered=true]", + "minecraft:acacia_button[face=wall,facing=west,powered=false]": "minecraft:oak_button[face=wall,facing=west,powered=false]", + "minecraft:acacia_button[face=wall,facing=east,powered=true]": "minecraft:oak_button[face=wall,facing=east,powered=true]", + "minecraft:acacia_button[face=wall,facing=east,powered=false]": "minecraft:oak_button[face=wall,facing=east,powered=false]", + "minecraft:acacia_button[face=ceiling,facing=north,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", + "minecraft:acacia_button[face=ceiling,facing=north,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", "minecraft:acacia_button[face=ceiling,facing=south,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", "minecraft:acacia_button[face=ceiling,facing=south,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", "minecraft:acacia_button[face=ceiling,facing=west,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", "minecraft:acacia_button[face=ceiling,facing=west,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", "minecraft:acacia_button[face=ceiling,facing=east,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", "minecraft:acacia_button[face=ceiling,facing=east,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", + "minecraft:dark_oak_button[face=floor,facing=north,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", + "minecraft:dark_oak_button[face=floor,facing=north,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", "minecraft:dark_oak_button[face=floor,facing=south,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", "minecraft:dark_oak_button[face=floor,facing=south,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", "minecraft:dark_oak_button[face=floor,facing=west,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", "minecraft:dark_oak_button[face=floor,facing=west,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", "minecraft:dark_oak_button[face=floor,facing=east,powered=true]": "minecraft:oak_button[face=floor,facing=north,powered=true]", "minecraft:dark_oak_button[face=floor,facing=east,powered=false]": "minecraft:oak_button[face=floor,facing=north,powered=false]", + "minecraft:dark_oak_button[face=wall,facing=north,powered=true]": "minecraft:oak_button[face=wall,facing=north,powered=true]", + "minecraft:dark_oak_button[face=wall,facing=north,powered=false]": "minecraft:oak_button[face=wall,facing=north,powered=false]", + "minecraft:dark_oak_button[face=wall,facing=south,powered=true]": "minecraft:oak_button[face=wall,facing=south,powered=true]", + "minecraft:dark_oak_button[face=wall,facing=south,powered=false]": "minecraft:oak_button[face=wall,facing=south,powered=false]", + "minecraft:dark_oak_button[face=wall,facing=west,powered=true]": "minecraft:oak_button[face=wall,facing=west,powered=true]", + "minecraft:dark_oak_button[face=wall,facing=west,powered=false]": "minecraft:oak_button[face=wall,facing=west,powered=false]", + "minecraft:dark_oak_button[face=wall,facing=east,powered=true]": "minecraft:oak_button[face=wall,facing=east,powered=true]", + "minecraft:dark_oak_button[face=wall,facing=east,powered=false]": "minecraft:oak_button[face=wall,facing=east,powered=false]", + "minecraft:dark_oak_button[face=ceiling,facing=north,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", + "minecraft:dark_oak_button[face=ceiling,facing=north,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", "minecraft:dark_oak_button[face=ceiling,facing=south,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", "minecraft:dark_oak_button[face=ceiling,facing=south,powered=false]": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", "minecraft:dark_oak_button[face=ceiling,facing=west,powered=true]": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", @@ -3612,243 +3696,323 @@ "minecraft:spruce_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:spruce_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:spruce_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:birch_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:birch_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:jungle_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:jungle_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:acacia_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:acacia_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", "minecraft:iron_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]": "minecraft:iron_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", "minecraft:iron_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]": "minecraft:iron_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", "minecraft:iron_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true]": "minecraft:iron_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", @@ -4272,6 +4436,8 @@ "minecraft:horn_coral_fan": "minecraft:fern", "minecraft:blue_ice": "minecraft:packed_ice", "minecraft:void_air": "minecraft:air", - "minecraft:cave_air": "minecraft:air" + "minecraft:cave_air": "minecraft:air", + "minecraft:conduit": "minecraft:beacon", + "minecraft:bubble_column": "minecraft:water[level=15]" } } \ No newline at end of file From 99af95e0a8864d3bee41f3f5a9eadad39d5944c2 Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Fri, 18 Jan 2019 13:55:04 +0100 Subject: [PATCH 013/171] mapping for doors --- .../data/mapping-1.12.2to1.13.json | 380 ++++++++++++++++++ 1 file changed, 380 insertions(+) diff --git a/core/src/main/resources/assets/viabackwards/data/mapping-1.12.2to1.13.json b/core/src/main/resources/assets/viabackwards/data/mapping-1.12.2to1.13.json index 12952249..6bca4ff1 100644 --- a/core/src/main/resources/assets/viabackwards/data/mapping-1.12.2to1.13.json +++ b/core/src/main/resources/assets/viabackwards/data/mapping-1.12.2to1.13.json @@ -4398,6 +4398,386 @@ "minecraft:shulker_box[facing=west]": "minecraft:magenta_shulker_box[facing=west]", "minecraft:shulker_box[facing=up]": "minecraft:magenta_shulker_box[facing=up]", "minecraft:shulker_box[facing=down]": "minecraft:magenta_shulker_box[facing=down]", + "minecraft:vine[east=true,north=true,south=true,up=true,west=true]": "minecraft:vine[east=true,north=true,south=true,up=false,west=true]", + "minecraft:vine[east=true,north=true,south=true,up=true,west=false]": "minecraft:vine[east=true,north=true,south=true,up=false,west=false]", + "minecraft:vine[east=true,north=true,south=false,up=true,west=true]": "minecraft:vine[east=true,north=true,south=false,up=false,west=true]", + "minecraft:vine[east=true,north=true,south=false,up=true,west=false]": "minecraft:vine[east=true,north=true,south=false,up=false,west=false]", + "minecraft:vine[east=true,north=false,south=true,up=true,west=true]": "minecraft:vine[east=true,north=false,south=true,up=false,west=true]", + "minecraft:vine[east=true,north=false,south=true,up=true,west=false]": "minecraft:vine[east=true,north=false,south=true,up=false,west=false]", + "minecraft:vine[east=true,north=false,south=false,up=true,west=true]": "minecraft:vine[east=true,north=false,south=false,up=false,west=true]", + "minecraft:vine[east=true,north=false,south=false,up=true,west=false]": "minecraft:vine[east=true,north=false,south=false,up=false,west=false]", + "minecraft:vine[east=false,north=true,south=true,up=true,west=true]": "minecraft:vine[east=false,north=true,south=true,up=false,west=true]", + "minecraft:vine[east=false,north=true,south=true,up=true,west=false]": "minecraft:vine[east=false,north=true,south=true,up=false,west=false]", + "minecraft:vine[east=false,north=true,south=false,up=true,west=true]": "minecraft:vine[east=false,north=true,south=false,up=false,west=true]", + "minecraft:vine[east=false,north=true,south=false,up=true,west=false]": "minecraft:vine[east=false,north=true,south=false,up=false,west=false]", + "minecraft:vine[east=false,north=false,south=true,up=true,west=true]": "minecraft:vine[east=false,north=false,south=true,up=false,west=true]", + "minecraft:vine[east=false,north=false,south=true,up=true,west=false]": "minecraft:vine[east=false,north=false,south=true,up=false,west=false]", + "minecraft:vine[east=false,north=false,south=false,up=true,west=true]": "minecraft:vine[east=false,north=false,south=false,up=false,west=true]", + "minecraft:vine[east=false,north=false,south=false,up=true,west=false]": "minecraft:vine[east=false,north=false,south=false,up=false,west=false]", + "minecraft:oak_door[facing=north,half=upper,hinge=left,open=true,powered=true]": "minecraft:oak_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:oak_door[facing=north,half=upper,hinge=left,open=true,powered=false]": "minecraft:oak_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:oak_door[facing=north,half=upper,hinge=left,open=false,powered=true]": "minecraft:oak_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:oak_door[facing=north,half=upper,hinge=left,open=false,powered=false]": "minecraft:oak_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:oak_door[facing=north,half=upper,hinge=right,open=true,powered=true]": "minecraft:oak_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:oak_door[facing=north,half=upper,hinge=right,open=true,powered=false]": "minecraft:oak_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:oak_door[facing=north,half=upper,hinge=right,open=false,powered=true]": "minecraft:oak_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:oak_door[facing=north,half=upper,hinge=right,open=false,powered=false]": "minecraft:oak_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:oak_door[facing=north,half=lower,hinge=left,open=true,powered=true]": "minecraft:oak_door[facing=north,half=lower,hinge=right,open=true,powered=false]", + "minecraft:oak_door[facing=north,half=lower,hinge=left,open=true,powered=false]": "minecraft:oak_door[facing=north,half=lower,hinge=right,open=true,powered=false]", + "minecraft:oak_door[facing=north,half=lower,hinge=left,open=false,powered=true]": "minecraft:oak_door[facing=north,half=lower,hinge=right,open=false,powered=false]", + "minecraft:oak_door[facing=north,half=lower,hinge=left,open=false,powered=false]": "minecraft:oak_door[facing=north,half=lower,hinge=right,open=false,powered=false]", + "minecraft:oak_door[facing=north,half=lower,hinge=right,open=true,powered=true]": "minecraft:oak_door[facing=north,half=lower,hinge=right,open=true,powered=false]", + "minecraft:oak_door[facing=north,half=lower,hinge=right,open=false,powered=true]": "minecraft:oak_door[facing=north,half=lower,hinge=right,open=false,powered=false]", + "minecraft:oak_door[facing=south,half=upper,hinge=left,open=true,powered=true]": "minecraft:oak_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:oak_door[facing=south,half=upper,hinge=left,open=true,powered=false]": "minecraft:oak_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:oak_door[facing=south,half=upper,hinge=left,open=false,powered=true]": "minecraft:oak_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:oak_door[facing=south,half=upper,hinge=left,open=false,powered=false]": "minecraft:oak_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:oak_door[facing=south,half=upper,hinge=right,open=true,powered=true]": "minecraft:oak_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:oak_door[facing=south,half=upper,hinge=right,open=true,powered=false]": "minecraft:oak_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:oak_door[facing=south,half=upper,hinge=right,open=false,powered=true]": "minecraft:oak_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:oak_door[facing=south,half=upper,hinge=right,open=false,powered=false]": "minecraft:oak_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:oak_door[facing=south,half=lower,hinge=left,open=true,powered=true]": "minecraft:oak_door[facing=south,half=lower,hinge=right,open=true,powered=false]", + "minecraft:oak_door[facing=south,half=lower,hinge=left,open=true,powered=false]": "minecraft:oak_door[facing=south,half=lower,hinge=right,open=true,powered=false]", + "minecraft:oak_door[facing=south,half=lower,hinge=left,open=false,powered=true]": "minecraft:oak_door[facing=south,half=lower,hinge=right,open=false,powered=false]", + "minecraft:oak_door[facing=south,half=lower,hinge=left,open=false,powered=false]": "minecraft:oak_door[facing=south,half=lower,hinge=right,open=false,powered=false]", + "minecraft:oak_door[facing=south,half=lower,hinge=right,open=true,powered=true]": "minecraft:oak_door[facing=south,half=lower,hinge=right,open=true,powered=false]", + "minecraft:oak_door[facing=south,half=lower,hinge=right,open=false,powered=true]": "minecraft:oak_door[facing=south,half=lower,hinge=right,open=false,powered=false]", + "minecraft:oak_door[facing=west,half=upper,hinge=left,open=true,powered=true]": "minecraft:oak_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:oak_door[facing=west,half=upper,hinge=left,open=true,powered=false]": "minecraft:oak_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:oak_door[facing=west,half=upper,hinge=left,open=false,powered=true]": "minecraft:oak_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:oak_door[facing=west,half=upper,hinge=left,open=false,powered=false]": "minecraft:oak_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:oak_door[facing=west,half=upper,hinge=right,open=true,powered=true]": "minecraft:oak_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:oak_door[facing=west,half=upper,hinge=right,open=true,powered=false]": "minecraft:oak_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:oak_door[facing=west,half=upper,hinge=right,open=false,powered=true]": "minecraft:oak_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:oak_door[facing=west,half=upper,hinge=right,open=false,powered=false]": "minecraft:oak_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:oak_door[facing=west,half=lower,hinge=left,open=true,powered=true]": "minecraft:oak_door[facing=west,half=lower,hinge=right,open=true,powered=false]", + "minecraft:oak_door[facing=west,half=lower,hinge=left,open=true,powered=false]": "minecraft:oak_door[facing=west,half=lower,hinge=right,open=true,powered=false]", + "minecraft:oak_door[facing=west,half=lower,hinge=left,open=false,powered=true]": "minecraft:oak_door[facing=west,half=lower,hinge=right,open=false,powered=false]", + "minecraft:oak_door[facing=west,half=lower,hinge=left,open=false,powered=false]": "minecraft:oak_door[facing=west,half=lower,hinge=right,open=false,powered=false]", + "minecraft:oak_door[facing=west,half=lower,hinge=right,open=true,powered=true]": "minecraft:oak_door[facing=west,half=lower,hinge=right,open=true,powered=false]", + "minecraft:oak_door[facing=west,half=lower,hinge=right,open=false,powered=true]": "minecraft:oak_door[facing=west,half=lower,hinge=right,open=false,powered=false]", + "minecraft:oak_door[facing=east,half=upper,hinge=left,open=true,powered=true]": "minecraft:oak_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:oak_door[facing=east,half=upper,hinge=left,open=true,powered=false]": "minecraft:oak_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:oak_door[facing=east,half=upper,hinge=right,open=true,powered=true]": "minecraft:oak_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:oak_door[facing=east,half=upper,hinge=right,open=true,powered=false]": "minecraft:oak_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:oak_door[facing=east,half=lower,hinge=left,open=true,powered=true]": "minecraft:oak_door[facing=east,half=lower,hinge=right,open=true,powered=false]", + "minecraft:oak_door[facing=east,half=lower,hinge=left,open=true,powered=false]": "minecraft:oak_door[facing=east,half=lower,hinge=right,open=true,powered=false]", + "minecraft:oak_door[facing=east,half=lower,hinge=left,open=false,powered=true]": "minecraft:oak_door[facing=east,half=lower,hinge=right,open=false,powered=false]", + "minecraft:oak_door[facing=east,half=lower,hinge=left,open=false,powered=false]": "minecraft:oak_door[facing=east,half=lower,hinge=right,open=false,powered=false]", + "minecraft:oak_door[facing=east,half=lower,hinge=right,open=true,powered=true]": "minecraft:oak_door[facing=east,half=lower,hinge=right,open=true,powered=false]", + "minecraft:oak_door[facing=east,half=lower,hinge=right,open=false,powered=true]": "minecraft:oak_door[facing=east,half=lower,hinge=right,open=false,powered=false]", + "minecraft:iron_door[facing=north,half=upper,hinge=left,open=true,powered=true]": "minecraft:iron_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:iron_door[facing=north,half=upper,hinge=left,open=true,powered=false]": "minecraft:iron_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:iron_door[facing=north,half=upper,hinge=left,open=false,powered=true]": "minecraft:iron_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:iron_door[facing=north,half=upper,hinge=left,open=false,powered=false]": "minecraft:iron_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:iron_door[facing=north,half=upper,hinge=right,open=true,powered=true]": "minecraft:iron_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:iron_door[facing=north,half=upper,hinge=right,open=true,powered=false]": "minecraft:iron_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:iron_door[facing=north,half=upper,hinge=right,open=false,powered=true]": "minecraft:iron_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:iron_door[facing=north,half=upper,hinge=right,open=false,powered=false]": "minecraft:iron_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:iron_door[facing=north,half=lower,hinge=left,open=true,powered=true]": "minecraft:iron_door[facing=north,half=lower,hinge=right,open=true,powered=false]", + "minecraft:iron_door[facing=north,half=lower,hinge=left,open=true,powered=false]": "minecraft:iron_door[facing=north,half=lower,hinge=right,open=true,powered=false]", + "minecraft:iron_door[facing=north,half=lower,hinge=left,open=false,powered=true]": "minecraft:iron_door[facing=north,half=lower,hinge=right,open=false,powered=false]", + "minecraft:iron_door[facing=north,half=lower,hinge=left,open=false,powered=false]": "minecraft:iron_door[facing=north,half=lower,hinge=right,open=false,powered=false]", + "minecraft:iron_door[facing=north,half=lower,hinge=right,open=true,powered=true]": "minecraft:iron_door[facing=north,half=lower,hinge=right,open=true,powered=false]", + "minecraft:iron_door[facing=north,half=lower,hinge=right,open=false,powered=true]": "minecraft:iron_door[facing=north,half=lower,hinge=right,open=false,powered=false]", + "minecraft:iron_door[facing=south,half=upper,hinge=left,open=true,powered=true]": "minecraft:iron_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:iron_door[facing=south,half=upper,hinge=left,open=true,powered=false]": "minecraft:iron_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:iron_door[facing=south,half=upper,hinge=left,open=false,powered=true]": "minecraft:iron_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:iron_door[facing=south,half=upper,hinge=left,open=false,powered=false]": "minecraft:iron_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:iron_door[facing=south,half=upper,hinge=right,open=true,powered=true]": "minecraft:iron_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:iron_door[facing=south,half=upper,hinge=right,open=true,powered=false]": "minecraft:iron_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:iron_door[facing=south,half=upper,hinge=right,open=false,powered=true]": "minecraft:iron_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:iron_door[facing=south,half=upper,hinge=right,open=false,powered=false]": "minecraft:iron_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:iron_door[facing=south,half=lower,hinge=left,open=true,powered=true]": "minecraft:iron_door[facing=south,half=lower,hinge=right,open=true,powered=false]", + "minecraft:iron_door[facing=south,half=lower,hinge=left,open=true,powered=false]": "minecraft:iron_door[facing=south,half=lower,hinge=right,open=true,powered=false]", + "minecraft:iron_door[facing=south,half=lower,hinge=left,open=false,powered=true]": "minecraft:iron_door[facing=south,half=lower,hinge=right,open=false,powered=false]", + "minecraft:iron_door[facing=south,half=lower,hinge=left,open=false,powered=false]": "minecraft:iron_door[facing=south,half=lower,hinge=right,open=false,powered=false]", + "minecraft:iron_door[facing=south,half=lower,hinge=right,open=true,powered=true]": "minecraft:iron_door[facing=south,half=lower,hinge=right,open=true,powered=false]", + "minecraft:iron_door[facing=south,half=lower,hinge=right,open=false,powered=true]": "minecraft:iron_door[facing=south,half=lower,hinge=right,open=false,powered=false]", + "minecraft:iron_door[facing=west,half=upper,hinge=left,open=true,powered=true]": "minecraft:iron_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:iron_door[facing=west,half=upper,hinge=left,open=true,powered=false]": "minecraft:iron_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:iron_door[facing=west,half=upper,hinge=left,open=false,powered=true]": "minecraft:iron_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:iron_door[facing=west,half=upper,hinge=left,open=false,powered=false]": "minecraft:iron_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:iron_door[facing=west,half=upper,hinge=right,open=true,powered=true]": "minecraft:iron_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:iron_door[facing=west,half=upper,hinge=right,open=true,powered=false]": "minecraft:iron_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:iron_door[facing=west,half=upper,hinge=right,open=false,powered=true]": "minecraft:iron_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:iron_door[facing=west,half=upper,hinge=right,open=false,powered=false]": "minecraft:iron_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:iron_door[facing=west,half=lower,hinge=left,open=true,powered=true]": "minecraft:iron_door[facing=west,half=lower,hinge=right,open=true,powered=false]", + "minecraft:iron_door[facing=west,half=lower,hinge=left,open=true,powered=false]": "minecraft:iron_door[facing=west,half=lower,hinge=right,open=true,powered=false]", + "minecraft:iron_door[facing=west,half=lower,hinge=left,open=false,powered=true]": "minecraft:iron_door[facing=west,half=lower,hinge=right,open=false,powered=false]", + "minecraft:iron_door[facing=west,half=lower,hinge=left,open=false,powered=false]": "minecraft:iron_door[facing=west,half=lower,hinge=right,open=false,powered=false]", + "minecraft:iron_door[facing=west,half=lower,hinge=right,open=true,powered=true]": "minecraft:iron_door[facing=west,half=lower,hinge=right,open=true,powered=false]", + "minecraft:iron_door[facing=west,half=lower,hinge=right,open=false,powered=true]": "minecraft:iron_door[facing=west,half=lower,hinge=right,open=false,powered=false]", + "minecraft:iron_door[facing=east,half=upper,hinge=left,open=true,powered=true]": "minecraft:iron_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:iron_door[facing=east,half=upper,hinge=left,open=true,powered=false]": "minecraft:iron_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:iron_door[facing=east,half=upper,hinge=right,open=true,powered=true]": "minecraft:iron_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:iron_door[facing=east,half=upper,hinge=right,open=true,powered=false]": "minecraft:iron_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:iron_door[facing=east,half=lower,hinge=left,open=true,powered=true]": "minecraft:iron_door[facing=east,half=lower,hinge=right,open=true,powered=false]", + "minecraft:iron_door[facing=east,half=lower,hinge=left,open=true,powered=false]": "minecraft:iron_door[facing=east,half=lower,hinge=right,open=true,powered=false]", + "minecraft:iron_door[facing=east,half=lower,hinge=left,open=false,powered=true]": "minecraft:iron_door[facing=east,half=lower,hinge=right,open=false,powered=false]", + "minecraft:iron_door[facing=east,half=lower,hinge=left,open=false,powered=false]": "minecraft:iron_door[facing=east,half=lower,hinge=right,open=false,powered=false]", + "minecraft:iron_door[facing=east,half=lower,hinge=right,open=true,powered=true]": "minecraft:iron_door[facing=east,half=lower,hinge=right,open=true,powered=false]", + "minecraft:iron_door[facing=east,half=lower,hinge=right,open=false,powered=true]": "minecraft:iron_door[facing=east,half=lower,hinge=right,open=false,powered=false]", + "minecraft:spruce_door[facing=north,half=upper,hinge=left,open=true,powered=true]": "minecraft:spruce_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:spruce_door[facing=north,half=upper,hinge=left,open=true,powered=false]": "minecraft:spruce_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:spruce_door[facing=north,half=upper,hinge=left,open=false,powered=true]": "minecraft:spruce_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:spruce_door[facing=north,half=upper,hinge=left,open=false,powered=false]": "minecraft:spruce_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:spruce_door[facing=north,half=upper,hinge=right,open=true,powered=true]": "minecraft:spruce_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:spruce_door[facing=north,half=upper,hinge=right,open=true,powered=false]": "minecraft:spruce_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:spruce_door[facing=north,half=upper,hinge=right,open=false,powered=true]": "minecraft:spruce_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:spruce_door[facing=north,half=upper,hinge=right,open=false,powered=false]": "minecraft:spruce_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:spruce_door[facing=north,half=lower,hinge=left,open=true,powered=true]": "minecraft:spruce_door[facing=north,half=lower,hinge=right,open=true,powered=false]", + "minecraft:spruce_door[facing=north,half=lower,hinge=left,open=true,powered=false]": "minecraft:spruce_door[facing=north,half=lower,hinge=right,open=true,powered=false]", + "minecraft:spruce_door[facing=north,half=lower,hinge=left,open=false,powered=true]": "minecraft:spruce_door[facing=north,half=lower,hinge=right,open=false,powered=false]", + "minecraft:spruce_door[facing=north,half=lower,hinge=left,open=false,powered=false]": "minecraft:spruce_door[facing=north,half=lower,hinge=right,open=false,powered=false]", + "minecraft:spruce_door[facing=north,half=lower,hinge=right,open=true,powered=true]": "minecraft:spruce_door[facing=north,half=lower,hinge=right,open=true,powered=false]", + "minecraft:spruce_door[facing=north,half=lower,hinge=right,open=false,powered=true]": "minecraft:spruce_door[facing=north,half=lower,hinge=right,open=false,powered=false]", + "minecraft:spruce_door[facing=south,half=upper,hinge=left,open=true,powered=true]": "minecraft:spruce_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:spruce_door[facing=south,half=upper,hinge=left,open=true,powered=false]": "minecraft:spruce_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:spruce_door[facing=south,half=upper,hinge=left,open=false,powered=true]": "minecraft:spruce_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:spruce_door[facing=south,half=upper,hinge=left,open=false,powered=false]": "minecraft:spruce_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:spruce_door[facing=south,half=upper,hinge=right,open=true,powered=true]": "minecraft:spruce_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:spruce_door[facing=south,half=upper,hinge=right,open=true,powered=false]": "minecraft:spruce_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:spruce_door[facing=south,half=upper,hinge=right,open=false,powered=true]": "minecraft:spruce_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:spruce_door[facing=south,half=upper,hinge=right,open=false,powered=false]": "minecraft:spruce_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:spruce_door[facing=south,half=lower,hinge=left,open=true,powered=true]": "minecraft:spruce_door[facing=south,half=lower,hinge=right,open=true,powered=false]", + "minecraft:spruce_door[facing=south,half=lower,hinge=left,open=true,powered=false]": "minecraft:spruce_door[facing=south,half=lower,hinge=right,open=true,powered=false]", + "minecraft:spruce_door[facing=south,half=lower,hinge=left,open=false,powered=true]": "minecraft:spruce_door[facing=south,half=lower,hinge=right,open=false,powered=false]", + "minecraft:spruce_door[facing=south,half=lower,hinge=left,open=false,powered=false]": "minecraft:spruce_door[facing=south,half=lower,hinge=right,open=false,powered=false]", + "minecraft:spruce_door[facing=south,half=lower,hinge=right,open=true,powered=true]": "minecraft:spruce_door[facing=south,half=lower,hinge=right,open=true,powered=false]", + "minecraft:spruce_door[facing=south,half=lower,hinge=right,open=false,powered=true]": "minecraft:spruce_door[facing=south,half=lower,hinge=right,open=false,powered=false]", + "minecraft:spruce_door[facing=west,half=upper,hinge=left,open=true,powered=true]": "minecraft:spruce_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:spruce_door[facing=west,half=upper,hinge=left,open=true,powered=false]": "minecraft:spruce_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:spruce_door[facing=west,half=upper,hinge=left,open=false,powered=true]": "minecraft:spruce_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:spruce_door[facing=west,half=upper,hinge=left,open=false,powered=false]": "minecraft:spruce_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:spruce_door[facing=west,half=upper,hinge=right,open=true,powered=true]": "minecraft:spruce_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:spruce_door[facing=west,half=upper,hinge=right,open=true,powered=false]": "minecraft:spruce_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:spruce_door[facing=west,half=upper,hinge=right,open=false,powered=true]": "minecraft:spruce_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:spruce_door[facing=west,half=upper,hinge=right,open=false,powered=false]": "minecraft:spruce_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:spruce_door[facing=west,half=lower,hinge=left,open=true,powered=true]": "minecraft:spruce_door[facing=west,half=lower,hinge=right,open=true,powered=false]", + "minecraft:spruce_door[facing=west,half=lower,hinge=left,open=true,powered=false]": "minecraft:spruce_door[facing=west,half=lower,hinge=right,open=true,powered=false]", + "minecraft:spruce_door[facing=west,half=lower,hinge=left,open=false,powered=true]": "minecraft:spruce_door[facing=west,half=lower,hinge=right,open=false,powered=false]", + "minecraft:spruce_door[facing=west,half=lower,hinge=left,open=false,powered=false]": "minecraft:spruce_door[facing=west,half=lower,hinge=right,open=false,powered=false]", + "minecraft:spruce_door[facing=west,half=lower,hinge=right,open=true,powered=true]": "minecraft:spruce_door[facing=west,half=lower,hinge=right,open=true,powered=false]", + "minecraft:spruce_door[facing=west,half=lower,hinge=right,open=false,powered=true]": "minecraft:spruce_door[facing=west,half=lower,hinge=right,open=false,powered=false]", + "minecraft:spruce_door[facing=east,half=upper,hinge=left,open=true,powered=true]": "minecraft:spruce_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:spruce_door[facing=east,half=upper,hinge=left,open=true,powered=false]": "minecraft:spruce_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:spruce_door[facing=east,half=upper,hinge=right,open=true,powered=true]": "minecraft:spruce_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:spruce_door[facing=east,half=upper,hinge=right,open=true,powered=false]": "minecraft:spruce_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:spruce_door[facing=east,half=lower,hinge=left,open=true,powered=true]": "minecraft:spruce_door[facing=east,half=lower,hinge=right,open=true,powered=false]", + "minecraft:spruce_door[facing=east,half=lower,hinge=left,open=true,powered=false]": "minecraft:spruce_door[facing=east,half=lower,hinge=right,open=true,powered=false]", + "minecraft:spruce_door[facing=east,half=lower,hinge=left,open=false,powered=true]": "minecraft:spruce_door[facing=east,half=lower,hinge=right,open=false,powered=false]", + "minecraft:spruce_door[facing=east,half=lower,hinge=left,open=false,powered=false]": "minecraft:spruce_door[facing=east,half=lower,hinge=right,open=false,powered=false]", + "minecraft:spruce_door[facing=east,half=lower,hinge=right,open=true,powered=true]": "minecraft:spruce_door[facing=east,half=lower,hinge=right,open=true,powered=false]", + "minecraft:spruce_door[facing=east,half=lower,hinge=right,open=false,powered=true]": "minecraft:spruce_door[facing=east,half=lower,hinge=right,open=false,powered=false]", + "minecraft:birch_door[facing=north,half=upper,hinge=left,open=true,powered=true]": "minecraft:birch_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:birch_door[facing=north,half=upper,hinge=left,open=true,powered=false]": "minecraft:birch_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:birch_door[facing=north,half=upper,hinge=left,open=false,powered=true]": "minecraft:birch_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:birch_door[facing=north,half=upper,hinge=left,open=false,powered=false]": "minecraft:birch_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:birch_door[facing=north,half=upper,hinge=right,open=true,powered=true]": "minecraft:birch_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:birch_door[facing=north,half=upper,hinge=right,open=true,powered=false]": "minecraft:birch_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:birch_door[facing=north,half=upper,hinge=right,open=false,powered=true]": "minecraft:birch_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:birch_door[facing=north,half=upper,hinge=right,open=false,powered=false]": "minecraft:birch_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:birch_door[facing=north,half=lower,hinge=left,open=true,powered=true]": "minecraft:birch_door[facing=north,half=lower,hinge=right,open=true,powered=false]", + "minecraft:birch_door[facing=north,half=lower,hinge=left,open=true,powered=false]": "minecraft:birch_door[facing=north,half=lower,hinge=right,open=true,powered=false]", + "minecraft:birch_door[facing=north,half=lower,hinge=left,open=false,powered=true]": "minecraft:birch_door[facing=north,half=lower,hinge=right,open=false,powered=false]", + "minecraft:birch_door[facing=north,half=lower,hinge=left,open=false,powered=false]": "minecraft:birch_door[facing=north,half=lower,hinge=right,open=false,powered=false]", + "minecraft:birch_door[facing=north,half=lower,hinge=right,open=true,powered=true]": "minecraft:birch_door[facing=north,half=lower,hinge=right,open=true,powered=false]", + "minecraft:birch_door[facing=north,half=lower,hinge=right,open=false,powered=true]": "minecraft:birch_door[facing=north,half=lower,hinge=right,open=false,powered=false]", + "minecraft:birch_door[facing=south,half=upper,hinge=left,open=true,powered=true]": "minecraft:birch_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:birch_door[facing=south,half=upper,hinge=left,open=true,powered=false]": "minecraft:birch_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:birch_door[facing=south,half=upper,hinge=left,open=false,powered=true]": "minecraft:birch_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:birch_door[facing=south,half=upper,hinge=left,open=false,powered=false]": "minecraft:birch_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:birch_door[facing=south,half=upper,hinge=right,open=true,powered=true]": "minecraft:birch_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:birch_door[facing=south,half=upper,hinge=right,open=true,powered=false]": "minecraft:birch_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:birch_door[facing=south,half=upper,hinge=right,open=false,powered=true]": "minecraft:birch_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:birch_door[facing=south,half=upper,hinge=right,open=false,powered=false]": "minecraft:birch_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:birch_door[facing=south,half=lower,hinge=left,open=true,powered=true]": "minecraft:birch_door[facing=south,half=lower,hinge=right,open=true,powered=false]", + "minecraft:birch_door[facing=south,half=lower,hinge=left,open=true,powered=false]": "minecraft:birch_door[facing=south,half=lower,hinge=right,open=true,powered=false]", + "minecraft:birch_door[facing=south,half=lower,hinge=left,open=false,powered=true]": "minecraft:birch_door[facing=south,half=lower,hinge=right,open=false,powered=false]", + "minecraft:birch_door[facing=south,half=lower,hinge=left,open=false,powered=false]": "minecraft:birch_door[facing=south,half=lower,hinge=right,open=false,powered=false]", + "minecraft:birch_door[facing=south,half=lower,hinge=right,open=true,powered=true]": "minecraft:birch_door[facing=south,half=lower,hinge=right,open=true,powered=false]", + "minecraft:birch_door[facing=south,half=lower,hinge=right,open=false,powered=true]": "minecraft:birch_door[facing=south,half=lower,hinge=right,open=false,powered=false]", + "minecraft:birch_door[facing=west,half=upper,hinge=left,open=true,powered=true]": "minecraft:birch_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:birch_door[facing=west,half=upper,hinge=left,open=true,powered=false]": "minecraft:birch_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:birch_door[facing=west,half=upper,hinge=left,open=false,powered=true]": "minecraft:birch_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:birch_door[facing=west,half=upper,hinge=left,open=false,powered=false]": "minecraft:birch_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:birch_door[facing=west,half=upper,hinge=right,open=true,powered=true]": "minecraft:birch_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:birch_door[facing=west,half=upper,hinge=right,open=true,powered=false]": "minecraft:birch_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:birch_door[facing=west,half=upper,hinge=right,open=false,powered=true]": "minecraft:birch_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:birch_door[facing=west,half=upper,hinge=right,open=false,powered=false]": "minecraft:birch_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:birch_door[facing=west,half=lower,hinge=left,open=true,powered=true]": "minecraft:birch_door[facing=west,half=lower,hinge=right,open=true,powered=false]", + "minecraft:birch_door[facing=west,half=lower,hinge=left,open=true,powered=false]": "minecraft:birch_door[facing=west,half=lower,hinge=right,open=true,powered=false]", + "minecraft:birch_door[facing=west,half=lower,hinge=left,open=false,powered=true]": "minecraft:birch_door[facing=west,half=lower,hinge=right,open=false,powered=false]", + "minecraft:birch_door[facing=west,half=lower,hinge=left,open=false,powered=false]": "minecraft:birch_door[facing=west,half=lower,hinge=right,open=false,powered=false]", + "minecraft:birch_door[facing=west,half=lower,hinge=right,open=true,powered=true]": "minecraft:birch_door[facing=west,half=lower,hinge=right,open=true,powered=false]", + "minecraft:birch_door[facing=west,half=lower,hinge=right,open=false,powered=true]": "minecraft:birch_door[facing=west,half=lower,hinge=right,open=false,powered=false]", + "minecraft:birch_door[facing=east,half=upper,hinge=left,open=true,powered=true]": "minecraft:birch_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:birch_door[facing=east,half=upper,hinge=left,open=true,powered=false]": "minecraft:birch_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:birch_door[facing=east,half=upper,hinge=right,open=true,powered=true]": "minecraft:birch_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:birch_door[facing=east,half=upper,hinge=right,open=true,powered=false]": "minecraft:birch_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:birch_door[facing=east,half=lower,hinge=left,open=true,powered=true]": "minecraft:birch_door[facing=east,half=lower,hinge=right,open=true,powered=false]", + "minecraft:birch_door[facing=east,half=lower,hinge=left,open=true,powered=false]": "minecraft:birch_door[facing=east,half=lower,hinge=right,open=true,powered=false]", + "minecraft:birch_door[facing=east,half=lower,hinge=left,open=false,powered=true]": "minecraft:birch_door[facing=east,half=lower,hinge=right,open=false,powered=false]", + "minecraft:birch_door[facing=east,half=lower,hinge=left,open=false,powered=false]": "minecraft:birch_door[facing=east,half=lower,hinge=right,open=false,powered=false]", + "minecraft:birch_door[facing=east,half=lower,hinge=right,open=true,powered=true]": "minecraft:birch_door[facing=east,half=lower,hinge=right,open=true,powered=false]", + "minecraft:birch_door[facing=east,half=lower,hinge=right,open=false,powered=true]": "minecraft:birch_door[facing=east,half=lower,hinge=right,open=false,powered=false]", + "minecraft:jungle_door[facing=north,half=upper,hinge=left,open=true,powered=true]": "minecraft:jungle_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:jungle_door[facing=north,half=upper,hinge=left,open=true,powered=false]": "minecraft:jungle_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:jungle_door[facing=north,half=upper,hinge=left,open=false,powered=true]": "minecraft:jungle_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:jungle_door[facing=north,half=upper,hinge=left,open=false,powered=false]": "minecraft:jungle_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:jungle_door[facing=north,half=upper,hinge=right,open=true,powered=true]": "minecraft:jungle_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:jungle_door[facing=north,half=upper,hinge=right,open=true,powered=false]": "minecraft:jungle_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:jungle_door[facing=north,half=upper,hinge=right,open=false,powered=true]": "minecraft:jungle_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:jungle_door[facing=north,half=upper,hinge=right,open=false,powered=false]": "minecraft:jungle_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:jungle_door[facing=north,half=lower,hinge=left,open=true,powered=true]": "minecraft:jungle_door[facing=north,half=lower,hinge=right,open=true,powered=false]", + "minecraft:jungle_door[facing=north,half=lower,hinge=left,open=true,powered=false]": "minecraft:jungle_door[facing=north,half=lower,hinge=right,open=true,powered=false]", + "minecraft:jungle_door[facing=north,half=lower,hinge=left,open=false,powered=true]": "minecraft:jungle_door[facing=north,half=lower,hinge=right,open=false,powered=false]", + "minecraft:jungle_door[facing=north,half=lower,hinge=left,open=false,powered=false]": "minecraft:jungle_door[facing=north,half=lower,hinge=right,open=false,powered=false]", + "minecraft:jungle_door[facing=north,half=lower,hinge=right,open=true,powered=true]": "minecraft:jungle_door[facing=north,half=lower,hinge=right,open=true,powered=false]", + "minecraft:jungle_door[facing=north,half=lower,hinge=right,open=false,powered=true]": "minecraft:jungle_door[facing=north,half=lower,hinge=right,open=false,powered=false]", + "minecraft:jungle_door[facing=south,half=upper,hinge=left,open=true,powered=true]": "minecraft:jungle_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:jungle_door[facing=south,half=upper,hinge=left,open=true,powered=false]": "minecraft:jungle_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:jungle_door[facing=south,half=upper,hinge=left,open=false,powered=true]": "minecraft:jungle_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:jungle_door[facing=south,half=upper,hinge=left,open=false,powered=false]": "minecraft:jungle_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:jungle_door[facing=south,half=upper,hinge=right,open=true,powered=true]": "minecraft:jungle_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:jungle_door[facing=south,half=upper,hinge=right,open=true,powered=false]": "minecraft:jungle_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:jungle_door[facing=south,half=upper,hinge=right,open=false,powered=true]": "minecraft:jungle_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:jungle_door[facing=south,half=upper,hinge=right,open=false,powered=false]": "minecraft:jungle_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:jungle_door[facing=south,half=lower,hinge=left,open=true,powered=true]": "minecraft:jungle_door[facing=south,half=lower,hinge=right,open=true,powered=false]", + "minecraft:jungle_door[facing=south,half=lower,hinge=left,open=true,powered=false]": "minecraft:jungle_door[facing=south,half=lower,hinge=right,open=true,powered=false]", + "minecraft:jungle_door[facing=south,half=lower,hinge=left,open=false,powered=true]": "minecraft:jungle_door[facing=south,half=lower,hinge=right,open=false,powered=false]", + "minecraft:jungle_door[facing=south,half=lower,hinge=left,open=false,powered=false]": "minecraft:jungle_door[facing=south,half=lower,hinge=right,open=false,powered=false]", + "minecraft:jungle_door[facing=south,half=lower,hinge=right,open=true,powered=true]": "minecraft:jungle_door[facing=south,half=lower,hinge=right,open=true,powered=false]", + "minecraft:jungle_door[facing=south,half=lower,hinge=right,open=false,powered=true]": "minecraft:jungle_door[facing=south,half=lower,hinge=right,open=false,powered=false]", + "minecraft:jungle_door[facing=west,half=upper,hinge=left,open=true,powered=true]": "minecraft:jungle_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:jungle_door[facing=west,half=upper,hinge=left,open=true,powered=false]": "minecraft:jungle_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:jungle_door[facing=west,half=upper,hinge=left,open=false,powered=true]": "minecraft:jungle_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:jungle_door[facing=west,half=upper,hinge=left,open=false,powered=false]": "minecraft:jungle_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:jungle_door[facing=west,half=upper,hinge=right,open=true,powered=true]": "minecraft:jungle_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:jungle_door[facing=west,half=upper,hinge=right,open=true,powered=false]": "minecraft:jungle_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:jungle_door[facing=west,half=upper,hinge=right,open=false,powered=true]": "minecraft:jungle_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:jungle_door[facing=west,half=upper,hinge=right,open=false,powered=false]": "minecraft:jungle_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:jungle_door[facing=west,half=lower,hinge=left,open=true,powered=true]": "minecraft:jungle_door[facing=west,half=lower,hinge=right,open=true,powered=false]", + "minecraft:jungle_door[facing=west,half=lower,hinge=left,open=true,powered=false]": "minecraft:jungle_door[facing=west,half=lower,hinge=right,open=true,powered=false]", + "minecraft:jungle_door[facing=west,half=lower,hinge=left,open=false,powered=true]": "minecraft:jungle_door[facing=west,half=lower,hinge=right,open=false,powered=false]", + "minecraft:jungle_door[facing=west,half=lower,hinge=left,open=false,powered=false]": "minecraft:jungle_door[facing=west,half=lower,hinge=right,open=false,powered=false]", + "minecraft:jungle_door[facing=west,half=lower,hinge=right,open=true,powered=true]": "minecraft:jungle_door[facing=west,half=lower,hinge=right,open=true,powered=false]", + "minecraft:jungle_door[facing=west,half=lower,hinge=right,open=false,powered=true]": "minecraft:jungle_door[facing=west,half=lower,hinge=right,open=false,powered=false]", + "minecraft:jungle_door[facing=east,half=upper,hinge=left,open=true,powered=true]": "minecraft:jungle_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:jungle_door[facing=east,half=upper,hinge=left,open=true,powered=false]": "minecraft:jungle_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:jungle_door[facing=east,half=upper,hinge=right,open=true,powered=true]": "minecraft:jungle_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:jungle_door[facing=east,half=upper,hinge=right,open=true,powered=false]": "minecraft:jungle_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:jungle_door[facing=east,half=lower,hinge=left,open=true,powered=true]": "minecraft:jungle_door[facing=east,half=lower,hinge=right,open=true,powered=false]", + "minecraft:jungle_door[facing=east,half=lower,hinge=left,open=true,powered=false]": "minecraft:jungle_door[facing=east,half=lower,hinge=right,open=true,powered=false]", + "minecraft:jungle_door[facing=east,half=lower,hinge=left,open=false,powered=true]": "minecraft:jungle_door[facing=east,half=lower,hinge=right,open=false,powered=false]", + "minecraft:jungle_door[facing=east,half=lower,hinge=left,open=false,powered=false]": "minecraft:jungle_door[facing=east,half=lower,hinge=right,open=false,powered=false]", + "minecraft:jungle_door[facing=east,half=lower,hinge=right,open=true,powered=true]": "minecraft:jungle_door[facing=east,half=lower,hinge=right,open=true,powered=false]", + "minecraft:jungle_door[facing=east,half=lower,hinge=right,open=false,powered=true]": "minecraft:jungle_door[facing=east,half=lower,hinge=right,open=false,powered=false]", + "minecraft:acacia_door[facing=north,half=upper,hinge=left,open=true,powered=true]": "minecraft:acacia_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:acacia_door[facing=north,half=upper,hinge=left,open=true,powered=false]": "minecraft:acacia_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:acacia_door[facing=north,half=upper,hinge=left,open=false,powered=true]": "minecraft:acacia_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:acacia_door[facing=north,half=upper,hinge=left,open=false,powered=false]": "minecraft:acacia_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:acacia_door[facing=north,half=upper,hinge=right,open=true,powered=true]": "minecraft:acacia_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:acacia_door[facing=north,half=upper,hinge=right,open=true,powered=false]": "minecraft:acacia_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:acacia_door[facing=north,half=upper,hinge=right,open=false,powered=true]": "minecraft:acacia_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:acacia_door[facing=north,half=upper,hinge=right,open=false,powered=false]": "minecraft:acacia_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:acacia_door[facing=north,half=lower,hinge=left,open=true,powered=true]": "minecraft:acacia_door[facing=north,half=lower,hinge=right,open=true,powered=false]", + "minecraft:acacia_door[facing=north,half=lower,hinge=left,open=true,powered=false]": "minecraft:acacia_door[facing=north,half=lower,hinge=right,open=true,powered=false]", + "minecraft:acacia_door[facing=north,half=lower,hinge=left,open=false,powered=true]": "minecraft:acacia_door[facing=north,half=lower,hinge=right,open=false,powered=false]", + "minecraft:acacia_door[facing=north,half=lower,hinge=left,open=false,powered=false]": "minecraft:acacia_door[facing=north,half=lower,hinge=right,open=false,powered=false]", + "minecraft:acacia_door[facing=north,half=lower,hinge=right,open=true,powered=true]": "minecraft:acacia_door[facing=north,half=lower,hinge=right,open=true,powered=false]", + "minecraft:acacia_door[facing=north,half=lower,hinge=right,open=false,powered=true]": "minecraft:acacia_door[facing=north,half=lower,hinge=right,open=false,powered=false]", + "minecraft:acacia_door[facing=south,half=upper,hinge=left,open=true,powered=true]": "minecraft:acacia_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:acacia_door[facing=south,half=upper,hinge=left,open=true,powered=false]": "minecraft:acacia_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:acacia_door[facing=south,half=upper,hinge=left,open=false,powered=true]": "minecraft:acacia_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:acacia_door[facing=south,half=upper,hinge=left,open=false,powered=false]": "minecraft:acacia_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:acacia_door[facing=south,half=upper,hinge=right,open=true,powered=true]": "minecraft:acacia_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:acacia_door[facing=south,half=upper,hinge=right,open=true,powered=false]": "minecraft:acacia_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:acacia_door[facing=south,half=upper,hinge=right,open=false,powered=true]": "minecraft:acacia_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:acacia_door[facing=south,half=upper,hinge=right,open=false,powered=false]": "minecraft:acacia_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:acacia_door[facing=south,half=lower,hinge=left,open=true,powered=true]": "minecraft:acacia_door[facing=south,half=lower,hinge=right,open=true,powered=false]", + "minecraft:acacia_door[facing=south,half=lower,hinge=left,open=true,powered=false]": "minecraft:acacia_door[facing=south,half=lower,hinge=right,open=true,powered=false]", + "minecraft:acacia_door[facing=south,half=lower,hinge=left,open=false,powered=true]": "minecraft:acacia_door[facing=south,half=lower,hinge=right,open=false,powered=false]", + "minecraft:acacia_door[facing=south,half=lower,hinge=left,open=false,powered=false]": "minecraft:acacia_door[facing=south,half=lower,hinge=right,open=false,powered=false]", + "minecraft:acacia_door[facing=south,half=lower,hinge=right,open=true,powered=true]": "minecraft:acacia_door[facing=south,half=lower,hinge=right,open=true,powered=false]", + "minecraft:acacia_door[facing=south,half=lower,hinge=right,open=false,powered=true]": "minecraft:acacia_door[facing=south,half=lower,hinge=right,open=false,powered=false]", + "minecraft:acacia_door[facing=west,half=upper,hinge=left,open=true,powered=true]": "minecraft:acacia_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:acacia_door[facing=west,half=upper,hinge=left,open=true,powered=false]": "minecraft:acacia_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:acacia_door[facing=west,half=upper,hinge=left,open=false,powered=true]": "minecraft:acacia_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:acacia_door[facing=west,half=upper,hinge=left,open=false,powered=false]": "minecraft:acacia_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:acacia_door[facing=west,half=upper,hinge=right,open=true,powered=true]": "minecraft:acacia_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:acacia_door[facing=west,half=upper,hinge=right,open=true,powered=false]": "minecraft:acacia_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:acacia_door[facing=west,half=upper,hinge=right,open=false,powered=true]": "minecraft:acacia_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:acacia_door[facing=west,half=upper,hinge=right,open=false,powered=false]": "minecraft:acacia_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:acacia_door[facing=west,half=lower,hinge=left,open=true,powered=true]": "minecraft:acacia_door[facing=west,half=lower,hinge=right,open=true,powered=false]", + "minecraft:acacia_door[facing=west,half=lower,hinge=left,open=true,powered=false]": "minecraft:acacia_door[facing=west,half=lower,hinge=right,open=true,powered=false]", + "minecraft:acacia_door[facing=west,half=lower,hinge=left,open=false,powered=true]": "minecraft:acacia_door[facing=west,half=lower,hinge=right,open=false,powered=false]", + "minecraft:acacia_door[facing=west,half=lower,hinge=left,open=false,powered=false]": "minecraft:acacia_door[facing=west,half=lower,hinge=right,open=false,powered=false]", + "minecraft:acacia_door[facing=west,half=lower,hinge=right,open=true,powered=true]": "minecraft:acacia_door[facing=west,half=lower,hinge=right,open=true,powered=false]", + "minecraft:acacia_door[facing=west,half=lower,hinge=right,open=false,powered=true]": "minecraft:acacia_door[facing=west,half=lower,hinge=right,open=false,powered=false]", + "minecraft:acacia_door[facing=east,half=upper,hinge=left,open=true,powered=true]": "minecraft:acacia_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:acacia_door[facing=east,half=upper,hinge=left,open=true,powered=false]": "minecraft:acacia_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:acacia_door[facing=east,half=upper,hinge=right,open=true,powered=true]": "minecraft:acacia_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:acacia_door[facing=east,half=upper,hinge=right,open=true,powered=false]": "minecraft:acacia_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:acacia_door[facing=east,half=lower,hinge=left,open=true,powered=true]": "minecraft:acacia_door[facing=east,half=lower,hinge=right,open=true,powered=false]", + "minecraft:acacia_door[facing=east,half=lower,hinge=left,open=true,powered=false]": "minecraft:acacia_door[facing=east,half=lower,hinge=right,open=true,powered=false]", + "minecraft:acacia_door[facing=east,half=lower,hinge=left,open=false,powered=true]": "minecraft:acacia_door[facing=east,half=lower,hinge=right,open=false,powered=false]", + "minecraft:acacia_door[facing=east,half=lower,hinge=left,open=false,powered=false]": "minecraft:acacia_door[facing=east,half=lower,hinge=right,open=false,powered=false]", + "minecraft:acacia_door[facing=east,half=lower,hinge=right,open=true,powered=true]": "minecraft:acacia_door[facing=east,half=lower,hinge=right,open=true,powered=false]", + "minecraft:acacia_door[facing=east,half=lower,hinge=right,open=false,powered=true]": "minecraft:acacia_door[facing=east,half=lower,hinge=right,open=false,powered=false]", + "minecraft:dark_oak_door[facing=north,half=upper,hinge=left,open=true,powered=true]": "minecraft:dark_oak_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:dark_oak_door[facing=north,half=upper,hinge=left,open=true,powered=false]": "minecraft:dark_oak_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:dark_oak_door[facing=north,half=upper,hinge=left,open=false,powered=true]": "minecraft:dark_oak_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:dark_oak_door[facing=north,half=upper,hinge=left,open=false,powered=false]": "minecraft:dark_oak_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:dark_oak_door[facing=north,half=upper,hinge=right,open=true,powered=true]": "minecraft:dark_oak_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:dark_oak_door[facing=north,half=upper,hinge=right,open=true,powered=false]": "minecraft:dark_oak_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:dark_oak_door[facing=north,half=upper,hinge=right,open=false,powered=true]": "minecraft:dark_oak_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:dark_oak_door[facing=north,half=upper,hinge=right,open=false,powered=false]": "minecraft:dark_oak_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:dark_oak_door[facing=north,half=lower,hinge=left,open=true,powered=true]": "minecraft:dark_oak_door[facing=north,half=lower,hinge=right,open=true,powered=false]", + "minecraft:dark_oak_door[facing=north,half=lower,hinge=left,open=true,powered=false]": "minecraft:dark_oak_door[facing=north,half=lower,hinge=right,open=true,powered=false]", + "minecraft:dark_oak_door[facing=north,half=lower,hinge=left,open=false,powered=true]": "minecraft:dark_oak_door[facing=north,half=lower,hinge=right,open=false,powered=false]", + "minecraft:dark_oak_door[facing=north,half=lower,hinge=left,open=false,powered=false]": "minecraft:dark_oak_door[facing=north,half=lower,hinge=right,open=false,powered=false]", + "minecraft:dark_oak_door[facing=north,half=lower,hinge=right,open=true,powered=true]": "minecraft:dark_oak_door[facing=north,half=lower,hinge=right,open=true,powered=false]", + "minecraft:dark_oak_door[facing=north,half=lower,hinge=right,open=false,powered=true]": "minecraft:dark_oak_door[facing=north,half=lower,hinge=right,open=false,powered=false]", + "minecraft:dark_oak_door[facing=south,half=upper,hinge=left,open=true,powered=true]": "minecraft:dark_oak_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:dark_oak_door[facing=south,half=upper,hinge=left,open=true,powered=false]": "minecraft:dark_oak_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:dark_oak_door[facing=south,half=upper,hinge=left,open=false,powered=true]": "minecraft:dark_oak_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:dark_oak_door[facing=south,half=upper,hinge=left,open=false,powered=false]": "minecraft:dark_oak_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:dark_oak_door[facing=south,half=upper,hinge=right,open=true,powered=true]": "minecraft:dark_oak_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:dark_oak_door[facing=south,half=upper,hinge=right,open=true,powered=false]": "minecraft:dark_oak_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:dark_oak_door[facing=south,half=upper,hinge=right,open=false,powered=true]": "minecraft:dark_oak_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:dark_oak_door[facing=south,half=upper,hinge=right,open=false,powered=false]": "minecraft:dark_oak_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:dark_oak_door[facing=south,half=lower,hinge=left,open=true,powered=true]": "minecraft:dark_oak_door[facing=south,half=lower,hinge=right,open=true,powered=false]", + "minecraft:dark_oak_door[facing=south,half=lower,hinge=left,open=true,powered=false]": "minecraft:dark_oak_door[facing=south,half=lower,hinge=right,open=true,powered=false]", + "minecraft:dark_oak_door[facing=south,half=lower,hinge=left,open=false,powered=true]": "minecraft:dark_oak_door[facing=south,half=lower,hinge=right,open=false,powered=false]", + "minecraft:dark_oak_door[facing=south,half=lower,hinge=left,open=false,powered=false]": "minecraft:dark_oak_door[facing=south,half=lower,hinge=right,open=false,powered=false]", + "minecraft:dark_oak_door[facing=south,half=lower,hinge=right,open=true,powered=true]": "minecraft:dark_oak_door[facing=south,half=lower,hinge=right,open=true,powered=false]", + "minecraft:dark_oak_door[facing=south,half=lower,hinge=right,open=false,powered=true]": "minecraft:dark_oak_door[facing=south,half=lower,hinge=right,open=false,powered=false]", + "minecraft:dark_oak_door[facing=west,half=upper,hinge=left,open=true,powered=true]": "minecraft:dark_oak_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:dark_oak_door[facing=west,half=upper,hinge=left,open=true,powered=false]": "minecraft:dark_oak_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:dark_oak_door[facing=west,half=upper,hinge=left,open=false,powered=true]": "minecraft:dark_oak_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:dark_oak_door[facing=west,half=upper,hinge=left,open=false,powered=false]": "minecraft:dark_oak_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:dark_oak_door[facing=west,half=upper,hinge=right,open=true,powered=true]": "minecraft:dark_oak_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:dark_oak_door[facing=west,half=upper,hinge=right,open=true,powered=false]": "minecraft:dark_oak_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:dark_oak_door[facing=west,half=upper,hinge=right,open=false,powered=true]": "minecraft:dark_oak_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:dark_oak_door[facing=west,half=upper,hinge=right,open=false,powered=false]": "minecraft:dark_oak_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:dark_oak_door[facing=west,half=lower,hinge=left,open=true,powered=true]": "minecraft:dark_oak_door[facing=west,half=lower,hinge=right,open=true,powered=false]", + "minecraft:dark_oak_door[facing=west,half=lower,hinge=left,open=true,powered=false]": "minecraft:dark_oak_door[facing=west,half=lower,hinge=right,open=true,powered=false]", + "minecraft:dark_oak_door[facing=west,half=lower,hinge=left,open=false,powered=true]": "minecraft:dark_oak_door[facing=west,half=lower,hinge=right,open=false,powered=false]", + "minecraft:dark_oak_door[facing=west,half=lower,hinge=left,open=false,powered=false]": "minecraft:dark_oak_door[facing=west,half=lower,hinge=right,open=false,powered=false]", + "minecraft:dark_oak_door[facing=west,half=lower,hinge=right,open=true,powered=true]": "minecraft:dark_oak_door[facing=west,half=lower,hinge=right,open=true,powered=false]", + "minecraft:dark_oak_door[facing=west,half=lower,hinge=right,open=false,powered=true]": "minecraft:dark_oak_door[facing=west,half=lower,hinge=right,open=false,powered=false]", + "minecraft:dark_oak_door[facing=east,half=upper,hinge=left,open=true,powered=true]": "minecraft:dark_oak_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "minecraft:dark_oak_door[facing=east,half=upper,hinge=left,open=true,powered=false]": "minecraft:dark_oak_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "minecraft:dark_oak_door[facing=east,half=upper,hinge=right,open=true,powered=true]": "minecraft:dark_oak_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "minecraft:dark_oak_door[facing=east,half=upper,hinge=right,open=true,powered=false]": "minecraft:dark_oak_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "minecraft:dark_oak_door[facing=east,half=lower,hinge=left,open=true,powered=true]": "minecraft:dark_oak_door[facing=east,half=lower,hinge=right,open=true,powered=false]", + "minecraft:dark_oak_door[facing=east,half=lower,hinge=left,open=true,powered=false]": "minecraft:dark_oak_door[facing=east,half=lower,hinge=right,open=true,powered=false]", + "minecraft:dark_oak_door[facing=east,half=lower,hinge=left,open=false,powered=true]": "minecraft:dark_oak_door[facing=east,half=lower,hinge=right,open=false,powered=false]", + "minecraft:dark_oak_door[facing=east,half=lower,hinge=left,open=false,powered=false]": "minecraft:dark_oak_door[facing=east,half=lower,hinge=right,open=false,powered=false]", + "minecraft:dark_oak_door[facing=east,half=lower,hinge=right,open=true,powered=true]": "minecraft:dark_oak_door[facing=east,half=lower,hinge=right,open=true,powered=false]", + "minecraft:dark_oak_door[facing=east,half=lower,hinge=right,open=false,powered=true]": "minecraft:dark_oak_door[facing=east,half=lower,hinge=right,open=false,powered=false]", "minecraft:dried_kelp_block": "minecraft:hay_block[axis=y]", "minecraft:dead_tube_coral_block": "minecraft:light_gray_wool", "minecraft:dead_brain_coral_block": "minecraft:light_gray_wool", From d6ca3891a170e9bf02ebd7306fa8db2c9f9df683 Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Fri, 18 Jan 2019 14:13:21 +0100 Subject: [PATCH 014/171] lever mapping --- .../assets/viabackwards/data/mapping-1.12.2to1.13.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/core/src/main/resources/assets/viabackwards/data/mapping-1.12.2to1.13.json b/core/src/main/resources/assets/viabackwards/data/mapping-1.12.2to1.13.json index 6bca4ff1..93d4b6e3 100644 --- a/core/src/main/resources/assets/viabackwards/data/mapping-1.12.2to1.13.json +++ b/core/src/main/resources/assets/viabackwards/data/mapping-1.12.2to1.13.json @@ -4778,6 +4778,14 @@ "minecraft:dark_oak_door[facing=east,half=lower,hinge=left,open=false,powered=false]": "minecraft:dark_oak_door[facing=east,half=lower,hinge=right,open=false,powered=false]", "minecraft:dark_oak_door[facing=east,half=lower,hinge=right,open=true,powered=true]": "minecraft:dark_oak_door[facing=east,half=lower,hinge=right,open=true,powered=false]", "minecraft:dark_oak_door[facing=east,half=lower,hinge=right,open=false,powered=true]": "minecraft:dark_oak_door[facing=east,half=lower,hinge=right,open=false,powered=false]", + "minecraft:lever[face=floor,facing=north,powered=true]": "minecraft:lever[face=floor,facing=south,powered=false]", + "minecraft:lever[face=floor,facing=south,powered=true]": "minecraft:lever[face=floor,facing=north,powered=false]", + "minecraft:lever[face=floor,facing=west,powered=true]": "minecraft:lever[face=floor,facing=east,powered=false]", + "minecraft:lever[face=floor,facing=east,powered=true]": "minecraft:lever[face=floor,facing=west,powered=false]", + "minecraft:lever[face=ceiling,facing=north,powered=true]": "minecraft:lever[face=ceiling,facing=south,powered=false]", + "minecraft:lever[face=ceiling,facing=south,powered=true]": "minecraft:lever[face=ceiling,facing=north,powered=false]", + "minecraft:lever[face=ceiling,facing=west,powered=true]": "minecraft:lever[face=ceiling,facing=east,powered=false]", + "minecraft:lever[face=ceiling,facing=east,powered=true]": "minecraft:lever[face=ceiling,facing=west,powered=false]", "minecraft:dried_kelp_block": "minecraft:hay_block[axis=y]", "minecraft:dead_tube_coral_block": "minecraft:light_gray_wool", "minecraft:dead_brain_coral_block": "minecraft:light_gray_wool", From bc0cb10406660228cea9f65d16b0bca4a7e3ae2f Mon Sep 17 00:00:00 2001 From: Matsv Date: Sat, 19 Jan 2019 12:11:11 +0100 Subject: [PATCH 015/171] Handle entity/dimension tracking correctly --- .../Protocol1_12_2To1_13.java | 21 ------ .../packets/EntityPackets1_13.java | 71 ++++++++++++++++++- 2 files changed, 70 insertions(+), 22 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java index 43492ebb..cc14bb23 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java @@ -23,7 +23,6 @@ import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.data.UserConnection; import us.myles.ViaVersion.api.remapper.PacketHandler; import us.myles.ViaVersion.api.remapper.PacketRemapper; -import us.myles.ViaVersion.api.type.Type; import us.myles.ViaVersion.packets.State; import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; @@ -61,23 +60,6 @@ public class Protocol1_12_2To1_13 extends BackwardsProtocol { out(State.PLAY, 0x24, 0x22, cancel()); // Spawn Particle TODO MODIFIED - out(State.PLAY, 0x25, 0x23, new PacketRemapper() { - @Override - public void registerMap() { - map(Type.INT); // 0 - Entity ID - map(Type.UNSIGNED_BYTE); // 1 - Gamemode - map(Type.INT); // 2 - Dimension - - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - ClientWorld clientChunks = wrapper.user().get(ClientWorld.class); - int dimensionId = wrapper.get(Type.INT, 1); - clientChunks.setEnvironment(dimensionId); - } - }); - } - }); // Join Game out(State.PLAY, 0x27, 0x25); // Entity out(State.PLAY, 0x28, 0x26); // Entity Relative Move out(State.PLAY, 0x29, 0x27); // Entity Look And Relative Move @@ -92,17 +74,14 @@ public class Protocol1_12_2To1_13 extends BackwardsProtocol { out(State.PLAY, 0x32, 0x2F); // Player Position And Look (clientbound) out(State.PLAY, 0x33, 0x30); // Use Bed out(State.PLAY, 0x34, 0x31, cancel()); // Unlock Recipes TODO MODIFIED - out(State.PLAY, 0x35, 0x32); // Destroy Entities out(State.PLAY, 0x36, 0x33); // Remove Entity Effect out(State.PLAY, 0x37, 0x34); // Resource Pack Send - out(State.PLAY, 0x38, 0x35); // Respawn out(State.PLAY, 0x39, 0x36); // Entity Head Look out(State.PLAY, 0x3A, 0x37); // Select Advancement Tab out(State.PLAY, 0x3B, 0x38); // World Border out(State.PLAY, 0x3C, 0x39); // Camera out(State.PLAY, 0x3D, 0x3A); // Held Item Change (clientbound) out(State.PLAY, 0x3E, 0x3B); // Display Scoreboard - out(State.PLAY, 0x3F, 0x3C, cancel()); // Entity Metadata out(State.PLAY, 0x40, 0x3D); // Attach Entity out(State.PLAY, 0x41, 0x3E); // Entity Velocity out(State.PLAY, 0x43, 0x40); // Set Experience diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java index a6ea3e25..e677ae57 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java @@ -13,6 +13,7 @@ import us.myles.ViaVersion.api.type.Type; import us.myles.ViaVersion.api.type.types.version.Types1_12; import us.myles.ViaVersion.api.type.types.version.Types1_13; import us.myles.ViaVersion.packets.State; +import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; import java.util.Optional; @@ -133,6 +134,7 @@ public class EntityPackets1_13 extends EntityRewriter { map(Type.SHORT); map(Type.SHORT); map(Types1_13.METADATA_LIST, Types1_12.METADATA_LIST); + handler(new PacketHandler() { @Override public void handle(PacketWrapper wrapper) throws Exception { @@ -219,7 +221,74 @@ public class EntityPackets1_13 extends EntityRewriter { } }); - } + // Join game + protocol.out(State.PLAY, 0x25, 0x23, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // 0 - Entity ID + map(Type.UNSIGNED_BYTE); // 1 - Gamemode + map(Type.INT); // 2 - Dimension + + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + ClientWorld clientChunks = wrapper.user().get(ClientWorld.class); + int dimensionId = wrapper.get(Type.INT, 1); + clientChunks.setEnvironment(dimensionId); + } + }); + } + }); + + + // Respawn Packet (save dimension id) + protocol.registerOutgoing(State.PLAY, 0x38, 0x35, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // 0 - Dimension ID + + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); + int dimensionId = wrapper.get(Type.INT, 0); + clientWorld.setEnvironment(dimensionId); + } + }); + } + }); + + // Destroy Entities Packet + protocol.registerOutgoing(State.PLAY, 0x35, 0x32, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT_ARRAY); // 0 - Entity IDS + + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + for (int entity : wrapper.get(Type.VAR_INT_ARRAY, 0)) + getEntityTracker(wrapper.user()).removeEntity(entity); + } + }); + } + }); + + // Entity Metadata packet + protocol.registerOutgoing(State.PLAY, 0x3F, 0x3C, new PacketRemapper() { + @Override + public void registerMap() { + // TODO HANDLE + + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + wrapper.cancel(); + } + }); + } + }); + } @Override protected void registerRewrites() { From d1d94570e787ac069d4d7c36ac9c1cfd2900c24e Mon Sep 17 00:00:00 2001 From: Matsv Date: Sat, 19 Jan 2019 12:35:30 +0100 Subject: [PATCH 016/171] Handle metadata & entity type rewrite --- .../packets/EntityPackets1_13.java | 67 +++++++++++++++---- 1 file changed, 54 insertions(+), 13 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java index e677ae57..42203310 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java @@ -1,6 +1,9 @@ package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.packets; import nl.matsv.viabackwards.ViaBackwards; +import nl.matsv.viabackwards.api.entities.storage.EntityData; +import nl.matsv.viabackwards.api.entities.storage.MetaStorage; +import nl.matsv.viabackwards.api.entities.types.AbstractEntityType; import nl.matsv.viabackwards.api.entities.types.EntityType1_13; import nl.matsv.viabackwards.api.rewriters.EntityRewriter; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.Protocol1_12_2To1_13; @@ -154,11 +157,36 @@ public class EntityPackets1_13 extends EntityRewriter { } } }); - handler(new PacketHandler() { + + // Handle entity type & metadata + handler(new PacketHandler() { @Override public void handle(PacketWrapper wrapper) throws Exception { - wrapper.get(Types1_12.METADATA_LIST, 0).clear(); //TODO handle metadata - } + int entityId = wrapper.get(Type.VAR_INT, 0); + AbstractEntityType type = getEntityType(wrapper.user(), entityId); + + MetaStorage storage = new MetaStorage(wrapper.get(Types1_12.METADATA_LIST, 0)); + handleMeta( + wrapper.user(), + wrapper.get(Type.VAR_INT, 0), + storage + ); + + Optional optEntDat = getEntityData(type); + if (optEntDat.isPresent()) { + EntityData data = optEntDat.get(); + wrapper.set(Type.VAR_INT, 1, data.getReplacementId()); + if (data.hasBaseMeta()) + data.getDefaultMeta().handle(storage); + } + + // Rewrite Metadata + wrapper.set( + Types1_12.METADATA_LIST, + 0, + storage.getMetaDataList() + ); + } }); } }); @@ -175,7 +203,9 @@ public class EntityPackets1_13 extends EntityRewriter { map(Type.BYTE); map(Type.BYTE); map(Types1_13.METADATA_LIST, Types1_12.METADATA_LIST); - handler(new PacketHandler() { + + // Track Entity + handler(new PacketHandler() { @Override public void handle(PacketWrapper wrapper) throws Exception { addTrackedEntity( @@ -185,13 +215,23 @@ public class EntityPackets1_13 extends EntityRewriter { ); } }); - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - wrapper.get(Types1_12.METADATA_LIST, 0).clear(); //TODO handle metadata - } - }); - } + + // Rewrite Metadata + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + wrapper.set( + Types1_12.METADATA_LIST, + 0, + handleMeta( + wrapper.user(), + wrapper.get(Type.VAR_INT, 0), + new MetaStorage(wrapper.get(Types1_12.METADATA_LIST, 0)) + ).getMetaDataList() + ); + } + }); + } }); //Spawn Painting @@ -292,6 +332,7 @@ public class EntityPackets1_13 extends EntityRewriter { @Override protected void registerRewrites() { - - } + // TODO Remove everything for now + this.registerMetaHandler().removed(); + } } From 3cd91d87a450b503dfd76c0792e1c8c6a29f95cf Mon Sep 17 00:00:00 2001 From: Matsv Date: Sat, 19 Jan 2019 12:50:33 +0100 Subject: [PATCH 017/171] Rewrite meta types --- .../packets/EntityPackets1_13.java | 36 ++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java index 42203310..9eab3679 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java @@ -10,6 +10,8 @@ import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.Protocol1_12_2To1_13; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.data.EntityTypeMapping; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.data.PaintingMapping; import us.myles.ViaVersion.api.PacketWrapper; +import us.myles.ViaVersion.api.minecraft.metadata.Metadata; +import us.myles.ViaVersion.api.minecraft.metadata.types.MetaType1_12; import us.myles.ViaVersion.api.remapper.PacketHandler; import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.api.type.Type; @@ -332,7 +334,39 @@ public class EntityPackets1_13 extends EntityRewriter { @Override protected void registerRewrites() { + + // Rewrite types + this.registerMetaHandler().handle(e -> { + Metadata meta = e.getData(); + int typeId = meta.getMetaType().getTypeID(); + + // Rewrite optional chat to chat + if (typeId == 5) { + meta.setMetaType(MetaType1_12.Chat); + + if (meta.getValue() == null) { + meta.setValue(""); + } + } + + // Discontinue particles + else if (typeId == 15) { + meta.setMetaType(MetaType1_12.Discontinued); + } + + // Rewrite to 1.12 ids + else if (typeId > 5) { + meta.setMetaType(MetaType1_12.byId( + typeId - 1 + )); + } + + return e.getData(); + }); + + // TODO Remove everything for now this.registerMetaHandler().removed(); - } + + } } From 87f217ca37694a96b77529870e81c800f996bbae Mon Sep 17 00:00:00 2001 From: Matsv Date: Sat, 19 Jan 2019 14:04:11 +0100 Subject: [PATCH 018/171] Rewrite entity types --- .../api/entities/types/EntityType1_13.java | 244 +++++++++--------- .../packets/EntityPackets1_13.java | 34 ++- 2 files changed, 149 insertions(+), 129 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/api/entities/types/EntityType1_13.java b/core/src/main/java/nl/matsv/viabackwards/api/entities/types/EntityType1_13.java index a968e7e2..3b7b1a95 100644 --- a/core/src/main/java/nl/matsv/viabackwards/api/entities/types/EntityType1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/api/entities/types/EntityType1_13.java @@ -30,172 +30,174 @@ public class EntityType1_13 { @AllArgsConstructor @Getter public enum EntityType implements AbstractEntityType { - ENTITY(-1), - AREA_EFFECT_CLOUD(0, ENTITY), - ENDER_CRYSTAL(16, ENTITY), - EVOCATION_FANGS(20, ENTITY), - XP_ORB(22, ENTITY), - EYE_OF_ENDER_SIGNAL(23, ENTITY), - FALLING_BLOCK(24, ENTITY), - FIREWORKS_ROCKET(25, ENTITY), - ITEM(32, ENTITY), - LLAMA_SPIT(37, ENTITY), - TNT(55, ENTITY), - SHULKER_BULLET(60, ENTITY), - FISHING_BOBBER(93, ENTITY), - LIVINGENTITY(-1, ENTITY), - ARMOR_STAND(1, LIVINGENTITY), - PLAYER(92, LIVINGENTITY), + ENTITY(-1), // abm - ABSTRACT_INSENTIENT(-1, LIVINGENTITY), - ENDER_DRAGON(17, ABSTRACT_INSENTIENT), + AREA_EFFECT_CLOUD(0, ENTITY), // abk + ENDER_CRYSTAL(16, ENTITY), // aho + EVOCATION_FANGS(20, ENTITY), // ala + XP_ORB(22, ENTITY), // abs + EYE_OF_ENDER_SIGNAL(23, ENTITY), // alb + FALLING_BLOCK(24, ENTITY), // aix + FIREWORKS_ROCKET(25, ENTITY), // alc + ITEM(32, ENTITY), // aiy + LLAMA_SPIT(37, ENTITY), // ale + TNT(55, ENTITY), // aiz + SHULKER_BULLET(60, ENTITY), // alh + FISHING_BOBBER(93, ENTITY), // ais - ABSTRACT_CREATURE(-1, ABSTRACT_INSENTIENT), + LIVINGENTITY(-1, ENTITY), // abv + ARMOR_STAND(1, LIVINGENTITY), // ail + PLAYER(92, LIVINGENTITY), // aks - ABSTRACT_AGEABLE(-1, ABSTRACT_CREATURE), - VILLAGER(79, ABSTRACT_AGEABLE), + ABSTRACT_INSENTIENT(-1, LIVINGENTITY), // abw + ENDER_DRAGON(17, ABSTRACT_INSENTIENT), // ahp + + ABSTRACT_CREATURE(-1, ABSTRACT_INSENTIENT), // acd + + ABSTRACT_AGEABLE(-1, ABSTRACT_CREATURE), // abj + VILLAGER(79, ABSTRACT_AGEABLE), // akn // Animals - ABSTRACT_ANIMAL(-1, ABSTRACT_AGEABLE), - CHICKEN(7, ABSTRACT_ANIMAL), - COW(9, ABSTRACT_ANIMAL), - MOOSHROOM(47, COW), - PIG(51, ABSTRACT_ANIMAL), - POLAR_BEAR(54, ABSTRACT_ANIMAL), - RABBIT(56, ABSTRACT_ANIMAL), - SHEEP(58, ABSTRACT_ANIMAL), - TURTLE(73, ABSTRACT_ANIMAL), + ABSTRACT_ANIMAL(-1, ABSTRACT_AGEABLE), // agd + CHICKEN(7, ABSTRACT_ANIMAL), // age + COW(9, ABSTRACT_ANIMAL), // agg + MOOSHROOM(47, COW), // agi + PIG(51, ABSTRACT_ANIMAL), // agl + POLAR_BEAR(54, ABSTRACT_ANIMAL), // agm + RABBIT(56, ABSTRACT_ANIMAL), // ago + SHEEP(58, ABSTRACT_ANIMAL), // agq + TURTLE(73, ABSTRACT_ANIMAL), // agv - ABSTRACT_TAMEABLE_ANIMAL(-1, ABSTRACT_ANIMAL), - OCELOT(48, ABSTRACT_TAMEABLE_ANIMAL), - WOLF(86, ABSTRACT_TAMEABLE_ANIMAL), + ABSTRACT_TAMEABLE_ANIMAL(-1, ABSTRACT_ANIMAL), // acg + OCELOT(48, ABSTRACT_TAMEABLE_ANIMAL), // agj + WOLF(86, ABSTRACT_TAMEABLE_ANIMAL), // agy - ABSTRACT_PARROT(-1, ABSTRACT_TAMEABLE_ANIMAL), - PARROT(50, ABSTRACT_PARROT), + ABSTRACT_PARROT(-1, ABSTRACT_TAMEABLE_ANIMAL), // agr + PARROT(50, ABSTRACT_PARROT), // agk // Horses - ABSTRACT_HORSE(-1, ABSTRACT_ANIMAL), - CHESTED_HORSE(-1, ABSTRACT_HORSE), - DONKEY(11, CHESTED_HORSE), - MULE(46, CHESTED_HORSE), - LLAMA(36, CHESTED_HORSE), - HORSE(29, ABSTRACT_HORSE), - SKELETON_HORSE(63, ABSTRACT_HORSE), - ZOMBIE_HORSE(88, ABSTRACT_HORSE), + ABSTRACT_HORSE(-1, ABSTRACT_ANIMAL), // aha + CHESTED_HORSE(-1, ABSTRACT_HORSE), // agz + DONKEY(11, CHESTED_HORSE), // ahb + MULE(46, CHESTED_HORSE), // ahf + LLAMA(36, CHESTED_HORSE), // ahe + HORSE(29, ABSTRACT_HORSE), // ahc + SKELETON_HORSE(63, ABSTRACT_HORSE), // ahg + ZOMBIE_HORSE(88, ABSTRACT_HORSE), // ahi // Golem - ABSTRACT_GOLEM(-1, ABSTRACT_CREATURE), - SNOWMAN(66, ABSTRACT_GOLEM), - VILLAGER_GOLEM(80, ABSTRACT_GOLEM), - SHULKER(59, ABSTRACT_GOLEM), + ABSTRACT_GOLEM(-1, ABSTRACT_CREATURE), // agc + SNOWMAN(66, ABSTRACT_GOLEM), // ags + VILLAGER_GOLEM(80, ABSTRACT_GOLEM), // agw + SHULKER(59, ABSTRACT_GOLEM), // ajx // Fish - ABSTRACT_FISHES(-1, ABSTRACT_CREATURE), - COD_MOB(8, ABSTRACT_FISHES), - PUFFER_FISH(52, ABSTRACT_FISHES), - SALMON_MOB(57, ABSTRACT_FISHES), - TROPICAL_FISH(72, ABSTRACT_FISHES), - + ABSTRACT_FISHES(-1, ABSTRACT_CREATURE), // agb + COD_MOB(8, ABSTRACT_FISHES), // agf + PUFFER_FISH(52, ABSTRACT_FISHES), // agn + SALMON_MOB(57, ABSTRACT_FISHES), // agp + TROPICAL_FISH(72, ABSTRACT_FISHES), // agu // Monsters - ABSTRACT_MONSTER(-1, ABSTRACT_CREATURE), - BLAZE(4, ABSTRACT_MONSTER), - CREEPER(10, ABSTRACT_MONSTER), - ENDERMITE(19, ABSTRACT_MONSTER), - ENDERMAN(18, ABSTRACT_MONSTER), - GIANT(27, ABSTRACT_MONSTER), - SILVERFISH(61, ABSTRACT_MONSTER), - VEX(78, ABSTRACT_MONSTER), - WITCH(82, ABSTRACT_MONSTER), - WITHER(83, ABSTRACT_MONSTER), + ABSTRACT_MONSTER(-1, ABSTRACT_CREATURE), // ajs + BLAZE(4, ABSTRACT_MONSTER), // ajd + CREEPER(10, ABSTRACT_MONSTER), // ajf + ENDERMITE(19, ABSTRACT_MONSTER), // ajj + ENDERMAN(18, ABSTRACT_MONSTER), // aji + GIANT(27, ABSTRACT_MONSTER), // ajn + SILVERFISH(61, ABSTRACT_MONSTER), // ajy + VEX(78, ABSTRACT_MONSTER), // ake + WITCH(82, ABSTRACT_MONSTER), // akg + WITHER(83, ABSTRACT_MONSTER), // aij // Illagers - ABSTRACT_ILLAGER_BASE(-1, ABSTRACT_MONSTER), - ABSTRACT_EVO_ILLU_ILLAGER(-1, ABSTRACT_ILLAGER_BASE), - EVOCATION_ILLAGER(21, ABSTRACT_EVO_ILLU_ILLAGER), - ILLUSION_ILLAGER(31, ABSTRACT_EVO_ILLU_ILLAGER), - VINDICATION_ILLAGER(81, ABSTRACT_ILLAGER_BASE), + ABSTRACT_ILLAGER_BASE(-1, ABSTRACT_MONSTER), // ajb + ABSTRACT_EVO_ILLU_ILLAGER(-1, ABSTRACT_ILLAGER_BASE), // akb + EVOCATION_ILLAGER(21, ABSTRACT_EVO_ILLU_ILLAGER), // ajl + ILLUSION_ILLAGER(31, ABSTRACT_EVO_ILLU_ILLAGER), // ajq + VINDICATION_ILLAGER(81, ABSTRACT_ILLAGER_BASE), // akf // Skeletons - ABSTRACT_SKELETON(-1, ABSTRACT_MONSTER), - SKELETON(62, ABSTRACT_SKELETON), - STRAY(71, ABSTRACT_SKELETON), - WITHER_SKELETON(84, ABSTRACT_SKELETON), + ABSTRACT_SKELETON(-1, ABSTRACT_MONSTER), // ajc + SKELETON(62, ABSTRACT_SKELETON), // ajz + STRAY(71, ABSTRACT_SKELETON), // akd + WITHER_SKELETON(84, ABSTRACT_SKELETON), // akh // Guardians - GUARDIAN(28, ABSTRACT_MONSTER), - ELDER_GUARDIAN(15, GUARDIAN), + GUARDIAN(28, ABSTRACT_MONSTER), // ajo + ELDER_GUARDIAN(15, GUARDIAN), // ajh // Spiders - SPIDER(69, ABSTRACT_MONSTER), - CAVE_SPIDER(6, SPIDER), + SPIDER(69, ABSTRACT_MONSTER), // akc + CAVE_SPIDER(6, SPIDER), // aje // Zombies - META CHECKED - ZOMBIE(87, ABSTRACT_MONSTER), - DROWNED(14, ZOMBIE), - HUSK(30, ZOMBIE), - ZOMBIE_PIGMAN(53, ZOMBIE), - ZOMBIE_VILLAGER(89, ZOMBIE), + ZOMBIE(87, ABSTRACT_MONSTER), // aki + DROWNED(14, ZOMBIE), // ajg + HUSK(30, ZOMBIE), // ajp + ZOMBIE_PIGMAN(53, ZOMBIE), // aju + ZOMBIE_VILLAGER(89, ZOMBIE), // akj // Flying entities - ABSTRACT_FLYING(-1, ABSTRACT_INSENTIENT), - GHAST(26, ABSTRACT_FLYING), - PHANTOM(90, ABSTRACT_FLYING), + ABSTRACT_FLYING(-1, ABSTRACT_INSENTIENT), // abt + GHAST(26, ABSTRACT_FLYING), // ajm + PHANTOM(90, ABSTRACT_FLYING), // ajt - ABSTRACT_AMBIENT(-1, ABSTRACT_INSENTIENT), - BAT(3, ABSTRACT_AMBIENT), + ABSTRACT_AMBIENT(-1, ABSTRACT_INSENTIENT), // afy + BAT(3, ABSTRACT_AMBIENT), // afz - ABSTRACT_WATERMOB(-1, ABSTRACT_INSENTIENT), - SQUID(70, ABSTRACT_WATERMOB), + ABSTRACT_WATERMOB(-1, ABSTRACT_INSENTIENT), // agx + SQUID(70, ABSTRACT_WATERMOB), // agt + DOLPHIN(12, ABSTRACT_WATERMOB), // ajq // Slimes - SLIME(64, ABSTRACT_INSENTIENT), - MAGMA_CUBE(38, SLIME), + SLIME(64, ABSTRACT_INSENTIENT), // aka + MAGMA_CUBE(38, SLIME), // ajr // Hangable objects - ABSTRACT_HANGING(-1, ENTITY), - LEASH_KNOT(35, ABSTRACT_HANGING), - ITEM_FRAME(33, ABSTRACT_HANGING), - PAINTING(49, ABSTRACT_HANGING), + ABSTRACT_HANGING(-1, ENTITY), // aim + LEASH_KNOT(35, ABSTRACT_HANGING), // aio + ITEM_FRAME(33, ABSTRACT_HANGING), // ain + PAINTING(49, ABSTRACT_HANGING), // aiq - ABSTRACT_LIGHTNING(-1, ENTITY), - LIGHTNING_BOLT(91, ABSTRACT_LIGHTNING), + ABSTRACT_LIGHTNING(-1, ENTITY), // aiu + LIGHTNING_BOLT(91, ABSTRACT_LIGHTNING), // aiv // Arrows - ABSTRACT_ARROW(-1, ENTITY), - ARROW(2, ABSTRACT_ARROW), - SPECTRAL_ARROW(68, ABSTRACT_ARROW), - TRIDENT(94, ABSTRACT_ARROW), + ABSTRACT_ARROW(-1, ENTITY), // akw + ARROW(2, ABSTRACT_ARROW), // aky + SPECTRAL_ARROW(68, ABSTRACT_ARROW), // alk + TRIDENT(94, ABSTRACT_ARROW), // alq // Fireballs - ABSTRACT_FIREBALL(-1, ENTITY), - DRAGON_FIREBALL(13, ABSTRACT_FIREBALL), - FIREBALL(34, ABSTRACT_FIREBALL), - SMALL_FIREBALL(65, ABSTRACT_FIREBALL), - WITHER_SKULL(85, ABSTRACT_FIREBALL), + ABSTRACT_FIREBALL(-1, ENTITY), // akx + DRAGON_FIREBALL(13, ABSTRACT_FIREBALL), // akz + FIREBALL(34, ABSTRACT_FIREBALL), // ald + SMALL_FIREBALL(65, ABSTRACT_FIREBALL), // ali + WITHER_SKULL(85, ABSTRACT_FIREBALL), // alr // Projectiles - PROJECTILE_ABSTRACT(-1, ENTITY), - SNOWBALL(67, PROJECTILE_ABSTRACT), - ENDER_PEARL(75, PROJECTILE_ABSTRACT), - EGG(74, PROJECTILE_ABSTRACT), - POTION(77, PROJECTILE_ABSTRACT), - XP_BOTTLE(76, PROJECTILE_ABSTRACT), + PROJECTILE_ABSTRACT(-1, ENTITY), // all + SNOWBALL(67, PROJECTILE_ABSTRACT), // alj + ENDER_PEARL(75, PROJECTILE_ABSTRACT), // aln + EGG(74, PROJECTILE_ABSTRACT), // alm + POTION(77, PROJECTILE_ABSTRACT), // alp + XP_BOTTLE(76, PROJECTILE_ABSTRACT), // alo // Vehicles - MINECART_ABSTRACT(-1, ENTITY), - CHESTED_MINECART_ABSTRACT(-1, MINECART_ABSTRACT), - CHEST_MINECART(40, CHESTED_MINECART_ABSTRACT), - HOPPER_MINECART(43, CHESTED_MINECART_ABSTRACT), - MINECART(39, MINECART_ABSTRACT), - FURNACE_MINECART(42, MINECART_ABSTRACT), - COMMANDBLOCK_MINECART(41, MINECART_ABSTRACT), - TNT_MINECART(45, MINECART_ABSTRACT), - SPAWNER_MINECART(44, MINECART_ABSTRACT), - BOAT(5, ENTITY); + MINECART_ABSTRACT(-1, ENTITY), // alt + CHESTED_MINECART_ABSTRACT(-1, MINECART_ABSTRACT), // alu + CHEST_MINECART(40, CHESTED_MINECART_ABSTRACT), // alx + HOPPER_MINECART(43, CHESTED_MINECART_ABSTRACT), // ama + MINECART(39, MINECART_ABSTRACT), // alw + FURNACE_MINECART(42, MINECART_ABSTRACT), // alz + COMMANDBLOCK_MINECART(41, MINECART_ABSTRACT), // aly + TNT_MINECART(45, MINECART_ABSTRACT), // amc + SPAWNER_MINECART(44, MINECART_ABSTRACT), // amb + BOAT(5, ENTITY); // alv private final int id; diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java index 9eab3679..701c4a49 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java @@ -5,6 +5,7 @@ import nl.matsv.viabackwards.api.entities.storage.EntityData; import nl.matsv.viabackwards.api.entities.storage.MetaStorage; import nl.matsv.viabackwards.api.entities.types.AbstractEntityType; import nl.matsv.viabackwards.api.entities.types.EntityType1_13; +import nl.matsv.viabackwards.api.entities.types.EntityType1_13.EntityType; import nl.matsv.viabackwards.api.rewriters.EntityRewriter; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.Protocol1_12_2To1_13; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.data.EntityTypeMapping; @@ -44,7 +45,7 @@ public class EntityPackets1_13 extends EntityRewriter { @Override public void handle(PacketWrapper wrapper) throws Exception { byte type = wrapper.get(Type.BYTE, 0); - EntityType1_13.EntityType entityType = EntityType1_13.getTypeFromId(type, true); + EntityType entityType = EntityType1_13.getTypeFromId(type, true); if (entityType == null) { ViaBackwards.getPlatform().getLogger().warning("Could not find 1.13 entity type " + type); return; @@ -96,7 +97,7 @@ public class EntityPackets1_13 extends EntityRewriter { addTrackedEntity( wrapper.user(), wrapper.get(Type.VAR_INT, 0), - EntityType1_13.EntityType.XP_ORB + EntityType.XP_ORB ); } }); @@ -115,7 +116,7 @@ public class EntityPackets1_13 extends EntityRewriter { addTrackedEntity( wrapper.user(), wrapper.get(Type.VAR_INT, 0), - EntityType1_13.EntityType.LIGHTNING_BOLT + EntityType.LIGHTNING_BOLT ); } }); @@ -144,7 +145,7 @@ public class EntityPackets1_13 extends EntityRewriter { @Override public void handle(PacketWrapper wrapper) throws Exception { int type = wrapper.get(Type.VAR_INT, 1); - EntityType1_13.EntityType entityType = EntityType1_13.getTypeFromId(type, false); + EntityType entityType = EntityType1_13.getTypeFromId(type, false); addTrackedEntity( wrapper.user(), wrapper.get(Type.VAR_INT, 0), @@ -213,7 +214,7 @@ public class EntityPackets1_13 extends EntityRewriter { addTrackedEntity( wrapper.user(), wrapper.get(Type.VAR_INT, 0), - EntityType1_13.EntityType.PLAYER + EntityType.PLAYER ); } }); @@ -248,7 +249,7 @@ public class EntityPackets1_13 extends EntityRewriter { addTrackedEntity( wrapper.user(), wrapper.get(Type.VAR_INT, 0), - EntityType1_13.EntityType.PAINTING + EntityType.PAINTING ); } }); @@ -334,8 +335,26 @@ public class EntityPackets1_13 extends EntityRewriter { @Override protected void registerRewrites() { + // Rewrite new Entity 'drowned' + regEntType(EntityType.DROWNED, EntityType.ZOMBIE_VILLAGER).mobName("Drowned"); - // Rewrite types + // Fishy + regEntType(EntityType.COD_MOB, EntityType.SQUID).mobName("Cod"); + regEntType(EntityType.SALMON_MOB, EntityType.SQUID).mobName("Salmon"); + regEntType(EntityType.PUFFER_FISH, EntityType.SQUID).mobName("Puffer Fish"); + regEntType(EntityType.TROPICAL_FISH, EntityType.SQUID).mobName("Tropical Fish"); + + // Phantom + regEntType(EntityType.PHANTOM, EntityType.PARROT).mobName("Phantom"); + + // Dolphin + regEntType(EntityType.DOLPHIN, EntityType.SQUID).mobName("Dolphin"); + + // Turtle + regEntType(EntityType.TURTLE, EntityType.OCELOT).mobName("Turtle"); + + + // Rewrite Meta types this.registerMetaHandler().handle(e -> { Metadata meta = e.getData(); int typeId = meta.getMetaType().getTypeID(); @@ -364,7 +383,6 @@ public class EntityPackets1_13 extends EntityRewriter { return e.getData(); }); - // TODO Remove everything for now this.registerMetaHandler().removed(); From 842631feef86664aafe64d94ebd67011df9ddb2e Mon Sep 17 00:00:00 2001 From: Matsv Date: Sat, 19 Jan 2019 15:53:31 +0100 Subject: [PATCH 019/171] Rewrite metadata changes en add missing entity track --- .../api/rewriters/EntityRewriter.java | 7 +- .../packets/EntityPackets1_13.java | 528 ++++++++++-------- 2 files changed, 307 insertions(+), 228 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/api/rewriters/EntityRewriter.java b/core/src/main/java/nl/matsv/viabackwards/api/rewriters/EntityRewriter.java index c846e0ab..9236f03f 100644 --- a/core/src/main/java/nl/matsv/viabackwards/api/rewriters/EntityRewriter.java +++ b/core/src/main/java/nl/matsv/viabackwards/api/rewriters/EntityRewriter.java @@ -60,6 +60,10 @@ public abstract class EntityRewriter extends Rewrit getEntityTracker(connection).trackEntityType(entityId, type); } + protected boolean hasData(AbstractEntityType type) { + return entityTypes.containsKey(type); + } + protected Optional getEntityData(AbstractEntityType type) { if (!entityTypes.containsKey(type)) return Optional.empty(); @@ -144,8 +148,9 @@ public abstract class EntityRewriter extends Rewrit EntityData entData = opEd.get(); if (entData.getMobName() != null && (data.getValue() == null || ((String) data.getValue()).isEmpty()) && - data.getMetaType().getTypeID() == getDisplayNameMetaType().getTypeID()) + data.getMetaType().getTypeID() == getDisplayNameMetaType().getTypeID()) { data.setValue(entData.getMobName()); + } } } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java index 701c4a49..8cedbe07 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java @@ -4,6 +4,7 @@ import nl.matsv.viabackwards.ViaBackwards; import nl.matsv.viabackwards.api.entities.storage.EntityData; import nl.matsv.viabackwards.api.entities.storage.MetaStorage; import nl.matsv.viabackwards.api.entities.types.AbstractEntityType; +import nl.matsv.viabackwards.api.entities.types.EntityType1_12; import nl.matsv.viabackwards.api.entities.types.EntityType1_13; import nl.matsv.viabackwards.api.entities.types.EntityType1_13.EntityType; import nl.matsv.viabackwards.api.rewriters.EntityRewriter; @@ -19,152 +20,153 @@ import us.myles.ViaVersion.api.type.Type; import us.myles.ViaVersion.api.type.types.version.Types1_12; import us.myles.ViaVersion.api.type.types.version.Types1_13; import us.myles.ViaVersion.packets.State; +import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.ChatRewriter; import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; import java.util.Optional; public class EntityPackets1_13 extends EntityRewriter { - @Override - protected void registerPackets(Protocol1_12_2To1_13 protocol) { + @Override + protected void registerPackets(Protocol1_12_2To1_13 protocol) { - //Spawn Object - protocol.out(State.PLAY, 0x00, 0x00, new PacketRemapper() { - @Override - public void registerMap() { - map(Type.VAR_INT); - map(Type.UUID); - map(Type.BYTE); - map(Type.DOUBLE); - map(Type.DOUBLE); - map(Type.DOUBLE); - map(Type.BYTE); - map(Type.BYTE); - map(Type.INT); - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - byte type = wrapper.get(Type.BYTE, 0); - EntityType entityType = EntityType1_13.getTypeFromId(type, true); - if (entityType == null) { - ViaBackwards.getPlatform().getLogger().warning("Could not find 1.13 entity type " + type); - return; - } - addTrackedEntity( - wrapper.user(), - wrapper.get(Type.VAR_INT, 0), - entityType - ); - } - }); - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - Optional type = EntityType1_13.ObjectType.findById(wrapper.get(Type.BYTE, 0)); - if (type.isPresent() && type.get() == EntityType1_13.ObjectType.FALLING_BLOCK) { - int blockState = wrapper.get(Type.INT, 0); - int combined = BlockItemPackets1_13.toOldId(blockState); - combined = ((combined >> 4) & 0xFFF) | ((combined & 0xF) << 12); - wrapper.set(Type.INT, 0, combined); - } else if (type.isPresent() && type.get() == EntityType1_13.ObjectType.ITEM_FRAME) { - int data = wrapper.get(Type.INT, 0); - switch (data) { - case 3: - data = 0; - break; - case 4: - data = 1; - break; - case 5: - data = 3; - break; - } - wrapper.set(Type.INT, 0, data); - } - } - }); - } - }); + //Spawn Object + protocol.out(State.PLAY, 0x00, 0x00, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); + map(Type.UUID); + map(Type.BYTE); + map(Type.DOUBLE); + map(Type.DOUBLE); + map(Type.DOUBLE); + map(Type.BYTE); + map(Type.BYTE); + map(Type.INT); + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + byte type = wrapper.get(Type.BYTE, 0); + EntityType entityType = EntityType1_13.getTypeFromId(type, true); + if (entityType == null) { + ViaBackwards.getPlatform().getLogger().warning("Could not find 1.13 entity type " + type); + return; + } + addTrackedEntity( + wrapper.user(), + wrapper.get(Type.VAR_INT, 0), + entityType + ); + } + }); + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + Optional type = EntityType1_13.ObjectType.findById(wrapper.get(Type.BYTE, 0)); + if (type.isPresent() && type.get() == EntityType1_13.ObjectType.FALLING_BLOCK) { + int blockState = wrapper.get(Type.INT, 0); + int combined = BlockItemPackets1_13.toOldId(blockState); + combined = ((combined >> 4) & 0xFFF) | ((combined & 0xF) << 12); + wrapper.set(Type.INT, 0, combined); + } else if (type.isPresent() && type.get() == EntityType1_13.ObjectType.ITEM_FRAME) { + int data = wrapper.get(Type.INT, 0); + switch (data) { + case 3: + data = 0; + break; + case 4: + data = 1; + break; + case 5: + data = 3; + break; + } + wrapper.set(Type.INT, 0, data); + } + } + }); + } + }); - //Spawn Experience Orb - protocol.out(State.PLAY, 0x01, 0x01, new PacketRemapper() { - @Override - public void registerMap() { - map(Type.VAR_INT); - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - addTrackedEntity( - wrapper.user(), - wrapper.get(Type.VAR_INT, 0), - EntityType.XP_ORB - ); - } - }); - } - }); + //Spawn Experience Orb + protocol.out(State.PLAY, 0x01, 0x01, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + addTrackedEntity( + wrapper.user(), + wrapper.get(Type.VAR_INT, 0), + EntityType.XP_ORB + ); + } + }); + } + }); - //Spawn Global Entity - protocol.out(State.PLAY, 0x02, 0x02, new PacketRemapper() { - @Override - public void registerMap() { - map(Type.VAR_INT); - map(Type.BYTE); - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - addTrackedEntity( - wrapper.user(), - wrapper.get(Type.VAR_INT, 0), - EntityType.LIGHTNING_BOLT - ); - } - }); - } - }); + //Spawn Global Entity + protocol.out(State.PLAY, 0x02, 0x02, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); + map(Type.BYTE); + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + addTrackedEntity( + wrapper.user(), + wrapper.get(Type.VAR_INT, 0), + EntityType.LIGHTNING_BOLT + ); + } + }); + } + }); - //Spawn Mob - protocol.out(State.PLAY, 0x03, 0x03, new PacketRemapper() { - @Override - public void registerMap() { - map(Type.VAR_INT); - map(Type.UUID); - map(Type.VAR_INT); - map(Type.DOUBLE); - map(Type.DOUBLE); - map(Type.DOUBLE); - map(Type.BYTE); - map(Type.BYTE); - map(Type.BYTE); - map(Type.SHORT); - map(Type.SHORT); - map(Type.SHORT); - map(Types1_13.METADATA_LIST, Types1_12.METADATA_LIST); + //Spawn Mob + protocol.out(State.PLAY, 0x03, 0x03, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); + map(Type.UUID); + map(Type.VAR_INT); + map(Type.DOUBLE); + map(Type.DOUBLE); + map(Type.DOUBLE); + map(Type.BYTE); + map(Type.BYTE); + map(Type.BYTE); + map(Type.SHORT); + map(Type.SHORT); + map(Type.SHORT); + map(Types1_13.METADATA_LIST, Types1_12.METADATA_LIST); - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - int type = wrapper.get(Type.VAR_INT, 1); - EntityType entityType = EntityType1_13.getTypeFromId(type, false); - addTrackedEntity( - wrapper.user(), - wrapper.get(Type.VAR_INT, 0), - entityType - ); - Optional oldId = EntityTypeMapping.getOldId(type); - if (!oldId.isPresent()) { - ViaBackwards.getPlatform().getLogger().warning("Could not find 1.12 entity type for 1.13 entity type " + type + "/" + entityType); - return; - } else { - wrapper.set(Type.VAR_INT, 1, oldId.get()); - } - } - }); + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + int type = wrapper.get(Type.VAR_INT, 1); + EntityType entityType = EntityType1_13.getTypeFromId(type, false); + addTrackedEntity( + wrapper.user(), + wrapper.get(Type.VAR_INT, 0), + entityType + ); + Optional oldId = EntityTypeMapping.getOldId(type); + if (!oldId.isPresent()) { + if (!hasData(entityType)) + ViaBackwards.getPlatform().getLogger().warning("Could not find 1.12 entity type for 1.13 entity type " + type + "/" + entityType); + } else { + wrapper.set(Type.VAR_INT, 1, oldId.get()); + } + } + }); // Handle entity type & metadata handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { + @Override + public void handle(PacketWrapper wrapper) throws Exception { int entityId = wrapper.get(Type.VAR_INT, 0); AbstractEntityType type = getEntityType(wrapper.user(), entityId); @@ -176,12 +178,16 @@ public class EntityPackets1_13 extends EntityRewriter { ); Optional optEntDat = getEntityData(type); + System.out.println(optEntDat + " OPTENT"); if (optEntDat.isPresent()) { EntityData data = optEntDat.get(); - wrapper.set(Type.VAR_INT, 1, data.getReplacementId()); + + Optional replacementId = EntityTypeMapping.getOldId(data.getReplacementId()); + wrapper.set(Type.VAR_INT, 1, replacementId.orElse(EntityType1_12.EntityType.ZOMBIE.getId())); if (data.hasBaseMeta()) data.getDefaultMeta().handle(storage); } + System.out.println(storage.getMetaDataList()); // Rewrite Metadata wrapper.set( @@ -190,34 +196,34 @@ public class EntityPackets1_13 extends EntityRewriter { storage.getMetaDataList() ); } - }); - } - }); + }); + } + }); - // Spawn Player - protocol.out(State.PLAY, 0x05, 0x05, new PacketRemapper() { - @Override - public void registerMap() { - map(Type.VAR_INT); - map(Type.UUID); - map(Type.DOUBLE); - map(Type.DOUBLE); - map(Type.DOUBLE); - map(Type.BYTE); - map(Type.BYTE); - map(Types1_13.METADATA_LIST, Types1_12.METADATA_LIST); + // Spawn Player + protocol.out(State.PLAY, 0x05, 0x05, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); + map(Type.UUID); + map(Type.DOUBLE); + map(Type.DOUBLE); + map(Type.DOUBLE); + map(Type.BYTE); + map(Type.BYTE); + map(Types1_13.METADATA_LIST, Types1_12.METADATA_LIST); // Track Entity handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - addTrackedEntity( - wrapper.user(), - wrapper.get(Type.VAR_INT, 0), - EntityType.PLAYER - ); - } - }); + @Override + public void handle(PacketWrapper wrapper) throws Exception { + addTrackedEntity( + wrapper.user(), + wrapper.get(Type.VAR_INT, 0), + EntityType.PLAYER + ); + } + }); // Rewrite Metadata handler(new PacketHandler() { @@ -235,34 +241,34 @@ public class EntityPackets1_13 extends EntityRewriter { } }); } - }); + }); - //Spawn Painting - protocol.out(State.PLAY, 0x04, 0x04, new PacketRemapper() { - @Override - public void registerMap() { - map(Type.VAR_INT); - map(Type.UUID); - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - addTrackedEntity( - wrapper.user(), - wrapper.get(Type.VAR_INT, 0), - EntityType.PAINTING - ); - } - }); - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - int motive = wrapper.read(Type.VAR_INT); - String title = PaintingMapping.getStringId(motive); - wrapper.write(Type.STRING, title); - } - }); - } - }); + //Spawn Painting + protocol.out(State.PLAY, 0x04, 0x04, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); + map(Type.UUID); + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + addTrackedEntity( + wrapper.user(), + wrapper.get(Type.VAR_INT, 0), + EntityType.PAINTING + ); + } + }); + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + int motive = wrapper.read(Type.VAR_INT); + String title = PaintingMapping.getStringId(motive); + wrapper.write(Type.STRING, title); + } + }); + } + }); // Join game protocol.out(State.PLAY, 0x25, 0x23, new PacketRemapper() { @@ -272,6 +278,19 @@ public class EntityPackets1_13 extends EntityRewriter { map(Type.UNSIGNED_BYTE); // 1 - Gamemode map(Type.INT); // 2 - Dimension + // Track Entity + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + addTrackedEntity( + wrapper.user(), + wrapper.get(Type.INT, 0), + EntityType1_12.EntityType.PLAYER + ); + } + }); + + // Save dimension handler(new PacketHandler() { @Override public void handle(PacketWrapper wrapper) throws Exception { @@ -321,70 +340,125 @@ public class EntityPackets1_13 extends EntityRewriter { protocol.registerOutgoing(State.PLAY, 0x3F, 0x3C, new PacketRemapper() { @Override public void registerMap() { - // TODO HANDLE + map(Type.VAR_INT); // 0 - Entity ID + map(Types1_13.METADATA_LIST, Types1_12.METADATA_LIST); // 1 - Metadata list handler(new PacketHandler() { @Override public void handle(PacketWrapper wrapper) throws Exception { - wrapper.cancel(); + wrapper.set( + Types1_12.METADATA_LIST, + 0, + handleMeta( + wrapper.user(), + wrapper.get(Type.VAR_INT, 0), + new MetaStorage(wrapper.get(Types1_12.METADATA_LIST, 0)) + ).getMetaDataList() + ); } }); } }); } - @Override - protected void registerRewrites() { - // Rewrite new Entity 'drowned' - regEntType(EntityType.DROWNED, EntityType.ZOMBIE_VILLAGER).mobName("Drowned"); + @Override + protected void registerRewrites() { + // Rewrite new Entity 'drowned' + regEntType(EntityType.DROWNED, EntityType.ZOMBIE_VILLAGER).mobName("Drowned"); - // Fishy - regEntType(EntityType.COD_MOB, EntityType.SQUID).mobName("Cod"); - regEntType(EntityType.SALMON_MOB, EntityType.SQUID).mobName("Salmon"); - regEntType(EntityType.PUFFER_FISH, EntityType.SQUID).mobName("Puffer Fish"); - regEntType(EntityType.TROPICAL_FISH, EntityType.SQUID).mobName("Tropical Fish"); + // Fishy + regEntType(EntityType.COD_MOB, EntityType.SQUID).mobName("Cod"); + regEntType(EntityType.SALMON_MOB, EntityType.SQUID).mobName("Salmon"); + regEntType(EntityType.PUFFER_FISH, EntityType.SQUID).mobName("Puffer Fish"); + regEntType(EntityType.TROPICAL_FISH, EntityType.SQUID).mobName("Tropical Fish"); - // Phantom - regEntType(EntityType.PHANTOM, EntityType.PARROT).mobName("Phantom"); + // Phantom + regEntType(EntityType.PHANTOM, EntityType.PARROT).mobName("Phantom").spawnMetadata(storage -> { + // The phantom is grey/blue so let's do yellow/blue + storage.add(new Metadata(15, MetaType1_12.VarInt, 3)); + }); - // Dolphin - regEntType(EntityType.DOLPHIN, EntityType.SQUID).mobName("Dolphin"); + // Dolphin + regEntType(EntityType.DOLPHIN, EntityType.SQUID).mobName("Dolphin"); - // Turtle - regEntType(EntityType.TURTLE, EntityType.OCELOT).mobName("Turtle"); + // Turtle + regEntType(EntityType.TURTLE, EntityType.OCELOT).mobName("Turtle"); - // Rewrite Meta types - this.registerMetaHandler().handle(e -> { - Metadata meta = e.getData(); - int typeId = meta.getMetaType().getTypeID(); + // Rewrite Meta types + registerMetaHandler().handle(e -> { + Metadata meta = e.getData(); + int typeId = meta.getMetaType().getTypeID(); - // Rewrite optional chat to chat - if (typeId == 5) { - meta.setMetaType(MetaType1_12.Chat); + // Rewrite optional chat to chat + if (typeId == 5) { + meta.setMetaType(MetaType1_12.String); - if (meta.getValue() == null) { - meta.setValue(""); - } - } + if (meta.getValue() == null) { + meta.setValue(""); + } + } - // Discontinue particles - else if (typeId == 15) { - meta.setMetaType(MetaType1_12.Discontinued); - } + // Discontinue particles + else if (typeId == 15) { + meta.setMetaType(MetaType1_12.Discontinued); + } - // Rewrite to 1.12 ids - else if (typeId > 5) { - meta.setMetaType(MetaType1_12.byId( - typeId - 1 - )); - } + // Rewrite to 1.12 ids + else if (typeId > 5) { + meta.setMetaType(MetaType1_12.byId( + typeId - 1 + )); + } - return e.getData(); - }); + return meta; + }); - // TODO Remove everything for now - this.registerMetaHandler().removed(); + // Rewrite Custom Name from Chat to String + registerMetaHandler().filter(EntityType.ENTITY, true, 2).handle(e -> { + Metadata meta = e.getData(); - } + meta.setValue( + ChatRewriter.jsonTextToLegacy( + (String) meta.getValue() + ) + ); + + return meta; + }); + + // Handle zombie metadata + registerMetaHandler().filter(EntityType.ZOMBIE, true, 15).removed(); + registerMetaHandler().filter(EntityType.ZOMBIE, true).handle(e -> { + Metadata meta = e.getData(); + + if (meta.getId() > 15) { + meta.setId(meta.getId() - 1); + } + + return meta; + }); + + // Handle turtle metadata (Remove them all for now) + registerMetaHandler().filter(EntityType.TURTLE, 13).removed(); // Home pos + registerMetaHandler().filter(EntityType.TURTLE, 14).removed(); // Has egg + registerMetaHandler().filter(EntityType.TURTLE, 15).removed(); // Laying egg + registerMetaHandler().filter(EntityType.TURTLE, 16).removed(); // Travel pos + registerMetaHandler().filter(EntityType.TURTLE, 17).removed(); // Going home + registerMetaHandler().filter(EntityType.TURTLE, 18).removed(); // Traveling + + // Remove additional fish meta + registerMetaHandler().filter(EntityType.ABSTRACT_FISHES, true, 12).removed(); + registerMetaHandler().filter(EntityType.ABSTRACT_FISHES, true, 13).removed(); + + // Remove phantom size + registerMetaHandler().filter(EntityType.PHANTOM, 12).removed(); + + // Remove boat splash timer + registerMetaHandler().filter(EntityType.BOAT, 12).removed(); + + // Remove Trident special loyalty level + registerMetaHandler().filter(EntityType.TRIDENT, 7).removed(); + + } } From c829e857d29638159fb3ef211f730f4b47d5c5e6 Mon Sep 17 00:00:00 2001 From: Matsv Date: Sat, 19 Jan 2019 15:55:13 +0100 Subject: [PATCH 020/171] Remove debug comments --- .../protocol1_12_2to1_13/packets/EntityPackets1_13.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java index 8cedbe07..341815e4 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java @@ -178,7 +178,6 @@ public class EntityPackets1_13 extends EntityRewriter { ); Optional optEntDat = getEntityData(type); - System.out.println(optEntDat + " OPTENT"); if (optEntDat.isPresent()) { EntityData data = optEntDat.get(); @@ -187,7 +186,6 @@ public class EntityPackets1_13 extends EntityRewriter { if (data.hasBaseMeta()) data.getDefaultMeta().handle(storage); } - System.out.println(storage.getMetaDataList()); // Rewrite Metadata wrapper.set( From c9067354c04b0068bf6659bc186ad85885519bed Mon Sep 17 00:00:00 2001 From: Matsv Date: Sat, 19 Jan 2019 16:11:15 +0100 Subject: [PATCH 021/171] Rewrite AreaEffectCloud (TODO Particle rewrite) --- .../packets/EntityPackets1_13.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java index 341815e4..eb4a7cdc 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java @@ -7,6 +7,7 @@ import nl.matsv.viabackwards.api.entities.types.AbstractEntityType; import nl.matsv.viabackwards.api.entities.types.EntityType1_12; import nl.matsv.viabackwards.api.entities.types.EntityType1_13; import nl.matsv.viabackwards.api.entities.types.EntityType1_13.EntityType; +import nl.matsv.viabackwards.api.exceptions.RemovedValueException; import nl.matsv.viabackwards.api.rewriters.EntityRewriter; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.Protocol1_12_2To1_13; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.data.EntityTypeMapping; @@ -21,6 +22,7 @@ import us.myles.ViaVersion.api.type.types.version.Types1_12; import us.myles.ViaVersion.api.type.types.version.Types1_13; import us.myles.ViaVersion.packets.State; import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.ChatRewriter; +import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.data.Particle; import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; import java.util.Optional; @@ -458,5 +460,20 @@ public class EntityPackets1_13 extends EntityRewriter { // Remove Trident special loyalty level registerMetaHandler().filter(EntityType.TRIDENT, 7).removed(); + // Rewrite AreaEffectCloud + registerMetaHandler().filter(EntityType.AREA_EFFECT_CLOUD, 9).handle(e -> { + Metadata meta = e.getData(); + Particle particle = (Particle) meta.getValue(); + + // TODO Rewrite particle ids + e.getStorage().add(new Metadata(9, MetaType1_12.VarInt, 0)); + e.getStorage().add(new Metadata(10, MetaType1_12.VarInt, 0)); + e.getStorage().add(new Metadata(11, MetaType1_12.VarInt, 0)); + + throw new RemovedValueException(); + }); + + // TODO REWRITE BLOCKS IN MINECART + } } From be8c1b69dc7abb522f41da22b11c82906ab012b4 Mon Sep 17 00:00:00 2001 From: Matsv Date: Sat, 19 Jan 2019 18:54:26 +0100 Subject: [PATCH 022/171] Implement tab-complete --- .../Protocol1_12_2To1_13.java | 20 +- .../packets/PlayerPacket1_13.java | 246 +++++++++++------- 2 files changed, 154 insertions(+), 112 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java index cc14bb23..6e2dcea4 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java @@ -27,6 +27,12 @@ import us.myles.ViaVersion.packets.State; import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; public class Protocol1_12_2To1_13 extends BackwardsProtocol { + static { + BackwardsMappings.init(); + PaintingMapping.init(); + SoundMapping.init(); + } + @Override protected void registerPackets() { new BlockItemPackets1_13().register(this); @@ -40,7 +46,6 @@ public class Protocol1_12_2To1_13 extends BackwardsProtocol { out(State.PLAY, 0x07, 0x07, cancel()); // Statistics TODO MODIFIED out(State.PLAY, 0x09, 0x09, cancel()); // Update Block Entity TODO MODIFIED out(State.PLAY, 0x0E, 0x0F); // Chat Message (clientbound) - out(State.PLAY, 0x10, 0x0E, cancel()); // Tab-Complete (clientbound) TODO MODIFIED out(State.PLAY, 0x11, -1, cancel()); // Declare Commands TODO NEW out(State.PLAY, 0x12, 0x11); // Confirm Transaction (clientbound) out(State.PLAY, 0x13, 0x12); // Close Window (clientbound) @@ -54,11 +59,6 @@ public class Protocol1_12_2To1_13 extends BackwardsProtocol { out(State.PLAY, 0x1F, 0x1D); // Unload Chunk out(State.PLAY, 0x20, 0x1E); // Change Game State out(State.PLAY, 0x21, 0x1F); // Keep Alive (clientbound) - - // Chunk Data -> moved to BlockItemPackets - - - out(State.PLAY, 0x24, 0x22, cancel()); // Spawn Particle TODO MODIFIED out(State.PLAY, 0x27, 0x25); // Entity out(State.PLAY, 0x28, 0x26); // Entity Relative Move @@ -100,8 +100,6 @@ public class Protocol1_12_2To1_13 extends BackwardsProtocol { out(State.PLAY, 0x54, -1, cancel()); // Declare Recipes TODO NEW out(State.PLAY, 0x55, -1, cancel()); // Tags (the client won't need this) - - in(State.PLAY, 0x05, 0x01, cancel()); // Tab-Complete (serverbound) TODO MODIFIED in(State.PLAY, 0x06, 0x05); // Confirm Transaction (serverbound) in(State.PLAY, 0x07, 0x06); // Enchant Item in(State.PLAY, 0x09, 0x08); // Close Window (serverbound) @@ -160,10 +158,4 @@ public class Protocol1_12_2To1_13 extends BackwardsProtocol { }; } - static { - BackwardsMappings.init(); - PaintingMapping.init(); - SoundMapping.init(); - } - } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java index 9da73f67..7d0ba1da 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java @@ -132,113 +132,163 @@ public class PlayerPacket1_13 extends Rewriter { } }); - //Plugin Message - protocol.in(State.PLAY, 0x0A, 0x09, new PacketRemapper() { - @Override + // Tab-Complete (clientbound) TODO MODIFIED + protocol.out(State.PLAY, 0x10, 0x0E, new PacketRemapper() { + @Override public void registerMap() { handler(new PacketHandler() { @Override public void handle(PacketWrapper wrapper) throws Exception { - String channel = wrapper.read(Type.STRING); - if (channel.equals("MC|BSign") || channel.equals("MC|BEdit")) { - wrapper.setId(0x0B); - Item book = wrapper.read(Type.ITEM); - System.out.println(book); - BlockItemPackets1_13.toServer(book); - System.out.println(book); - wrapper.write(Type.FLAT_ITEM, book); - boolean signing = channel.equals("MC|BSign"); - System.out.println(channel); - System.out.println(signing); - wrapper.write(Type.BOOLEAN, signing); - } else if (channel.equals("MC|ItemName")) { - wrapper.setId(0x1C); - } else if (channel.equals("MC|AdvCmd")) { - byte type = wrapper.read(Type.BYTE); - if (type == 0) { - //Information from https://wiki.vg/index.php?title=Plugin_channels&oldid=14089 - //The Notchain client only uses this for command block minecarts and uses MC|AutoCmd for blocks, but the Notchian server still accepts it for either. - //Maybe older versions used this and we need to implement this? The issues is that we would have to save the command block types - wrapper.setId(0x22); - wrapper.cancel(); - ViaBackwards.getPlatform().getLogger().warning("Client send MC|AdvCmd custom payload to update command block, weird!"); - } else if (type == 1) { - wrapper.setId(0x23); - wrapper.write(Type.VAR_INT, wrapper.read(Type.INT)); //Entity Id - wrapper.passthrough(Type.STRING); //Command - wrapper.passthrough(Type.BOOLEAN); //Track Output + int key = wrapper.read(Type.VAR_INT); + int start = wrapper.read(Type.VAR_INT); + int length = wrapper.read(Type.VAR_INT); - } else { - wrapper.cancel(); - } - } else if (channel.equals("MC|AutoCmd")) { - wrapper.setId(0x22); - Integer x = wrapper.read(Type.INT); - Integer y = wrapper.read(Type.INT); - Integer z = wrapper.read(Type.INT); - wrapper.write(Type.POSITION, new Position(x.longValue(), y.longValue(), z.longValue())); - wrapper.passthrough(Type.STRING); //Command - byte flags = 0; - if (wrapper.read(Type.BOOLEAN)) flags |= 0x01; //Track Output - String mode = wrapper.read(Type.STRING); - int modeId = mode.equals("SEQUENCE") ? 0 : mode.equals("AUTO") ? 1 : 2; - wrapper.write(Type.VAR_INT, modeId); - if (wrapper.read(Type.BOOLEAN)) flags |= 0x02; //Is conditional - if (wrapper.read(Type.BOOLEAN)) flags |= 0x04; //Automatic - } else if (channel.equals("MC|Struct")) { - wrapper.setId(0x25); - Integer x = wrapper.read(Type.INT); - Integer y = wrapper.read(Type.INT); - Integer z = wrapper.read(Type.INT); - wrapper.write(Type.POSITION, new Position(x.longValue(), y.longValue(), z.longValue())); - wrapper.write(Type.VAR_INT, wrapper.read(Type.BYTE) - 1); - String mode = wrapper.read(Type.STRING); - int modeId = mode.equals("SAVE") ? 0 : mode.equals("LOAD") ? 1 : mode.equals("CORNER") ? 2 : 3; - wrapper.write(Type.VAR_INT, modeId); - wrapper.passthrough(Type.STRING); //Name - wrapper.write(Type.BYTE, wrapper.read(Type.INT).byteValue()); //Offset X - wrapper.write(Type.BYTE, wrapper.read(Type.INT).byteValue()); //Offset Y - wrapper.write(Type.BYTE, wrapper.read(Type.INT).byteValue()); //Offset Z - wrapper.write(Type.BYTE, wrapper.read(Type.INT).byteValue()); //Size X - wrapper.write(Type.BYTE, wrapper.read(Type.INT).byteValue()); //Size Y - wrapper.write(Type.BYTE, wrapper.read(Type.INT).byteValue()); //Size Z - String mirror = wrapper.read(Type.STRING); - int mirrorId = mode.equals("NONE") ? 0 : mode.equals("LEFT_RIGHT") ? 1 : 2; - String rotation = wrapper.read(Type.STRING); - int rotationId = mode.equals("NONE") ? 0 : mode.equals("CLOCKWISE_90") ? 1 : mode.equals("CLOCKWISE_180") ? 2 : 3; - wrapper.passthrough(Type.STRING); //Metadata - byte flags = 0; - if (wrapper.read(Type.BOOLEAN)) flags |= 0x01; //Ignore entities - if (wrapper.read(Type.BOOLEAN)) flags |= 0x02; //Show air - if (wrapper.read(Type.BOOLEAN)) flags |= 0x04; //Show bounding box - wrapper.passthrough(Type.FLOAT); //Integrity - wrapper.passthrough(Type.VAR_LONG); //Seed - wrapper.write(Type.BYTE, flags); - } else if (channel.equals("MC|Beacon")) { - wrapper.setId(0x20); - wrapper.write(Type.VAR_INT, wrapper.read(Type.INT)); //Primary Effect - wrapper.write(Type.VAR_INT, wrapper.read(Type.INT)); //Secondary Effect - } else if (channel.equals("MC|TrSel")) { - wrapper.setId(0x1F); - wrapper.write(Type.VAR_INT, wrapper.read(Type.INT)); //Slot - } else if (channel.equals("MC|PickItem")) { - wrapper.setId(0x15); - } else { - String newChannel = InventoryPackets.getNewPluginChannelId(channel); - if (newChannel == null) { - ViaBackwards.getPlatform().getLogger().warning("Could not find new channel for " + channel); - wrapper.cancel(); - return; - } - wrapper.write(Type.STRING, newChannel); - //TODO REGISTER and UNREGISTER (see ViaVersion) - wrapper.cancel(); - } + int count = wrapper.passthrough(Type.VAR_INT); + for (int i = 0; i < count; i++) { + String match = wrapper.read(Type.STRING); + wrapper.write(Type.STRING, (start == 0 ? "/" : "") + match); + // Ignore tooltip + wrapper.read(Type.OPTIONAL_CHAT); + } } }); } }); - } + + // Tab-Complete (serverbound) + protocol.in(State.PLAY, 0x05, 0x01, new PacketRemapper() { + @Override + public void registerMap() { + + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + // Send a fake key + wrapper.write(Type.VAR_INT, 13337); + + String command = wrapper.read(Type.STRING); + + if (command.startsWith("/")) + command = command.substring(1); + + wrapper.write(Type.STRING, command); + + // Ignore fields + wrapper.read(Type.BOOLEAN); + wrapper.read(Type.OPTIONAL_POSITION); + + } + }); + } + }); + + //Plugin Message + protocol.in(State.PLAY, 0x0A, 0x09, new PacketRemapper() { + @Override + public void registerMap() { + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + String channel = wrapper.read(Type.STRING); + if (channel.equals("MC|BSign") || channel.equals("MC|BEdit")) { + wrapper.setId(0x0B); + Item book = wrapper.read(Type.ITEM); + System.out.println(book); + BlockItemPackets1_13.toServer(book); + System.out.println(book); + wrapper.write(Type.FLAT_ITEM, book); + boolean signing = channel.equals("MC|BSign"); + System.out.println(channel); + System.out.println(signing); + wrapper.write(Type.BOOLEAN, signing); + } else if (channel.equals("MC|ItemName")) { + wrapper.setId(0x1C); + } else if (channel.equals("MC|AdvCmd")) { + byte type = wrapper.read(Type.BYTE); + if (type == 0) { + //Information from https://wiki.vg/index.php?title=Plugin_channels&oldid=14089 + //The Notchain client only uses this for command block minecarts and uses MC|AutoCmd for blocks, but the Notchian server still accepts it for either. + //Maybe older versions used this and we need to implement this? The issues is that we would have to save the command block types + wrapper.setId(0x22); + wrapper.cancel(); + ViaBackwards.getPlatform().getLogger().warning("Client send MC|AdvCmd custom payload to update command block, weird!"); + } else if (type == 1) { + wrapper.setId(0x23); + wrapper.write(Type.VAR_INT, wrapper.read(Type.INT)); //Entity Id + wrapper.passthrough(Type.STRING); //Command + wrapper.passthrough(Type.BOOLEAN); //Track Output + + } else { + wrapper.cancel(); + } + } else if (channel.equals("MC|AutoCmd")) { + wrapper.setId(0x22); + Integer x = wrapper.read(Type.INT); + Integer y = wrapper.read(Type.INT); + Integer z = wrapper.read(Type.INT); + wrapper.write(Type.POSITION, new Position(x.longValue(), y.longValue(), z.longValue())); + wrapper.passthrough(Type.STRING); //Command + byte flags = 0; + if (wrapper.read(Type.BOOLEAN)) flags |= 0x01; //Track Output + String mode = wrapper.read(Type.STRING); + int modeId = mode.equals("SEQUENCE") ? 0 : mode.equals("AUTO") ? 1 : 2; + wrapper.write(Type.VAR_INT, modeId); + if (wrapper.read(Type.BOOLEAN)) flags |= 0x02; //Is conditional + if (wrapper.read(Type.BOOLEAN)) flags |= 0x04; //Automatic + } else if (channel.equals("MC|Struct")) { + wrapper.setId(0x25); + Integer x = wrapper.read(Type.INT); + Integer y = wrapper.read(Type.INT); + Integer z = wrapper.read(Type.INT); + wrapper.write(Type.POSITION, new Position(x.longValue(), y.longValue(), z.longValue())); + wrapper.write(Type.VAR_INT, wrapper.read(Type.BYTE) - 1); + String mode = wrapper.read(Type.STRING); + int modeId = mode.equals("SAVE") ? 0 : mode.equals("LOAD") ? 1 : mode.equals("CORNER") ? 2 : 3; + wrapper.write(Type.VAR_INT, modeId); + wrapper.passthrough(Type.STRING); //Name + wrapper.write(Type.BYTE, wrapper.read(Type.INT).byteValue()); //Offset X + wrapper.write(Type.BYTE, wrapper.read(Type.INT).byteValue()); //Offset Y + wrapper.write(Type.BYTE, wrapper.read(Type.INT).byteValue()); //Offset Z + wrapper.write(Type.BYTE, wrapper.read(Type.INT).byteValue()); //Size X + wrapper.write(Type.BYTE, wrapper.read(Type.INT).byteValue()); //Size Y + wrapper.write(Type.BYTE, wrapper.read(Type.INT).byteValue()); //Size Z + String mirror = wrapper.read(Type.STRING); + int mirrorId = mode.equals("NONE") ? 0 : mode.equals("LEFT_RIGHT") ? 1 : 2; + String rotation = wrapper.read(Type.STRING); + int rotationId = mode.equals("NONE") ? 0 : mode.equals("CLOCKWISE_90") ? 1 : mode.equals("CLOCKWISE_180") ? 2 : 3; + wrapper.passthrough(Type.STRING); //Metadata + byte flags = 0; + if (wrapper.read(Type.BOOLEAN)) flags |= 0x01; //Ignore entities + if (wrapper.read(Type.BOOLEAN)) flags |= 0x02; //Show air + if (wrapper.read(Type.BOOLEAN)) flags |= 0x04; //Show bounding box + wrapper.passthrough(Type.FLOAT); //Integrity + wrapper.passthrough(Type.VAR_LONG); //Seed + wrapper.write(Type.BYTE, flags); + } else if (channel.equals("MC|Beacon")) { + wrapper.setId(0x20); + wrapper.write(Type.VAR_INT, wrapper.read(Type.INT)); //Primary Effect + wrapper.write(Type.VAR_INT, wrapper.read(Type.INT)); //Secondary Effect + } else if (channel.equals("MC|TrSel")) { + wrapper.setId(0x1F); + wrapper.write(Type.VAR_INT, wrapper.read(Type.INT)); //Slot + } else if (channel.equals("MC|PickItem")) { + wrapper.setId(0x15); + } else { + String newChannel = InventoryPackets.getNewPluginChannelId(channel); + if (newChannel == null) { + ViaBackwards.getPlatform().getLogger().warning("Could not find new channel for " + channel); + wrapper.cancel(); + return; + } + wrapper.write(Type.STRING, newChannel); + //TODO REGISTER and UNREGISTER (see ViaVersion) + wrapper.cancel(); + } + } + }); + } + }); + } @Override protected void registerRewrites() { From 404dce4a32536023f30113aa1a8067b90133259e Mon Sep 17 00:00:00 2001 From: Matsv Date: Sun, 20 Jan 2019 12:06:24 +0100 Subject: [PATCH 023/171] Handle new wolf colors --- .../protocol1_12_2to1_13/packets/EntityPackets1_13.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java index eb4a7cdc..99438011 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java @@ -460,6 +460,15 @@ public class EntityPackets1_13 extends EntityRewriter { // Remove Trident special loyalty level registerMetaHandler().filter(EntityType.TRIDENT, 7).removed(); + // Handle new wolf colors + registerMetaHandler().filter(EntityType.WOLF, 17).handle(e -> { + Metadata meta = e.getData(); + + meta.setValue(15 - (int) meta.getValue()); + + return meta; + }); + // Rewrite AreaEffectCloud registerMetaHandler().filter(EntityType.AREA_EFFECT_CLOUD, 9).handle(e -> { Metadata meta = e.getData(); From 97b81cf7824bdfcd6839756ac7d140500a9ea2d0 Mon Sep 17 00:00:00 2001 From: Matsv Date: Sun, 20 Jan 2019 14:15:21 +0100 Subject: [PATCH 024/171] Implement basic block entity interface & handle beds --- .../Protocol1_12_2To1_13.java | 13 +- .../block_entity_handlers/BedHandler.java | 29 +++ .../packets/BlockItemPackets1_13.java | 188 +++++++++++++----- .../BackwardsBlockEntityProvider.java | 77 +++++++ .../storage/BackwardsBlockStorage.java | 81 ++++++++ .../Protocol1_11_1To1_12.java | 2 +- 6 files changed, 336 insertions(+), 54 deletions(-) create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/BedHandler.java create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/providers/BackwardsBlockEntityProvider.java create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/storage/BackwardsBlockStorage.java diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java index 6e2dcea4..a41e4bfe 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java @@ -19,8 +19,11 @@ import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.packets.BlockItemPack import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.packets.EntityPackets1_13; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.packets.PlayerPacket1_13; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.packets.SoundPackets1_13; +import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.providers.BackwardsBlockEntityProvider; +import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.storage.BackwardsBlockStorage; import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.data.UserConnection; +import us.myles.ViaVersion.api.platform.providers.ViaProviders; import us.myles.ViaVersion.api.remapper.PacketHandler; import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.packets.State; @@ -44,7 +47,6 @@ public class Protocol1_12_2To1_13 extends BackwardsProtocol { out(State.PLAY, 0x07, 0x07, cancel()); // Statistics TODO MODIFIED - out(State.PLAY, 0x09, 0x09, cancel()); // Update Block Entity TODO MODIFIED out(State.PLAY, 0x0E, 0x0F); // Chat Message (clientbound) out(State.PLAY, 0x11, -1, cancel()); // Declare Commands TODO NEW out(State.PLAY, 0x12, 0x11); // Confirm Transaction (clientbound) @@ -142,6 +144,15 @@ public class Protocol1_12_2To1_13 extends BackwardsProtocol { // Init protocol in EntityTracker user.get(EntityTracker.class).initProtocol(this); + + // Register Block Storage + if (!user.has(BackwardsBlockStorage.class)) + user.put(new BackwardsBlockStorage(user)); + } + + @Override + protected void register(ViaProviders providers) { + providers.register(BackwardsBlockEntityProvider.class, new BackwardsBlockEntityProvider()); } public PacketRemapper cancel() { diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/BedHandler.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/BedHandler.java new file mode 100644 index 00000000..b05f7809 --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/BedHandler.java @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2016 Matsv + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handlers; + +import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.providers.BackwardsBlockEntityProvider; +import us.myles.ViaVersion.api.data.UserConnection; +import us.myles.viaversion.libs.opennbt.tag.builtin.CompoundTag; +import us.myles.viaversion.libs.opennbt.tag.builtin.IntTag; + +public class BedHandler implements BackwardsBlockEntityProvider.BackwardsBlockEntityHandler { + + @Override + public CompoundTag transform(UserConnection user, int blockId, CompoundTag tag) { + int offset = blockId - 748; + int color = offset >> 4; + + tag.put(new IntTag("color", color)); + + return tag; + } +} 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 1f350fb7..97c1b064 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 @@ -10,12 +10,15 @@ package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.packets; -import nl.matsv.viabackwards.api.rewriters.BlockItemRewriter; +import nl.matsv.viabackwards.api.rewriters.Rewriter; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.Protocol1_12_2To1_13; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.data.BackwardsMappings; +import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.providers.BackwardsBlockEntityProvider; +import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.storage.BackwardsBlockStorage; import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.Via; import us.myles.ViaVersion.api.minecraft.BlockChangeRecord; +import us.myles.ViaVersion.api.minecraft.Position; import us.myles.ViaVersion.api.minecraft.chunks.Chunk; import us.myles.ViaVersion.api.minecraft.chunks.ChunkSection; import us.myles.ViaVersion.api.minecraft.item.Item; @@ -28,45 +31,119 @@ import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.packets.InventoryPacke import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.types.Chunk1_13Type; import us.myles.ViaVersion.protocols.protocol1_9_1_2to1_9_3_4.types.Chunk1_9_3_4Type; import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; +import us.myles.viaversion.libs.opennbt.tag.builtin.CompoundTag; + +public class BlockItemPackets1_13 extends Rewriter { + public static int toOldId(int oldId) { + if (oldId < 0) { + oldId = 0; // Some plugins use negative numbers to clear blocks, remap them to air. + } + int newId = BackwardsMappings.blockMappings.getNewBlock(oldId); + if (newId != -1) + return newId; + + Via.getPlatform().getLogger().warning("Missing block completely " + oldId); + // Default stone + return 1 << 4; + } + + //Basic translation for now. TODO remap new items; should probably use BlockItemRewriter#handleItemToClient/Server, but that needs some rewriting + public static void toClient(Item item) { + InventoryPackets.toServer(item); + } + + public static void toServer(Item item) { + InventoryPackets.toClient(item); + } -public class BlockItemPackets1_13 extends BlockItemRewriter { @Override protected void registerPackets(Protocol1_12_2To1_13 protocol) { - //Block Change - protocol.out(State.PLAY, 0x0B, 0x0B, new PacketRemapper() { + // Update Block Entity + protocol.out(State.PLAY, 0x09, 0x09, new PacketRemapper() { @Override public void registerMap() { - map(Type.POSITION); - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - int blockState = wrapper.read(Type.VAR_INT); - wrapper.write(Type.VAR_INT, toOldId(blockState)); - } - }); - } - }); + map(Type.POSITION); // 0 - Position + map(Type.UNSIGNED_BYTE); // 1 - Action + map(Type.NBT); // 2 - NBT Data - //Multi Block Change - protocol.out(State.PLAY, 0x0F, 0x10, new PacketRemapper() { - @Override - public void registerMap() { - map(Type.INT); - map(Type.INT); - map(Type.BLOCK_CHANGE_RECORD_ARRAY); handler(new PacketHandler() { @Override public void handle(PacketWrapper wrapper) throws Exception { - for (BlockChangeRecord record : wrapper.get(Type.BLOCK_CHANGE_RECORD_ARRAY, 0)) { - record.setBlockId(toOldId(record.getBlockId())); + BackwardsBlockEntityProvider provider = Via.getManager().getProviders().get(BackwardsBlockEntityProvider.class); + + switch (wrapper.get(Type.UNSIGNED_BYTE, 0)) { + case 11: + wrapper.set(Type.NBT, 0, + provider.transform( + wrapper.user(), + wrapper.get(Type.POSITION, 0), + wrapper.get(Type.NBT, 0) + )); + break; + default: + wrapper.cancel(); // TODO CONFIRM EVERYTHING WORKING BEFORE REMOVING THIS + break; } } }); } }); - //Windows Items + // Block Change + protocol.out(State.PLAY, 0x0B, 0x0B, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.POSITION); // 0 - Position + + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + int blockState = wrapper.read(Type.VAR_INT); + + // Store blocks for + BackwardsBlockStorage storage = wrapper.user().get(BackwardsBlockStorage.class); + storage.checkAndStore(wrapper.get(Type.POSITION, 0), blockState); + + wrapper.write(Type.VAR_INT, toOldId(blockState)); + } + }); + } + }); + + // Multi Block Change + protocol.out(State.PLAY, 0x0F, 0x10, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // 0 - Chunk X + map(Type.INT); // 1 - Chunk Z + map(Type.BLOCK_CHANGE_RECORD_ARRAY); + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + BackwardsBlockStorage storage = wrapper.user().get(BackwardsBlockStorage.class); + + for (BlockChangeRecord record : wrapper.get(Type.BLOCK_CHANGE_RECORD_ARRAY, 0)) { + int chunkX = wrapper.get(Type.INT, 0); + int chunkZ = wrapper.get(Type.INT, 1); + int block = record.getBlockId(); + Position position = new Position( + (long) (record.getHorizontal() >> 4 & 15) + (chunkX * 16), + (long) record.getY(), + (long) (record.getHorizontal() & 15) + (chunkZ * 16)); + + // Store if needed + storage.checkAndStore(position, block); + + // Change to old id + record.setBlockId(toOldId(block)); + } + } + }); + } + }); + + // Windows Items protocol.out(State.PLAY, 0x15, 0x14, new PacketRemapper() { @Override public void registerMap() { @@ -84,7 +161,7 @@ public class BlockItemPackets1_13 extends BlockItemRewriter> 4; + ChunkSection section = chunk.getSections()[sectionIndex]; + + int x = (int) tag.get("x").getValue(); + int y = (int) tag.get("y").getValue(); + int z = (int) tag.get("z").getValue(); + Position position = new Position((long) x, (long) y, (long) z); + + int block = section.getFlatBlock(x & 0xF, y & 0xF, z & 0xF); + storage.checkAndStore(position, block); + + provider.transform(wrapper.user(), position, tag); + } + + // Rewrite new blocks to old blocks for (int i = 0; i < chunk.getSections().length; i++) { ChunkSection section = chunk.getSections()[i]; if (section == null) { @@ -135,7 +241,6 @@ public class BlockItemPackets1_13 extends BlockItemRewriter handlers = new ConcurrentHashMap<>(); + + public BackwardsBlockEntityProvider() { +// handlers.put("minecraft:flower_pot", ); + handlers.put("minecraft:bed", new BedHandler()); +// handlers.put("minecraft:banner", ); +// handlers.put("minecraft:skull", ); +// handlers.put("minecraft:mob_spawner", ); + } + + /** + * Check if a block entity handler is present + * + * @param key Id of the NBT data ex: minecraft:bed + * @return true if present + */ + public boolean isHandled(String key) { + return handlers.containsKey(key); + } + + /** + * Transform blocks to block entities! + * + * @param user The user + * @param position The position of the block entity + * @param tag The block entity tag + */ + public CompoundTag transform(UserConnection user, Position position, CompoundTag tag) throws Exception { + String id = (String) tag.get("id").getValue(); + BackwardsBlockEntityHandler handler = handlers.get(id); + if (handler == null) { + if (Via.getManager().isDebug()) { + Via.getPlatform().getLogger().warning("Unhandled BlockEntity " + id + " full tag: " + tag); + } + return tag; + } + + BackwardsBlockStorage storage = user.get(BackwardsBlockStorage.class); + + if (!storage.contains(position)) { + if (Via.getManager().isDebug()) { + Via.getPlatform().getLogger().warning("Handled BlockEntity does not have a stored block :( " + id + " full tag: " + tag); + } + return tag; + } + + return handler.transform(user, storage.get(position), tag); + } + + interface BackwardsBlockEntityHandler { + CompoundTag transform(UserConnection user, int blockId, CompoundTag tag); + } +} diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/storage/BackwardsBlockStorage.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/storage/BackwardsBlockStorage.java new file mode 100644 index 00000000..1845b3b4 --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/storage/BackwardsBlockStorage.java @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2016 Matsv + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.storage; + +import com.google.common.collect.Sets; +import us.myles.ViaVersion.api.data.StoredObject; +import us.myles.ViaVersion.api.data.UserConnection; +import us.myles.ViaVersion.api.minecraft.Position; + +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; + +public class BackwardsBlockStorage extends StoredObject { + // This BlockStorage is very exclusive (; + private static final Set whitelist = Sets.newConcurrentHashSet(); + + static { + // Flower pots +// whitelist.add(5266); + + // Add those beds + for (int i = 0; i < (16 * 16); i++) + whitelist.add(748 + i); + + // Add the white banners +// for (int i = 0; i < 20; i++) +// whitelist.add(6854 + i); +// + // Add the white wall banners +// for (int i = 0; i < 4; i++) { +// whitelist.add(7110 + i); +// } + + // Skeleton skulls +// for (int i = 0; i < 5; i++) +// whitelist.add(5447 + i); + } + + private Map blocks = new ConcurrentHashMap<>(); + + public BackwardsBlockStorage(UserConnection user) { + super(user); + } + + public void checkAndStore(Position position, int block) { + if (!whitelist.contains(block)) { + // Remove if not whitelisted + if (blocks.containsKey(position)) + blocks.remove(position); + return; + } + + blocks.put(position, block); + } + + public boolean isWelcome(int block) { + return whitelist.contains(block); + } + + public boolean contains(Position position) { + return blocks.containsKey(position); + } + + public int get(Position position) { + return blocks.get(position); + } + + public int remove(Position position) { + return blocks.remove(position); + } + +} diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/Protocol1_11_1To1_12.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/Protocol1_11_1To1_12.java index c0fa2cc6..1ceea5af 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/Protocol1_11_1To1_12.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/Protocol1_11_1To1_12.java @@ -20,7 +20,7 @@ import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; @Getter public class Protocol1_11_1To1_12 extends BackwardsProtocol { - // TODO store all rewriters and make them easy accessible? + // TODO checkAndStore all rewriters and make them easy accessible? private EntityPackets1_12 entityPackets; private BlockItemPackets1_12 blockItemPackets; From 803ae8a7ac6091ef75ff65db20dcf4450f23d57e Mon Sep 17 00:00:00 2001 From: Matsv Date: Sun, 20 Jan 2019 14:49:51 +0100 Subject: [PATCH 025/171] Implement flowerpot handling --- .../FlowerPotHandler.java | 74 +++++++++++++++++++ .../BackwardsBlockEntityProvider.java | 5 +- .../storage/BackwardsBlockStorage.java | 5 +- 3 files changed, 81 insertions(+), 3 deletions(-) create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/FlowerPotHandler.java diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/FlowerPotHandler.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/FlowerPotHandler.java new file mode 100644 index 00000000..d7ebfbb9 --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/FlowerPotHandler.java @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2016 Matsv + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handlers; + +import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.providers.BackwardsBlockEntityProvider; +import us.myles.ViaVersion.api.Pair; +import us.myles.ViaVersion.api.data.UserConnection; +import us.myles.viaversion.libs.opennbt.tag.builtin.ByteTag; +import us.myles.viaversion.libs.opennbt.tag.builtin.CompoundTag; +import us.myles.viaversion.libs.opennbt.tag.builtin.StringTag; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +public class FlowerPotHandler implements BackwardsBlockEntityProvider.BackwardsBlockEntityHandler { + + private static final Map> flowers = new ConcurrentHashMap<>(); + + static { + register(5265, "minecraft:air", (byte) 0); + register(5266, "minecraft:sapling", (byte) 0); + register(5267, "minecraft:sapling", (byte) 1); + register(5268, "minecraft:sapling", (byte) 2); + register(5269, "minecraft:sapling", (byte) 3); + register(5270, "minecraft:sapling", (byte) 4); + register(5271, "minecraft:sapling", (byte) 5); + register(5272, "minecraft:tallgrass", (byte) 2); + register(5273, "minecraft:yellow_flower", (byte) 0); + register(5274, "minecraft:red_flower", (byte) 0); + register(5275, "minecraft:red_flower", (byte) 1); + register(5276, "minecraft:red_flower", (byte) 2); + register(5277, "minecraft:red_flower", (byte) 3); + register(5278, "minecraft:red_flower", (byte) 4); + register(5279, "minecraft:red_flower", (byte) 5); + register(5280, "minecraft:red_flower", (byte) 6); + register(5281, "minecraft:red_flower", (byte) 7); + register(5282, "minecraft:red_flower", (byte) 8); + register(5283, "minecraft:red_mushroom", (byte) 0); + register(5284, "minecraft:brown_mushroom", (byte) 0); + register(5285, "minecraft:deadbush", (byte) 0); + register(5286, "minecraft:cactus", (byte) 0); + } + + private static void register(int id, String identifier, byte data) { + flowers.put(id, new Pair<>(identifier, data)); + } + + public Pair getOrDefault(int blockId) { + if (flowers.containsKey(blockId)) + return flowers.get(blockId); + + return flowers.get(5265); + } + + // TODO THIS IS NEVER CALLED BECAUSE ITS NO LONGER A BLOCK ENTITY :( + @Override + public CompoundTag transform(UserConnection user, int blockId, CompoundTag tag) { + Pair item = getOrDefault(blockId); + + tag.put(new StringTag("Item", item.getKey())); + tag.put(new ByteTag("Data", item.getValue())); + + return tag; + } + +} diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/providers/BackwardsBlockEntityProvider.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/providers/BackwardsBlockEntityProvider.java index ad1435ef..11bb5346 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/providers/BackwardsBlockEntityProvider.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/providers/BackwardsBlockEntityProvider.java @@ -11,6 +11,7 @@ package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.providers; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handlers.BedHandler; +import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handlers.FlowerPotHandler; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.storage.BackwardsBlockStorage; import us.myles.ViaVersion.api.Via; import us.myles.ViaVersion.api.data.UserConnection; @@ -25,7 +26,7 @@ public class BackwardsBlockEntityProvider implements Provider { private final Map handlers = new ConcurrentHashMap<>(); public BackwardsBlockEntityProvider() { -// handlers.put("minecraft:flower_pot", ); + handlers.put("minecraft:flower_pot", new FlowerPotHandler()); handlers.put("minecraft:bed", new BedHandler()); // handlers.put("minecraft:banner", ); // handlers.put("minecraft:skull", ); @@ -71,7 +72,7 @@ public class BackwardsBlockEntityProvider implements Provider { return handler.transform(user, storage.get(position), tag); } - interface BackwardsBlockEntityHandler { + public interface BackwardsBlockEntityHandler { CompoundTag transform(UserConnection user, int blockId, CompoundTag tag); } } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/storage/BackwardsBlockStorage.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/storage/BackwardsBlockStorage.java index 1845b3b4..bdc56b84 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/storage/BackwardsBlockStorage.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/storage/BackwardsBlockStorage.java @@ -25,7 +25,9 @@ public class BackwardsBlockStorage extends StoredObject { static { // Flower pots -// whitelist.add(5266); + for (int i = 5265; i <= 5286; i++) { + whitelist.add(i); + } // Add those beds for (int i = 0; i < (16 * 16); i++) @@ -45,6 +47,7 @@ public class BackwardsBlockStorage extends StoredObject { // whitelist.add(5447 + i); } + private Map blocks = new ConcurrentHashMap<>(); public BackwardsBlockStorage(UserConnection user) { From fd4c9b5e6c02d347426096913ec4a0488aeec045 Mon Sep 17 00:00:00 2001 From: Matsv Date: Sun, 20 Jan 2019 16:08:53 +0100 Subject: [PATCH 026/171] Implement banner block entity --- .../block_entity_handlers/BannerHandler.java | 55 ++++ .../packets/BlockItemPackets1_13.java | 1 + .../BackwardsBlockEntityProvider.java | 3 +- .../storage/BackwardsBlockStorage.java | 9 +- .../data/mapping-1.12.2to1.13.json | 309 +++++++++++++++++- 5 files changed, 367 insertions(+), 10 deletions(-) create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/BannerHandler.java diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/BannerHandler.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/BannerHandler.java new file mode 100644 index 00000000..8f4eb1de --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/BannerHandler.java @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2016 Matsv + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handlers; + +import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.providers.BackwardsBlockEntityProvider.BackwardsBlockEntityHandler; +import us.myles.ViaVersion.api.Via; +import us.myles.ViaVersion.api.data.UserConnection; +import us.myles.viaversion.libs.opennbt.tag.builtin.CompoundTag; +import us.myles.viaversion.libs.opennbt.tag.builtin.IntTag; +import us.myles.viaversion.libs.opennbt.tag.builtin.ListTag; +import us.myles.viaversion.libs.opennbt.tag.builtin.Tag; + +public class BannerHandler implements BackwardsBlockEntityHandler { + private final int WALL_BANNER_START = 7110; // 4 each + private final int WALL_BANNER_STOP = 7173; + + private final int BANNER_START = 6854; // 16 each + private final int BANNER_STOP = 7109; + + @Override + public CompoundTag transform(UserConnection user, int blockId, CompoundTag tag) { + // Normal banners + if (blockId >= BANNER_START && blockId <= BANNER_STOP) { + int color = (blockId - BANNER_START) >> 4; + tag.put(new IntTag("Base", (15 - color))); + } + // Wall banners + else if (blockId >= WALL_BANNER_START && blockId <= WALL_BANNER_STOP) { + int color = (blockId - WALL_BANNER_START) >> 2; + tag.put(new IntTag("Base", (15 - color))); + } else { + Via.getPlatform().getLogger().warning("Why does this block have the banner block entity? :(" + tag); + } + + // Invert colors + if (tag.contains("Patterns") && tag.get("Patterns") instanceof ListTag) { + for (Tag pattern : (ListTag) tag.get("Patterns")) { + if (pattern instanceof CompoundTag) { + IntTag c = ((CompoundTag) pattern).get("Color"); + c.setValue(15 - c.getValue()); // Invert color id + } + } + } + + return tag; + } +} 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 97c1b064..7e38ec27 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 @@ -73,6 +73,7 @@ public class BlockItemPackets1_13 extends Rewriter { BackwardsBlockEntityProvider provider = Via.getManager().getProviders().get(BackwardsBlockEntityProvider.class); switch (wrapper.get(Type.UNSIGNED_BYTE, 0)) { + case 6: case 11: wrapper.set(Type.NBT, 0, provider.transform( diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/providers/BackwardsBlockEntityProvider.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/providers/BackwardsBlockEntityProvider.java index 11bb5346..ea99ae58 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/providers/BackwardsBlockEntityProvider.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/providers/BackwardsBlockEntityProvider.java @@ -10,6 +10,7 @@ package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.providers; +import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handlers.BannerHandler; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handlers.BedHandler; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handlers.FlowerPotHandler; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.storage.BackwardsBlockStorage; @@ -28,7 +29,7 @@ public class BackwardsBlockEntityProvider implements Provider { public BackwardsBlockEntityProvider() { handlers.put("minecraft:flower_pot", new FlowerPotHandler()); handlers.put("minecraft:bed", new BedHandler()); -// handlers.put("minecraft:banner", ); + handlers.put("minecraft:banner", new BannerHandler()); // handlers.put("minecraft:skull", ); // handlers.put("minecraft:mob_spawner", ); } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/storage/BackwardsBlockStorage.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/storage/BackwardsBlockStorage.java index bdc56b84..d6834629 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/storage/BackwardsBlockStorage.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/storage/BackwardsBlockStorage.java @@ -25,17 +25,16 @@ public class BackwardsBlockStorage extends StoredObject { static { // Flower pots - for (int i = 5265; i <= 5286; i++) { + for (int i = 5265; i <= 5286; i++) whitelist.add(i); - } // Add those beds for (int i = 0; i < (16 * 16); i++) whitelist.add(748 + i); - // Add the white banners -// for (int i = 0; i < 20; i++) -// whitelist.add(6854 + i); + // Add the banners + for (int i = 6854; i <= 7173; i++) + whitelist.add(i); // // Add the white wall banners // for (int i = 0; i < 4; i++) { diff --git a/core/src/main/resources/assets/viabackwards/data/mapping-1.12.2to1.13.json b/core/src/main/resources/assets/viabackwards/data/mapping-1.12.2to1.13.json index 93d4b6e3..7ae182f9 100644 --- a/core/src/main/resources/assets/viabackwards/data/mapping-1.12.2to1.13.json +++ b/core/src/main/resources/assets/viabackwards/data/mapping-1.12.2to1.13.json @@ -342,15 +342,16 @@ "minecraft:black_bed[facing=east,occupied=false,part=head]": "minecraft:red_bed[facing=east,occupied=false,part=head]", "minecraft:black_bed[facing=east,occupied=false,part=foot]": "minecraft:red_bed[facing=east,occupied=false,part=foot]", "minecraft:seagrass": "minecraft:grass", - "minecraft:tall_seagrass[half=upper]": "id:2809", //2809 / 175:9 is the upper half of every flower in 1.12.2, the lower half determines the type + "minecraft:tall_seagrass[half=upper]": "id:2809", + //2809 / 175:9 is the upper half of every flower in 1.12.2, the lower half determines the type "minecraft:tall_seagrass[half=lower]": "minecraft:tall_grass[half=lower]", "minecraft:sunflower[half=upper]": "id:2809", "minecraft:lilac[half=upper]": "id:2809", "minecraft:rose_bush[half=upper]": "id:2809", "minecraft:tall_grass[half=upper]": "id:2809", "minecraft:large_fern[half=upper]": "id:2809", - "minecraft:kelp": "minecraft:large_fern[half=lower]", - "minecraft:kelp_plant": "minecraft:sunflower[half=lower]", + "minecraft:kelp": "minecraft:large_fern[half=lower]", + "minecraft:kelp_plant": "minecraft:sunflower[half=lower]", "minecraft:piston_head[facing=north,short=true,type=normal]": "minecraft:piston_head[facing=north,short=false,type=normal]", "minecraft:piston_head[facing=north,short=true,type=sticky]": "minecraft:piston_head[facing=north,short=false,type=sticky]", "minecraft:piston_head[facing=east,short=true,type=normal]": "minecraft:piston_head[facing=east,short=false,type=normal]", @@ -4826,6 +4827,306 @@ "minecraft:void_air": "minecraft:air", "minecraft:cave_air": "minecraft:air", "minecraft:conduit": "minecraft:beacon", - "minecraft:bubble_column": "minecraft:water[level=15]" + "minecraft:bubble_column": "minecraft:water[level=15]", + "minecraft:orange_banner[rotation=0]": "minecraft:white_banner[rotation=0]", + "minecraft:orange_banner[rotation=1]": "minecraft:white_banner[rotation=1]", + "minecraft:orange_banner[rotation=2]": "minecraft:white_banner[rotation=2]", + "minecraft:orange_banner[rotation=3]": "minecraft:white_banner[rotation=3]", + "minecraft:orange_banner[rotation=4]": "minecraft:white_banner[rotation=4]", + "minecraft:orange_banner[rotation=5]": "minecraft:white_banner[rotation=5]", + "minecraft:orange_banner[rotation=6]": "minecraft:white_banner[rotation=6]", + "minecraft:orange_banner[rotation=7]": "minecraft:white_banner[rotation=7]", + "minecraft:orange_banner[rotation=8]": "minecraft:white_banner[rotation=8]", + "minecraft:orange_banner[rotation=9]": "minecraft:white_banner[rotation=9]", + "minecraft:orange_banner[rotation=10]": "minecraft:white_banner[rotation=10]", + "minecraft:orange_banner[rotation=11]": "minecraft:white_banner[rotation=11]", + "minecraft:orange_banner[rotation=12]": "minecraft:white_banner[rotation=12]", + "minecraft:orange_banner[rotation=13]": "minecraft:white_banner[rotation=13]", + "minecraft:orange_banner[rotation=14]": "minecraft:white_banner[rotation=14]", + "minecraft:orange_banner[rotation=15]": "minecraft:white_banner[rotation=15]", + "minecraft:magenta_banner[rotation=0]": "minecraft:white_banner[rotation=0]", + "minecraft:magenta_banner[rotation=1]": "minecraft:white_banner[rotation=1]", + "minecraft:magenta_banner[rotation=2]": "minecraft:white_banner[rotation=2]", + "minecraft:magenta_banner[rotation=3]": "minecraft:white_banner[rotation=3]", + "minecraft:magenta_banner[rotation=4]": "minecraft:white_banner[rotation=4]", + "minecraft:magenta_banner[rotation=5]": "minecraft:white_banner[rotation=5]", + "minecraft:magenta_banner[rotation=6]": "minecraft:white_banner[rotation=6]", + "minecraft:magenta_banner[rotation=7]": "minecraft:white_banner[rotation=7]", + "minecraft:magenta_banner[rotation=8]": "minecraft:white_banner[rotation=8]", + "minecraft:magenta_banner[rotation=9]": "minecraft:white_banner[rotation=9]", + "minecraft:magenta_banner[rotation=10]": "minecraft:white_banner[rotation=10]", + "minecraft:magenta_banner[rotation=11]": "minecraft:white_banner[rotation=11]", + "minecraft:magenta_banner[rotation=12]": "minecraft:white_banner[rotation=12]", + "minecraft:magenta_banner[rotation=13]": "minecraft:white_banner[rotation=13]", + "minecraft:magenta_banner[rotation=14]": "minecraft:white_banner[rotation=14]", + "minecraft:magenta_banner[rotation=15]": "minecraft:white_banner[rotation=15]", + "minecraft:light_blue_banner[rotation=0]": "minecraft:white_banner[rotation=0]", + "minecraft:light_blue_banner[rotation=1]": "minecraft:white_banner[rotation=1]", + "minecraft:light_blue_banner[rotation=2]": "minecraft:white_banner[rotation=2]", + "minecraft:light_blue_banner[rotation=3]": "minecraft:white_banner[rotation=3]", + "minecraft:light_blue_banner[rotation=4]": "minecraft:white_banner[rotation=4]", + "minecraft:light_blue_banner[rotation=5]": "minecraft:white_banner[rotation=5]", + "minecraft:light_blue_banner[rotation=6]": "minecraft:white_banner[rotation=6]", + "minecraft:light_blue_banner[rotation=7]": "minecraft:white_banner[rotation=7]", + "minecraft:light_blue_banner[rotation=8]": "minecraft:white_banner[rotation=8]", + "minecraft:light_blue_banner[rotation=9]": "minecraft:white_banner[rotation=9]", + "minecraft:light_blue_banner[rotation=10]": "minecraft:white_banner[rotation=10]", + "minecraft:light_blue_banner[rotation=11]": "minecraft:white_banner[rotation=11]", + "minecraft:light_blue_banner[rotation=12]": "minecraft:white_banner[rotation=12]", + "minecraft:light_blue_banner[rotation=13]": "minecraft:white_banner[rotation=13]", + "minecraft:light_blue_banner[rotation=14]": "minecraft:white_banner[rotation=14]", + "minecraft:light_blue_banner[rotation=15]": "minecraft:white_banner[rotation=15]", + "minecraft:yellow_banner[rotation=0]": "minecraft:white_banner[rotation=0]", + "minecraft:yellow_banner[rotation=1]": "minecraft:white_banner[rotation=1]", + "minecraft:yellow_banner[rotation=2]": "minecraft:white_banner[rotation=2]", + "minecraft:yellow_banner[rotation=3]": "minecraft:white_banner[rotation=3]", + "minecraft:yellow_banner[rotation=4]": "minecraft:white_banner[rotation=4]", + "minecraft:yellow_banner[rotation=5]": "minecraft:white_banner[rotation=5]", + "minecraft:yellow_banner[rotation=6]": "minecraft:white_banner[rotation=6]", + "minecraft:yellow_banner[rotation=7]": "minecraft:white_banner[rotation=7]", + "minecraft:yellow_banner[rotation=8]": "minecraft:white_banner[rotation=8]", + "minecraft:yellow_banner[rotation=9]": "minecraft:white_banner[rotation=9]", + "minecraft:yellow_banner[rotation=10]": "minecraft:white_banner[rotation=10]", + "minecraft:yellow_banner[rotation=11]": "minecraft:white_banner[rotation=11]", + "minecraft:yellow_banner[rotation=12]": "minecraft:white_banner[rotation=12]", + "minecraft:yellow_banner[rotation=13]": "minecraft:white_banner[rotation=13]", + "minecraft:yellow_banner[rotation=14]": "minecraft:white_banner[rotation=14]", + "minecraft:yellow_banner[rotation=15]": "minecraft:white_banner[rotation=15]", + "minecraft:lime_banner[rotation=0]": "minecraft:white_banner[rotation=0]", + "minecraft:lime_banner[rotation=1]": "minecraft:white_banner[rotation=1]", + "minecraft:lime_banner[rotation=2]": "minecraft:white_banner[rotation=2]", + "minecraft:lime_banner[rotation=3]": "minecraft:white_banner[rotation=3]", + "minecraft:lime_banner[rotation=4]": "minecraft:white_banner[rotation=4]", + "minecraft:lime_banner[rotation=5]": "minecraft:white_banner[rotation=5]", + "minecraft:lime_banner[rotation=6]": "minecraft:white_banner[rotation=6]", + "minecraft:lime_banner[rotation=7]": "minecraft:white_banner[rotation=7]", + "minecraft:lime_banner[rotation=8]": "minecraft:white_banner[rotation=8]", + "minecraft:lime_banner[rotation=9]": "minecraft:white_banner[rotation=9]", + "minecraft:lime_banner[rotation=10]": "minecraft:white_banner[rotation=10]", + "minecraft:lime_banner[rotation=11]": "minecraft:white_banner[rotation=11]", + "minecraft:lime_banner[rotation=12]": "minecraft:white_banner[rotation=12]", + "minecraft:lime_banner[rotation=13]": "minecraft:white_banner[rotation=13]", + "minecraft:lime_banner[rotation=14]": "minecraft:white_banner[rotation=14]", + "minecraft:lime_banner[rotation=15]": "minecraft:white_banner[rotation=15]", + "minecraft:pink_banner[rotation=0]": "minecraft:white_banner[rotation=0]", + "minecraft:pink_banner[rotation=1]": "minecraft:white_banner[rotation=1]", + "minecraft:pink_banner[rotation=2]": "minecraft:white_banner[rotation=2]", + "minecraft:pink_banner[rotation=3]": "minecraft:white_banner[rotation=3]", + "minecraft:pink_banner[rotation=4]": "minecraft:white_banner[rotation=4]", + "minecraft:pink_banner[rotation=5]": "minecraft:white_banner[rotation=5]", + "minecraft:pink_banner[rotation=6]": "minecraft:white_banner[rotation=6]", + "minecraft:pink_banner[rotation=7]": "minecraft:white_banner[rotation=7]", + "minecraft:pink_banner[rotation=8]": "minecraft:white_banner[rotation=8]", + "minecraft:pink_banner[rotation=9]": "minecraft:white_banner[rotation=9]", + "minecraft:pink_banner[rotation=10]": "minecraft:white_banner[rotation=10]", + "minecraft:pink_banner[rotation=11]": "minecraft:white_banner[rotation=11]", + "minecraft:pink_banner[rotation=12]": "minecraft:white_banner[rotation=12]", + "minecraft:pink_banner[rotation=13]": "minecraft:white_banner[rotation=13]", + "minecraft:pink_banner[rotation=14]": "minecraft:white_banner[rotation=14]", + "minecraft:pink_banner[rotation=15]": "minecraft:white_banner[rotation=15]", + "minecraft:gray_banner[rotation=0]": "minecraft:white_banner[rotation=0]", + "minecraft:gray_banner[rotation=1]": "minecraft:white_banner[rotation=1]", + "minecraft:gray_banner[rotation=2]": "minecraft:white_banner[rotation=2]", + "minecraft:gray_banner[rotation=3]": "minecraft:white_banner[rotation=3]", + "minecraft:gray_banner[rotation=4]": "minecraft:white_banner[rotation=4]", + "minecraft:gray_banner[rotation=5]": "minecraft:white_banner[rotation=5]", + "minecraft:gray_banner[rotation=6]": "minecraft:white_banner[rotation=6]", + "minecraft:gray_banner[rotation=7]": "minecraft:white_banner[rotation=7]", + "minecraft:gray_banner[rotation=8]": "minecraft:white_banner[rotation=8]", + "minecraft:gray_banner[rotation=9]": "minecraft:white_banner[rotation=9]", + "minecraft:gray_banner[rotation=10]": "minecraft:white_banner[rotation=10]", + "minecraft:gray_banner[rotation=11]": "minecraft:white_banner[rotation=11]", + "minecraft:gray_banner[rotation=12]": "minecraft:white_banner[rotation=12]", + "minecraft:gray_banner[rotation=13]": "minecraft:white_banner[rotation=13]", + "minecraft:gray_banner[rotation=14]": "minecraft:white_banner[rotation=14]", + "minecraft:gray_banner[rotation=15]": "minecraft:white_banner[rotation=15]", + "minecraft:light_gray_banner[rotation=0]": "minecraft:white_banner[rotation=0]", + "minecraft:light_gray_banner[rotation=1]": "minecraft:white_banner[rotation=1]", + "minecraft:light_gray_banner[rotation=2]": "minecraft:white_banner[rotation=2]", + "minecraft:light_gray_banner[rotation=3]": "minecraft:white_banner[rotation=3]", + "minecraft:light_gray_banner[rotation=4]": "minecraft:white_banner[rotation=4]", + "minecraft:light_gray_banner[rotation=5]": "minecraft:white_banner[rotation=5]", + "minecraft:light_gray_banner[rotation=6]": "minecraft:white_banner[rotation=6]", + "minecraft:light_gray_banner[rotation=7]": "minecraft:white_banner[rotation=7]", + "minecraft:light_gray_banner[rotation=8]": "minecraft:white_banner[rotation=8]", + "minecraft:light_gray_banner[rotation=9]": "minecraft:white_banner[rotation=9]", + "minecraft:light_gray_banner[rotation=10]": "minecraft:white_banner[rotation=10]", + "minecraft:light_gray_banner[rotation=11]": "minecraft:white_banner[rotation=11]", + "minecraft:light_gray_banner[rotation=12]": "minecraft:white_banner[rotation=12]", + "minecraft:light_gray_banner[rotation=13]": "minecraft:white_banner[rotation=13]", + "minecraft:light_gray_banner[rotation=14]": "minecraft:white_banner[rotation=14]", + "minecraft:light_gray_banner[rotation=15]": "minecraft:white_banner[rotation=15]", + "minecraft:cyan_banner[rotation=0]": "minecraft:white_banner[rotation=0]", + "minecraft:cyan_banner[rotation=1]": "minecraft:white_banner[rotation=1]", + "minecraft:cyan_banner[rotation=2]": "minecraft:white_banner[rotation=2]", + "minecraft:cyan_banner[rotation=3]": "minecraft:white_banner[rotation=3]", + "minecraft:cyan_banner[rotation=4]": "minecraft:white_banner[rotation=4]", + "minecraft:cyan_banner[rotation=5]": "minecraft:white_banner[rotation=5]", + "minecraft:cyan_banner[rotation=6]": "minecraft:white_banner[rotation=6]", + "minecraft:cyan_banner[rotation=7]": "minecraft:white_banner[rotation=7]", + "minecraft:cyan_banner[rotation=8]": "minecraft:white_banner[rotation=8]", + "minecraft:cyan_banner[rotation=9]": "minecraft:white_banner[rotation=9]", + "minecraft:cyan_banner[rotation=10]": "minecraft:white_banner[rotation=10]", + "minecraft:cyan_banner[rotation=11]": "minecraft:white_banner[rotation=11]", + "minecraft:cyan_banner[rotation=12]": "minecraft:white_banner[rotation=12]", + "minecraft:cyan_banner[rotation=13]": "minecraft:white_banner[rotation=13]", + "minecraft:cyan_banner[rotation=14]": "minecraft:white_banner[rotation=14]", + "minecraft:cyan_banner[rotation=15]": "minecraft:white_banner[rotation=15]", + "minecraft:purple_banner[rotation=0]": "minecraft:white_banner[rotation=0]", + "minecraft:purple_banner[rotation=1]": "minecraft:white_banner[rotation=1]", + "minecraft:purple_banner[rotation=2]": "minecraft:white_banner[rotation=2]", + "minecraft:purple_banner[rotation=3]": "minecraft:white_banner[rotation=3]", + "minecraft:purple_banner[rotation=4]": "minecraft:white_banner[rotation=4]", + "minecraft:purple_banner[rotation=5]": "minecraft:white_banner[rotation=5]", + "minecraft:purple_banner[rotation=6]": "minecraft:white_banner[rotation=6]", + "minecraft:purple_banner[rotation=7]": "minecraft:white_banner[rotation=7]", + "minecraft:purple_banner[rotation=8]": "minecraft:white_banner[rotation=8]", + "minecraft:purple_banner[rotation=9]": "minecraft:white_banner[rotation=9]", + "minecraft:purple_banner[rotation=10]": "minecraft:white_banner[rotation=10]", + "minecraft:purple_banner[rotation=11]": "minecraft:white_banner[rotation=11]", + "minecraft:purple_banner[rotation=12]": "minecraft:white_banner[rotation=12]", + "minecraft:purple_banner[rotation=13]": "minecraft:white_banner[rotation=13]", + "minecraft:purple_banner[rotation=14]": "minecraft:white_banner[rotation=14]", + "minecraft:purple_banner[rotation=15]": "minecraft:white_banner[rotation=15]", + "minecraft:blue_banner[rotation=0]": "minecraft:white_banner[rotation=0]", + "minecraft:blue_banner[rotation=1]": "minecraft:white_banner[rotation=1]", + "minecraft:blue_banner[rotation=2]": "minecraft:white_banner[rotation=2]", + "minecraft:blue_banner[rotation=3]": "minecraft:white_banner[rotation=3]", + "minecraft:blue_banner[rotation=4]": "minecraft:white_banner[rotation=4]", + "minecraft:blue_banner[rotation=5]": "minecraft:white_banner[rotation=5]", + "minecraft:blue_banner[rotation=6]": "minecraft:white_banner[rotation=6]", + "minecraft:blue_banner[rotation=7]": "minecraft:white_banner[rotation=7]", + "minecraft:blue_banner[rotation=8]": "minecraft:white_banner[rotation=8]", + "minecraft:blue_banner[rotation=9]": "minecraft:white_banner[rotation=9]", + "minecraft:blue_banner[rotation=10]": "minecraft:white_banner[rotation=10]", + "minecraft:blue_banner[rotation=11]": "minecraft:white_banner[rotation=11]", + "minecraft:blue_banner[rotation=12]": "minecraft:white_banner[rotation=12]", + "minecraft:blue_banner[rotation=13]": "minecraft:white_banner[rotation=13]", + "minecraft:blue_banner[rotation=14]": "minecraft:white_banner[rotation=14]", + "minecraft:blue_banner[rotation=15]": "minecraft:white_banner[rotation=15]", + "minecraft:brown_banner[rotation=0]": "minecraft:white_banner[rotation=0]", + "minecraft:brown_banner[rotation=1]": "minecraft:white_banner[rotation=1]", + "minecraft:brown_banner[rotation=2]": "minecraft:white_banner[rotation=2]", + "minecraft:brown_banner[rotation=3]": "minecraft:white_banner[rotation=3]", + "minecraft:brown_banner[rotation=4]": "minecraft:white_banner[rotation=4]", + "minecraft:brown_banner[rotation=5]": "minecraft:white_banner[rotation=5]", + "minecraft:brown_banner[rotation=6]": "minecraft:white_banner[rotation=6]", + "minecraft:brown_banner[rotation=7]": "minecraft:white_banner[rotation=7]", + "minecraft:brown_banner[rotation=8]": "minecraft:white_banner[rotation=8]", + "minecraft:brown_banner[rotation=9]": "minecraft:white_banner[rotation=9]", + "minecraft:brown_banner[rotation=10]": "minecraft:white_banner[rotation=10]", + "minecraft:brown_banner[rotation=11]": "minecraft:white_banner[rotation=11]", + "minecraft:brown_banner[rotation=12]": "minecraft:white_banner[rotation=12]", + "minecraft:brown_banner[rotation=13]": "minecraft:white_banner[rotation=13]", + "minecraft:brown_banner[rotation=14]": "minecraft:white_banner[rotation=14]", + "minecraft:brown_banner[rotation=15]": "minecraft:white_banner[rotation=15]", + "minecraft:green_banner[rotation=0]": "minecraft:white_banner[rotation=0]", + "minecraft:green_banner[rotation=1]": "minecraft:white_banner[rotation=1]", + "minecraft:green_banner[rotation=2]": "minecraft:white_banner[rotation=2]", + "minecraft:green_banner[rotation=3]": "minecraft:white_banner[rotation=3]", + "minecraft:green_banner[rotation=4]": "minecraft:white_banner[rotation=4]", + "minecraft:green_banner[rotation=5]": "minecraft:white_banner[rotation=5]", + "minecraft:green_banner[rotation=6]": "minecraft:white_banner[rotation=6]", + "minecraft:green_banner[rotation=7]": "minecraft:white_banner[rotation=7]", + "minecraft:green_banner[rotation=8]": "minecraft:white_banner[rotation=8]", + "minecraft:green_banner[rotation=9]": "minecraft:white_banner[rotation=9]", + "minecraft:green_banner[rotation=10]": "minecraft:white_banner[rotation=10]", + "minecraft:green_banner[rotation=11]": "minecraft:white_banner[rotation=11]", + "minecraft:green_banner[rotation=12]": "minecraft:white_banner[rotation=12]", + "minecraft:green_banner[rotation=13]": "minecraft:white_banner[rotation=13]", + "minecraft:green_banner[rotation=14]": "minecraft:white_banner[rotation=14]", + "minecraft:green_banner[rotation=15]": "minecraft:white_banner[rotation=15]", + "minecraft:red_banner[rotation=0]": "minecraft:white_banner[rotation=0]", + "minecraft:red_banner[rotation=1]": "minecraft:white_banner[rotation=1]", + "minecraft:red_banner[rotation=2]": "minecraft:white_banner[rotation=2]", + "minecraft:red_banner[rotation=3]": "minecraft:white_banner[rotation=3]", + "minecraft:red_banner[rotation=4]": "minecraft:white_banner[rotation=4]", + "minecraft:red_banner[rotation=5]": "minecraft:white_banner[rotation=5]", + "minecraft:red_banner[rotation=6]": "minecraft:white_banner[rotation=6]", + "minecraft:red_banner[rotation=7]": "minecraft:white_banner[rotation=7]", + "minecraft:red_banner[rotation=8]": "minecraft:white_banner[rotation=8]", + "minecraft:red_banner[rotation=9]": "minecraft:white_banner[rotation=9]", + "minecraft:red_banner[rotation=10]": "minecraft:white_banner[rotation=10]", + "minecraft:red_banner[rotation=11]": "minecraft:white_banner[rotation=11]", + "minecraft:red_banner[rotation=12]": "minecraft:white_banner[rotation=12]", + "minecraft:red_banner[rotation=13]": "minecraft:white_banner[rotation=13]", + "minecraft:red_banner[rotation=14]": "minecraft:white_banner[rotation=14]", + "minecraft:red_banner[rotation=15]": "minecraft:white_banner[rotation=15]", + "minecraft:black_banner[rotation=0]": "minecraft:white_banner[rotation=0]", + "minecraft:black_banner[rotation=1]": "minecraft:white_banner[rotation=1]", + "minecraft:black_banner[rotation=2]": "minecraft:white_banner[rotation=2]", + "minecraft:black_banner[rotation=3]": "minecraft:white_banner[rotation=3]", + "minecraft:black_banner[rotation=4]": "minecraft:white_banner[rotation=4]", + "minecraft:black_banner[rotation=5]": "minecraft:white_banner[rotation=5]", + "minecraft:black_banner[rotation=6]": "minecraft:white_banner[rotation=6]", + "minecraft:black_banner[rotation=7]": "minecraft:white_banner[rotation=7]", + "minecraft:black_banner[rotation=8]": "minecraft:white_banner[rotation=8]", + "minecraft:black_banner[rotation=9]": "minecraft:white_banner[rotation=9]", + "minecraft:black_banner[rotation=10]": "minecraft:white_banner[rotation=10]", + "minecraft:black_banner[rotation=11]": "minecraft:white_banner[rotation=11]", + "minecraft:black_banner[rotation=12]": "minecraft:white_banner[rotation=12]", + "minecraft:black_banner[rotation=13]": "minecraft:white_banner[rotation=13]", + "minecraft:black_banner[rotation=14]": "minecraft:white_banner[rotation=14]", + "minecraft:black_banner[rotation=15]": "minecraft:white_banner[rotation=15]", + "minecraft:orange_wall_banner[facing=north]": "minecraft:white_wall_banner[facing=north]", + "minecraft:orange_wall_banner[facing=south]": "minecraft:white_wall_banner[facing=south]", + "minecraft:orange_wall_banner[facing=west]": "minecraft:white_wall_banner[facing=west]", + "minecraft:orange_wall_banner[facing=east]": "minecraft:white_wall_banner[facing=east]", + "minecraft:magenta_wall_banner[facing=north]": "minecraft:white_wall_banner[facing=north]", + "minecraft:magenta_wall_banner[facing=south]": "minecraft:white_wall_banner[facing=south]", + "minecraft:magenta_wall_banner[facing=west]": "minecraft:white_wall_banner[facing=west]", + "minecraft:magenta_wall_banner[facing=east]": "minecraft:white_wall_banner[facing=east]", + "minecraft:light_blue_wall_banner[facing=north]": "minecraft:white_wall_banner[facing=north]", + "minecraft:light_blue_wall_banner[facing=south]": "minecraft:white_wall_banner[facing=south]", + "minecraft:light_blue_wall_banner[facing=west]": "minecraft:white_wall_banner[facing=west]", + "minecraft:light_blue_wall_banner[facing=east]": "minecraft:white_wall_banner[facing=east]", + "minecraft:yellow_wall_banner[facing=north]": "minecraft:white_wall_banner[facing=north]", + "minecraft:yellow_wall_banner[facing=south]": "minecraft:white_wall_banner[facing=south]", + "minecraft:yellow_wall_banner[facing=west]": "minecraft:white_wall_banner[facing=west]", + "minecraft:yellow_wall_banner[facing=east]": "minecraft:white_wall_banner[facing=east]", + "minecraft:lime_wall_banner[facing=north]": "minecraft:white_wall_banner[facing=north]", + "minecraft:lime_wall_banner[facing=south]": "minecraft:white_wall_banner[facing=south]", + "minecraft:lime_wall_banner[facing=west]": "minecraft:white_wall_banner[facing=west]", + "minecraft:lime_wall_banner[facing=east]": "minecraft:white_wall_banner[facing=east]", + "minecraft:pink_wall_banner[facing=north]": "minecraft:white_wall_banner[facing=north]", + "minecraft:pink_wall_banner[facing=south]": "minecraft:white_wall_banner[facing=south]", + "minecraft:pink_wall_banner[facing=west]": "minecraft:white_wall_banner[facing=west]", + "minecraft:pink_wall_banner[facing=east]": "minecraft:white_wall_banner[facing=east]", + "minecraft:gray_wall_banner[facing=north]": "minecraft:white_wall_banner[facing=north]", + "minecraft:gray_wall_banner[facing=south]": "minecraft:white_wall_banner[facing=south]", + "minecraft:gray_wall_banner[facing=west]": "minecraft:white_wall_banner[facing=west]", + "minecraft:gray_wall_banner[facing=east]": "minecraft:white_wall_banner[facing=east]", + "minecraft:light_gray_wall_banner[facing=north]": "minecraft:white_wall_banner[facing=north]", + "minecraft:light_gray_wall_banner[facing=south]": "minecraft:white_wall_banner[facing=south]", + "minecraft:light_gray_wall_banner[facing=west]": "minecraft:white_wall_banner[facing=west]", + "minecraft:light_gray_wall_banner[facing=east]": "minecraft:white_wall_banner[facing=east]", + "minecraft:cyan_wall_banner[facing=north]": "minecraft:white_wall_banner[facing=north]", + "minecraft:cyan_wall_banner[facing=south]": "minecraft:white_wall_banner[facing=south]", + "minecraft:cyan_wall_banner[facing=west]": "minecraft:white_wall_banner[facing=west]", + "minecraft:cyan_wall_banner[facing=east]": "minecraft:white_wall_banner[facing=east]", + "minecraft:purple_wall_banner[facing=north]": "minecraft:white_wall_banner[facing=north]", + "minecraft:purple_wall_banner[facing=south]": "minecraft:white_wall_banner[facing=south]", + "minecraft:purple_wall_banner[facing=west]": "minecraft:white_wall_banner[facing=west]", + "minecraft:purple_wall_banner[facing=east]": "minecraft:white_wall_banner[facing=east]", + "minecraft:blue_wall_banner[facing=north]": "minecraft:white_wall_banner[facing=north]", + "minecraft:blue_wall_banner[facing=south]": "minecraft:white_wall_banner[facing=south]", + "minecraft:blue_wall_banner[facing=west]": "minecraft:white_wall_banner[facing=west]", + "minecraft:blue_wall_banner[facing=east]": "minecraft:white_wall_banner[facing=east]", + "minecraft:brown_wall_banner[facing=north]": "minecraft:white_wall_banner[facing=north]", + "minecraft:brown_wall_banner[facing=south]": "minecraft:white_wall_banner[facing=south]", + "minecraft:brown_wall_banner[facing=west]": "minecraft:white_wall_banner[facing=west]", + "minecraft:brown_wall_banner[facing=east]": "minecraft:white_wall_banner[facing=east]", + "minecraft:green_wall_banner[facing=north]": "minecraft:white_wall_banner[facing=north]", + "minecraft:green_wall_banner[facing=south]": "minecraft:white_wall_banner[facing=south]", + "minecraft:green_wall_banner[facing=west]": "minecraft:white_wall_banner[facing=west]", + "minecraft:green_wall_banner[facing=east]": "minecraft:white_wall_banner[facing=east]", + "minecraft:red_wall_banner[facing=north]": "minecraft:white_wall_banner[facing=north]", + "minecraft:red_wall_banner[facing=south]": "minecraft:white_wall_banner[facing=south]", + "minecraft:red_wall_banner[facing=west]": "minecraft:white_wall_banner[facing=west]", + "minecraft:red_wall_banner[facing=east]": "minecraft:white_wall_banner[facing=east]", + "minecraft:black_wall_banner[facing=north]": "minecraft:white_wall_banner[facing=north]", + "minecraft:black_wall_banner[facing=south]": "minecraft:white_wall_banner[facing=south]", + "minecraft:black_wall_banner[facing=west]": "minecraft:white_wall_banner[facing=west]", + "minecraft:black_wall_banner[facing=east]": "minecraft:white_wall_banner[facing=east]" } } \ No newline at end of file From 520eb15ce9f3f8128454657f7f27fad2510ed9b3 Mon Sep 17 00:00:00 2001 From: Matsv Date: Sun, 20 Jan 2019 17:19:26 +0100 Subject: [PATCH 027/171] Handle skull block entities --- .../block_entity_handlers/SkullHandler.java | 39 ++++++ .../packets/BlockItemPackets1_13.java | 1 + .../BackwardsBlockEntityProvider.java | 5 +- .../storage/BackwardsBlockStorage.java | 6 +- .../data/mapping-1.12.2to1.13.json | 122 +++++++++++++++++- 5 files changed, 167 insertions(+), 6 deletions(-) create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/SkullHandler.java diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/SkullHandler.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/SkullHandler.java new file mode 100644 index 00000000..fd7b04f0 --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/SkullHandler.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2016 Matsv + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handlers; + +import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.providers.BackwardsBlockEntityProvider.BackwardsBlockEntityHandler; +import us.myles.ViaVersion.api.data.UserConnection; +import us.myles.viaversion.libs.opennbt.tag.builtin.ByteTag; +import us.myles.viaversion.libs.opennbt.tag.builtin.CompoundTag; + +public class SkullHandler implements BackwardsBlockEntityHandler { + private final int SKULL_START = 5447; + + @Override + public CompoundTag transform(UserConnection user, int blockId, CompoundTag tag) { + int pos = (blockId - SKULL_START) % 20; + byte type = (byte) Math.floor((blockId - SKULL_START) / 20); + + // Set type + tag.put(new ByteTag("SkullType", type)); + + // Remove wall skulls + if (pos < 4) { + return tag; + } + + // Add rotation for normal skulls + tag.put(new ByteTag("Rot", (byte) ((pos - 4) & 255))); + + return tag; + } +} 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 7e38ec27..0361c576 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 @@ -73,6 +73,7 @@ public class BlockItemPackets1_13 extends Rewriter { BackwardsBlockEntityProvider provider = Via.getManager().getProviders().get(BackwardsBlockEntityProvider.class); switch (wrapper.get(Type.UNSIGNED_BYTE, 0)) { + case 4: case 6: case 11: wrapper.set(Type.NBT, 0, diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/providers/BackwardsBlockEntityProvider.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/providers/BackwardsBlockEntityProvider.java index ea99ae58..14036af2 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/providers/BackwardsBlockEntityProvider.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/providers/BackwardsBlockEntityProvider.java @@ -13,6 +13,7 @@ package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.providers; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handlers.BannerHandler; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handlers.BedHandler; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handlers.FlowerPotHandler; +import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handlers.SkullHandler; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.storage.BackwardsBlockStorage; import us.myles.ViaVersion.api.Via; import us.myles.ViaVersion.api.data.UserConnection; @@ -27,10 +28,10 @@ public class BackwardsBlockEntityProvider implements Provider { private final Map handlers = new ConcurrentHashMap<>(); public BackwardsBlockEntityProvider() { - handlers.put("minecraft:flower_pot", new FlowerPotHandler()); + handlers.put("minecraft:flower_pot", new FlowerPotHandler()); // TODO requires special treatment, manually send handlers.put("minecraft:bed", new BedHandler()); handlers.put("minecraft:banner", new BannerHandler()); -// handlers.put("minecraft:skull", ); + handlers.put("minecraft:skull", new SkullHandler()); // handlers.put("minecraft:mob_spawner", ); } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/storage/BackwardsBlockStorage.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/storage/BackwardsBlockStorage.java index d6834629..9fad83dd 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/storage/BackwardsBlockStorage.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/storage/BackwardsBlockStorage.java @@ -41,9 +41,9 @@ public class BackwardsBlockStorage extends StoredObject { // whitelist.add(7110 + i); // } - // Skeleton skulls -// for (int i = 0; i < 5; i++) -// whitelist.add(5447 + i); + // Skulls + for (int i = 5447; i <= 5566; i++) + whitelist.add(i); } diff --git a/core/src/main/resources/assets/viabackwards/data/mapping-1.12.2to1.13.json b/core/src/main/resources/assets/viabackwards/data/mapping-1.12.2to1.13.json index 7ae182f9..e851eb36 100644 --- a/core/src/main/resources/assets/viabackwards/data/mapping-1.12.2to1.13.json +++ b/core/src/main/resources/assets/viabackwards/data/mapping-1.12.2to1.13.json @@ -5127,6 +5127,126 @@ "minecraft:black_wall_banner[facing=north]": "minecraft:white_wall_banner[facing=north]", "minecraft:black_wall_banner[facing=south]": "minecraft:white_wall_banner[facing=south]", "minecraft:black_wall_banner[facing=west]": "minecraft:white_wall_banner[facing=west]", - "minecraft:black_wall_banner[facing=east]": "minecraft:white_wall_banner[facing=east]" + "minecraft:black_wall_banner[facing=east]": "minecraft:white_wall_banner[facing=east]", + "minecraft:skeleton_wall_skull[facing=north]": "id:2306", + "minecraft:skeleton_wall_skull[facing=south]": "id:2307", + "minecraft:skeleton_wall_skull[facing=west]": "id:2308", + "minecraft:skeleton_wall_skull[facing=east]": "id:2309", + "minecraft:skeleton_skull[rotation=0]": "id:2305", + "minecraft:skeleton_skull[rotation=1]": "id:2305", + "minecraft:skeleton_skull[rotation=2]": "id:2305", + "minecraft:skeleton_skull[rotation=3]": "id:2305", + "minecraft:skeleton_skull[rotation=4]": "id:2305", + "minecraft:skeleton_skull[rotation=5]": "id:2305", + "minecraft:skeleton_skull[rotation=6]": "id:2305", + "minecraft:skeleton_skull[rotation=7]": "id:2305", + "minecraft:skeleton_skull[rotation=8]": "id:2305", + "minecraft:skeleton_skull[rotation=9]": "id:2305", + "minecraft:skeleton_skull[rotation=10]": "id:2305", + "minecraft:skeleton_skull[rotation=11]": "id:2305", + "minecraft:skeleton_skull[rotation=12]": "id:2305", + "minecraft:skeleton_skull[rotation=13]": "id:2305", + "minecraft:skeleton_skull[rotation=14]": "id:2305", + "minecraft:skeleton_skull[rotation=15]": "id:2305", + "minecraft:wither_skeleton_wall_skull[facing=north]": "id:2306", + "minecraft:wither_skeleton_wall_skull[facing=south]": "id:2307", + "minecraft:wither_skeleton_wall_skull[facing=west]": "id:2308", + "minecraft:wither_skeleton_wall_skull[facing=east]": "id:2309", + "minecraft:wither_skeleton_skull[rotation=0]": "id:2305", + "minecraft:wither_skeleton_skull[rotation=1]": "id:2305", + "minecraft:wither_skeleton_skull[rotation=2]": "id:2305", + "minecraft:wither_skeleton_skull[rotation=3]": "id:2305", + "minecraft:wither_skeleton_skull[rotation=4]": "id:2305", + "minecraft:wither_skeleton_skull[rotation=5]": "id:2305", + "minecraft:wither_skeleton_skull[rotation=6]": "id:2305", + "minecraft:wither_skeleton_skull[rotation=7]": "id:2305", + "minecraft:wither_skeleton_skull[rotation=8]": "id:2305", + "minecraft:wither_skeleton_skull[rotation=9]": "id:2305", + "minecraft:wither_skeleton_skull[rotation=10]": "id:2305", + "minecraft:wither_skeleton_skull[rotation=11]": "id:2305", + "minecraft:wither_skeleton_skull[rotation=12]": "id:2305", + "minecraft:wither_skeleton_skull[rotation=13]": "id:2305", + "minecraft:wither_skeleton_skull[rotation=14]": "id:2305", + "minecraft:wither_skeleton_skull[rotation=15]": "id:2305", + "minecraft:zombie_wall_head[facing=north]": "id:2306", + "minecraft:zombie_wall_head[facing=south]": "id:2307", + "minecraft:zombie_wall_head[facing=west]": "id:2308", + "minecraft:zombie_wall_head[facing=east]": "id:2309", + "minecraft:zombie_head[rotation=0]": "id:2305", + "minecraft:zombie_head[rotation=1]": "id:2305", + "minecraft:zombie_head[rotation=2]": "id:2305", + "minecraft:zombie_head[rotation=3]": "id:2305", + "minecraft:zombie_head[rotation=4]": "id:2305", + "minecraft:zombie_head[rotation=5]": "id:2305", + "minecraft:zombie_head[rotation=6]": "id:2305", + "minecraft:zombie_head[rotation=7]": "id:2305", + "minecraft:zombie_head[rotation=8]": "id:2305", + "minecraft:zombie_head[rotation=9]": "id:2305", + "minecraft:zombie_head[rotation=10]": "id:2305", + "minecraft:zombie_head[rotation=11]": "id:2305", + "minecraft:zombie_head[rotation=12]": "id:2305", + "minecraft:zombie_head[rotation=13]": "id:2305", + "minecraft:zombie_head[rotation=14]": "id:2305", + "minecraft:zombie_head[rotation=15]": "id:2305", + "minecraft:player_wall_head[facing=north]": "id:2306", + "minecraft:player_wall_head[facing=south]": "id:2307", + "minecraft:player_wall_head[facing=west]": "id:2308", + "minecraft:player_wall_head[facing=east]": "id:2309", + "minecraft:player_head[rotation=0]": "id:2305", + "minecraft:player_head[rotation=1]": "id:2305", + "minecraft:player_head[rotation=2]": "id:2305", + "minecraft:player_head[rotation=3]": "id:2305", + "minecraft:player_head[rotation=4]": "id:2305", + "minecraft:player_head[rotation=5]": "id:2305", + "minecraft:player_head[rotation=6]": "id:2305", + "minecraft:player_head[rotation=7]": "id:2305", + "minecraft:player_head[rotation=8]": "id:2305", + "minecraft:player_head[rotation=9]": "id:2305", + "minecraft:player_head[rotation=10]": "id:2305", + "minecraft:player_head[rotation=11]": "id:2305", + "minecraft:player_head[rotation=12]": "id:2305", + "minecraft:player_head[rotation=13]": "id:2305", + "minecraft:player_head[rotation=14]": "id:2305", + "minecraft:player_head[rotation=15]": "id:2305", + "minecraft:creeper_wall_head[facing=north]": "id:2306", + "minecraft:creeper_wall_head[facing=south]": "id:2307", + "minecraft:creeper_wall_head[facing=west]": "id:2308", + "minecraft:creeper_wall_head[facing=east]": "id:2309", + "minecraft:creeper_head[rotation=0]": "id:2305", + "minecraft:creeper_head[rotation=1]": "id:2305", + "minecraft:creeper_head[rotation=2]": "id:2305", + "minecraft:creeper_head[rotation=3]": "id:2305", + "minecraft:creeper_head[rotation=4]": "id:2305", + "minecraft:creeper_head[rotation=5]": "id:2305", + "minecraft:creeper_head[rotation=6]": "id:2305", + "minecraft:creeper_head[rotation=7]": "id:2305", + "minecraft:creeper_head[rotation=8]": "id:2305", + "minecraft:creeper_head[rotation=9]": "id:2305", + "minecraft:creeper_head[rotation=10]": "id:2305", + "minecraft:creeper_head[rotation=11]": "id:2305", + "minecraft:creeper_head[rotation=12]": "id:2305", + "minecraft:creeper_head[rotation=13]": "id:2305", + "minecraft:creeper_head[rotation=14]": "id:2305", + "minecraft:creeper_head[rotation=15]": "id:2305", + "minecraft:dragon_wall_head[facing=north]": "id:2306", + "minecraft:dragon_wall_head[facing=south]": "id:2307", + "minecraft:dragon_wall_head[facing=west]": "id:2308", + "minecraft:dragon_wall_head[facing=east]": "id:2309", + "minecraft:dragon_head[rotation=0]": "id:2305", + "minecraft:dragon_head[rotation=1]": "id:2305", + "minecraft:dragon_head[rotation=2]": "id:2305", + "minecraft:dragon_head[rotation=3]": "id:2305", + "minecraft:dragon_head[rotation=4]": "id:2305", + "minecraft:dragon_head[rotation=5]": "id:2305", + "minecraft:dragon_head[rotation=6]": "id:2305", + "minecraft:dragon_head[rotation=7]": "id:2305", + "minecraft:dragon_head[rotation=8]": "id:2305", + "minecraft:dragon_head[rotation=9]": "id:2305", + "minecraft:dragon_head[rotation=10]": "id:2305", + "minecraft:dragon_head[rotation=11]": "id:2305", + "minecraft:dragon_head[rotation=12]": "id:2305", + "minecraft:dragon_head[rotation=13]": "id:2305", + "minecraft:dragon_head[rotation=14]": "id:2305", + "minecraft:dragon_head[rotation=15]": "id:2305" } } \ No newline at end of file From 03768d7124e3931b8ceb24250d0502c450bb6041 Mon Sep 17 00:00:00 2001 From: Matsv Date: Sun, 20 Jan 2019 20:23:40 +0100 Subject: [PATCH 028/171] Handle mob spawner changes --- .../block_entity_handlers/SpawnerHandler.java | 32 +++++++++++ .../data/EntityNameRewrites.java | 53 +++++++++++++++++++ .../packets/BlockItemPackets1_13.java | 24 ++++----- .../BackwardsBlockEntityProvider.java | 7 +-- .../storage/BackwardsBlockStorage.java | 8 ++- 5 files changed, 100 insertions(+), 24 deletions(-) create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/SpawnerHandler.java create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/EntityNameRewrites.java diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/SpawnerHandler.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/SpawnerHandler.java new file mode 100644 index 00000000..649d814f --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/SpawnerHandler.java @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2016 Matsv + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handlers; + +import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.data.EntityNameRewrites; +import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.providers.BackwardsBlockEntityProvider; +import us.myles.ViaVersion.api.data.UserConnection; +import us.myles.viaversion.libs.opennbt.tag.builtin.CompoundTag; +import us.myles.viaversion.libs.opennbt.tag.builtin.StringTag; + +public class SpawnerHandler implements BackwardsBlockEntityProvider.BackwardsBlockEntityHandler { + @Override + public CompoundTag transform(UserConnection user, int blockId, CompoundTag tag) { + if (tag.contains("SpawnData") && tag.get("SpawnData") instanceof CompoundTag) { + CompoundTag data = tag.get("SpawnData"); + if (data.contains("id") && data.get("id") instanceof StringTag) { + StringTag s = data.get("id"); + s.setValue(EntityNameRewrites.rewrite(s.getValue())); + } + } + + return tag; + } +} diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/EntityNameRewrites.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/EntityNameRewrites.java new file mode 100644 index 00000000..decda120 --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/EntityNameRewrites.java @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2016 Matsv + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.data; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +public class EntityNameRewrites { + private static Map entityNames = new ConcurrentHashMap<>(); + + static { + /* + CHANGED NAMES IN 1.13 + */ + reg("commandblock_minecart", "command_block_minecart"); + reg("ender_crystal", "end_crystal"); + reg("evocation_fangs", "evoker_fangs"); + reg("evocation_illager", "evoker"); + reg("eye_of_ender_signal", "eye_of_ender"); + reg("fireworks_rocket", "firework_rocket"); + reg("illusion_illager", "illusioner"); + reg("snowman", "snow_golem"); + reg("villager_golem", "iron_golem"); + reg("vindication_illager", "vindicator"); + reg("xp_bottle", "experience_bottle"); + reg("xp_orb", "experience_orb"); + } + + + private static void reg(String past, String future) { + entityNames.put("minecraft:" + future, "minecraft:" + past); + } + + public static String rewrite(String entName) { + String entityName = entityNames.get(entName); + if (entityName != null) { + return entityName; + } + entityName = entityNames.get("minecraft:" + entName); + if (entityName != null) { + return entityName; + } else + return entName; + } +} 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 0361c576..6125aa0b 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 @@ -72,21 +72,17 @@ public class BlockItemPackets1_13 extends Rewriter { public void handle(PacketWrapper wrapper) throws Exception { BackwardsBlockEntityProvider provider = Via.getManager().getProviders().get(BackwardsBlockEntityProvider.class); - switch (wrapper.get(Type.UNSIGNED_BYTE, 0)) { - case 4: - case 6: - case 11: - wrapper.set(Type.NBT, 0, - provider.transform( - wrapper.user(), - wrapper.get(Type.POSITION, 0), - wrapper.get(Type.NBT, 0) - )); - break; - default: - wrapper.cancel(); // TODO CONFIRM EVERYTHING WORKING BEFORE REMOVING THIS - break; + // TODO conduit handling + if (wrapper.get(Type.UNSIGNED_BYTE, 0) == 5) { + wrapper.cancel(); } + + wrapper.set(Type.NBT, 0, + provider.transform( + wrapper.user(), + wrapper.get(Type.POSITION, 0), + wrapper.get(Type.NBT, 0) + )); } }); } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/providers/BackwardsBlockEntityProvider.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/providers/BackwardsBlockEntityProvider.java index 14036af2..7b29ab28 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/providers/BackwardsBlockEntityProvider.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/providers/BackwardsBlockEntityProvider.java @@ -10,10 +10,7 @@ package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.providers; -import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handlers.BannerHandler; -import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handlers.BedHandler; -import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handlers.FlowerPotHandler; -import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handlers.SkullHandler; +import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handlers.*; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.storage.BackwardsBlockStorage; import us.myles.ViaVersion.api.Via; import us.myles.ViaVersion.api.data.UserConnection; @@ -32,7 +29,7 @@ public class BackwardsBlockEntityProvider implements Provider { handlers.put("minecraft:bed", new BedHandler()); handlers.put("minecraft:banner", new BannerHandler()); handlers.put("minecraft:skull", new SkullHandler()); -// handlers.put("minecraft:mob_spawner", ); + handlers.put("minecraft:mob_spawner", new SpawnerHandler()); } /** diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/storage/BackwardsBlockStorage.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/storage/BackwardsBlockStorage.java index 9fad83dd..a1a63f7c 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/storage/BackwardsBlockStorage.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/storage/BackwardsBlockStorage.java @@ -35,11 +35,9 @@ public class BackwardsBlockStorage extends StoredObject { // Add the banners for (int i = 6854; i <= 7173; i++) whitelist.add(i); -// - // Add the white wall banners -// for (int i = 0; i < 4; i++) { -// whitelist.add(7110 + i); -// } + + // Spawner + whitelist.add(1647); // Skulls for (int i = 5447; i <= 5566; i++) From e261ced7016696e228e79adfb5b9cbb570d549fa Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Mon, 21 Jan 2019 14:04:29 +0100 Subject: [PATCH 029/171] fix teams packet --- .../packets/PlayerPacket1_13.java | 29 ++++++++++++------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java index 7d0ba1da..679a48ee 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java @@ -105,23 +105,32 @@ public class PlayerPacket1_13 extends Rewriter { if (displayName.length() > 32) displayName = displayName.substring(0, 32); wrapper.write(Type.STRING, displayName); - String prefix = wrapper.read(Type.STRING); - String suffix = wrapper.read(Type.STRING); - - wrapper.passthrough(Type.BYTE); //Flags - - wrapper.passthrough(Type.STRING); //Name Tag Visibility - wrapper.passthrough(Type.STRING); //Collision Rule + byte flags = wrapper.read(Type.BYTE); + String nameTagVisibility = wrapper.read(Type.STRING); + String collisionRule = wrapper.read(Type.STRING); int colour = wrapper.read(Type.VAR_INT); if (colour == 21) { colour = -1; } - wrapper.write(Type.BYTE, (byte) colour); + //TODO team color/prefix handling changed from 1.12.2 to 1.13 and to 1.13.1 again afaik + String prefix = wrapper.read(Type.STRING); + String suffix = wrapper.read(Type.STRING); + prefix = ChatRewriter.jsonTextToLegacy(prefix); + prefix += "§" + (colour > -1 && colour <= 15 ? Integer.toHexString(colour) : "r"); + if (prefix.length() > 16) prefix = prefix.substring(0, 16); + if (prefix.endsWith("§")) prefix = prefix.substring(0, prefix.length() - 1); + suffix = ChatRewriter.jsonTextToLegacy(suffix); + if (suffix.endsWith("§")) suffix = suffix.substring(0, suffix.length() - 1); + wrapper.write(Type.STRING, prefix); + wrapper.write(Type.STRING, suffix); - wrapper.write(Type.STRING, ChatRewriter.jsonTextToLegacy(prefix)); - wrapper.write(Type.STRING, ChatRewriter.jsonTextToLegacy(suffix)); + wrapper.write(Type.BYTE, flags); + wrapper.write(Type.STRING, nameTagVisibility); + wrapper.write(Type.STRING, collisionRule); + + wrapper.write(Type.BYTE, (byte) colour); } if (action == 0 || action == 3 || action == 4) { From fadebbc17b8ff91cc3bdaead117d106fe82af2dc Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Mon, 21 Jan 2019 14:18:24 +0100 Subject: [PATCH 030/171] rewrite items in metadata --- .../protocol1_12_2to1_13/packets/EntityPackets1_13.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java index 99438011..205335d5 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java @@ -13,6 +13,7 @@ import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.Protocol1_12_2To1_13; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.data.EntityTypeMapping; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.data.PaintingMapping; import us.myles.ViaVersion.api.PacketWrapper; +import us.myles.ViaVersion.api.minecraft.item.Item; import us.myles.ViaVersion.api.minecraft.metadata.Metadata; import us.myles.ViaVersion.api.minecraft.metadata.types.MetaType1_12; import us.myles.ViaVersion.api.remapper.PacketHandler; @@ -399,6 +400,12 @@ public class EntityPackets1_13 extends EntityRewriter { } } + // Rewrite items + else if (typeId == 6) { + meta.setMetaType(MetaType1_12.Slot); + BlockItemPackets1_13.toClient((Item) meta.getValue()); + } + // Discontinue particles else if (typeId == 15) { meta.setMetaType(MetaType1_12.Discontinued); From 88e83f9aade77ea44432653148ae5b217a550486 Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Mon, 21 Jan 2019 14:37:48 +0100 Subject: [PATCH 031/171] use ViaBackwards logger instead of ViaVersions --- .../block_entity_handlers/BannerHandler.java | 4 ++-- .../protocol1_12_2to1_13/data/BackwardsMappings.java | 2 +- .../protocol1_12_2to1_13/packets/BlockItemPackets1_13.java | 3 ++- .../providers/BackwardsBlockEntityProvider.java | 5 +++-- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/BannerHandler.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/BannerHandler.java index 8f4eb1de..dc51c327 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/BannerHandler.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/BannerHandler.java @@ -10,8 +10,8 @@ package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handlers; +import nl.matsv.viabackwards.ViaBackwards; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.providers.BackwardsBlockEntityProvider.BackwardsBlockEntityHandler; -import us.myles.ViaVersion.api.Via; import us.myles.ViaVersion.api.data.UserConnection; import us.myles.viaversion.libs.opennbt.tag.builtin.CompoundTag; import us.myles.viaversion.libs.opennbt.tag.builtin.IntTag; @@ -37,7 +37,7 @@ public class BannerHandler implements BackwardsBlockEntityHandler { int color = (blockId - WALL_BANNER_START) >> 2; tag.put(new IntTag("Base", (15 - color))); } else { - Via.getPlatform().getLogger().warning("Why does this block have the banner block entity? :(" + tag); + ViaBackwards.getPlatform().getLogger().warning("Why does this block have the banner block entity? :(" + tag); } // Invert colors diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/BackwardsMappings.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/BackwardsMappings.java index 42a8be00..27008c71 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/BackwardsMappings.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/BackwardsMappings.java @@ -31,7 +31,7 @@ public class BackwardsMappings { us.myles.viaversion.libs.gson.JsonObject mapping1_13 = MappingData.loadData("mapping-1.13.json"); us.myles.viaversion.libs.gson.JsonObject mapping1_12_2to1_13 = loadData("mapping-1.12.2to1.13.json"); - Via.getPlatform().getLogger().info("Loading block mapping..."); + ViaBackwards.getPlatform().getLogger().info("Loading block mapping..."); blockMappings = new BlockMappingsShortArray(mapping1_13.getAsJsonObject("blocks"), mapping1_12.getAsJsonObject("blocks"), mapping1_12_2to1_13.getAsJsonObject("blockstates")); } 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 6125aa0b..f153af26 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 @@ -10,6 +10,7 @@ package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.packets; +import nl.matsv.viabackwards.ViaBackwards; import nl.matsv.viabackwards.api.rewriters.Rewriter; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.Protocol1_12_2To1_13; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.data.BackwardsMappings; @@ -42,7 +43,7 @@ public class BlockItemPackets1_13 extends Rewriter { if (newId != -1) return newId; - Via.getPlatform().getLogger().warning("Missing block completely " + oldId); + ViaBackwards.getPlatform().getLogger().warning("Missing block completely " + oldId); // Default stone return 1 << 4; } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/providers/BackwardsBlockEntityProvider.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/providers/BackwardsBlockEntityProvider.java index 7b29ab28..3792a978 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/providers/BackwardsBlockEntityProvider.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/providers/BackwardsBlockEntityProvider.java @@ -10,6 +10,7 @@ package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.providers; +import nl.matsv.viabackwards.ViaBackwards; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handlers.*; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.storage.BackwardsBlockStorage; import us.myles.ViaVersion.api.Via; @@ -54,7 +55,7 @@ public class BackwardsBlockEntityProvider implements Provider { BackwardsBlockEntityHandler handler = handlers.get(id); if (handler == null) { if (Via.getManager().isDebug()) { - Via.getPlatform().getLogger().warning("Unhandled BlockEntity " + id + " full tag: " + tag); + ViaBackwards.getPlatform().getLogger().warning("Unhandled BlockEntity " + id + " full tag: " + tag); } return tag; } @@ -63,7 +64,7 @@ public class BackwardsBlockEntityProvider implements Provider { if (!storage.contains(position)) { if (Via.getManager().isDebug()) { - Via.getPlatform().getLogger().warning("Handled BlockEntity does not have a stored block :( " + id + " full tag: " + tag); + ViaBackwards.getPlatform().getLogger().warning("Handled BlockEntity does not have a stored block :( " + id + " full tag: " + tag); } return tag; } From 5a3b59ce2923407e98a26c2e87a5a941c2085093 Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Mon, 21 Jan 2019 16:05:46 +0100 Subject: [PATCH 032/171] fix boss bar packet --- .../protocol/protocol1_13to1_13_1/Protocol1_13To1_13_1.java | 1 + 1 file changed, 1 insertion(+) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/Protocol1_13To1_13_1.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/Protocol1_13To1_13_1.java index 1f629fbc..cb57be17 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/Protocol1_13To1_13_1.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/Protocol1_13To1_13_1.java @@ -95,6 +95,7 @@ public class Protocol1_13To1_13_1 extends BackwardsProtocol { wrapper.passthrough(Type.STRING); wrapper.passthrough(Type.FLOAT); wrapper.passthrough(Type.VAR_INT); + wrapper.passthrough(Type.VAR_INT); short flags = wrapper.read(Type.UNSIGNED_BYTE); if ((flags & 0x04) != 0) flags |= 0x02; wrapper.write(Type.UNSIGNED_BYTE, flags); From 97bd12fc33be1fb4f9c5036606f13b6f9fa83812 Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Mon, 21 Jan 2019 16:24:05 +0100 Subject: [PATCH 033/171] use BLOCK_CHANGE_RECORD_ARRAY --- .../packets/BlockItemPackets1_11.java | 12 ++++-------- .../packets/BlockItemPackets1_12.java | 12 ++++-------- .../packets/BlockItemPackets1_10.java | 12 ++++-------- 3 files changed, 12 insertions(+), 24 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_10to1_11/packets/BlockItemPackets1_11.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_10to1_11/packets/BlockItemPackets1_11.java index 10519452..27ca1f29 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_10to1_11/packets/BlockItemPackets1_11.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_10to1_11/packets/BlockItemPackets1_11.java @@ -22,6 +22,7 @@ import nl.matsv.viabackwards.protocol.protocol1_12to1_11_1.data.BlockColors; import nl.matsv.viabackwards.utils.Block; import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.data.UserConnection; +import us.myles.ViaVersion.api.minecraft.BlockChangeRecord; import us.myles.ViaVersion.api.minecraft.chunks.Chunk; import us.myles.ViaVersion.api.minecraft.item.Item; import us.myles.ViaVersion.api.minecraft.metadata.Metadata; @@ -269,18 +270,13 @@ public class BlockItemPackets1_11 extends BlockItemRewriter public void registerMap() { map(Type.INT); // 0 - Chunk X map(Type.INT); // 1 - Chunk Z + map(Type.BLOCK_CHANGE_RECORD_ARRAY); handler(new PacketHandler() { @Override public void handle(PacketWrapper wrapper) throws Exception { - int count = wrapper.passthrough(Type.VAR_INT); // Array length - - for (int i = 0; i < count; i++) { - wrapper.passthrough(Type.UNSIGNED_BYTE); // Horizontal position - wrapper.passthrough(Type.UNSIGNED_BYTE); // Y coords - - int id = wrapper.read(Type.VAR_INT); // Block ID - wrapper.write(Type.VAR_INT, handleBlockID(id)); + for (BlockChangeRecord record : wrapper.get(Type.BLOCK_CHANGE_RECORD_ARRAY, 0)) { + record.setBlockId(handleBlockID(record.getBlockId())); } } }); diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/packets/BlockItemPackets1_12.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/packets/BlockItemPackets1_12.java index 354dd452..603f6949 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/packets/BlockItemPackets1_12.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/packets/BlockItemPackets1_12.java @@ -16,6 +16,7 @@ import nl.matsv.viabackwards.protocol.protocol1_12to1_11_1.data.BlockColors; import nl.matsv.viabackwards.protocol.protocol1_12to1_11_1.data.MapColorMapping; import nl.matsv.viabackwards.utils.Block; import us.myles.ViaVersion.api.PacketWrapper; +import us.myles.ViaVersion.api.minecraft.BlockChangeRecord; import us.myles.ViaVersion.api.minecraft.chunks.Chunk; import us.myles.ViaVersion.api.minecraft.item.Item; import us.myles.ViaVersion.api.minecraft.metadata.Metadata; @@ -242,18 +243,13 @@ public class BlockItemPackets1_12 extends BlockItemRewriter public void registerMap() { map(Type.INT); // 0 - Chunk X map(Type.INT); // 1 - Chunk Z + map(Type.BLOCK_CHANGE_RECORD_ARRAY); handler(new PacketHandler() { @Override public void handle(PacketWrapper wrapper) throws Exception { - int count = wrapper.passthrough(Type.VAR_INT); // Array length - - for (int i = 0; i < count; i++) { - wrapper.passthrough(Type.UNSIGNED_BYTE); // Horizontal position - wrapper.passthrough(Type.UNSIGNED_BYTE); // Y coords - - int id = wrapper.read(Type.VAR_INT); // Block ID - wrapper.write(Type.VAR_INT, handleBlockID(id)); + for (BlockChangeRecord record : wrapper.get(Type.BLOCK_CHANGE_RECORD_ARRAY, 0)) { + record.setBlockId(handleBlockID(record.getBlockId())); } } }); From 0018159c896c8bd8c75932fcece11061bd1a5ee0 Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Mon, 21 Jan 2019 21:12:48 +0100 Subject: [PATCH 034/171] fix tab complete --- .../protocol1_12_2to1_13/packets/PlayerPacket1_13.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java index 679a48ee..ea62045a 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java @@ -184,8 +184,9 @@ public class PlayerPacket1_13 extends Rewriter { // Ignore fields wrapper.read(Type.BOOLEAN); - wrapper.read(Type.OPTIONAL_POSITION); - + if (wrapper.read(Type.BOOLEAN)) { + wrapper.read(Type.POSITION); + } } }); } From 34ed045ba6ebc7640980fdbd92f7b754008ed616 Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Mon, 21 Jan 2019 21:35:40 +0100 Subject: [PATCH 035/171] arrow metadata fix --- .../protocol1_12_2to1_13/packets/EntityPackets1_13.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java index 205335d5..8c3b8d26 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java @@ -464,8 +464,13 @@ public class EntityPackets1_13 extends EntityRewriter { // Remove boat splash timer registerMetaHandler().filter(EntityType.BOAT, 12).removed(); + //Remove shooter UUID + registerMetaHandler().filter(EntityType.ABSTRACT_ARROW, true, 7).removed(); + + registerMetaHandler().filter(EntityType.SPECTRAL_ARROW, 8).handleIndexChange(8); + // Remove Trident special loyalty level - registerMetaHandler().filter(EntityType.TRIDENT, 7).removed(); + registerMetaHandler().filter(EntityType.TRIDENT, 8).removed(); // Handle new wolf colors registerMetaHandler().filter(EntityType.WOLF, 17).handle(e -> { From 3b2128acaad02bedfdbdfa017ca62c166dd2dc44 Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Mon, 21 Jan 2019 22:16:35 +0100 Subject: [PATCH 036/171] fix metadata index --- .../protocol1_12_2to1_13/packets/EntityPackets1_13.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java index 8c3b8d26..e93d279e 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java @@ -467,7 +467,7 @@ public class EntityPackets1_13 extends EntityRewriter { //Remove shooter UUID registerMetaHandler().filter(EntityType.ABSTRACT_ARROW, true, 7).removed(); - registerMetaHandler().filter(EntityType.SPECTRAL_ARROW, 8).handleIndexChange(8); + registerMetaHandler().filter(EntityType.SPECTRAL_ARROW, 8).handleIndexChange(7); // Remove Trident special loyalty level registerMetaHandler().filter(EntityType.TRIDENT, 8).removed(); From 085c9e13ad308e789f0d8aec8f4daf7c8080253b Mon Sep 17 00:00:00 2001 From: Matsv Date: Mon, 21 Jan 2019 22:23:25 +0100 Subject: [PATCH 037/171] Fix typo --- .../protocol1_9_4to1_10/packets/BlockItemPackets1_10.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_9_4to1_10/packets/BlockItemPackets1_10.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_9_4to1_10/packets/BlockItemPackets1_10.java index 5fa3c414..32dc71e2 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_9_4to1_10/packets/BlockItemPackets1_10.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_9_4to1_10/packets/BlockItemPackets1_10.java @@ -234,7 +234,7 @@ public class BlockItemPackets1_10 extends BlockItemRewriter rewrite(255).repItem(new Item((short) 166, (byte) 1, (short) 0, getNamedTag("1.10 Structure Block"))); // Structure block only item since the structure block is in 1.9 rewrite(217).repItem(new Item((short) 287, (byte) 1, (short) 0, getNamedTag("1.10 Structure Void"))).repBlock(new Block(287, 0)); // Structure void to string rewrite(213).repItem(new Item((short) 159, (byte) 1, (short) 1, getNamedTag("1.10 Magma Block"))).repBlock(new Block(159, 1)); // Magma block to orange clay - rewrite(214).repItem(new Item((short) 159, (byte) 1, (short) 14, getNamedTag("1.10 Nether Ward Block"))).repBlock(new Block(159, 14)); // Nether wart block to red clay + rewrite(214).repItem(new Item((short) 159, (byte) 1, (short) 14, getNamedTag("1.10 Nether Ward Block"))).repBlock(new Block(159, 14)); // Nether ward block to red clay rewrite(215).repItem(new Item((short) 112, (byte) 1, (short) 0, getNamedTag("1.10 Red Nether Bricks"))).repBlock(new Block(112, 0)); // Red nether brick to nether brick rewrite(216).repItem(new Item((short) 155, (byte) 1, (short) 0, getNamedTag("1.10 Bone Block"))).repBlock(new Block(155, 0)); // Bone block to quartz } From 4f9334c1ddd6d6abb4aea20ae141453f127cf534 Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Tue, 22 Jan 2019 13:58:06 +0100 Subject: [PATCH 038/171] fix tab complete --- .../protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java index ea62045a..8de399a4 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java @@ -157,7 +157,7 @@ public class PlayerPacket1_13 extends Rewriter { String match = wrapper.read(Type.STRING); wrapper.write(Type.STRING, (start == 0 ? "/" : "") + match); // Ignore tooltip - wrapper.read(Type.OPTIONAL_CHAT); + if (wrapper.read(Type.BOOLEAN)) wrapper.read(Type.STRING); } } }); From ccf132ff50fd89435e515e9bbdb202a8911b41b7 Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Tue, 22 Jan 2019 14:41:50 +0100 Subject: [PATCH 039/171] remove unused colors from team prefix/suffix --- .../packets/PlayerPacket1_13.java | 4 +++ .../nl/matsv/viabackwards/utils/ChatUtil.java | 32 +++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 core/src/main/java/nl/matsv/viabackwards/utils/ChatUtil.java diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java index ea62045a..f2240384 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java @@ -3,6 +3,7 @@ package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.packets; import nl.matsv.viabackwards.ViaBackwards; import nl.matsv.viabackwards.api.rewriters.Rewriter; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.Protocol1_12_2To1_13; +import nl.matsv.viabackwards.utils.ChatUtil; import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.minecraft.Position; import us.myles.ViaVersion.api.minecraft.item.Item; @@ -102,6 +103,7 @@ public class PlayerPacket1_13 extends Rewriter { if (action == 0 || action == 2) { String displayName = wrapper.read(Type.STRING); displayName = ChatRewriter.jsonTextToLegacy(displayName); + displayName = ChatUtil.removeUnusedColor(displayName, 'f'); if (displayName.length() > 32) displayName = displayName.substring(0, 32); wrapper.write(Type.STRING, displayName); @@ -119,9 +121,11 @@ public class PlayerPacket1_13 extends Rewriter { String suffix = wrapper.read(Type.STRING); prefix = ChatRewriter.jsonTextToLegacy(prefix); prefix += "§" + (colour > -1 && colour <= 15 ? Integer.toHexString(colour) : "r"); + prefix = ChatUtil.removeUnusedColor(prefix, 'f', true); if (prefix.length() > 16) prefix = prefix.substring(0, 16); if (prefix.endsWith("§")) prefix = prefix.substring(0, prefix.length() - 1); suffix = ChatRewriter.jsonTextToLegacy(suffix); + suffix = ChatUtil.removeUnusedColor(suffix, 'f'); if (suffix.endsWith("§")) suffix = suffix.substring(0, suffix.length() - 1); wrapper.write(Type.STRING, prefix); wrapper.write(Type.STRING, suffix); diff --git a/core/src/main/java/nl/matsv/viabackwards/utils/ChatUtil.java b/core/src/main/java/nl/matsv/viabackwards/utils/ChatUtil.java new file mode 100644 index 00000000..8792469d --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/utils/ChatUtil.java @@ -0,0 +1,32 @@ +package nl.matsv.viabackwards.utils; + +import java.util.regex.Pattern; + +public class ChatUtil { + private static final Pattern UNUSED_COLOR_PATTERN = Pattern.compile("(?>(?>§[0-fk-or])*(§r|\\Z))|(?>(?>§[0-f])*(§[0-f]))"); + private static final Pattern UNUSED_COLOR_PATTERN_PREFIX = Pattern.compile("(?>(?>§[0-fk-or])*(§r))|(?>(?>§[0-f])*(§[0-f]))"); + + public static String removeUnusedColor(String legacy, char defaultColor) { + return removeUnusedColor(legacy, defaultColor, false); + } + + public static String removeUnusedColor(String legacy, char defaultColor, boolean isPrefix) { + if (legacy == null) return null; + Pattern pattern = isPrefix ? UNUSED_COLOR_PATTERN_PREFIX : UNUSED_COLOR_PATTERN; + legacy = pattern.matcher(legacy).replaceAll("$1$2"); + StringBuilder builder = new StringBuilder(); + char last = defaultColor; + for (int i = 0; i < legacy.length(); i++) { + char current = legacy.charAt(i); + if (current != '§' || i == legacy.length() - 1) { + builder.append(current); + continue; + } + current = legacy.charAt(++i); + if (current == last) continue; + builder.append('§').append(current); + last = current; + } + return builder.toString(); + } +} From e5a110f24f78d57e6a28c9615797e235fc3d7b3d Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Tue, 22 Jan 2019 15:42:09 +0100 Subject: [PATCH 040/171] fix mapping issue --- .../protocol/protocol1_13to1_13_1/Protocol1_13To1_13_1.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/Protocol1_13To1_13_1.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/Protocol1_13To1_13_1.java index cb57be17..7992037e 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/Protocol1_13To1_13_1.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/Protocol1_13To1_13_1.java @@ -182,8 +182,8 @@ public class Protocol1_13To1_13_1 extends BackwardsProtocol { public static int getNewBlockStateId(int blockId) { if (blockId > 8590) { blockId -= 17; - } else if (blockId > 8573) { - blockId = 0; //TODO replace new blocks + } else if (blockId > 8588) { + blockId = 8573; } else if (blockId > 8479) { blockId -= 16; } else if (blockId > 8469 && blockId % 2 == 0) { From 3fc55638f91c4e53be0aa315e7fa877c4a923edc Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Tue, 22 Jan 2019 20:33:39 +0100 Subject: [PATCH 041/171] fix NPE --- .../protocol1_12_2to1_13/packets/PlayerPacket1_13.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java index f2240384..32fb8399 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java @@ -119,12 +119,12 @@ public class PlayerPacket1_13 extends Rewriter { //TODO team color/prefix handling changed from 1.12.2 to 1.13 and to 1.13.1 again afaik String prefix = wrapper.read(Type.STRING); String suffix = wrapper.read(Type.STRING); - prefix = ChatRewriter.jsonTextToLegacy(prefix); + prefix = prefix == null ? "" : ChatRewriter.jsonTextToLegacy(prefix); prefix += "§" + (colour > -1 && colour <= 15 ? Integer.toHexString(colour) : "r"); prefix = ChatUtil.removeUnusedColor(prefix, 'f', true); if (prefix.length() > 16) prefix = prefix.substring(0, 16); if (prefix.endsWith("§")) prefix = prefix.substring(0, prefix.length() - 1); - suffix = ChatRewriter.jsonTextToLegacy(suffix); + suffix = suffix == null ? "" : ChatRewriter.jsonTextToLegacy(suffix); suffix = ChatUtil.removeUnusedColor(suffix, 'f'); if (suffix.endsWith("§")) suffix = suffix.substring(0, suffix.length() - 1); wrapper.write(Type.STRING, prefix); From c539cc6e57f70427cea80e4a0fd3e6344189e6ee Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Tue, 22 Jan 2019 20:59:00 +0100 Subject: [PATCH 042/171] fix NPE --- .../protocol1_12_2to1_13/packets/PlayerPacket1_13.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java index 32fb8399..e71b0acc 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java @@ -119,12 +119,12 @@ public class PlayerPacket1_13 extends Rewriter { //TODO team color/prefix handling changed from 1.12.2 to 1.13 and to 1.13.1 again afaik String prefix = wrapper.read(Type.STRING); String suffix = wrapper.read(Type.STRING); - prefix = prefix == null ? "" : ChatRewriter.jsonTextToLegacy(prefix); + prefix = prefix == null || prefix.equals("null") ? "" : ChatRewriter.jsonTextToLegacy(prefix); prefix += "§" + (colour > -1 && colour <= 15 ? Integer.toHexString(colour) : "r"); prefix = ChatUtil.removeUnusedColor(prefix, 'f', true); if (prefix.length() > 16) prefix = prefix.substring(0, 16); if (prefix.endsWith("§")) prefix = prefix.substring(0, prefix.length() - 1); - suffix = suffix == null ? "" : ChatRewriter.jsonTextToLegacy(suffix); + suffix = suffix == null || suffix.equals("null") ? "" : ChatRewriter.jsonTextToLegacy(suffix); suffix = ChatUtil.removeUnusedColor(suffix, 'f'); if (suffix.endsWith("§")) suffix = suffix.substring(0, suffix.length() - 1); wrapper.write(Type.STRING, prefix); From 7b9cde99469a2746b26026bd858ad594edd4d7fc Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Tue, 22 Jan 2019 21:25:53 +0100 Subject: [PATCH 043/171] fix wrong protocol --- .../protocol/protocol1_10to1_11/packets/PlayerPackets1_11.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_10to1_11/packets/PlayerPackets1_11.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_10to1_11/packets/PlayerPackets1_11.java index cb13e8aa..8450fd9e 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_10to1_11/packets/PlayerPackets1_11.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_10to1_11/packets/PlayerPackets1_11.java @@ -17,7 +17,6 @@ import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.api.remapper.ValueTransformer; import us.myles.ViaVersion.api.type.Type; import us.myles.ViaVersion.packets.State; -import us.myles.ViaVersion.protocols.protocol1_11to1_10.Protocol1_11To1_10; public class PlayerPackets1_11 { private static final ValueTransformer toNewFloat = new ValueTransformer(Type.FLOAT) { @@ -48,7 +47,7 @@ public class PlayerPackets1_11 { actionbar.write(Type.STRING, wrapper.read(Type.STRING)); actionbar.write(Type.BYTE, (byte) 2); // Above hotbar - actionbar.send(Protocol1_11To1_10.class); + actionbar.send(Protocol1_10To1_11.class); wrapper.cancel(); // Cancel the title packet return; From 8519ad8cf15d27bea2580bbf70e7ed8f3afdc84c Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Tue, 22 Jan 2019 21:41:49 +0100 Subject: [PATCH 044/171] fix actionbar color --- .../protocol1_10to1_11/packets/PlayerPackets1_11.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_10to1_11/packets/PlayerPackets1_11.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_10to1_11/packets/PlayerPackets1_11.java index 8450fd9e..bde99336 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_10to1_11/packets/PlayerPackets1_11.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_10to1_11/packets/PlayerPackets1_11.java @@ -17,6 +17,7 @@ import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.api.remapper.ValueTransformer; import us.myles.ViaVersion.api.type.Type; import us.myles.ViaVersion.packets.State; +import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.ChatRewriter; public class PlayerPackets1_11 { private static final ValueTransformer toNewFloat = new ValueTransformer(Type.FLOAT) { @@ -44,7 +45,10 @@ public class PlayerPackets1_11 { if (action == 2) { // Convert to the old actionbar way PacketWrapper actionbar = new PacketWrapper(0x0F, null, wrapper.user()); // Chat Message packet - actionbar.write(Type.STRING, wrapper.read(Type.STRING)); + String msg = wrapper.read(Type.STRING); + msg = ChatRewriter.jsonTextToLegacy(msg); + msg = "{\"text\":\"" + msg + "\"}"; + actionbar.write(Type.STRING, msg); actionbar.write(Type.BYTE, (byte) 2); // Above hotbar actionbar.send(Protocol1_10To1_11.class); From 22a486752ba9e395bdae201ddb3f462e0ec4b2b8 Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Tue, 22 Jan 2019 21:49:17 +0100 Subject: [PATCH 045/171] remove sysout --- .../protocol1_12_2to1_13/packets/PlayerPacket1_13.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java index 8de399a4..06361308 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java @@ -203,13 +203,9 @@ public class PlayerPacket1_13 extends Rewriter { if (channel.equals("MC|BSign") || channel.equals("MC|BEdit")) { wrapper.setId(0x0B); Item book = wrapper.read(Type.ITEM); - System.out.println(book); BlockItemPackets1_13.toServer(book); - System.out.println(book); wrapper.write(Type.FLAT_ITEM, book); boolean signing = channel.equals("MC|BSign"); - System.out.println(channel); - System.out.println(signing); wrapper.write(Type.BOOLEAN, signing); } else if (channel.equals("MC|ItemName")) { wrapper.setId(0x1C); From 42bfe19c9cf90dcb814c8ceffe00be7bd4dc8aa5 Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Tue, 22 Jan 2019 22:37:24 +0100 Subject: [PATCH 046/171] block action block ids --- .../packets/BlockItemPackets1_13.java | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) 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 f153af26..18ec26bf 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 @@ -60,6 +60,46 @@ public class BlockItemPackets1_13 extends Rewriter { @Override protected void registerPackets(Protocol1_12_2To1_13 protocol) { + // Block Action + protocol.out(State.PLAY, 0x0A, 0x0A, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.POSITION); // Location + map(Type.UNSIGNED_BYTE); // Action Id + map(Type.UNSIGNED_BYTE); // Action param + map(Type.VAR_INT); // Block Id - /!\ NOT BLOCK STATE ID + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + int blockId = wrapper.get(Type.VAR_INT, 0); + + if (blockId == 73) + blockId = 25; + else if (blockId == 99) + blockId = 33; + else if (blockId == 92) + blockId = 29; + else if (blockId == 142) + blockId = 54; + else if (blockId == 305) + blockId = 146; + else if (blockId == 249) + blockId = 130; + else if (blockId == 257) + blockId = 138; + else if (blockId == 140) + blockId = 52; + else if (blockId == 472) + blockId = 209; + else if (blockId >= 483 && blockId <= 498) + blockId = blockId - 483 + 219; + + wrapper.set(Type.VAR_INT, 0, blockId); + } + }); + } + }); + // Update Block Entity protocol.out(State.PLAY, 0x09, 0x09, new PacketRemapper() { @Override From 2f1c54ca933b892cbe9941c8f7e13cfdaf5762d5 Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Wed, 23 Jan 2019 11:15:26 +0100 Subject: [PATCH 047/171] fix package name --- .../nl/matsv/viabackwards/api/ViaBackwardsPlatform.java | 3 +-- .../viabackwards/api/rewriters/BlockItemRewriter.java | 2 +- .../protocol1_10to1_11/packets/BlockItemPackets1_11.java | 2 +- .../Protocol1_11_1To1_12.java | 6 +++--- .../data/AdvancementTranslations.java | 2 +- .../data/BlockColors.java | 2 +- .../data/MapColorMapping.java | 2 +- .../data/ParrotStorage.java | 2 +- .../data/ShoulderTracker.java | 2 +- .../packets/BlockItemPackets1_12.java | 8 ++++---- .../packets/ChangedPacketIds1_12.java | 4 ++-- .../packets/ChatPackets1_12.java | 6 +++--- .../packets/EntityPackets1_12.java | 8 ++++---- .../packets/SoundPackets1_12.java | 4 ++-- 14 files changed, 26 insertions(+), 27 deletions(-) rename core/src/main/java/nl/matsv/viabackwards/protocol/{protocol1_12to1_11_1 => protocol1_11_1to1_12}/Protocol1_11_1To1_12.java (92%) rename core/src/main/java/nl/matsv/viabackwards/protocol/{protocol1_12to1_11_1 => protocol1_11_1to1_12}/data/AdvancementTranslations.java (99%) rename core/src/main/java/nl/matsv/viabackwards/protocol/{protocol1_12to1_11_1 => protocol1_11_1to1_12}/data/BlockColors.java (96%) rename core/src/main/java/nl/matsv/viabackwards/protocol/{protocol1_12to1_11_1 => protocol1_11_1to1_12}/data/MapColorMapping.java (98%) rename core/src/main/java/nl/matsv/viabackwards/protocol/{protocol1_12to1_11_1 => protocol1_11_1to1_12}/data/ParrotStorage.java (95%) rename core/src/main/java/nl/matsv/viabackwards/protocol/{protocol1_12to1_11_1 => protocol1_11_1to1_12}/data/ShoulderTracker.java (98%) rename core/src/main/java/nl/matsv/viabackwards/protocol/{protocol1_12to1_11_1 => protocol1_11_1to1_12}/packets/BlockItemPackets1_12.java (98%) rename core/src/main/java/nl/matsv/viabackwards/protocol/{protocol1_12to1_11_1 => protocol1_11_1to1_12}/packets/ChangedPacketIds1_12.java (98%) rename core/src/main/java/nl/matsv/viabackwards/protocol/{protocol1_12to1_11_1 => protocol1_11_1to1_12}/packets/ChatPackets1_12.java (96%) rename core/src/main/java/nl/matsv/viabackwards/protocol/{protocol1_12to1_11_1 => protocol1_11_1to1_12}/packets/EntityPackets1_12.java (98%) rename core/src/main/java/nl/matsv/viabackwards/protocol/{protocol1_12to1_11_1 => protocol1_11_1to1_12}/packets/SoundPackets1_12.java (98%) diff --git a/core/src/main/java/nl/matsv/viabackwards/api/ViaBackwardsPlatform.java b/core/src/main/java/nl/matsv/viabackwards/api/ViaBackwardsPlatform.java index 52161ed7..baf9d722 100644 --- a/core/src/main/java/nl/matsv/viabackwards/api/ViaBackwardsPlatform.java +++ b/core/src/main/java/nl/matsv/viabackwards/api/ViaBackwardsPlatform.java @@ -14,12 +14,11 @@ import nl.matsv.viabackwards.ViaBackwards; import nl.matsv.viabackwards.protocol.protocol1_10to1_11.Protocol1_10To1_11; import nl.matsv.viabackwards.protocol.protocol1_11to1_11_1.Protocol1_11To1_11_1; import nl.matsv.viabackwards.protocol.protocol1_12_1to1_12_2.Protocol1_12_1To1_12_2; -import nl.matsv.viabackwards.protocol.protocol1_12to1_11_1.Protocol1_11_1To1_12; +import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.Protocol1_11_1To1_12; import nl.matsv.viabackwards.protocol.protocol1_12to1_12_1.Protocol1_12To1_12_1; import nl.matsv.viabackwards.protocol.protocol1_9_4to1_10.Protocol1_9_4To1_10; import us.myles.ViaVersion.api.protocol.ProtocolRegistry; import us.myles.ViaVersion.api.protocol.ProtocolVersion; -import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.Protocol1_13To1_12_2; import java.lang.reflect.Field; import java.util.Collections; diff --git a/core/src/main/java/nl/matsv/viabackwards/api/rewriters/BlockItemRewriter.java b/core/src/main/java/nl/matsv/viabackwards/api/rewriters/BlockItemRewriter.java index 3ad77ff2..92657638 100644 --- a/core/src/main/java/nl/matsv/viabackwards/api/rewriters/BlockItemRewriter.java +++ b/core/src/main/java/nl/matsv/viabackwards/api/rewriters/BlockItemRewriter.java @@ -17,7 +17,7 @@ import lombok.ToString; import net.md_5.bungee.api.ChatColor; import nl.matsv.viabackwards.api.BackwardsProtocol; import nl.matsv.viabackwards.api.entities.blockitem.BlockItemSettings; -import nl.matsv.viabackwards.protocol.protocol1_12to1_11_1.data.BlockColors; +import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.data.BlockColors; import nl.matsv.viabackwards.utils.Block; import nl.matsv.viabackwards.utils.ItemUtil; import us.myles.ViaVersion.api.minecraft.chunks.Chunk; diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_10to1_11/packets/BlockItemPackets1_11.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_10to1_11/packets/BlockItemPackets1_11.java index 27ca1f29..9945c7e1 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_10to1_11/packets/BlockItemPackets1_11.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_10to1_11/packets/BlockItemPackets1_11.java @@ -18,7 +18,7 @@ import nl.matsv.viabackwards.protocol.protocol1_10to1_11.EntityTypeNames; import nl.matsv.viabackwards.protocol.protocol1_10to1_11.Protocol1_10To1_11; import nl.matsv.viabackwards.protocol.protocol1_10to1_11.storage.ChestedHorseStorage; import nl.matsv.viabackwards.protocol.protocol1_10to1_11.storage.WindowTracker; -import nl.matsv.viabackwards.protocol.protocol1_12to1_11_1.data.BlockColors; +import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.data.BlockColors; import nl.matsv.viabackwards.utils.Block; import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.data.UserConnection; diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/Protocol1_11_1To1_12.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/Protocol1_11_1To1_12.java similarity index 92% rename from core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/Protocol1_11_1To1_12.java rename to core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/Protocol1_11_1To1_12.java index c0fa2cc6..94542771 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/Protocol1_11_1To1_12.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/Protocol1_11_1To1_12.java @@ -8,13 +8,13 @@ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package nl.matsv.viabackwards.protocol.protocol1_12to1_11_1; +package nl.matsv.viabackwards.protocol.protocol1_11_1to1_12; import lombok.Getter; import nl.matsv.viabackwards.api.BackwardsProtocol; import nl.matsv.viabackwards.api.entities.storage.EntityTracker; -import nl.matsv.viabackwards.protocol.protocol1_12to1_11_1.data.ShoulderTracker; -import nl.matsv.viabackwards.protocol.protocol1_12to1_11_1.packets.*; +import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.data.ShoulderTracker; +import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.packets.*; import us.myles.ViaVersion.api.data.UserConnection; import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/data/AdvancementTranslations.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/data/AdvancementTranslations.java similarity index 99% rename from core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/data/AdvancementTranslations.java rename to core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/data/AdvancementTranslations.java index 27a8c6a6..84907ba3 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/data/AdvancementTranslations.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/data/AdvancementTranslations.java @@ -8,7 +8,7 @@ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package nl.matsv.viabackwards.protocol.protocol1_12to1_11_1.data; +package nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.data; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/data/BlockColors.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/data/BlockColors.java similarity index 96% rename from core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/data/BlockColors.java rename to core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/data/BlockColors.java index 40666a5e..b40950dc 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/data/BlockColors.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/data/BlockColors.java @@ -8,7 +8,7 @@ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package nl.matsv.viabackwards.protocol.protocol1_12to1_11_1.data; +package nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.data; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/data/MapColorMapping.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/data/MapColorMapping.java similarity index 98% rename from core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/data/MapColorMapping.java rename to core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/data/MapColorMapping.java index 14b2406c..1cff310c 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/data/MapColorMapping.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/data/MapColorMapping.java @@ -1,4 +1,4 @@ -package nl.matsv.viabackwards.protocol.protocol1_12to1_11_1.data; +package nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.data; import java.util.HashMap; import java.util.Map; diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/data/ParrotStorage.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/data/ParrotStorage.java similarity index 95% rename from core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/data/ParrotStorage.java rename to core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/data/ParrotStorage.java index e40497e5..0e1c1432 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/data/ParrotStorage.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/data/ParrotStorage.java @@ -8,7 +8,7 @@ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package nl.matsv.viabackwards.protocol.protocol1_12to1_11_1.data; +package nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.data; import lombok.Data; import nl.matsv.viabackwards.api.entities.storage.EntityStorage; diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/data/ShoulderTracker.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/data/ShoulderTracker.java similarity index 98% rename from core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/data/ShoulderTracker.java rename to core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/data/ShoulderTracker.java index 1c8b40d6..c9594c7f 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/data/ShoulderTracker.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/data/ShoulderTracker.java @@ -8,7 +8,7 @@ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package nl.matsv.viabackwards.protocol.protocol1_12to1_11_1.data; +package nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.data; import lombok.Getter; import lombok.Setter; diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/packets/BlockItemPackets1_12.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/BlockItemPackets1_12.java similarity index 98% rename from core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/packets/BlockItemPackets1_12.java rename to core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/BlockItemPackets1_12.java index 603f6949..7c01bbe7 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/packets/BlockItemPackets1_12.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/BlockItemPackets1_12.java @@ -8,12 +8,12 @@ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package nl.matsv.viabackwards.protocol.protocol1_12to1_11_1.packets; +package nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.packets; import nl.matsv.viabackwards.api.rewriters.BlockItemRewriter; -import nl.matsv.viabackwards.protocol.protocol1_12to1_11_1.Protocol1_11_1To1_12; -import nl.matsv.viabackwards.protocol.protocol1_12to1_11_1.data.BlockColors; -import nl.matsv.viabackwards.protocol.protocol1_12to1_11_1.data.MapColorMapping; +import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.Protocol1_11_1To1_12; +import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.data.BlockColors; +import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.data.MapColorMapping; import nl.matsv.viabackwards.utils.Block; import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.minecraft.BlockChangeRecord; diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/packets/ChangedPacketIds1_12.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/ChangedPacketIds1_12.java similarity index 98% rename from core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/packets/ChangedPacketIds1_12.java rename to core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/ChangedPacketIds1_12.java index cc4ebddf..8b5bded4 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/packets/ChangedPacketIds1_12.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/ChangedPacketIds1_12.java @@ -8,10 +8,10 @@ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package nl.matsv.viabackwards.protocol.protocol1_12to1_11_1.packets; +package nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.packets; import nl.matsv.viabackwards.api.rewriters.Rewriter; -import nl.matsv.viabackwards.protocol.protocol1_12to1_11_1.Protocol1_11_1To1_12; +import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.Protocol1_11_1To1_12; import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.remapper.PacketHandler; import us.myles.ViaVersion.api.remapper.PacketRemapper; diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/packets/ChatPackets1_12.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/ChatPackets1_12.java similarity index 96% rename from core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/packets/ChatPackets1_12.java rename to core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/ChatPackets1_12.java index 4cf944b1..c80d0f9e 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/packets/ChatPackets1_12.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/ChatPackets1_12.java @@ -8,12 +8,12 @@ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package nl.matsv.viabackwards.protocol.protocol1_12to1_11_1.packets; +package nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.packets; import nl.matsv.viabackwards.ViaBackwards; import nl.matsv.viabackwards.api.rewriters.Rewriter; -import nl.matsv.viabackwards.protocol.protocol1_12to1_11_1.Protocol1_11_1To1_12; -import nl.matsv.viabackwards.protocol.protocol1_12to1_11_1.data.AdvancementTranslations; +import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.Protocol1_11_1To1_12; +import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.data.AdvancementTranslations; import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.Via; import us.myles.ViaVersion.api.remapper.PacketHandler; diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/packets/EntityPackets1_12.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/EntityPackets1_12.java similarity index 98% rename from core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/packets/EntityPackets1_12.java rename to core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/EntityPackets1_12.java index 19040b3b..de2b0a91 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/packets/EntityPackets1_12.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/EntityPackets1_12.java @@ -8,7 +8,7 @@ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package nl.matsv.viabackwards.protocol.protocol1_12to1_11_1.packets; +package nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.packets; import nl.matsv.viabackwards.ViaBackwards; import nl.matsv.viabackwards.api.entities.storage.EntityData; @@ -17,9 +17,9 @@ import nl.matsv.viabackwards.api.entities.types.AbstractEntityType; import nl.matsv.viabackwards.api.entities.types.EntityType1_12; import nl.matsv.viabackwards.api.exceptions.RemovedValueException; import nl.matsv.viabackwards.api.rewriters.EntityRewriter; -import nl.matsv.viabackwards.protocol.protocol1_12to1_11_1.Protocol1_11_1To1_12; -import nl.matsv.viabackwards.protocol.protocol1_12to1_11_1.data.ParrotStorage; -import nl.matsv.viabackwards.protocol.protocol1_12to1_11_1.data.ShoulderTracker; +import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.Protocol1_11_1To1_12; +import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.data.ParrotStorage; +import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.data.ShoulderTracker; import nl.matsv.viabackwards.utils.Block; import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.Via; diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/packets/SoundPackets1_12.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/SoundPackets1_12.java similarity index 98% rename from core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/packets/SoundPackets1_12.java rename to core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/SoundPackets1_12.java index 6797f49c..4781890c 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_11_1/packets/SoundPackets1_12.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/SoundPackets1_12.java @@ -8,10 +8,10 @@ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package nl.matsv.viabackwards.protocol.protocol1_12to1_11_1.packets; +package nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.packets; import nl.matsv.viabackwards.api.rewriters.SoundRewriter; -import nl.matsv.viabackwards.protocol.protocol1_12to1_11_1.Protocol1_11_1To1_12; +import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.Protocol1_11_1To1_12; import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.remapper.PacketHandler; import us.myles.ViaVersion.api.remapper.PacketRemapper; From 53b4151a26b356fb4e2c2baf5251d8e4f1af7f14 Mon Sep 17 00:00:00 2001 From: Marco Neuhaus Date: Wed, 23 Jan 2019 13:11:52 +0100 Subject: [PATCH 048/171] start implementing item rewrite --- .../packets/BlockItemPackets1_13.java | 476 +++++++++++++++++- 1 file changed, 466 insertions(+), 10 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 18ec26bf..6be019eb 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 @@ -10,8 +10,9 @@ package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.packets; +import com.google.common.base.Optional; import nl.matsv.viabackwards.ViaBackwards; -import nl.matsv.viabackwards.api.rewriters.Rewriter; +import nl.matsv.viabackwards.api.rewriters.BlockItemRewriter; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.Protocol1_12_2To1_13; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.data.BackwardsMappings; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.providers.BackwardsBlockEntityProvider; @@ -27,14 +28,21 @@ import us.myles.ViaVersion.api.remapper.PacketHandler; import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.api.type.Type; import us.myles.ViaVersion.packets.State; +import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.ChatRewriter; +import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.data.BlockIdData; import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.data.MappingData; +import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.data.SpawnEggRewriter; import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.packets.InventoryPackets; import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.types.Chunk1_13Type; import us.myles.ViaVersion.protocols.protocol1_9_1_2to1_9_3_4.types.Chunk1_9_3_4Type; import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; -import us.myles.viaversion.libs.opennbt.tag.builtin.CompoundTag; +import us.myles.viaversion.libs.opennbt.conversion.ConverterRegistry; +import us.myles.viaversion.libs.opennbt.tag.builtin.*; + +public class BlockItemPackets1_13 extends BlockItemRewriter { + + private static String NBT_TAG_NAME; -public class BlockItemPackets1_13 extends Rewriter { public static int toOldId(int oldId) { if (oldId < 0) { oldId = 0; // Some plugins use negative numbers to clear blocks, remap them to air. @@ -50,7 +58,31 @@ public class BlockItemPackets1_13 extends Rewriter { //Basic translation for now. TODO remap new items; should probably use BlockItemRewriter#handleItemToClient/Server, but that needs some rewriting public static void toClient(Item item) { - InventoryPackets.toServer(item); + if(item != null && item.getTag() != null){ + CompoundTag tag = item.getTag(); + if (tag.get("display") instanceof CompoundTag) { + CompoundTag display = (CompoundTag)tag.get("display"); + if (((CompoundTag)tag.get("display")).get("Name") instanceof StringTag) { + StringTag name = (StringTag)display.get("Name"); + System.out.println("Item Name: " + name.getValue()); + } + } + } + try{ + InventoryPackets.toServer(item); + }catch (Exception ex){ + if(item != null && item.getTag() != null){ + CompoundTag tag = item.getTag(); + if (tag.get("display") instanceof CompoundTag) { + CompoundTag display = (CompoundTag)tag.get("display"); + if (((CompoundTag)tag.get("display")).get("Name") instanceof StringTag) { + StringTag name = (StringTag)display.get("Name"); + System.out.println("Ex Item Name: " + name.getValue()); + } + } + } + ex.printStackTrace(); + } } public static void toServer(Item item) { @@ -59,7 +91,7 @@ public class BlockItemPackets1_13 extends Rewriter { @Override protected void registerPackets(Protocol1_12_2To1_13 protocol) { - + NBT_TAG_NAME = "ViaVersion|" + protocol.getClass().getSimpleName(); // Block Action protocol.out(State.PLAY, 0x0A, 0x0A, new PacketRemapper() { @Override @@ -193,7 +225,7 @@ public class BlockItemPackets1_13 extends Rewriter { public void handle(PacketWrapper wrapper) throws Exception { Item[] items = wrapper.get(Type.ITEM_ARRAY, 0); for (Item item : items) { - toClient(item); + item = handleItemToClient(item); } } }); @@ -211,7 +243,7 @@ public class BlockItemPackets1_13 extends Rewriter { @Override public void handle(PacketWrapper wrapper) throws Exception { Item item = wrapper.get(Type.ITEM, 0); - toClient(item); + item = handleItemToClient(item); } }); } @@ -352,7 +384,7 @@ public class BlockItemPackets1_13 extends Rewriter { @Override public void handle(PacketWrapper wrapper) throws Exception { Item item = wrapper.get(Type.ITEM, 0); - toClient(item); + item = handleItemToClient(item); } }); } @@ -369,7 +401,7 @@ public class BlockItemPackets1_13 extends Rewriter { @Override public void handle(PacketWrapper wrapper) throws Exception { Item item = wrapper.get(Type.FLAT_ITEM, 0); - toServer(item); + item = handleItemToServer(item); } }); } @@ -389,7 +421,7 @@ public class BlockItemPackets1_13 extends Rewriter { @Override public void handle(PacketWrapper wrapper) throws Exception { Item item = wrapper.get(Type.FLAT_ITEM, 0); - toServer(item); + item = handleItemToServer(item); } }); } @@ -398,6 +430,430 @@ public class BlockItemPackets1_13 extends Rewriter { @Override protected void registerRewrites() { +// rewrite(245).repItem(new Item((short) 143, (byte) 1, (short) -1, getNamedTag("1.12 Acacia Button"))); +// rewrite(191).repItem(new Item((short) 96, (byte) 1, (short) -1, getNamedTag("1.12 Acacia Trapdoor"))); +// rewrite(164).repItem(new Item((short) 72, (byte) 1, (short) -1, getNamedTag("1.12 Acacia Pressure Plate"))); +// rewrite(243).repItem(new Item((short) 143, (byte) 1, (short) -1, getNamedTag("1.12 Birch Button"))); +// rewrite(162).repItem(new Item((short) 72, (byte) 1, (short) -1, getNamedTag("1.12 Birch Pressure Plate"))); +// rewrite(189).repItem(new Item((short) 96, (byte) 1, (short) -1, getNamedTag("1.12 Birch Trapdoor"))); +// rewrite(453).repItem(new Item((short) 174, (byte) 1, (short) -1, getNamedTag("1.12 Blue Ice"))); + //Corals + rewrite(561).repItem(new Item((short) 100, (byte) 1, (short) -1, getNamedTag("1.12 Tube Coral"))); + rewrite(439).repItem(new Item((short) 106, (byte) 1, (short) -1, getNamedTag("1.12 Brain Coral"))); + rewrite(563).repItem(new Item((short) 101, (byte) 1, (short) -1, getNamedTag("1.12 Bubble Coral"))); + rewrite(564).repItem(new Item((short) 103, (byte) 1, (short) -1, getNamedTag("1.12 Fire Coral"))); + rewrite(564).repItem(new Item((short) 98, (byte) 1, (short) -1, getNamedTag("1.12 Horn Coral"))); + + rewrite(550).repItem(new Item((short) 561, (byte) 1, (short) -1, getNamedTag("1.12 Turtle Egg"))); + + rewrite(781).repItem(new Item((short) 488, (byte) 1, (short) -1, getNamedTag("1.12 Trident"))); + } + + @Override + protected CompoundTag getNamedTag(String text) { + CompoundTag tag = new CompoundTag(""); + tag.put(new CompoundTag("display")); + ((CompoundTag) tag.get("display")).put(new StringTag("Name", ChatRewriter.legacyTextToJson(text))); + return tag; + } + + @Override + protected Item handleItemToClient(Item item) { + item = super.handleItemToClient(item); + if (item == null) return null; + + Integer rawId = null; + boolean gotRawIdFromTag = false; + + CompoundTag tag = item.getTag(); + + // Use tag to get original ID and data + if (tag != null) { + // Check for valid tag + if (tag.get(NBT_TAG_NAME) instanceof IntTag) { + rawId = (Integer) tag.get(NBT_TAG_NAME).getValue(); + // Remove the tag + tag.remove(NBT_TAG_NAME); + gotRawIdFromTag = true; + } + } + + if (rawId == null) { + Integer oldId = MappingData.oldToNewItems.inverse().get((int) item.getId()); + if (oldId != null) { + // Handle spawn eggs + Optional eggEntityId = SpawnEggRewriter.getEntityId(oldId); + if (eggEntityId.isPresent()) { + rawId = 383 << 16; + if (tag == null) + item.setTag(tag = new CompoundTag("tag")); + if (!tag.contains("EntityTag")) { + CompoundTag entityTag = new CompoundTag("EntityTag"); + entityTag.put(new StringTag("id", eggEntityId.get())); + tag.put(entityTag); + } + } else { + rawId = (oldId >> 4) << 16 | oldId & 0xF; + } + } + } + + if (rawId == null) { + if (!Via.getConfig().isSuppress1_13ConversionErrors() || Via.getManager().isDebug()) { + Via.getPlatform().getLogger().warning("Failed to get 1.12 item for " + item.getId()); + } + rawId = 0x10000; // Stone + } + + item.setId((short) (rawId >> 16)); + item.setData((short) (rawId & 0xFFFF)); + + // NBT changes + if (tag != null) { + if (isDamageable(item.getId())) { + if (tag.get("Damage") instanceof IntTag) { + if (!gotRawIdFromTag) + item.setData((short) (int) tag.get("Damage").getValue()); + tag.remove("Damage"); + } + } + + if (item.getId() == 358) { // map + if (tag.get("map") instanceof IntTag) { + if (!gotRawIdFromTag) + item.setData((short) (int) tag.get("map").getValue()); + tag.remove("map"); + } + } + + if (item.getId() == 442 || item.getId() == 425) { // shield / banner + if (tag.get("BlockEntityTag") instanceof CompoundTag) { + CompoundTag blockEntityTag = tag.get("BlockEntityTag"); + if (blockEntityTag.get("Base") instanceof IntTag) { + IntTag base = blockEntityTag.get("Base"); + base.setValue(15 - base.getValue()); // invert color id + } + if (blockEntityTag.get("Patterns") instanceof ListTag) { + for (Tag pattern : (ListTag) blockEntityTag.get("Patterns")) { + if (pattern instanceof CompoundTag) { + IntTag c = ((CompoundTag) pattern).get("Color"); + c.setValue(15 - c.getValue()); // Invert color id + } + } + } + } + } + // Display Name now uses JSON + if (tag.get("display") instanceof CompoundTag) { + CompoundTag display = tag.get("display"); + if (((CompoundTag) tag.get("display")).get("Name") instanceof StringTag) { + StringTag name = display.get("Name"); + StringTag via = display.get(NBT_TAG_NAME + "|Name"); + name.setValue( + via != null ? via.getValue() : ChatRewriter.jsonTextToLegacy( + name.getValue() + ) + ); + display.remove(NBT_TAG_NAME + "|Name"); + } + } + + // ench is now Enchantments and now uses identifiers + if (tag.get("Enchantments") instanceof ListTag) { + ListTag enchantments = tag.get("Enchantments"); + ListTag ench = new ListTag("ench", CompoundTag.class); + for (Tag enchantmentEntry : enchantments) { + if (enchantmentEntry instanceof CompoundTag) { + CompoundTag enchEntry = new CompoundTag(""); + String newId = (String) ((CompoundTag) enchantmentEntry).get("id").getValue(); + Short oldId = MappingData.oldEnchantmentsIds.inverse().get(newId); + if (oldId == null && newId.startsWith("viaversion:legacy/")) { + oldId = Short.valueOf(newId.substring(18)); + } + enchEntry.put( + new ShortTag( + "id", + oldId + ) + ); + enchEntry.put(new ShortTag("lvl", (Short) ((CompoundTag) enchantmentEntry).get("lvl").getValue())); + ench.add(enchEntry); + } + } + tag.remove("Enchantment"); + tag.put(ench); + } + if (tag.get("StoredEnchantments") instanceof ListTag) { + ListTag storedEnch = tag.get("StoredEnchantments"); + ListTag newStoredEnch = new ListTag("StoredEnchantments", CompoundTag.class); + for (Tag enchantmentEntry : storedEnch) { + if (enchantmentEntry instanceof CompoundTag) { + CompoundTag enchEntry = new CompoundTag(""); + String newId = (String) ((CompoundTag) enchantmentEntry).get("id").getValue(); + Short oldId = MappingData.oldEnchantmentsIds.inverse().get(newId); + if (oldId == null && newId.startsWith("viaversion:legacy/")) { + oldId = Short.valueOf(newId.substring(18)); + } + enchEntry.put( + new ShortTag( + "id", + oldId + ) + ); + enchEntry.put(new ShortTag("lvl", (Short) ((CompoundTag) enchantmentEntry).get("lvl").getValue())); + newStoredEnch.add(enchEntry); + } + } + tag.remove("StoredEnchantments"); + tag.put(newStoredEnch); + } + if (tag.get(NBT_TAG_NAME + "|CanPlaceOn") instanceof ListTag) { + tag.put(ConverterRegistry.convertToTag( + "CanPlaceOn", + ConverterRegistry.convertToValue(tag.get(NBT_TAG_NAME + "|CanPlaceOn")) + )); + tag.remove(NBT_TAG_NAME + "|CanPlaceOn"); + } else if (tag.get("CanPlaceOn") instanceof ListTag) { + ListTag old = tag.get("CanPlaceOn"); + ListTag newCanPlaceOn = new ListTag("CanPlaceOn", StringTag.class); + for (Tag oldTag : old) { + Object value = oldTag.getValue(); + String[] newValues = BlockIdData.fallbackReverseMapping.get(value instanceof String + ? ((String) value).replace("minecraft:", "") + : null); + if (newValues != null) { + for (String newValue : newValues) { + newCanPlaceOn.add(new StringTag("", newValue)); + } + } else { + newCanPlaceOn.add(oldTag); + } + } + tag.put(newCanPlaceOn); + } + if (tag.get(NBT_TAG_NAME + "|CanDestroy") instanceof ListTag) { + tag.put(ConverterRegistry.convertToTag( + "CanDestroy", + ConverterRegistry.convertToValue(tag.get(NBT_TAG_NAME + "|CanDestroy")) + )); + tag.remove(NBT_TAG_NAME + "|CanDestroy"); + } else if (tag.get("CanDestroy") instanceof ListTag) { + ListTag old = tag.get("CanDestroy"); + ListTag newCanDestroy = new ListTag("CanDestroy", StringTag.class); + for (Tag oldTag : old) { + Object value = oldTag.getValue(); + String[] newValues = BlockIdData.fallbackReverseMapping.get(value instanceof String + ? ((String) value).replace("minecraft:", "") + : null); + if (newValues != null) { + for (String newValue : newValues) { + newCanDestroy.add(new StringTag("", newValue)); + } + } else { + newCanDestroy.add(oldTag); + } + } + tag.put(newCanDestroy); + } + } + return item; + } + + @Override + protected Item handleItemToServer(Item item) { + item = super.handleItemToServer(item); + if (item == null) return null; + CompoundTag tag = item.getTag(); + + // Save original id + int originalId = (item.getId() << 16 | item.getData() & 0xFFFF); + + int rawId = (item.getId() << 4 | item.getData() & 0xF); + + // NBT Additions + if (isDamageable(item.getId())) { + if (tag == null) item.setTag(tag = new CompoundTag("tag")); + tag.put(new IntTag("Damage", item.getData())); + } + if (item.getId() == 358) { // map + if (tag == null) item.setTag(tag = new CompoundTag("tag")); + tag.put(new IntTag("map", item.getData())); + } + + // NBT Changes + if (tag != null) { + // Invert shield color id + if (item.getId() == 442 || item.getId() == 425) { + if (tag.get("BlockEntityTag") instanceof CompoundTag) { + CompoundTag blockEntityTag = tag.get("BlockEntityTag"); + if (blockEntityTag.get("Base") instanceof IntTag) { + IntTag base = blockEntityTag.get("Base"); + base.setValue(15 - base.getValue()); + } + if (blockEntityTag.get("Patterns") instanceof ListTag) { + for (Tag pattern : (ListTag) blockEntityTag.get("Patterns")) { + if (pattern instanceof CompoundTag) { + IntTag c = ((CompoundTag) pattern).get("Color"); + c.setValue(15 - c.getValue()); // Invert color id + } + } + } + } + } + // Display Name now uses JSON + if (tag.get("display") instanceof CompoundTag) { + CompoundTag display = tag.get("display"); + if (display.get("Name") instanceof StringTag) { + StringTag name = display.get("Name"); + display.put(new StringTag(NBT_TAG_NAME + "|Name", name.getValue())); + name.setValue( + ChatRewriter.legacyTextToJson( + name.getValue() + ) + ); + } + } + // ench is now Enchantments and now uses identifiers + if (tag.get("ench") instanceof ListTag) { + ListTag ench = tag.get("ench"); + ListTag enchantments = new ListTag("Enchantments", CompoundTag.class); + for (Tag enchEntry : ench) { + if (enchEntry instanceof CompoundTag) { + CompoundTag enchantmentEntry = new CompoundTag(""); + short oldId = ((Number) ((CompoundTag) enchEntry).get("id").getValue()).shortValue(); + String newId = MappingData.oldEnchantmentsIds.get(oldId); + if (newId == null) { + newId = "viaversion:legacy/" + oldId; + } + enchantmentEntry.put(new StringTag("id", newId)); + enchantmentEntry.put(new ShortTag("lvl", ((Number) ((CompoundTag) enchEntry).get("lvl").getValue()).shortValue())); + enchantments.add(enchantmentEntry); + } + } + tag.remove("ench"); + tag.put(enchantments); + } + if (tag.get("StoredEnchantments") instanceof ListTag) { + ListTag storedEnch = tag.get("StoredEnchantments"); + ListTag newStoredEnch = new ListTag("StoredEnchantments", CompoundTag.class); + for (Tag enchEntry : storedEnch) { + if (enchEntry instanceof CompoundTag) { + CompoundTag enchantmentEntry = new CompoundTag(""); + short oldId = ((Number) ((CompoundTag) enchEntry).get("id").getValue()).shortValue(); + String newId = MappingData.oldEnchantmentsIds.get(oldId); + if (newId == null) { + newId = "viaversion:legacy/" + oldId; + } + enchantmentEntry.put(new StringTag("id", + newId + )); + enchantmentEntry.put(new ShortTag("lvl", ((Number) ((CompoundTag) enchEntry).get("lvl").getValue()).shortValue())); + newStoredEnch.add(enchantmentEntry); + } + } + tag.remove("StoredEnchantments"); + tag.put(newStoredEnch); + } + if (tag.get("CanPlaceOn") instanceof ListTag) { + ListTag old = tag.get("CanPlaceOn"); + ListTag newCanPlaceOn = new ListTag("CanPlaceOn", StringTag.class); + tag.put(ConverterRegistry.convertToTag(NBT_TAG_NAME + "|CanPlaceOn", ConverterRegistry.convertToValue(old))); // There will be data losing + for (Tag oldTag : old) { + Object value = oldTag.getValue(); + String[] newValues = BlockIdData.blockIdMapping.get(value instanceof String + ? ((String) value).replace("minecraft:", "") + : null); + if (newValues != null) { + for (String newValue : newValues) { + newCanPlaceOn.add(new StringTag("", newValue)); + } + } else { + newCanPlaceOn.add(oldTag); + } + } + tag.put(newCanPlaceOn); + } + if (tag.get("CanDestroy") instanceof ListTag) { + ListTag old = tag.get("CanDestroy"); + ListTag newCanDestroy = new ListTag("CanDestroy", StringTag.class); + tag.put(ConverterRegistry.convertToTag(NBT_TAG_NAME + "|CanDestroy", ConverterRegistry.convertToValue(old))); // There will be data losing + for (Tag oldTag : old) { + Object value = oldTag.getValue(); + String[] newValues = BlockIdData.blockIdMapping.get(value instanceof String + ? ((String) value).replace("minecraft:", "") + : null); + if (newValues != null) { + for (String newValue : newValues) { + newCanDestroy.add(new StringTag("", newValue)); + } + } else { + newCanDestroy.add(oldTag); + } + } + tag.put(newCanDestroy); + } + // Handle SpawnEggs + if (item.getId() == 383) { + if (tag.get("EntityTag") instanceof CompoundTag) { + CompoundTag entityTag = tag.get("EntityTag"); + if (entityTag.get("id") instanceof StringTag) { + StringTag identifier = entityTag.get("id"); + rawId = SpawnEggRewriter.getSpawnEggId(identifier.getValue()); + if (rawId == -1) { + rawId = 25100288; // Bat fallback + } else { + entityTag.remove("id"); + if (entityTag.isEmpty()) + tag.remove("EntityTag"); + } + } else { + // Fallback to bat + rawId = 25100288; + } + } else { + // Fallback to bat + rawId = 25100288; + } + } + if (tag.isEmpty()) { + item.setTag(tag = null); + } + } + + if (!MappingData.oldToNewItems.containsKey(rawId)) { + if (!isDamageable(item.getId()) && item.getId() != 358) { // Map + if (tag == null) item.setTag(tag = new CompoundTag("tag")); + tag.put(new IntTag(NBT_TAG_NAME, originalId)); // Data will be lost, saving original id + } + if (item.getId() == 31 && item.getData() == 0) { // Shrub was removed + rawId = 32 << 4; // Dead Bush + } else if (MappingData.oldToNewItems.containsKey(rawId & ~0xF)) { + rawId &= ~0xF; // Remove data + } else { + if (!Via.getConfig().isSuppress1_13ConversionErrors() || Via.getManager().isDebug()) { + Via.getPlatform().getLogger().warning("Failed to get 1.13 item for " + item.getId()); + } + rawId = 16; // Stone + } + } + + item.setId(MappingData.oldToNewItems.get(rawId).shortValue()); + item.setData((short) 0); + return item; + } + + public static boolean isDamageable(int id) { + return id >= 256 && id <= 259 // iron shovel, pickaxe, axe, flint and steel + || id == 261 // bow + || id >= 267 && id <= 279 // iron sword, wooden+stone+diamond swords, shovels, pickaxes, axes + || id >= 283 && id <= 286 // gold sword, shovel, pickaxe, axe + || id >= 290 && id <= 294 // hoes + || id >= 298 && id <= 317 // armors + || id == 346 // fishing rod + || id == 359 // shears + || id == 398 // carrot on a stick + || id == 442 // shield + || id == 443; // elytra } } From 55b4f6c0801361533b0d62bc8bf18a21431af674 Mon Sep 17 00:00:00 2001 From: Marco Neuhaus Date: Wed, 23 Jan 2019 13:31:05 +0100 Subject: [PATCH 049/171] fix rewrite --- .../Protocol1_12_2To1_13.java | 7 ++- .../packets/BlockItemPackets1_13.java | 44 +++---------------- .../packets/EntityPackets1_13.java | 2 +- .../packets/PlayerPacket1_13.java | 8 ++-- 4 files changed, 16 insertions(+), 45 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java index a41e4bfe..0c89efe7 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java @@ -10,6 +10,7 @@ package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13; +import lombok.Getter; import nl.matsv.viabackwards.api.BackwardsProtocol; import nl.matsv.viabackwards.api.entities.storage.EntityTracker; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.data.BackwardsMappings; @@ -29,7 +30,11 @@ import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.packets.State; import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; +@Getter public class Protocol1_12_2To1_13 extends BackwardsProtocol { + + private BlockItemPackets1_13 blockItemPackets; + static { BackwardsMappings.init(); PaintingMapping.init(); @@ -38,7 +43,7 @@ public class Protocol1_12_2To1_13 extends BackwardsProtocol { @Override protected void registerPackets() { - new BlockItemPackets1_13().register(this); + (blockItemPackets = new BlockItemPackets1_13()).register(this); new EntityPackets1_13().register(this); new PlayerPacket1_13().register(this); new SoundPackets1_13().register(this); 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 6be019eb..d9ecd5ec 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 @@ -32,7 +32,6 @@ import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.ChatRewriter; import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.data.BlockIdData; import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.data.MappingData; import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.data.SpawnEggRewriter; -import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.packets.InventoryPackets; import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.types.Chunk1_13Type; import us.myles.ViaVersion.protocols.protocol1_9_1_2to1_9_3_4.types.Chunk1_9_3_4Type; import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; @@ -56,39 +55,6 @@ public class BlockItemPackets1_13 extends BlockItemRewriter { // Rewrite items else if (typeId == 6) { meta.setMetaType(MetaType1_12.Slot); - BlockItemPackets1_13.toClient((Item) meta.getValue()); + getProtocol().getBlockItemPackets().handleItemToClient((Item) meta.getValue()); } // Discontinue particles diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java index 899ce5a8..44edf8ff 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java @@ -34,18 +34,18 @@ public class PlayerPacket1_13 extends Rewriter { for (int i = 0; i < size; i++) { //Input Item Item input = wrapper.read(Type.FLAT_ITEM); - BlockItemPackets1_13.toClient(input); + getProtocol().getBlockItemPackets().handleItemToClient(input); wrapper.write(Type.ITEM, input); //Output Item Item output = wrapper.read(Type.FLAT_ITEM); - BlockItemPackets1_13.toClient(output); + getProtocol().getBlockItemPackets().handleItemToClient(output); wrapper.write(Type.ITEM, output); boolean secondItem = wrapper.passthrough(Type.BOOLEAN); //Has second item if (secondItem) { //Second Item Item second = wrapper.read(Type.FLAT_ITEM); - BlockItemPackets1_13.toClient(second); + getProtocol().getBlockItemPackets().handleItemToClient(second); wrapper.write(Type.ITEM, second); } @@ -207,7 +207,7 @@ public class PlayerPacket1_13 extends Rewriter { if (channel.equals("MC|BSign") || channel.equals("MC|BEdit")) { wrapper.setId(0x0B); Item book = wrapper.read(Type.ITEM); - BlockItemPackets1_13.toServer(book); + getProtocol().getBlockItemPackets().handleItemToServer(book); wrapper.write(Type.FLAT_ITEM, book); boolean signing = channel.equals("MC|BSign"); wrapper.write(Type.BOOLEAN, signing); From 8448b9628efb58f791474e77f63a8cf976da0a66 Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Wed, 23 Jan 2019 14:37:07 +0100 Subject: [PATCH 050/171] replace tabs --- .../packets/PlayerPacket1_13.java | 258 +++++++++--------- .../nl/matsv/viabackwards/utils/ChatUtil.java | 48 ++-- 2 files changed, 153 insertions(+), 153 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java index e71b0acc..ed3d3aeb 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java @@ -15,143 +15,143 @@ import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.ChatRewriter; import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.packets.InventoryPackets; public class PlayerPacket1_13 extends Rewriter { - @Override - protected void registerPackets(Protocol1_12_2To1_13 protocol) { + @Override + protected void registerPackets(Protocol1_12_2To1_13 protocol) { - //Plugin Message - protocol.out(State.PLAY, 0x19, 0x18, new PacketRemapper() { - @Override - public void registerMap() { - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - String channel = wrapper.read(Type.STRING); - if (channel.equals("minecraft:trader_list")) { - wrapper.write(Type.STRING, "MC|TrList"); - wrapper.passthrough(Type.INT); //Passthrough Window ID + //Plugin Message + protocol.out(State.PLAY, 0x19, 0x18, new PacketRemapper() { + @Override + public void registerMap() { + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + String channel = wrapper.read(Type.STRING); + if (channel.equals("minecraft:trader_list")) { + wrapper.write(Type.STRING, "MC|TrList"); + wrapper.passthrough(Type.INT); //Passthrough Window ID - int size = wrapper.passthrough(Type.UNSIGNED_BYTE); - for (int i = 0; i < size; i++) { - //Input Item - Item input = wrapper.read(Type.FLAT_ITEM); - BlockItemPackets1_13.toClient(input); - wrapper.write(Type.ITEM, input); - //Output Item - Item output = wrapper.read(Type.FLAT_ITEM); - BlockItemPackets1_13.toClient(output); - wrapper.write(Type.ITEM, output); + int size = wrapper.passthrough(Type.UNSIGNED_BYTE); + for (int i = 0; i < size; i++) { + //Input Item + Item input = wrapper.read(Type.FLAT_ITEM); + BlockItemPackets1_13.toClient(input); + wrapper.write(Type.ITEM, input); + //Output Item + Item output = wrapper.read(Type.FLAT_ITEM); + BlockItemPackets1_13.toClient(output); + wrapper.write(Type.ITEM, output); - boolean secondItem = wrapper.passthrough(Type.BOOLEAN); //Has second item - if (secondItem) { - //Second Item - Item second = wrapper.read(Type.FLAT_ITEM); - BlockItemPackets1_13.toClient(second); - wrapper.write(Type.ITEM, second); - } + boolean secondItem = wrapper.passthrough(Type.BOOLEAN); //Has second item + if (secondItem) { + //Second Item + Item second = wrapper.read(Type.FLAT_ITEM); + BlockItemPackets1_13.toClient(second); + wrapper.write(Type.ITEM, second); + } - wrapper.passthrough(Type.BOOLEAN); //Trade disabled - wrapper.passthrough(Type.INT); //Number of tools uses - wrapper.passthrough(Type.INT); //Maximum number of trade uses - } - } else { - String oldChannel = InventoryPackets.getOldPluginChannelId(channel); - if (oldChannel == null) { - ViaBackwards.getPlatform().getLogger().warning("Could not find old channel for " + channel); - wrapper.cancel(); - return; - } - wrapper.write(Type.STRING, oldChannel); - } - } - }); - } - }); + wrapper.passthrough(Type.BOOLEAN); //Trade disabled + wrapper.passthrough(Type.INT); //Number of tools uses + wrapper.passthrough(Type.INT); //Maximum number of trade uses + } + } else { + String oldChannel = InventoryPackets.getOldPluginChannelId(channel); + if (oldChannel == null) { + ViaBackwards.getPlatform().getLogger().warning("Could not find old channel for " + channel); + wrapper.cancel(); + return; + } + wrapper.write(Type.STRING, oldChannel); + } + } + }); + } + }); - //Scoreboard Objective - protocol.out(State.PLAY, 0x45, 0x42, new PacketRemapper() { - @Override - public void registerMap() { - map(Type.STRING); - map(Type.BYTE); - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - byte mode = wrapper.get(Type.BYTE, 0); - if (mode == 0 || mode == 2) { - String value = wrapper.read(Type.STRING); - value = ChatRewriter.jsonTextToLegacy(value); - if (value.length() > 32) value = value.substring(0, 32); - wrapper.write(Type.STRING, value); - int type = wrapper.read(Type.VAR_INT); - wrapper.write(Type.STRING, type == 1 ? "hearts" : "integer"); - } - } - }); - } - }); + //Scoreboard Objective + protocol.out(State.PLAY, 0x45, 0x42, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.STRING); + map(Type.BYTE); + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + byte mode = wrapper.get(Type.BYTE, 0); + if (mode == 0 || mode == 2) { + String value = wrapper.read(Type.STRING); + value = ChatRewriter.jsonTextToLegacy(value); + if (value.length() > 32) value = value.substring(0, 32); + wrapper.write(Type.STRING, value); + int type = wrapper.read(Type.VAR_INT); + wrapper.write(Type.STRING, type == 1 ? "hearts" : "integer"); + } + } + }); + } + }); - //Teams - protocol.out(State.PLAY, 0x47, 0x44, new PacketRemapper() { - @Override - public void registerMap() { - map(Type.STRING); - map(Type.BYTE); - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - byte action = wrapper.get(Type.BYTE, 0); - if (action == 0 || action == 2) { - String displayName = wrapper.read(Type.STRING); - displayName = ChatRewriter.jsonTextToLegacy(displayName); - displayName = ChatUtil.removeUnusedColor(displayName, 'f'); - if (displayName.length() > 32) displayName = displayName.substring(0, 32); - wrapper.write(Type.STRING, displayName); + //Teams + protocol.out(State.PLAY, 0x47, 0x44, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.STRING); + map(Type.BYTE); + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + byte action = wrapper.get(Type.BYTE, 0); + if (action == 0 || action == 2) { + String displayName = wrapper.read(Type.STRING); + displayName = ChatRewriter.jsonTextToLegacy(displayName); + displayName = ChatUtil.removeUnusedColor(displayName, 'f'); + if (displayName.length() > 32) displayName = displayName.substring(0, 32); + wrapper.write(Type.STRING, displayName); - byte flags = wrapper.read(Type.BYTE); - String nameTagVisibility = wrapper.read(Type.STRING); - String collisionRule = wrapper.read(Type.STRING); + byte flags = wrapper.read(Type.BYTE); + String nameTagVisibility = wrapper.read(Type.STRING); + String collisionRule = wrapper.read(Type.STRING); - int colour = wrapper.read(Type.VAR_INT); - if (colour == 21) { - colour = -1; - } + int colour = wrapper.read(Type.VAR_INT); + if (colour == 21) { + colour = -1; + } - //TODO team color/prefix handling changed from 1.12.2 to 1.13 and to 1.13.1 again afaik - String prefix = wrapper.read(Type.STRING); - String suffix = wrapper.read(Type.STRING); - prefix = prefix == null || prefix.equals("null") ? "" : ChatRewriter.jsonTextToLegacy(prefix); - prefix += "§" + (colour > -1 && colour <= 15 ? Integer.toHexString(colour) : "r"); - prefix = ChatUtil.removeUnusedColor(prefix, 'f', true); - if (prefix.length() > 16) prefix = prefix.substring(0, 16); - if (prefix.endsWith("§")) prefix = prefix.substring(0, prefix.length() - 1); - suffix = suffix == null || suffix.equals("null") ? "" : ChatRewriter.jsonTextToLegacy(suffix); - suffix = ChatUtil.removeUnusedColor(suffix, 'f'); - if (suffix.endsWith("§")) suffix = suffix.substring(0, suffix.length() - 1); - wrapper.write(Type.STRING, prefix); - wrapper.write(Type.STRING, suffix); + //TODO team color/prefix handling changed from 1.12.2 to 1.13 and to 1.13.1 again afaik + String prefix = wrapper.read(Type.STRING); + String suffix = wrapper.read(Type.STRING); + prefix = prefix == null || prefix.equals("null") ? "" : ChatRewriter.jsonTextToLegacy(prefix); + prefix += "§" + (colour > -1 && colour <= 15 ? Integer.toHexString(colour) : "r"); + prefix = ChatUtil.removeUnusedColor(prefix, 'f', true); + if (prefix.length() > 16) prefix = prefix.substring(0, 16); + if (prefix.endsWith("§")) prefix = prefix.substring(0, prefix.length() - 1); + suffix = suffix == null || suffix.equals("null") ? "" : ChatRewriter.jsonTextToLegacy(suffix); + suffix = ChatUtil.removeUnusedColor(suffix, 'f'); + if (suffix.endsWith("§")) suffix = suffix.substring(0, suffix.length() - 1); + wrapper.write(Type.STRING, prefix); + wrapper.write(Type.STRING, suffix); - wrapper.write(Type.BYTE, flags); - wrapper.write(Type.STRING, nameTagVisibility); - wrapper.write(Type.STRING, collisionRule); + wrapper.write(Type.BYTE, flags); + wrapper.write(Type.STRING, nameTagVisibility); + wrapper.write(Type.STRING, collisionRule); - wrapper.write(Type.BYTE, (byte) colour); - } + wrapper.write(Type.BYTE, (byte) colour); + } - if (action == 0 || action == 3 || action == 4) { - wrapper.passthrough(Type.STRING_ARRAY); //Entities - } - } - }); - } - }); + if (action == 0 || action == 3 || action == 4) { + wrapper.passthrough(Type.STRING_ARRAY); //Entities + } + } + }); + } + }); // Tab-Complete (clientbound) TODO MODIFIED protocol.out(State.PLAY, 0x10, 0x0E, new PacketRemapper() { @Override - public void registerMap() { - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { + public void registerMap() { + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { int key = wrapper.read(Type.VAR_INT); int start = wrapper.read(Type.VAR_INT); int length = wrapper.read(Type.VAR_INT); @@ -163,10 +163,10 @@ public class PlayerPacket1_13 extends Rewriter { // Ignore tooltip wrapper.read(Type.OPTIONAL_CHAT); } - } - }); - } - }); + } + }); + } + }); // Tab-Complete (serverbound) protocol.in(State.PLAY, 0x05, 0x01, new PacketRemapper() { @@ -189,7 +189,7 @@ public class PlayerPacket1_13 extends Rewriter { // Ignore fields wrapper.read(Type.BOOLEAN); if (wrapper.read(Type.BOOLEAN)) { - wrapper.read(Type.POSITION); + wrapper.read(Type.POSITION); } } }); @@ -304,8 +304,8 @@ public class PlayerPacket1_13 extends Rewriter { }); } - @Override - protected void registerRewrites() { + @Override + protected void registerRewrites() { - } + } } diff --git a/core/src/main/java/nl/matsv/viabackwards/utils/ChatUtil.java b/core/src/main/java/nl/matsv/viabackwards/utils/ChatUtil.java index 8792469d..ef2593e4 100644 --- a/core/src/main/java/nl/matsv/viabackwards/utils/ChatUtil.java +++ b/core/src/main/java/nl/matsv/viabackwards/utils/ChatUtil.java @@ -3,30 +3,30 @@ package nl.matsv.viabackwards.utils; import java.util.regex.Pattern; public class ChatUtil { - private static final Pattern UNUSED_COLOR_PATTERN = Pattern.compile("(?>(?>§[0-fk-or])*(§r|\\Z))|(?>(?>§[0-f])*(§[0-f]))"); - private static final Pattern UNUSED_COLOR_PATTERN_PREFIX = Pattern.compile("(?>(?>§[0-fk-or])*(§r))|(?>(?>§[0-f])*(§[0-f]))"); + private static final Pattern UNUSED_COLOR_PATTERN = Pattern.compile("(?>(?>§[0-fk-or])*(§r|\\Z))|(?>(?>§[0-f])*(§[0-f]))"); + private static final Pattern UNUSED_COLOR_PATTERN_PREFIX = Pattern.compile("(?>(?>§[0-fk-or])*(§r))|(?>(?>§[0-f])*(§[0-f]))"); - public static String removeUnusedColor(String legacy, char defaultColor) { - return removeUnusedColor(legacy, defaultColor, false); - } + public static String removeUnusedColor(String legacy, char defaultColor) { + return removeUnusedColor(legacy, defaultColor, false); + } - public static String removeUnusedColor(String legacy, char defaultColor, boolean isPrefix) { - if (legacy == null) return null; - Pattern pattern = isPrefix ? UNUSED_COLOR_PATTERN_PREFIX : UNUSED_COLOR_PATTERN; - legacy = pattern.matcher(legacy).replaceAll("$1$2"); - StringBuilder builder = new StringBuilder(); - char last = defaultColor; - for (int i = 0; i < legacy.length(); i++) { - char current = legacy.charAt(i); - if (current != '§' || i == legacy.length() - 1) { - builder.append(current); - continue; - } - current = legacy.charAt(++i); - if (current == last) continue; - builder.append('§').append(current); - last = current; - } - return builder.toString(); - } + public static String removeUnusedColor(String legacy, char defaultColor, boolean isPrefix) { + if (legacy == null) return null; + Pattern pattern = isPrefix ? UNUSED_COLOR_PATTERN_PREFIX : UNUSED_COLOR_PATTERN; + legacy = pattern.matcher(legacy).replaceAll("$1$2"); + StringBuilder builder = new StringBuilder(); + char last = defaultColor; + for (int i = 0; i < legacy.length(); i++) { + char current = legacy.charAt(i); + if (current != '§' || i == legacy.length() - 1) { + builder.append(current); + continue; + } + current = legacy.charAt(++i); + if (current == last) continue; + builder.append('§').append(current); + last = current; + } + return builder.toString(); + } } From ef5125e972d4fad62efcedb8883d1c162f0b9c54 Mon Sep 17 00:00:00 2001 From: Marco Neuhaus Date: Wed, 23 Jan 2019 15:02:55 +0100 Subject: [PATCH 051/171] fix rewrite --- .../packets/BlockItemPackets1_13.java | 21 +++++++++++++++---- .../packets/EntityPackets1_13.java | 3 ++- .../packets/PlayerPacket1_13.java | 12 ++++------- 3 files changed, 23 insertions(+), 13 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 d9ecd5ec..3df10655 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 @@ -190,9 +190,9 @@ public class BlockItemPackets1_13 extends BlockItemRewriter { // Rewrite items else if (typeId == 6) { meta.setMetaType(MetaType1_12.Slot); - getProtocol().getBlockItemPackets().handleItemToClient((Item) meta.getValue()); + Item item = (Item) meta.getValue(); + meta.setValue(getProtocol().getBlockItemPackets().handleItemToClient(item)); } // Discontinue particles diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java index 44edf8ff..6137d1ee 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java @@ -34,19 +34,16 @@ public class PlayerPacket1_13 extends Rewriter { for (int i = 0; i < size; i++) { //Input Item Item input = wrapper.read(Type.FLAT_ITEM); - getProtocol().getBlockItemPackets().handleItemToClient(input); - wrapper.write(Type.ITEM, input); + wrapper.write(Type.ITEM, getProtocol().getBlockItemPackets().handleItemToClient(input)); //Output Item Item output = wrapper.read(Type.FLAT_ITEM); - getProtocol().getBlockItemPackets().handleItemToClient(output); - wrapper.write(Type.ITEM, output); + wrapper.write(Type.ITEM, getProtocol().getBlockItemPackets().handleItemToClient(output)); boolean secondItem = wrapper.passthrough(Type.BOOLEAN); //Has second item if (secondItem) { //Second Item Item second = wrapper.read(Type.FLAT_ITEM); - getProtocol().getBlockItemPackets().handleItemToClient(second); - wrapper.write(Type.ITEM, second); + wrapper.write(Type.ITEM, getProtocol().getBlockItemPackets().handleItemToClient(second)); } wrapper.passthrough(Type.BOOLEAN); //Trade disabled @@ -207,8 +204,7 @@ public class PlayerPacket1_13 extends Rewriter { if (channel.equals("MC|BSign") || channel.equals("MC|BEdit")) { wrapper.setId(0x0B); Item book = wrapper.read(Type.ITEM); - getProtocol().getBlockItemPackets().handleItemToServer(book); - wrapper.write(Type.FLAT_ITEM, book); + wrapper.write(Type.FLAT_ITEM, getProtocol().getBlockItemPackets().handleItemToServer(book)); boolean signing = channel.equals("MC|BSign"); wrapper.write(Type.BOOLEAN, signing); } else if (channel.equals("MC|ItemName")) { From 16514526c1a12d4d98fa3d34a0c3e9a59294ad26 Mon Sep 17 00:00:00 2001 From: Foorcee Date: Wed, 23 Jan 2019 17:28:53 +0100 Subject: [PATCH 052/171] add some more items rewrites --- .../packets/BlockItemPackets1_13.java | 56 ++++++++++++++++--- 1 file changed, 49 insertions(+), 7 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 3df10655..7daa11b6 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 @@ -400,13 +400,54 @@ public class BlockItemPackets1_13 extends BlockItemRewriter Date: Wed, 23 Jan 2019 17:37:59 +0100 Subject: [PATCH 053/171] add more --- .../packets/BlockItemPackets1_13.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 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 7daa11b6..fb2fd539 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 @@ -456,11 +456,17 @@ public class BlockItemPackets1_13 extends BlockItemRewriter Date: Wed, 23 Jan 2019 20:49:49 +0100 Subject: [PATCH 054/171] add more rewirtes --- .../packets/BlockItemPackets1_13.java | 149 +++++++++++------- 1 file changed, 92 insertions(+), 57 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 fb2fd539..5bc71bdc 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 @@ -400,78 +400,113 @@ public class BlockItemPackets1_13 extends BlockItemRewriter Date: Sat, 26 Jan 2019 12:29:55 +0100 Subject: [PATCH 055/171] Merge with masta --- .../java/nl/matsv/viabackwards/api/ViaBackwardsPlatform.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/api/ViaBackwardsPlatform.java b/core/src/main/java/nl/matsv/viabackwards/api/ViaBackwardsPlatform.java index 4ca89091..ed54c7ad 100644 --- a/core/src/main/java/nl/matsv/viabackwards/api/ViaBackwardsPlatform.java +++ b/core/src/main/java/nl/matsv/viabackwards/api/ViaBackwardsPlatform.java @@ -12,9 +12,10 @@ package nl.matsv.viabackwards.api; import nl.matsv.viabackwards.ViaBackwards; import nl.matsv.viabackwards.protocol.protocol1_10to1_11.Protocol1_10To1_11; +import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.Protocol1_11_1To1_12; import nl.matsv.viabackwards.protocol.protocol1_11to1_11_1.Protocol1_11To1_11_1; import nl.matsv.viabackwards.protocol.protocol1_12_1to1_12_2.Protocol1_12_1To1_12_2; -import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.Protocol1_11_1To1_12; +import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.Protocol1_12_2To1_13; import nl.matsv.viabackwards.protocol.protocol1_12to1_12_1.Protocol1_12To1_12_1; import nl.matsv.viabackwards.protocol.protocol1_13_1to1_13_2.Protocol1_13_1To1_13_2; import nl.matsv.viabackwards.protocol.protocol1_13to1_13_1.Protocol1_13To1_13_1; From 9ee8e6efa70a8940c823e3b44ec78643eafa724b Mon Sep 17 00:00:00 2001 From: creeper123123321 Date: Sun, 9 Dec 2018 13:18:40 -0200 Subject: [PATCH 056/171] Velocity and maybe better version detector --- all/pom.xml | 6 ++ .../api/ViaBackwardsPlatform.java | 17 ++-- pom.xml | 1 + .../nl/matsv/viabackwards/SpongePlugin.java | 19 ++--- velocity/pom.xml | 83 +++++++++++++++++++ .../viabackwards/velocity/VersionInfo.java | 15 ++++ .../nl/matsv/viabackwards/VelocityPlugin.java | 51 ++++++++++++ 7 files changed, 172 insertions(+), 20 deletions(-) create mode 100644 velocity/pom.xml create mode 100644 velocity/src/main/java-templates/nl/matsv/viabackwards/velocity/VersionInfo.java create mode 100644 velocity/src/main/java/nl/matsv/viabackwards/VelocityPlugin.java diff --git a/all/pom.xml b/all/pom.xml index 7db043b3..0cee5e97 100644 --- a/all/pom.xml +++ b/all/pom.xml @@ -81,5 +81,11 @@ viabackwards-sponge ${project.parent.version} + + + nl.matsv + viabackwards-velocity + ${project.parent.version} + \ No newline at end of file diff --git a/core/src/main/java/nl/matsv/viabackwards/api/ViaBackwardsPlatform.java b/core/src/main/java/nl/matsv/viabackwards/api/ViaBackwardsPlatform.java index baf9d722..c68094ca 100644 --- a/core/src/main/java/nl/matsv/viabackwards/api/ViaBackwardsPlatform.java +++ b/core/src/main/java/nl/matsv/viabackwards/api/ViaBackwardsPlatform.java @@ -12,15 +12,15 @@ package nl.matsv.viabackwards.api; import nl.matsv.viabackwards.ViaBackwards; import nl.matsv.viabackwards.protocol.protocol1_10to1_11.Protocol1_10To1_11; +import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.Protocol1_11_1To1_12; import nl.matsv.viabackwards.protocol.protocol1_11to1_11_1.Protocol1_11To1_11_1; import nl.matsv.viabackwards.protocol.protocol1_12_1to1_12_2.Protocol1_12_1To1_12_2; -import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.Protocol1_11_1To1_12; import nl.matsv.viabackwards.protocol.protocol1_12to1_12_1.Protocol1_12To1_12_1; import nl.matsv.viabackwards.protocol.protocol1_9_4to1_10.Protocol1_9_4To1_10; import us.myles.ViaVersion.api.protocol.ProtocolRegistry; import us.myles.ViaVersion.api.protocol.ProtocolVersion; +import us.myles.ViaVersion.update.Version; -import java.lang.reflect.Field; import java.util.Collections; import java.util.logging.Logger; @@ -48,21 +48,22 @@ public interface ViaBackwardsPlatform { */ Logger getLogger(); - // TODO remove or better implement later default boolean isOutdated() { + String minimumVVVersion = "2.0.0"; boolean upToDate = false; try { - Class clazz = Class.forName("us.myles.ViaVersion.api.protocol.ProtocolVersion"); - Field v1_12_2 = clazz.getField("v1_12_2"); + Class vvVersionInfo = Class.forName("us.myles.ViaVersion.sponge.VersionInfo"); + String vvVersion = (String) vvVersionInfo.getField("VERSION").get(null); - upToDate = (v1_12_2 != null); - } catch (ClassNotFoundException | NoSuchFieldException ignored) { + upToDate = (vvVersion != null + && new Version(vvVersion).compareTo(new Version(minimumVVVersion + "--")) >= 0); + } catch (ClassNotFoundException | NoSuchFieldException | IllegalAccessException ignored) { } if (!upToDate) { getLogger().severe("================================"); getLogger().severe("YOUR VIAVERSION IS OUTDATED"); - getLogger().severe("PLEASE USE THE LATEST VERSION"); + getLogger().severe("PLEASE USE VIAVERSION " + minimumVVVersion + " OR NEWER"); getLogger().severe("LINK: https://viaversion.com"); getLogger().severe("VIABACKWARDS WILL NOW DISABLE"); getLogger().severe("================================"); diff --git a/pom.xml b/pom.xml index 9a000266..e1d7713f 100644 --- a/pom.xml +++ b/pom.xml @@ -28,6 +28,7 @@ bukkit bungee sponge + velocity all diff --git a/sponge/src/main/java/nl/matsv/viabackwards/SpongePlugin.java b/sponge/src/main/java/nl/matsv/viabackwards/SpongePlugin.java index 39fb6b9b..090ea4df 100644 --- a/sponge/src/main/java/nl/matsv/viabackwards/SpongePlugin.java +++ b/sponge/src/main/java/nl/matsv/viabackwards/SpongePlugin.java @@ -11,14 +11,14 @@ package nl.matsv.viabackwards; import com.google.inject.Inject; +import lombok.Getter; import nl.matsv.viabackwards.api.ViaBackwardsPlatform; import nl.matsv.viabackwards.sponge.VersionInfo; import org.spongepowered.api.event.Listener; import org.spongepowered.api.event.Order; -import org.spongepowered.api.event.game.state.GameAboutToStartServerEvent; +import org.spongepowered.api.event.game.state.GameInitializationEvent; import org.spongepowered.api.plugin.Dependency; import org.spongepowered.api.plugin.Plugin; -import org.spongepowered.api.plugin.PluginContainer; import us.myles.ViaVersion.sponge.util.LoggerWrapper; import java.util.logging.Logger; @@ -31,26 +31,21 @@ import java.util.logging.Logger; dependencies = {@Dependency(id = "viaversion")} ) public class SpongePlugin implements ViaBackwardsPlatform { + @Getter private Logger logger; @Inject - private PluginContainer container; + private org.slf4j.Logger loggerSlf4j; @Listener(order = Order.LATE) - public void onServerStart(GameAboutToStartServerEvent e) { + public void onGameStart(GameInitializationEvent e) { // Setup Logger - this.logger = new LoggerWrapper(container.getLogger()); + this.logger = new LoggerWrapper(loggerSlf4j); // Init! this.init(); } - @Override - public Logger getLogger() { - return logger; - } - - // TODO check how to for sponge, site was offline @Override public void disable() { - + // Not possible } } diff --git a/velocity/pom.xml b/velocity/pom.xml new file mode 100644 index 00000000..ff974ef4 --- /dev/null +++ b/velocity/pom.xml @@ -0,0 +1,83 @@ + + + + + + viabackwards-parent + nl.matsv + 2.4.0-SNAPSHOT + + 4.0.0 + + viabackwards-velocity + + + + + . + true + src/main/resources/ + + * + + + + + + + org.codehaus.mojo + templating-maven-plugin + 1.0.0 + + + filter-src + + filter-sources + + + + + + + + + + velocity-maven-repo + Velocity maven repo + https://repo.velocitypowered.com/snapshots/ + + true + + + true + + + + + + + + nl.matsv + viabackwards-core + ${project.parent.version} + + + + + com.velocitypowered + velocity-api + 1.0-SNAPSHOT + provided + + + \ No newline at end of file diff --git a/velocity/src/main/java-templates/nl/matsv/viabackwards/velocity/VersionInfo.java b/velocity/src/main/java-templates/nl/matsv/viabackwards/velocity/VersionInfo.java new file mode 100644 index 00000000..f12f184f --- /dev/null +++ b/velocity/src/main/java-templates/nl/matsv/viabackwards/velocity/VersionInfo.java @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2016 Matsv + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package nl.matsv.viabackwards.velocity; + +public class VersionInfo { + public static final String VERSION = "${project.version}"; +} diff --git a/velocity/src/main/java/nl/matsv/viabackwards/VelocityPlugin.java b/velocity/src/main/java/nl/matsv/viabackwards/VelocityPlugin.java new file mode 100644 index 00000000..f20d6f58 --- /dev/null +++ b/velocity/src/main/java/nl/matsv/viabackwards/VelocityPlugin.java @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2016 Matsv + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package nl.matsv.viabackwards; + +import com.google.inject.Inject; +import com.velocitypowered.api.event.PostOrder; +import com.velocitypowered.api.event.Subscribe; +import com.velocitypowered.api.event.proxy.ProxyInitializeEvent; +import com.velocitypowered.api.plugin.Dependency; +import com.velocitypowered.api.plugin.Plugin; +import lombok.Getter; +import nl.matsv.viabackwards.api.ViaBackwardsPlatform; +import nl.matsv.viabackwards.velocity.VersionInfo; +import us.myles.ViaVersion.sponge.util.LoggerWrapper; + +import java.util.logging.Logger; + +@Plugin(id = "viabackwards", + name = "ViaBackwards", + version = VersionInfo.VERSION, + authors = {"Matsv"}, + description = "Allow older Minecraft versions to connect to an newer server version.", + dependencies = {@Dependency(id = "viaversion")} +) +public class VelocityPlugin implements ViaBackwardsPlatform { + @Getter + private Logger logger; + @Inject + private org.slf4j.Logger loggerSlf4j; + + @Subscribe(order = PostOrder.LATE) + public void onProxyStart(ProxyInitializeEvent e) { + // Setup Logger + this.logger = new LoggerWrapper(loggerSlf4j); + // Init! + this.init(); + } + + @Override + public void disable() { + // Not possible + } +} From b15c55fb2878113214679ad0d8e03b62fbb61bcf Mon Sep 17 00:00:00 2001 From: Marco Neuhaus Date: Sat, 26 Jan 2019 16:51:39 +0100 Subject: [PATCH 057/171] fix rewrite and add pumpkin rewrite --- .../protocol1_12_2to1_13/packets/BlockItemPackets1_13.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 5bc71bdc..497b59a5 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 @@ -429,7 +429,7 @@ public class BlockItemPackets1_13 extends BlockItemRewriter Date: Sat, 26 Jan 2019 19:25:24 +0100 Subject: [PATCH 058/171] remap trading gui 1.131 to 1.13 --- .../packets/InventoryPackets.java | 81 ++++++++++++++----- 1 file changed, 59 insertions(+), 22 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/InventoryPackets.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/InventoryPackets.java index f1f94122..32c5c3fb 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/InventoryPackets.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/InventoryPackets.java @@ -16,30 +16,12 @@ public class InventoryPackets { Outgoing packets */ - // Set slot packet - protocol.registerOutgoing(State.PLAY, 0x17, 0x17, new PacketRemapper() { - @Override - public void registerMap() { - map(Type.BYTE); // 0 - Window ID - map(Type.SHORT); // 1 - Slot ID - map(Type.FLAT_ITEM, Type.FLAT_ITEM); // 2 - Slot Value - - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - Item stack = wrapper.get(Type.FLAT_ITEM, 0); - toClient(stack); - } - }); - } - }); - // Window items packet protocol.registerOutgoing(State.PLAY, 0x15, 0x15, new PacketRemapper() { @Override public void registerMap() { map(Type.UNSIGNED_BYTE); // 0 - Window ID - map(Type.FLAT_ITEM_ARRAY, Type.FLAT_ITEM_ARRAY); // 1 - Window Values + map(Type.FLAT_ITEM_ARRAY); // 1 - Window Values handler(new PacketHandler() { @Override @@ -52,13 +34,68 @@ public class InventoryPackets { } }); + // Set slot packet + protocol.registerOutgoing(State.PLAY, 0x17, 0x17, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE); // 0 - Window ID + map(Type.SHORT); // 1 - Slot ID + map(Type.FLAT_ITEM); // 2 - Slot Value + + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + Item stack = wrapper.get(Type.FLAT_ITEM, 0); + toClient(stack); + } + }); + } + }); + + //Plugin Message + protocol.registerOutgoing(State.PLAY, 0x19, 0x19, new PacketRemapper() { + @Override + public void registerMap() { + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + String channel = wrapper.passthrough(Type.STRING); + if (channel.equals("minecraft:trader_list")) { + wrapper.passthrough(Type.INT); //Passthrough Window ID + + int size = wrapper.passthrough(Type.UNSIGNED_BYTE); + for (int i = 0; i < size; i++) { + //Input Item + Item input = wrapper.passthrough(Type.FLAT_ITEM); + toClient(input); + //Output Item + Item output = wrapper.passthrough(Type.FLAT_ITEM); + toClient(input); + + boolean secondItem = wrapper.passthrough(Type.BOOLEAN); //Has second item + if (secondItem) { + //Second Item + Item second = wrapper.passthrough(Type.FLAT_ITEM); + toClient(input); + } + + wrapper.passthrough(Type.BOOLEAN); //Trade disabled + wrapper.passthrough(Type.INT); //Number of tools uses + wrapper.passthrough(Type.INT); //Maximum number of trade uses + } + } + } + }); + } + }); + // Entity Equipment Packet protocol.registerOutgoing(State.PLAY, 0x42, 0x42, new PacketRemapper() { @Override public void registerMap() { map(Type.VAR_INT); // 0 - Entity ID map(Type.VAR_INT); // 1 - Slot ID - map(Type.FLAT_ITEM, Type.FLAT_ITEM); // 2 - Item + map(Type.FLAT_ITEM); // 2 - Item handler(new PacketHandler() { @Override @@ -84,7 +121,7 @@ public class InventoryPackets { map(Type.BYTE); // 2 - Button map(Type.SHORT); // 3 - Action number map(Type.VAR_INT); // 4 - Mode - map(Type.FLAT_ITEM, Type.FLAT_ITEM); // 5 - Clicked Item + map(Type.FLAT_ITEM); // 5 - Clicked Item handler(new PacketHandler() { @Override @@ -102,7 +139,7 @@ public class InventoryPackets { @Override public void registerMap() { map(Type.SHORT); // 0 - Slot - map(Type.FLAT_ITEM, Type.FLAT_ITEM); // 1 - Clicked Item + map(Type.FLAT_ITEM); // 1 - Clicked Item handler(new PacketHandler() { @Override From 2d53b812ea754a383c47443e7ab1de4bdf4c22f1 Mon Sep 17 00:00:00 2001 From: Marco Neuhaus Date: Sun, 27 Jan 2019 12:40:58 +0100 Subject: [PATCH 059/171] remove debug messages and fix enchantment rewrite --- .../packets/BlockItemPackets1_13.java | 169 ++++++++++++++---- 1 file changed, 135 insertions(+), 34 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 497b59a5..27c70239 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 @@ -38,9 +38,12 @@ import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; import us.myles.viaversion.libs.opennbt.conversion.ConverterRegistry; import us.myles.viaversion.libs.opennbt.tag.builtin.*; +import java.util.*; + public class BlockItemPackets1_13 extends BlockItemRewriter { private static String NBT_TAG_NAME; + private static Map enchantmentMappings = new HashMap<>(); public static int toOldId(int oldId) { if (oldId < 0) { @@ -57,7 +60,7 @@ public class BlockItemPackets1_13 extends BlockItemRewriter lore = new ArrayList<>(); for (Tag enchantmentEntry : enchantments) { if (enchantmentEntry instanceof CompoundTag) { CompoundTag enchEntry = new CompoundTag(""); String newId = (String) ((CompoundTag) enchantmentEntry).get("id").getValue(); - Short oldId = MappingData.oldEnchantmentsIds.inverse().get(newId); - if (oldId == null && newId.startsWith("viaversion:legacy/")) { - oldId = Short.valueOf(newId.substring(18)); + if(enchantmentMappings.containsKey(newId)){ + lore.add(new StringTag("", enchantmentMappings.get(newId))); + noMapped.add(enchantmentEntry); + }else{ + Short oldId = MappingData.oldEnchantmentsIds.inverse().get(newId); + if (oldId == null && newId.startsWith("viaversion:legacy/")) { + oldId = Short.valueOf(newId.substring(18)); + } + enchEntry.put( + new ShortTag( + "id", + oldId + ) + ); + enchEntry.put(new ShortTag("lvl", (Short) ((CompoundTag) enchantmentEntry).get("lvl").getValue())); + enchantments.add(enchEntry); } - enchEntry.put( - new ShortTag( - "id", - oldId - ) - ); - enchEntry.put(new ShortTag("lvl", (Short) ((CompoundTag) enchantmentEntry).get("lvl").getValue())); - ench.add(enchEntry); } } tag.remove("Enchantment"); + tag.put(noMapped); tag.put(ench); + + if(!lore.isEmpty()){ + CompoundTag display = tag.get("display"); + if (display==null) { + tag.put(display = new CompoundTag("display")); + tag.put(new ByteTag(NBT_TAG_NAME + "|noDisplay")); + } + ListTag loreTag = display.get("Lore"); + if (loreTag==null){ + display.put(loreTag = new ListTag("Lore", StringTag.class)); + } + + ListTag oldLore = new ListTag(NBT_TAG_NAME + "|OldLore", StringTag.class); + Iterator iterator = lore.iterator(); + while(iterator.hasNext()){ + oldLore.add(iterator.next().clone()); + } + display.put(oldLore); + + lore.addAll(loreTag.getValue()); + loreTag.setValue(lore); + } } if (tag.get("StoredEnchantments") instanceof ListTag) { ListTag storedEnch = tag.get("StoredEnchantments"); + ListTag noMapped = new ListTag(NBT_TAG_NAME + "|StoredEnchantments", CompoundTag.class); ListTag newStoredEnch = new ListTag("StoredEnchantments", CompoundTag.class); + List lore = new ArrayList<>(); for (Tag enchantmentEntry : storedEnch) { if (enchantmentEntry instanceof CompoundTag) { CompoundTag enchEntry = new CompoundTag(""); String newId = (String) ((CompoundTag) enchantmentEntry).get("id").getValue(); - Short oldId = MappingData.oldEnchantmentsIds.inverse().get(newId); - if (oldId == null && newId.startsWith("viaversion:legacy/")) { - oldId = Short.valueOf(newId.substring(18)); + if(enchantmentMappings.containsKey(newId)){ + lore.add(new StringTag("", enchantmentMappings.get(newId))); + noMapped.add(enchantmentEntry); + }else{ + Short oldId = MappingData.oldEnchantmentsIds.inverse().get(newId); + if (oldId == null && newId.startsWith("viaversion:legacy/")) { + oldId = Short.valueOf(newId.substring(18)); + } + enchEntry.put( + new ShortTag( + "id", + oldId + ) + ); + enchEntry.put(new ShortTag("lvl", (Short) ((CompoundTag) enchantmentEntry).get("lvl").getValue())); + newStoredEnch.add(enchEntry); } - enchEntry.put( - new ShortTag( - "id", - oldId - ) - ); - enchEntry.put(new ShortTag("lvl", (Short) ((CompoundTag) enchantmentEntry).get("lvl").getValue())); - newStoredEnch.add(enchEntry); } } tag.remove("StoredEnchantments"); + tag.put(noMapped); tag.put(newStoredEnch); + + if(!lore.isEmpty()){ + CompoundTag display = tag.get("display"); + if (display==null) { + tag.put(display = new CompoundTag("display")); + tag.put(new ByteTag(NBT_TAG_NAME + "|noDisplay")); + } + ListTag loreTag = display.get("Lore"); + if (loreTag==null){ + display.put(loreTag = new ListTag("Lore", StringTag.class)); + } + + ListTag oldLore = new ListTag(NBT_TAG_NAME + "|OldLore", StringTag.class); + Iterator iterator = lore.iterator(); + while(iterator.hasNext()){ + oldLore.add(iterator.next().clone()); + } + display.put(oldLore); + + lore.addAll(loreTag.getValue()); + loreTag.setValue(lore); + } } if (tag.get(NBT_TAG_NAME + "|CanPlaceOn") instanceof ListTag) { tag.put(ConverterRegistry.convertToTag( @@ -720,7 +786,6 @@ public class BlockItemPackets1_13 extends BlockItemRewriter iterator = oldLore.iterator(); + + while (iterator.hasNext()){ + loreTag.add(iterator.next()); + } + display.remove("Lore"); + display.put(loreTag); + display.remove(NBT_TAG_NAME + "|OldLore"); + } } } // ench is now Enchantments and now uses identifiers @@ -795,6 +877,13 @@ public class BlockItemPackets1_13 extends BlockItemRewriter iterator = noMapped.iterator(); + while (iterator.hasNext()){ + enchantments.add(iterator.next()); + } + } tag.remove("ench"); tag.put(enchantments); } @@ -816,6 +905,13 @@ public class BlockItemPackets1_13 extends BlockItemRewriter iterator = noMapped.iterator(); + while (iterator.hasNext()){ + newStoredEnch.add(iterator.next()); + } + } tag.remove("StoredEnchantments"); tag.put(newStoredEnch); } @@ -920,4 +1016,9 @@ public class BlockItemPackets1_13 extends BlockItemRewriter Date: Sun, 27 Jan 2019 13:01:24 +0100 Subject: [PATCH 060/171] =?UTF-8?q?=E2=9C=A8=20Reformat=20code?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/EntityTypeMapping.java | 28 ++-- .../data/NamedSoundMapping.java | 28 ++-- .../data/PaintingMapping.java | 70 +++++----- .../data/SoundMapping.java | 54 ++++---- .../packets/BlockItemPackets1_13.java | 44 +++--- .../packets/PlayerPacket1_13.java | 30 ++-- .../packets/SoundPackets1_13.java | 130 +++++++++--------- 7 files changed, 192 insertions(+), 192 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/EntityTypeMapping.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/EntityTypeMapping.java index e3ba3962..bf77e218 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/EntityTypeMapping.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/EntityTypeMapping.java @@ -8,20 +8,20 @@ import java.util.Map; import java.util.Optional; public class EntityTypeMapping { - private static Map entityTypes = new HashMap<>(); + private static Map entityTypes = new HashMap<>(); - static { - try { - Field field = EntityTypeRewriter.class.getDeclaredField("entityTypes"); - field.setAccessible(true); - Map entityTypes = (Map) field.get(null); - entityTypes.forEach((type1_12, type1_13) -> EntityTypeMapping.entityTypes.put(type1_13, type1_12)); - } catch (NoSuchFieldException | IllegalAccessException ex) { - ex.printStackTrace(); - } - } + static { + try { + Field field = EntityTypeRewriter.class.getDeclaredField("entityTypes"); + field.setAccessible(true); + Map entityTypes = (Map) field.get(null); + entityTypes.forEach((type1_12, type1_13) -> EntityTypeMapping.entityTypes.put(type1_13, type1_12)); + } catch (NoSuchFieldException | IllegalAccessException ex) { + ex.printStackTrace(); + } + } - public static Optional getOldId(int type1_13) { - return Optional.ofNullable(entityTypes.get(type1_13)); - } + public static Optional getOldId(int type1_13) { + return Optional.ofNullable(entityTypes.get(type1_13)); + } } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/NamedSoundMapping.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/NamedSoundMapping.java index e6f167d9..5788fee2 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/NamedSoundMapping.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/NamedSoundMapping.java @@ -7,20 +7,20 @@ import java.util.HashMap; import java.util.Map; public class NamedSoundMapping { - private static Map sounds = new HashMap<>(); + private static Map sounds = new HashMap<>(); - static { - try { - Field field = NamedSoundRewriter.class.getDeclaredField("oldToNew"); - field.setAccessible(true); - Map sounds = (Map) field.get(null); - sounds.forEach((sound1_12, sound1_13) -> NamedSoundMapping.sounds.put(sound1_13, sound1_12)); - } catch (NoSuchFieldException | IllegalAccessException ex) { - ex.printStackTrace(); - } - } + static { + try { + Field field = NamedSoundRewriter.class.getDeclaredField("oldToNew"); + field.setAccessible(true); + Map sounds = (Map) field.get(null); + sounds.forEach((sound1_12, sound1_13) -> NamedSoundMapping.sounds.put(sound1_13, sound1_12)); + } catch (NoSuchFieldException | IllegalAccessException ex) { + ex.printStackTrace(); + } + } - public static String getOldId(String sound1_13) { - return sounds.get(sound1_13); - } + public static String getOldId(String sound1_13) { + return sounds.get(sound1_13); + } } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/PaintingMapping.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/PaintingMapping.java index bfb85bd7..578ed5f9 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/PaintingMapping.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/PaintingMapping.java @@ -4,42 +4,42 @@ import java.util.HashMap; import java.util.Map; public class PaintingMapping { - private static Map paintings = new HashMap<>(); + private static Map paintings = new HashMap<>(); - public static void init() { - add("kebab"); - add("aztec"); - add("alban"); - add("aztec2"); - add("bomb"); - add("plant"); - add("wasteland"); - add("pool"); - add("courbet"); - add("sea"); - add("sunset"); - add("creebet"); - add("wanderer"); - add("graham"); - add("match"); - add("bust"); - add("stage"); - add("void"); - add("skullandroses"); - add("wither"); - add("fighters"); - add("pointer"); - add("pigscene"); - add("burningskull"); - add("skeleton"); - add("donkeykong"); - } + public static void init() { + add("kebab"); + add("aztec"); + add("alban"); + add("aztec2"); + add("bomb"); + add("plant"); + add("wasteland"); + add("pool"); + add("courbet"); + add("sea"); + add("sunset"); + add("creebet"); + add("wanderer"); + add("graham"); + add("match"); + add("bust"); + add("stage"); + add("void"); + add("skullandroses"); + add("wither"); + add("fighters"); + add("pointer"); + add("pigscene"); + add("burningskull"); + add("skeleton"); + add("donkeykong"); + } - private static void add(String motive) { - paintings.put(paintings.size(), motive); - } + private static void add(String motive) { + paintings.put(paintings.size(), motive); + } - public static String getStringId(int id) { - return paintings.getOrDefault(id, "kebab"); - } + public static String getStringId(int id) { + return paintings.getOrDefault(id, "kebab"); + } } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/SoundMapping.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/SoundMapping.java index 99fa1628..c9096b01 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/SoundMapping.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/SoundMapping.java @@ -9,36 +9,36 @@ import java.util.Arrays; import static us.myles.ViaVersion.protocols.protocol1_13to1_12_2.data.MappingData.loadData; public class SoundMapping { - private static short[] sounds = new short[662]; + private static short[] sounds = new short[662]; - public static void init() { - JsonObject mapping1_12 = loadData("mapping-1.12.json"); - JsonObject mapping1_13 = loadData("mapping-1.13.json"); + public static void init() { + JsonObject mapping1_12 = loadData("mapping-1.12.json"); + JsonObject mapping1_13 = loadData("mapping-1.13.json"); - Arrays.fill(sounds, (short) -1); - mapIdentifiers(sounds, mapping1_13.getAsJsonArray("sounds"), mapping1_12.getAsJsonArray("sounds")); - } + Arrays.fill(sounds, (short) -1); + mapIdentifiers(sounds, mapping1_13.getAsJsonArray("sounds"), mapping1_12.getAsJsonArray("sounds")); + } - private static void mapIdentifiers(short[] output, JsonArray oldIdentifiers, JsonArray newIdentifiers) { - for (int i = 0; i < oldIdentifiers.size(); i++) { - JsonElement v = oldIdentifiers.get(i); - Integer index = findIndex(newIdentifiers, v.getAsString()); - if (index == null) continue; //There will be missing sounds, since we are goind backwards - output[i] = index.shortValue(); - } - } + private static void mapIdentifiers(short[] output, JsonArray oldIdentifiers, JsonArray newIdentifiers) { + for (int i = 0; i < oldIdentifiers.size(); i++) { + JsonElement v = oldIdentifiers.get(i); + Integer index = findIndex(newIdentifiers, v.getAsString()); + if (index == null) continue; //There will be missing sounds, since we are goind backwards + output[i] = index.shortValue(); + } + } - private static Integer findIndex(JsonArray array, String value) { - for (int i = 0; i < array.size(); i++) { - JsonElement v = array.get(i); - if (v.getAsString().equals(value)) { - return i; - } - } - return null; - } + private static Integer findIndex(JsonArray array, String value) { + for (int i = 0; i < array.size(); i++) { + JsonElement v = array.get(i); + if (v.getAsString().equals(value)) { + return i; + } + } + return null; + } - public static int getOldSound(int newSound) { - return newSound >= sounds.length ? -1 : sounds[newSound]; - } + public static int getOldSound(int newSound) { + return newSound >= sounds.length ? -1 : sounds[newSound]; + } } 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 27c70239..2e211f3c 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 @@ -195,7 +195,7 @@ public class BlockItemPackets1_13 extends BlockItemRewriter iterator = lore.iterator(); - while(iterator.hasNext()){ + while (iterator.hasNext()) { oldLore.add(iterator.next().clone()); } display.put(oldLore); @@ -692,10 +692,10 @@ public class BlockItemPackets1_13 extends BlockItemRewriter iterator = lore.iterator(); - while(iterator.hasNext()){ + while (iterator.hasNext()) { oldLore.add(iterator.next().clone()); } display.put(oldLore); @@ -833,10 +833,10 @@ public class BlockItemPackets1_13 extends BlockItemRewriter iterator = oldLore.iterator(); - while (iterator.hasNext()){ + while (iterator.hasNext()) { loreTag.add(iterator.next()); } display.remove("Lore"); @@ -877,10 +877,10 @@ public class BlockItemPackets1_13 extends BlockItemRewriter iterator = noMapped.iterator(); - while (iterator.hasNext()){ + while (iterator.hasNext()) { enchantments.add(iterator.next()); } } @@ -905,10 +905,10 @@ public class BlockItemPackets1_13 extends BlockItemRewriter iterator = noMapped.iterator(); - while (iterator.hasNext()){ + while (iterator.hasNext()) { newStoredEnch.add(iterator.next()); } } @@ -1018,7 +1018,7 @@ public class BlockItemPackets1_13 extends BlockItemRewriter { wrapper.write(Type.STRING, "MC|TrList"); wrapper.passthrough(Type.INT); //Passthrough Window ID - int size = wrapper.passthrough(Type.UNSIGNED_BYTE); - for (int i = 0; i < size; i++) { - //Input Item - Item input = wrapper.read(Type.FLAT_ITEM); - wrapper.write(Type.ITEM, getProtocol().getBlockItemPackets().handleItemToClient(input)); - //Output Item - Item output = wrapper.read(Type.FLAT_ITEM); - wrapper.write(Type.ITEM, getProtocol().getBlockItemPackets().handleItemToClient(output)); + int size = wrapper.passthrough(Type.UNSIGNED_BYTE); + for (int i = 0; i < size; i++) { + //Input Item + Item input = wrapper.read(Type.FLAT_ITEM); + wrapper.write(Type.ITEM, getProtocol().getBlockItemPackets().handleItemToClient(input)); + //Output Item + Item output = wrapper.read(Type.FLAT_ITEM); + wrapper.write(Type.ITEM, getProtocol().getBlockItemPackets().handleItemToClient(output)); - boolean secondItem = wrapper.passthrough(Type.BOOLEAN); //Has second item - if (secondItem) { - //Second Item - Item second = wrapper.read(Type.FLAT_ITEM); - wrapper.write(Type.ITEM, getProtocol().getBlockItemPackets().handleItemToClient(second)); - } + boolean secondItem = wrapper.passthrough(Type.BOOLEAN); //Has second item + if (secondItem) { + //Second Item + Item second = wrapper.read(Type.FLAT_ITEM); + wrapper.write(Type.ITEM, getProtocol().getBlockItemPackets().handleItemToClient(second)); + } wrapper.passthrough(Type.BOOLEAN); //Trade disabled wrapper.passthrough(Type.INT); //Number of tools uses @@ -158,7 +158,7 @@ public class PlayerPacket1_13 extends Rewriter { String match = wrapper.read(Type.STRING); wrapper.write(Type.STRING, (start == 0 ? "/" : "") + match); // Ignore tooltip - if (wrapper.read(Type.BOOLEAN)) wrapper.read(Type.STRING); + if (wrapper.read(Type.BOOLEAN)) wrapper.read(Type.STRING); } } }); diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/SoundPackets1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/SoundPackets1_13.java index c82a4221..acc31982 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/SoundPackets1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/SoundPackets1_13.java @@ -11,76 +11,76 @@ import us.myles.ViaVersion.api.type.Type; import us.myles.ViaVersion.packets.State; public class SoundPackets1_13 extends Rewriter { - private static final String[] SOUND_SOURCES = {"master", "music", "record", "weather", "block", "hostile", "neutral", "player", "ambient", "voice"}; + private static final String[] SOUND_SOURCES = {"master", "music", "record", "weather", "block", "hostile", "neutral", "player", "ambient", "voice"}; - @Override - protected void registerPackets(Protocol1_12_2To1_13 protocol) { + @Override + protected void registerPackets(Protocol1_12_2To1_13 protocol) { - //Named Sound Event - protocol.out(State.PLAY, 0x1A, 0x19, new PacketRemapper() { - @Override - public void registerMap() { - map(Type.STRING); - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - String newSound = wrapper.get(Type.STRING, 0); - String oldSound = NamedSoundMapping.getOldId(newSound); - if (oldSound != null) { - wrapper.set(Type.STRING, 0, oldSound); - } - } - }); - } - }); + //Named Sound Event + protocol.out(State.PLAY, 0x1A, 0x19, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.STRING); + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + String newSound = wrapper.get(Type.STRING, 0); + String oldSound = NamedSoundMapping.getOldId(newSound); + if (oldSound != null) { + wrapper.set(Type.STRING, 0, oldSound); + } + } + }); + } + }); - //Stop Sound - protocol.out(State.PLAY, 0x4C, 0x18, new PacketRemapper() { - @Override - public void registerMap() { - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - wrapper.write(Type.STRING, "MC|StopSound"); - byte flags = wrapper.read(Type.BYTE); - String source; - if ((flags & 0x01) != 0) { - source = SOUND_SOURCES[wrapper.read(Type.VAR_INT)]; - } else { - source = ""; - } - String sound = (flags & 0x02) != 0 ? wrapper.read(Type.STRING) : ""; + //Stop Sound + protocol.out(State.PLAY, 0x4C, 0x18, new PacketRemapper() { + @Override + public void registerMap() { + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + wrapper.write(Type.STRING, "MC|StopSound"); + byte flags = wrapper.read(Type.BYTE); + String source; + if ((flags & 0x01) != 0) { + source = SOUND_SOURCES[wrapper.read(Type.VAR_INT)]; + } else { + source = ""; + } + String sound = (flags & 0x02) != 0 ? wrapper.read(Type.STRING) : ""; - wrapper.write(Type.STRING, source); - wrapper.write(Type.STRING, sound); - } - }); - } - }); + wrapper.write(Type.STRING, source); + wrapper.write(Type.STRING, sound); + } + }); + } + }); - //Sound Effect - protocol.out(State.PLAY, 0x4D, 0x49, new PacketRemapper() { - @Override - public void registerMap() { - map(Type.VAR_INT); - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - int newSound = wrapper.get(Type.VAR_INT, 0); - int oldSound = SoundMapping.getOldSound(newSound); - if (oldSound == -1) { - wrapper.cancel(); - } else { - wrapper.set(Type.VAR_INT, 0, oldSound); - } - } - }); - } - }); - } + //Sound Effect + protocol.out(State.PLAY, 0x4D, 0x49, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + int newSound = wrapper.get(Type.VAR_INT, 0); + int oldSound = SoundMapping.getOldSound(newSound); + if (oldSound == -1) { + wrapper.cancel(); + } else { + wrapper.set(Type.VAR_INT, 0, oldSound); + } + } + }); + } + }); + } - @Override - protected void registerRewrites() { + @Override + protected void registerRewrites() { - } + } } From 8477e20725c38e7e4a1d91525910cf0403fe5046 Mon Sep 17 00:00:00 2001 From: Matsv Date: Sun, 27 Jan 2019 14:06:48 +0100 Subject: [PATCH 061/171] =?UTF-8?q?=E2=99=BB=20Rewrite=20Entity=201.13.1?= =?UTF-8?q?=20the=20ViaBackwards=20way=20&=20remove=20incorrect=20metadata?= =?UTF-8?q?=20&=201.13=20rewrite?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../packets/EntityPackets1_13.java | 7 +- .../MetadataRewriter.java | 48 --- .../Protocol1_13To1_13_1.java | 18 +- .../packets/EntityPackets.java | 288 +++++++++++++++--- .../packets/WorldPackets.java | 36 --- 5 files changed, 261 insertions(+), 136 deletions(-) delete mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/MetadataRewriter.java diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java index a36b0261..ec4fa3db 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/EntityPackets1_13.java @@ -465,13 +465,8 @@ public class EntityPackets1_13 extends EntityRewriter { // Remove boat splash timer registerMetaHandler().filter(EntityType.BOAT, 12).removed(); - //Remove shooter UUID - registerMetaHandler().filter(EntityType.ABSTRACT_ARROW, true, 7).removed(); - - registerMetaHandler().filter(EntityType.SPECTRAL_ARROW, 8).handleIndexChange(7); - // Remove Trident special loyalty level - registerMetaHandler().filter(EntityType.TRIDENT, 8).removed(); + registerMetaHandler().filter(EntityType.TRIDENT, 7).removed(); // Handle new wolf colors registerMetaHandler().filter(EntityType.WOLF, 17).handle(e -> { diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/MetadataRewriter.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/MetadataRewriter.java deleted file mode 100644 index 72ebe475..00000000 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/MetadataRewriter.java +++ /dev/null @@ -1,48 +0,0 @@ -package nl.matsv.viabackwards.protocol.protocol1_13to1_13_1; - -import nl.matsv.viabackwards.protocol.protocol1_13to1_13_1.packets.InventoryPackets; -import us.myles.ViaVersion.api.Via; -import us.myles.ViaVersion.api.data.UserConnection; -import us.myles.ViaVersion.api.entities.Entity1_13Types; -import us.myles.ViaVersion.api.entities.Entity1_13Types.EntityType; -import us.myles.ViaVersion.api.minecraft.item.Item; -import us.myles.ViaVersion.api.minecraft.metadata.Metadata; -import us.myles.ViaVersion.api.minecraft.metadata.types.MetaType1_13; - -import java.util.ArrayList; -import java.util.List; - -public class MetadataRewriter { - - public static void handleMetadata(int entityId, Entity1_13Types.EntityType type, List metadatas, UserConnection connection) { - for (Metadata metadata : new ArrayList<>(metadatas)) { - try { - // 1.13 changed item to flat item (no data) - if (metadata.getMetaType() == MetaType1_13.Slot) { - InventoryPackets.toClient((Item) metadata.getValue()); - } else if (metadata.getMetaType() == MetaType1_13.BlockID) { - // Convert to new block id - int data = (int) metadata.getValue(); - metadata.setValue(Protocol1_13To1_13_1.getNewBlockStateId(data)); - } - if (type == null) continue; - if (type.isOrHasParent(Entity1_13Types.EntityType.MINECART_ABSTRACT) && metadata.getId() == 9) { - // New block format - int data = (int) metadata.getValue(); - metadata.setValue(Protocol1_13To1_13_1.getNewBlockStateId(data)); - } - if(type.is(EntityType.ITEM)){ - - } - } catch (Exception e) { - metadatas.remove(metadata); - if (!Via.getConfig().isSuppressMetadataErrors() || Via.getManager().isDebug()) { - Via.getPlatform().getLogger().warning("An error occurred with entity metadata handler"); - Via.getPlatform().getLogger().warning("Metadata: " + metadata); - e.printStackTrace(); - } - } - } - } - -} diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/Protocol1_13To1_13_1.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/Protocol1_13To1_13_1.java index 7992037e..d2e0e2bf 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/Protocol1_13To1_13_1.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/Protocol1_13To1_13_1.java @@ -1,6 +1,7 @@ package nl.matsv.viabackwards.protocol.protocol1_13to1_13_1; import nl.matsv.viabackwards.api.BackwardsProtocol; +import nl.matsv.viabackwards.api.entities.storage.EntityTracker; import nl.matsv.viabackwards.protocol.protocol1_13to1_13_1.packets.EntityPackets; import nl.matsv.viabackwards.protocol.protocol1_13to1_13_1.packets.InventoryPackets; import nl.matsv.viabackwards.protocol.protocol1_13to1_13_1.packets.WorldPackets; @@ -12,14 +13,13 @@ import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.api.remapper.ValueTransformer; import us.myles.ViaVersion.api.type.Type; import us.myles.ViaVersion.packets.State; -import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.storage.EntityTracker; import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; public class Protocol1_13To1_13_1 extends BackwardsProtocol { @Override protected void registerPackets() { - EntityPackets.register(this); + new EntityPackets().register(this); InventoryPackets.register(this); WorldPackets.register(this); @@ -214,9 +214,15 @@ public class Protocol1_13To1_13_1 extends BackwardsProtocol { } @Override - public void init(UserConnection userConnection) { - userConnection.put(new EntityTracker(userConnection)); - if (!userConnection.has(ClientWorld.class)) - userConnection.put(new ClientWorld(userConnection)); + public void init(UserConnection user) { + // Register EntityTracker if it doesn't exist yet. + if (!user.has(EntityTracker.class)) + user.put(new EntityTracker(user)); + + // Init protocol in EntityTracker + user.get(EntityTracker.class).initProtocol(this); + + if (!user.has(ClientWorld.class)) + user.put(new ClientWorld(user)); } } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/EntityPackets.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/EntityPackets.java index d1eb8d2a..e99a5edc 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/EntityPackets.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/EntityPackets.java @@ -1,25 +1,30 @@ package nl.matsv.viabackwards.protocol.protocol1_13to1_13_1.packets; -import com.google.common.base.Optional; -import nl.matsv.viabackwards.protocol.protocol1_13to1_13_1.MetadataRewriter; +import nl.matsv.viabackwards.ViaBackwards; +import nl.matsv.viabackwards.api.entities.storage.MetaStorage; +import nl.matsv.viabackwards.api.entities.types.EntityType1_12; +import nl.matsv.viabackwards.api.entities.types.EntityType1_13; +import nl.matsv.viabackwards.api.entities.types.EntityType1_13.EntityType; +import nl.matsv.viabackwards.api.rewriters.EntityRewriter; import nl.matsv.viabackwards.protocol.protocol1_13to1_13_1.Protocol1_13To1_13_1; import us.myles.ViaVersion.api.PacketWrapper; -import us.myles.ViaVersion.api.entities.Entity1_13Types; -import us.myles.ViaVersion.api.entities.Entity1_13Types.EntityType; -import us.myles.ViaVersion.api.protocol.Protocol; +import us.myles.ViaVersion.api.minecraft.item.Item; +import us.myles.ViaVersion.api.minecraft.metadata.Metadata; +import us.myles.ViaVersion.api.minecraft.metadata.types.MetaType1_13; import us.myles.ViaVersion.api.remapper.PacketHandler; import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.api.type.Type; import us.myles.ViaVersion.api.type.types.version.Types1_13; import us.myles.ViaVersion.packets.State; -import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.storage.EntityTracker; +import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; -public class EntityPackets { +public class EntityPackets extends EntityRewriter { - public static void register(Protocol protocol) { + @Override + protected void registerPackets(Protocol1_13To1_13_1 protocol) { - //spawn entity - protocol.registerOutgoing(State.PLAY, 0x0, 0x0, new PacketRemapper() { + // Spawn Object + protocol.out(State.PLAY, 0x00, 0x00, new PacketRemapper() { @Override public void registerMap() { map(Type.VAR_INT); // 0 - Entity id @@ -32,28 +37,74 @@ public class EntityPackets { map(Type.BYTE); // 7 - Yaw map(Type.INT); // 8 - Data - // Track Entity handler(new PacketHandler() { @Override public void handle(PacketWrapper wrapper) throws Exception { int entityId = wrapper.get(Type.VAR_INT, 0); byte type = wrapper.get(Type.BYTE, 0); - Entity1_13Types.EntityType entType = Entity1_13Types.getTypeFromId(type, true); - - if (entType != null) { - if (entType.is(Entity1_13Types.EntityType.FALLING_BLOCK)) { - int data = wrapper.get(Type.INT, 0); - wrapper.set(Type.INT, 0, Protocol1_13To1_13_1.getNewBlockStateId(data)); - } + EntityType entType = EntityType1_13.getTypeFromId(type, true); + if (entType == null) { + ViaBackwards.getPlatform().getLogger().warning("Could not find 1.13 entity type " + type); + return; } - // Register Type ID - wrapper.user().get(EntityTracker.class).addEntity(entityId, entType); + + // Rewrite falling block + if (entType.is(EntityType.FALLING_BLOCK)) { + int data = wrapper.get(Type.INT, 0); + wrapper.set(Type.INT, 0, Protocol1_13To1_13_1.getNewBlockStateId(data)); + } + + // Track Entity + addTrackedEntity( + wrapper.user(), + entityId, + entType + ); } }); } }); - // Spawn mob packet - protocol.registerOutgoing(State.PLAY, 0x3, 0x3, new PacketRemapper() { + + // Spawn Experience Orb + protocol.out(State.PLAY, 0x01, 0x01, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + addTrackedEntity( + wrapper.user(), + wrapper.get(Type.VAR_INT, 0), + EntityType.XP_ORB + ); + } + }); + } + }); + + // Spawn Global Entity + protocol.out(State.PLAY, 0x02, 0x02, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); + map(Type.BYTE); + + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + addTrackedEntity( + wrapper.user(), + wrapper.get(Type.VAR_INT, 0), + EntityType.LIGHTNING_BOLT + ); + } + }); + } + }); + + // Spawn Mob + protocol.out(State.PLAY, 0x3, 0x3, new PacketRemapper() { @Override public void registerMap() { map(Type.VAR_INT); // 0 - Entity ID @@ -70,25 +121,47 @@ public class EntityPackets { map(Type.SHORT); // 11 - Velocity Z map(Types1_13.METADATA_LIST); // 12 - Metadata + // Track Entity handler(new PacketHandler() { @Override public void handle(PacketWrapper wrapper) throws Exception { - int entityId = wrapper.get(Type.VAR_INT, 0); int type = wrapper.get(Type.VAR_INT, 1); - Entity1_13Types.EntityType entType = Entity1_13Types.getTypeFromId(type, false); + EntityType entityType = EntityType1_13.getTypeFromId(type, false); + addTrackedEntity( + wrapper.user(), + wrapper.get(Type.VAR_INT, 0), + entityType + ); + } + }); - // Register Type ID - wrapper.user().get(EntityTracker.class).addEntity(entityId, entType); + // Rewrite Metadata + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + MetaStorage storage = new MetaStorage(wrapper.get(Types1_13.METADATA_LIST, 0)); + handleMeta( + wrapper.user(), + wrapper.get(Type.VAR_INT, 0), + storage + ); - MetadataRewriter.handleMetadata(entityId, entType, wrapper.get(Types1_13.METADATA_LIST, 0), wrapper.user()); + // Don't handle new ids / base meta since it's not used for this version + + // Rewrite Metadata + wrapper.set( + Types1_13.METADATA_LIST, + 0, + storage.getMetaDataList() + ); } }); } }); // Spawn player packet - protocol.registerOutgoing(State.PLAY, 0x05, 0x05, new PacketRemapper() { + protocol.out(State.PLAY, 0x05, 0x05, new PacketRemapper() { @Override public void registerMap() { map(Type.VAR_INT); // 0 - Entity ID @@ -100,21 +173,107 @@ public class EntityPackets { map(Type.BYTE); // 6 - Pitch map(Types1_13.METADATA_LIST); // 7 - Metadata + // Track Entity handler(new PacketHandler() { @Override public void handle(PacketWrapper wrapper) throws Exception { - int entityId = wrapper.get(Type.VAR_INT, 0); + addTrackedEntity( + wrapper.user(), + wrapper.get(Type.VAR_INT, 0), + EntityType.PLAYER + ); + } + }); - Entity1_13Types.EntityType entType = Entity1_13Types.EntityType.PLAYER; - // Register Type ID - wrapper.user().get(EntityTracker.class).addEntity(entityId, entType); - MetadataRewriter.handleMetadata(entityId, entType, wrapper.get(Types1_13.METADATA_LIST, 0), wrapper.user()); + // Rewrite Metadata + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + wrapper.set( + Types1_13.METADATA_LIST, + 0, + handleMeta( + wrapper.user(), + wrapper.get(Type.VAR_INT, 0), + new MetaStorage(wrapper.get(Types1_13.METADATA_LIST, 0)) + ).getMetaDataList() + ); } }); } }); + + //Spawn Painting + protocol.out(State.PLAY, 0x04, 0x04, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); + map(Type.UUID); + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + addTrackedEntity( + wrapper.user(), + wrapper.get(Type.VAR_INT, 0), + EntityType.PAINTING + ); + } + }); + } + }); + + // Join Game + protocol.registerOutgoing(State.PLAY, 0x25, 0x25, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // 0 - Entity ID + map(Type.UNSIGNED_BYTE); // 1 - Gamemode + map(Type.INT); // 2 - Dimension + + // Track Entity + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + addTrackedEntity( + wrapper.user(), + wrapper.get(Type.INT, 0), + EntityType1_12.EntityType.PLAYER + ); + } + }); + + // Save dimension + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + ClientWorld clientChunks = wrapper.user().get(ClientWorld.class); + int dimensionId = wrapper.get(Type.INT, 1); + clientChunks.setEnvironment(dimensionId); + } + }); + } + }); + + // Respawn + protocol.out(State.PLAY, 0x38, 0x38, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // 0 - Dimension ID\ + + // Save dimension + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); + int dimensionId = wrapper.get(Type.INT, 0); + clientWorld.setEnvironment(dimensionId); + } + }); + } + }); + // Destroy entities - protocol.registerOutgoing(State.PLAY, 0x35, 0x35, new PacketRemapper() { + protocol.out(State.PLAY, 0x35, 0x35, new PacketRemapper() { @Override public void registerMap() { map(Type.VAR_INT_ARRAY); // 0 - Entity IDS @@ -123,7 +282,7 @@ public class EntityPackets { @Override public void handle(PacketWrapper wrapper) throws Exception { for (int entity : wrapper.get(Type.VAR_INT_ARRAY, 0)) - wrapper.user().get(EntityTracker.class).removeEntity(entity); + getEntityTracker(wrapper.user()).removeEntity(entity); } }); } @@ -131,22 +290,71 @@ public class EntityPackets { // Metadata packet - protocol.registerOutgoing(State.PLAY, 0x3F, 0x3F, new PacketRemapper() { + protocol.out(State.PLAY, 0x3F, 0x3F, new PacketRemapper() { @Override public void registerMap() { map(Type.VAR_INT); // 0 - Entity ID map(Types1_13.METADATA_LIST); // 1 - Metadata list + handler(new PacketHandler() { @Override public void handle(PacketWrapper wrapper) throws Exception { - int entityId = wrapper.get(Type.VAR_INT, 0); - - Optional type = wrapper.user().get(EntityTracker.class).get(entityId); - MetadataRewriter.handleMetadata(entityId, type.orNull(), wrapper.get(Types1_13.METADATA_LIST, 0), wrapper.user()); + wrapper.set( + Types1_13.METADATA_LIST, + 0, + handleMeta( + wrapper.user(), + wrapper.get(Type.VAR_INT, 0), + new MetaStorage(wrapper.get(Types1_13.METADATA_LIST, 0)) + ).getMetaDataList() + ); } }); } }); } + @Override + protected void registerRewrites() { + + // Rewrite items & blocks + registerMetaHandler().handle(e -> { + Metadata meta = e.getData(); + + if (meta.getMetaType() == MetaType1_13.Slot) { + InventoryPackets.toClient((Item) meta.getValue()); + } else if (meta.getMetaType() == MetaType1_13.BlockID) { + // Convert to new block id + int data = (int) meta.getValue(); + meta.setValue(Protocol1_13To1_13_1.getNewBlockStateId(data)); + } + + return meta; + }); + + // Remove shooter UUID + registerMetaHandler(). + filter(EntityType.ABSTRACT_ARROW, true, 7) + .removed(); + + // Move colors to old position + registerMetaHandler().filter(EntityType.SPECTRAL_ARROW, 8) + .handleIndexChange(7); + + // Move loyalty level to old position + registerMetaHandler().filter(EntityType.TRIDENT, 8) + .handleIndexChange(7); + + // Rewrite Minecart blocks + registerMetaHandler() + .filter(EntityType.MINECART_ABSTRACT, true, 9) + .handle(e -> { + Metadata meta = e.getData(); + + int data = (int) meta.getValue(); + meta.setValue(Protocol1_13To1_13_1.getNewBlockStateId(data)); + + return meta; + }); + } } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/WorldPackets.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/WorldPackets.java index aa0029ff..a36ed077 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/WorldPackets.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/WorldPackets.java @@ -118,42 +118,6 @@ public class WorldPackets { } }); - //join game - protocol.registerOutgoing(State.PLAY, 0x25, 0x25, new PacketRemapper() { - @Override - public void registerMap() { - map(Type.INT); // 0 - Entity ID - map(Type.UNSIGNED_BYTE); // 1 - Gamemode - map(Type.INT); // 2 - Dimension - - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - // Store the player - ClientWorld clientChunks = wrapper.user().get(ClientWorld.class); - int dimensionId = wrapper.get(Type.INT, 1); - clientChunks.setEnvironment(dimensionId); - } - }); - } - }); - - //respawn - protocol.registerOutgoing(State.PLAY, 0x38, 0x38, new PacketRemapper() { - @Override - public void registerMap() { - map(Type.INT); // 0 - Dimension ID - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); - int dimensionId = wrapper.get(Type.INT, 0); - clientWorld.setEnvironment(dimensionId); - } - }); - } - }); - //spawn particle protocol.registerOutgoing(State.PLAY, 0x24, 0x24, new PacketRemapper() { @Override From 58b8f4004b3c5c67855cc4c3d384c96338db6f8b Mon Sep 17 00:00:00 2001 From: Matsv Date: Sun, 27 Jan 2019 14:16:05 +0100 Subject: [PATCH 062/171] :paperclip: Rename 1.13.1 classes --- .../Protocol1_13To1_13_1.java | 18 +++++++++--------- ...tyPackets.java => EntityPackets1_13_1.java} | 4 ++-- ...ackets.java => InventoryPackets1_13_1.java} | 2 +- ...rldPackets.java => WorldPackets1_13_1.java} | 6 +++--- 4 files changed, 15 insertions(+), 15 deletions(-) rename core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/{EntityPackets.java => EntityPackets1_13_1.java} (98%) rename core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/{InventoryPackets.java => InventoryPackets1_13_1.java} (99%) rename core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/{WorldPackets.java => WorldPackets1_13_1.java} (97%) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/Protocol1_13To1_13_1.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/Protocol1_13To1_13_1.java index d2e0e2bf..1704d890 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/Protocol1_13To1_13_1.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/Protocol1_13To1_13_1.java @@ -2,9 +2,9 @@ package nl.matsv.viabackwards.protocol.protocol1_13to1_13_1; import nl.matsv.viabackwards.api.BackwardsProtocol; import nl.matsv.viabackwards.api.entities.storage.EntityTracker; -import nl.matsv.viabackwards.protocol.protocol1_13to1_13_1.packets.EntityPackets; -import nl.matsv.viabackwards.protocol.protocol1_13to1_13_1.packets.InventoryPackets; -import nl.matsv.viabackwards.protocol.protocol1_13to1_13_1.packets.WorldPackets; +import nl.matsv.viabackwards.protocol.protocol1_13to1_13_1.packets.EntityPackets1_13_1; +import nl.matsv.viabackwards.protocol.protocol1_13to1_13_1.packets.InventoryPackets1_13_1; +import nl.matsv.viabackwards.protocol.protocol1_13to1_13_1.packets.WorldPackets1_13_1; import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.data.UserConnection; import us.myles.ViaVersion.api.minecraft.item.Item; @@ -19,9 +19,9 @@ public class Protocol1_13To1_13_1 extends BackwardsProtocol { @Override protected void registerPackets() { - new EntityPackets().register(this); - InventoryPackets.register(this); - WorldPackets.register(this); + new EntityPackets1_13_1().register(this); + InventoryPackets1_13_1.register(this); + WorldPackets1_13_1.register(this); //Tab complete registerIncoming(State.PLAY, 0x05, 0x05, new PacketRemapper() { @@ -47,7 +47,7 @@ public class Protocol1_13To1_13_1 extends BackwardsProtocol { handler(new PacketHandler() { @Override public void handle(PacketWrapper wrapper) throws Exception { - InventoryPackets.toServer(wrapper.get(Type.FLAT_ITEM, 0)); + InventoryPackets1_13_1.toServer(wrapper.get(Type.FLAT_ITEM, 0)); wrapper.write(Type.VAR_INT, 0); } }); @@ -128,7 +128,7 @@ public class Protocol1_13To1_13_1 extends BackwardsProtocol { wrapper.passthrough(Type.STRING); // Title wrapper.passthrough(Type.STRING); // Description Item icon = wrapper.passthrough(Type.FLAT_ITEM); - InventoryPackets.toClient(icon); + InventoryPackets1_13_1.toClient(icon); wrapper.passthrough(Type.VAR_INT); // Frame type int flags = wrapper.passthrough(Type.INT); // Flags if ((flags & 1) != 0) @@ -169,7 +169,7 @@ public class Protocol1_13To1_13_1 extends BackwardsProtocol { wrapper.passthrough(Type.STRING); Integer[] items = wrapper.passthrough(Type.VAR_INT_ARRAY); for (int j = 0; j < items.length; j++) { - items[j] = InventoryPackets.getOldItemId(items[j]); + items[j] = InventoryPackets1_13_1.getOldItemId(items[j]); } } } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/EntityPackets.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/EntityPackets1_13_1.java similarity index 98% rename from core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/EntityPackets.java rename to core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/EntityPackets1_13_1.java index e99a5edc..984c7478 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/EntityPackets.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/EntityPackets1_13_1.java @@ -18,7 +18,7 @@ import us.myles.ViaVersion.api.type.types.version.Types1_13; import us.myles.ViaVersion.packets.State; import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; -public class EntityPackets extends EntityRewriter { +public class EntityPackets1_13_1 extends EntityRewriter { @Override protected void registerPackets(Protocol1_13To1_13_1 protocol) { @@ -322,7 +322,7 @@ public class EntityPackets extends EntityRewriter { Metadata meta = e.getData(); if (meta.getMetaType() == MetaType1_13.Slot) { - InventoryPackets.toClient((Item) meta.getValue()); + InventoryPackets1_13_1.toClient((Item) meta.getValue()); } else if (meta.getMetaType() == MetaType1_13.BlockID) { // Convert to new block id int data = (int) meta.getValue(); diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/InventoryPackets.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/InventoryPackets1_13_1.java similarity index 99% rename from core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/InventoryPackets.java rename to core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/InventoryPackets1_13_1.java index 32c5c3fb..058037e7 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/InventoryPackets.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/InventoryPackets1_13_1.java @@ -8,7 +8,7 @@ import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.api.type.Type; import us.myles.ViaVersion.packets.State; -public class InventoryPackets { +public class InventoryPackets1_13_1 { public static void register(Protocol protocol) { diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/WorldPackets.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/WorldPackets1_13_1.java similarity index 97% rename from core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/WorldPackets.java rename to core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/WorldPackets1_13_1.java index a36ed077..2d3dc3fa 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/WorldPackets.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/WorldPackets1_13_1.java @@ -13,7 +13,7 @@ import us.myles.ViaVersion.packets.State; import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.types.Chunk1_13Type; import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; -public class WorldPackets { +public class WorldPackets1_13_1 { public static void register(Protocol protocol) { //Chunk @@ -109,7 +109,7 @@ public class WorldPackets { int id = wrapper.get(Type.INT, 0); int data = wrapper.get(Type.INT, 1); if (id == 1010) { // Play record - wrapper.set(Type.INT, 1, data = InventoryPackets.getNewItemId(data)); + wrapper.set(Type.INT, 1, data = InventoryPackets1_13_1.getNewItemId(data)); } else if (id == 2001) { // Block break + block break sound wrapper.set(Type.INT, 1, data = Protocol1_13To1_13_1.getNewBlockStateId(data)); } @@ -140,7 +140,7 @@ public class WorldPackets { int data = wrapper.passthrough(Type.VAR_INT); wrapper.set(Type.VAR_INT, 0, Protocol1_13To1_13_1.getNewBlockStateId(data)); } else if (id == 27) { - InventoryPackets.toClient(wrapper.passthrough(Type.FLAT_ITEM)); + InventoryPackets1_13_1.toClient(wrapper.passthrough(Type.FLAT_ITEM)); } } }); From 9b7a4b79f7614db779ed86b9c84e7529e9ab1f38 Mon Sep 17 00:00:00 2001 From: Matsv Date: Sun, 27 Jan 2019 14:25:27 +0100 Subject: [PATCH 063/171] :paperclip: Rename 1.13.2 classes --- .../Protocol1_13_1To1_13_2.java | 12 ++++++------ .../{EntityPackets.java => EntityPackets1_13_2.java} | 2 +- ...ntoryPackets.java => InventoryPackets1_13_2.java} | 2 +- .../{WorldPackets.java => WorldPackets1_13_2.java} | 3 ++- 4 files changed, 10 insertions(+), 9 deletions(-) rename core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/{EntityPackets.java => EntityPackets1_13_2.java} (99%) rename core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/{InventoryPackets.java => InventoryPackets1_13_2.java} (99%) rename core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/{WorldPackets.java => WorldPackets1_13_2.java} (97%) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/Protocol1_13_1To1_13_2.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/Protocol1_13_1To1_13_2.java index d724dce7..33f7af9e 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/Protocol1_13_1To1_13_2.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/Protocol1_13_1To1_13_2.java @@ -1,6 +1,9 @@ package nl.matsv.viabackwards.protocol.protocol1_13_1to1_13_2; import nl.matsv.viabackwards.api.BackwardsProtocol; +import nl.matsv.viabackwards.protocol.protocol1_13_1to1_13_2.packets.EntityPackets1_13_2; +import nl.matsv.viabackwards.protocol.protocol1_13_1to1_13_2.packets.InventoryPackets1_13_2; +import nl.matsv.viabackwards.protocol.protocol1_13_1to1_13_2.packets.WorldPackets1_13_2; import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.data.UserConnection; import us.myles.ViaVersion.api.minecraft.item.Item; @@ -8,17 +11,14 @@ import us.myles.ViaVersion.api.remapper.PacketHandler; import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.api.type.Type; import us.myles.ViaVersion.packets.State; -import nl.matsv.viabackwards.protocol.protocol1_13_1to1_13_2.packets.EntityPackets; -import nl.matsv.viabackwards.protocol.protocol1_13_1to1_13_2.packets.InventoryPackets; -import nl.matsv.viabackwards.protocol.protocol1_13_1to1_13_2.packets.WorldPackets; public class Protocol1_13_1To1_13_2 extends BackwardsProtocol { @Override protected void registerPackets() { - InventoryPackets.register(this); - WorldPackets.register(this); - EntityPackets.register(this); + InventoryPackets1_13_2.register(this); + WorldPackets1_13_2.register(this); + EntityPackets1_13_2.register(this); //Edit Book registerIncoming(State.PLAY, 0x0B, 0x0B, new PacketRemapper() { diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/EntityPackets.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/EntityPackets1_13_2.java similarity index 99% rename from core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/EntityPackets.java rename to core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/EntityPackets1_13_2.java index ad4ecd2d..000800c1 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/EntityPackets.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/EntityPackets1_13_2.java @@ -12,7 +12,7 @@ import us.myles.ViaVersion.api.type.types.version.Types1_13; import us.myles.ViaVersion.api.type.types.version.Types1_13_2; import us.myles.ViaVersion.packets.State; -public class EntityPackets { +public class EntityPackets1_13_2 { public static void register(Protocol protocol) { diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/InventoryPackets.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/InventoryPackets1_13_2.java similarity index 99% rename from core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/InventoryPackets.java rename to core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/InventoryPackets1_13_2.java index ecd88eec..44a44b48 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/InventoryPackets.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/InventoryPackets1_13_2.java @@ -7,7 +7,7 @@ import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.api.type.Type; import us.myles.ViaVersion.packets.State; -public class InventoryPackets { +public class InventoryPackets1_13_2 { public static void register(Protocol protocol) { diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/WorldPackets.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/WorldPackets1_13_2.java similarity index 97% rename from core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/WorldPackets.java rename to core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/WorldPackets1_13_2.java index 9fc17e0a..92d31a2e 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/WorldPackets.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/WorldPackets1_13_2.java @@ -7,7 +7,7 @@ import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.api.type.Type; import us.myles.ViaVersion.packets.State; -public class WorldPackets { +public class WorldPackets1_13_2 { public static void register(Protocol protocol) { //spawn particle @@ -24,6 +24,7 @@ public class WorldPackets { map(Type.FLOAT); // 7 - Offset Z map(Type.FLOAT); // 8 - Particle Data map(Type.INT); // 9 - Particle Count + handler(new PacketHandler() { @Override public void handle(PacketWrapper wrapper) throws Exception { From ff68a5182aa931499576ffdc563627dc1237486d Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Mon, 28 Jan 2019 14:45:52 +0100 Subject: [PATCH 064/171] fix ConcurrentModificationException --- .../protocol1_12_2to1_13/packets/BlockItemPackets1_13.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 2e211f3c..e95b096f 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 @@ -634,7 +634,7 @@ public class BlockItemPackets1_13 extends BlockItemRewriter lore = new ArrayList<>(); - for (Tag enchantmentEntry : enchantments) { + for (Tag enchantmentEntry : enchantments.clone()) { if (enchantmentEntry instanceof CompoundTag) { CompoundTag enchEntry = new CompoundTag(""); String newId = (String) ((CompoundTag) enchantmentEntry).get("id").getValue(); From 9e12a199cf86d0ca3c5fc91e90d4ef3d2c515ddd Mon Sep 17 00:00:00 2001 From: creeper123123321 Date: Sat, 2 Feb 2019 17:19:30 -0200 Subject: [PATCH 065/171] Login plugin request and response --- .../packets/PlayerPacket1_13.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java index a096b02e..7a49b6fa 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java @@ -9,6 +9,7 @@ import us.myles.ViaVersion.api.minecraft.Position; import us.myles.ViaVersion.api.minecraft.item.Item; import us.myles.ViaVersion.api.remapper.PacketHandler; import us.myles.ViaVersion.api.remapper.PacketRemapper; +import us.myles.ViaVersion.api.remapper.ValueCreator; import us.myles.ViaVersion.api.type.Type; import us.myles.ViaVersion.packets.State; import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.ChatRewriter; @@ -17,6 +18,25 @@ import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.packets.InventoryPacke public class PlayerPacket1_13 extends Rewriter { @Override protected void registerPackets(Protocol1_12_2To1_13 protocol) { + // Login Plugin Request + protocol.out(State.LOGIN, 0x04, -1, new PacketRemapper() { + @Override + public void registerMap() { + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper packetWrapper) throws Exception { + packetWrapper.cancel(); + packetWrapper.create(0x02, new ValueCreator() { // Plugin response + @Override + public void write(PacketWrapper newWrapper) throws Exception { + newWrapper.write(Type.VAR_INT, packetWrapper.read(Type.VAR_INT)); // Packet id + newWrapper.write(Type.BOOLEAN, false); // Success + } + }).sendToServer(Protocol1_12_2To1_13.class); + } + }); + } + }); //Plugin Message protocol.out(State.PLAY, 0x19, 0x18, new PacketRemapper() { From 6e5f9e0741f466fcb1b5c7c8dcc0da93233be736 Mon Sep 17 00:00:00 2001 From: creeper123123321 Date: Fri, 15 Feb 2019 18:03:06 -0200 Subject: [PATCH 066/171] Better tab-complete --- .../Protocol1_12_2To1_13.java | 5 +- .../packets/PlayerPacket1_13.java | 105 +++++++++++++++--- .../storage/TabCompleteStorage.java | 19 ++++ 3 files changed, 114 insertions(+), 15 deletions(-) create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/storage/TabCompleteStorage.java diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java index 0c89efe7..bb43efe0 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java @@ -22,6 +22,7 @@ import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.packets.PlayerPacket1 import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.packets.SoundPackets1_13; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.providers.BackwardsBlockEntityProvider; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.storage.BackwardsBlockStorage; +import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.storage.TabCompleteStorage; import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.data.UserConnection; import us.myles.ViaVersion.api.platform.providers.ViaProviders; @@ -76,7 +77,6 @@ public class Protocol1_12_2To1_13 extends BackwardsProtocol { out(State.PLAY, 0x2D, 0x2B, cancel()); // Craft Recipe Response TODO MODIFIED out(State.PLAY, 0x2E, 0x2C); // Player Abilities (clientbound) out(State.PLAY, 0x2F, 0x2D); // Combat Event - out(State.PLAY, 0x30, 0x2E); // Player List Item out(State.PLAY, 0x31, -1, cancel()); // Face Player TODO NEW out(State.PLAY, 0x32, 0x2F); // Player Position And Look (clientbound) out(State.PLAY, 0x33, 0x30); // Use Bed @@ -153,6 +153,9 @@ public class Protocol1_12_2To1_13 extends BackwardsProtocol { // Register Block Storage if (!user.has(BackwardsBlockStorage.class)) user.put(new BackwardsBlockStorage(user)); + // Register Block Storage + if (!user.has(TabCompleteStorage.class)) + user.put(new TabCompleteStorage(user)); } @Override diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java index 7a49b6fa..a6544a40 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java @@ -3,6 +3,7 @@ package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.packets; import nl.matsv.viabackwards.ViaBackwards; import nl.matsv.viabackwards.api.rewriters.Rewriter; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.Protocol1_12_2To1_13; +import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.storage.TabCompleteStorage; import nl.matsv.viabackwards.utils.ChatUtil; import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.minecraft.Position; @@ -15,6 +16,11 @@ import us.myles.ViaVersion.packets.State; import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.ChatRewriter; import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.packets.InventoryPackets; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; +import java.util.concurrent.ThreadLocalRandom; + public class PlayerPacket1_13 extends Rewriter { @Override protected void registerPackets(Protocol1_12_2To1_13 protocol) { @@ -84,6 +90,47 @@ public class PlayerPacket1_13 extends Rewriter { } }); + // Player List Item + protocol.out(State.PLAY, 0x30, 0x2E, new PacketRemapper() { + @Override + public void registerMap() { + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper packetWrapper) throws Exception { + TabCompleteStorage storage = packetWrapper.user().get(TabCompleteStorage.class); + int action = packetWrapper.passthrough(Type.VAR_INT); + int nPlayers = packetWrapper.passthrough(Type.VAR_INT); + for (int i = 0; i < nPlayers; i++) { + UUID uuid = packetWrapper.passthrough(Type.UUID); + if (action == 0) { // Add + String name = packetWrapper.passthrough(Type.STRING); + storage.usernames.put(uuid, name); + int nProperties = packetWrapper.passthrough(Type.VAR_INT); + for (int j = 0; j < nProperties; j++) { + packetWrapper.passthrough(Type.STRING); + packetWrapper.passthrough(Type.STRING); + if (packetWrapper.passthrough(Type.BOOLEAN)) { + packetWrapper.passthrough(Type.STRING); + } + packetWrapper.passthrough(Type.VAR_INT); + packetWrapper.passthrough(Type.VAR_INT); + packetWrapper.passthrough(Type.OPTIONAL_CHAT); + } + } else if (action == 1) { // Update Game Mode + packetWrapper.passthrough(Type.VAR_INT); + } else if (action == 2) { // Update Ping + packetWrapper.passthrough(Type.VAR_INT); + } else if (action == 3) { // Update Display Name + packetWrapper.passthrough(Type.OPTIONAL_CHAT); + } else if (action == 4) { // Remove Player + storage.usernames.remove(uuid); + } + } + } + }); + } + }); + //Scoreboard Objective protocol.out(State.PLAY, 0x45, 0x42, new PacketRemapper() { @Override @@ -169,16 +216,30 @@ public class PlayerPacket1_13 extends Rewriter { handler(new PacketHandler() { @Override public void handle(PacketWrapper wrapper) throws Exception { - int key = wrapper.read(Type.VAR_INT); + TabCompleteStorage storage = wrapper.user().get(TabCompleteStorage.class); + if (storage.lastRequest == null) { + wrapper.cancel(); + return; + } + if (storage.lastId != wrapper.read(Type.VAR_INT)) wrapper.cancel(); int start = wrapper.read(Type.VAR_INT); int length = wrapper.read(Type.VAR_INT); + int lastRequestPartIndex = storage.lastRequest.lastIndexOf(' ') + 1; + if (lastRequestPartIndex != start) wrapper.cancel(); // Client only replaces after space + + if (length != storage.lastRequest.length() - lastRequestPartIndex) { + wrapper.cancel(); // We can't set the length in previous versions + } + int count = wrapper.passthrough(Type.VAR_INT); for (int i = 0; i < count; i++) { String match = wrapper.read(Type.STRING); - wrapper.write(Type.STRING, (start == 0 ? "/" : "") + match); + wrapper.write(Type.STRING, (start == 0 && !storage.lastAssumeCommand ? "/" : "") + match); // Ignore tooltip - if (wrapper.read(Type.BOOLEAN)) wrapper.read(Type.STRING); + if (wrapper.read(Type.BOOLEAN)) { + wrapper.read(Type.STRING); + } } } }); @@ -189,25 +250,41 @@ public class PlayerPacket1_13 extends Rewriter { protocol.in(State.PLAY, 0x05, 0x01, new PacketRemapper() { @Override public void registerMap() { - handler(new PacketHandler() { @Override public void handle(PacketWrapper wrapper) throws Exception { - // Send a fake key - wrapper.write(Type.VAR_INT, 13337); + TabCompleteStorage storage = wrapper.user().get(TabCompleteStorage.class); + int id = ThreadLocalRandom.current().nextInt(); + wrapper.write(Type.VAR_INT, id); String command = wrapper.read(Type.STRING); + boolean assumeCommand = wrapper.read(Type.BOOLEAN); + wrapper.read(Type.OPTIONAL_POSITION); - if (command.startsWith("/")) - command = command.substring(1); + if (!assumeCommand) { + if (command.startsWith("/")) { + command = command.substring(1); + } else { + wrapper.cancel(); + PacketWrapper response = wrapper.create(0xE); + List usernames = new ArrayList<>(); + for (String value : storage.usernames.values()) { + if (value.toLowerCase().startsWith(command.substring(command.lastIndexOf(' ') + 1).toLowerCase())) { + usernames.add(value); + } + } + response.write(Type.VAR_INT, usernames.size()); + for (String value : usernames) { + response.write(Type.STRING, value); + } + response.send(protocol.getClass()); + } + } wrapper.write(Type.STRING, command); - - // Ignore fields - wrapper.read(Type.BOOLEAN); - if (wrapper.read(Type.BOOLEAN)) { - wrapper.read(Type.POSITION); - } + storage.lastId = id; + storage.lastAssumeCommand = assumeCommand; + storage.lastRequest = command; } }); } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/storage/TabCompleteStorage.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/storage/TabCompleteStorage.java new file mode 100644 index 00000000..adbb1561 --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/storage/TabCompleteStorage.java @@ -0,0 +1,19 @@ +package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.storage; + +import us.myles.ViaVersion.api.data.StoredObject; +import us.myles.ViaVersion.api.data.UserConnection; + +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +public class TabCompleteStorage extends StoredObject { + public int lastId; + public String lastRequest; + public boolean lastAssumeCommand; + public Map usernames = new HashMap<>(); + + public TabCompleteStorage(UserConnection user) { + super(user); + } +} From 829857be7cc01e867bf7aaf1d87c2f13b7049c00 Mon Sep 17 00:00:00 2001 From: creeper123123321 Date: Fri, 15 Feb 2019 18:24:42 -0200 Subject: [PATCH 067/171] Use boolean + string --- .../protocol1_12_2to1_13/packets/PlayerPacket1_13.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java index a6544a40..2df41895 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java @@ -114,14 +114,18 @@ public class PlayerPacket1_13 extends Rewriter { } packetWrapper.passthrough(Type.VAR_INT); packetWrapper.passthrough(Type.VAR_INT); - packetWrapper.passthrough(Type.OPTIONAL_CHAT); + if (packetWrapper.passthrough(Type.BOOLEAN)) { + packetWrapper.passthrough(Type.STRING); + } } } else if (action == 1) { // Update Game Mode packetWrapper.passthrough(Type.VAR_INT); } else if (action == 2) { // Update Ping packetWrapper.passthrough(Type.VAR_INT); } else if (action == 3) { // Update Display Name - packetWrapper.passthrough(Type.OPTIONAL_CHAT); + if (packetWrapper.passthrough(Type.BOOLEAN)) { + packetWrapper.passthrough(Type.STRING); + } } else if (action == 4) { // Remove Player storage.usernames.remove(uuid); } From 66336bca0f6d9f56a4d1dd88358484fa22a883aa Mon Sep 17 00:00:00 2001 From: creeper123123321 Date: Fri, 15 Feb 2019 18:30:48 -0200 Subject: [PATCH 068/171] ooops --- .../protocol1_12_2to1_13/packets/PlayerPacket1_13.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java index 2df41895..a35688b5 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java @@ -112,11 +112,11 @@ public class PlayerPacket1_13 extends Rewriter { if (packetWrapper.passthrough(Type.BOOLEAN)) { packetWrapper.passthrough(Type.STRING); } - packetWrapper.passthrough(Type.VAR_INT); - packetWrapper.passthrough(Type.VAR_INT); - if (packetWrapper.passthrough(Type.BOOLEAN)) { - packetWrapper.passthrough(Type.STRING); - } + } + packetWrapper.passthrough(Type.VAR_INT); + packetWrapper.passthrough(Type.VAR_INT); + if (packetWrapper.passthrough(Type.BOOLEAN)) { + packetWrapper.passthrough(Type.STRING); } } else if (action == 1) { // Update Game Mode packetWrapper.passthrough(Type.VAR_INT); From 934bd4d1dba72777f0223fe1cf21989955257dd8 Mon Sep 17 00:00:00 2001 From: Marco Neuhaus Date: Fri, 15 Feb 2019 23:12:11 +0100 Subject: [PATCH 069/171] fix enchantments --- .../protocol1_12_2to1_13/packets/BlockItemPackets1_13.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 27c70239..b845433c 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 @@ -653,7 +653,7 @@ public class BlockItemPackets1_13 extends BlockItemRewriter Date: Sat, 16 Feb 2019 00:00:05 +0100 Subject: [PATCH 070/171] add dummy enchantments for 1.13 enchatments --- .../packets/BlockItemPackets1_13.java | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) 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 b845433c..7fa67106 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 @@ -634,6 +634,7 @@ public class BlockItemPackets1_13 extends BlockItemRewriter lore = new ArrayList<>(); + boolean dummyEnchatment = true; for (Tag enchantmentEntry : enchantments) { if (enchantmentEntry instanceof CompoundTag) { CompoundTag enchEntry = new CompoundTag(""); @@ -642,6 +643,7 @@ public class BlockItemPackets1_13 extends BlockItemRewriter 0) { + ByteTag hideFlags = tag.get("HideFlags"); + if(hideFlags == null){ + hideFlags = new ByteTag("HideFlags"); + tag.put(new ByteTag(NBT_TAG_NAME + "|noHideFlags")); + } + tag.put(new ByteTag(NBT_TAG_NAME + "|dummyEnchatment", hideFlags.getValue())); + + CompoundTag enchEntry = new CompoundTag(""); + enchEntry.put(new ShortTag("id", (short) 0)); + enchEntry.put(new ShortTag("lvl", (short) 1)); + + byte value = hideFlags.getValue(); + hideFlags.setValue(value |= 1); + tag.put(hideFlags); + + ench.add(enchEntry); + } tag.remove("Enchantment"); tag.put(noMapped); tag.put(ench); @@ -864,10 +884,28 @@ public class BlockItemPackets1_13 extends BlockItemRewriter Date: Sat, 16 Feb 2019 11:21:15 -0200 Subject: [PATCH 071/171] Do not register new incoming packets --- .../protocol1_11_1to1_12/packets/ChangedPacketIds1_12.java | 6 +++--- .../protocol/protocol1_12to1_12_1/Protocol1_12To1_12_1.java | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/ChangedPacketIds1_12.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/ChangedPacketIds1_12.java index 8b5bded4..17e48b30 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/ChangedPacketIds1_12.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/ChangedPacketIds1_12.java @@ -87,7 +87,7 @@ public class ChangedPacketIds1_12 extends Rewriter { p.registerOutgoing(State.PLAY, 0x4D, 0x4A); // Entity Properties p.registerOutgoing(State.PLAY, 0x4E, 0x4B); // Entity Effect - p.registerIncoming(State.PLAY, 0x01, -1); // Prepare Crafting Grid + // New incoming packet 0x01 - Prepare Crafting Grid p.registerIncoming(State.PLAY, 0x02, 0x01); // Tab-Complete (Serverbound) p.registerIncoming(State.PLAY, 0x03, 0x02); // Chat Message (Serverbound) // 0x04->0x03 Client Status handled in BlockItemPackets1_12.java @@ -109,9 +109,9 @@ public class ChangedPacketIds1_12 extends Rewriter { p.registerIncoming(State.PLAY, 0x14, 0x13); // Player Digging p.registerIncoming(State.PLAY, 0x15, 0x14); // Entity Action p.registerIncoming(State.PLAY, 0x16, 0x15); // Steer Vehicle - p.registerIncoming(State.PLAY, 0x17, -1); // Crafting Book Data + // New incoming packet 0x17 - Crafting Book Data p.registerIncoming(State.PLAY, 0x18, 0x16); // Resource Pack Status - p.registerIncoming(State.PLAY, 0x19, -1); // Advancement Tab + // New incoming packet 0x19 - Advancement Tab p.registerIncoming(State.PLAY, 0x1A, 0x17); // Held Item Change (Serverbound) // 0x1B -> 0x18 Creative Inventory Action handled in BlockItemPackets.java p.registerIncoming(State.PLAY, 0x1C, 0x19); // Update Sign diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_12_1/Protocol1_12To1_12_1.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_12_1/Protocol1_12To1_12_1.java index 7409d685..98fcbf8f 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_12_1/Protocol1_12To1_12_1.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12to1_12_1/Protocol1_12To1_12_1.java @@ -96,7 +96,7 @@ public class Protocol1_12To1_12_1 extends BackwardsProtocol { registerIncoming(State.PLAY, 0xf, 0x10); registerIncoming(State.PLAY, 0x10, 0x11); registerIncoming(State.PLAY, 0x11, 0x12); - registerIncoming(State.PLAY, 0x12, -1); // No sent by client, sad :( + // New incoming 0x12 - No sent by client, sad :( } @Override From d6c37db4eb84ffa9dd68bc5e9679d77f0ef1bc6e Mon Sep 17 00:00:00 2001 From: Marco Neuhaus Date: Mon, 18 Feb 2019 21:56:38 +0100 Subject: [PATCH 072/171] add missing wood rewrites --- .../protocol1_12_2to1_13/packets/BlockItemPackets1_13.java | 7 +++++++ 1 file changed, 7 insertions(+) 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 611705f7..600ad538 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 @@ -457,6 +457,13 @@ public class BlockItemPackets1_13 extends BlockItemRewriter Date: Thu, 7 Mar 2019 14:38:02 -0300 Subject: [PATCH 073/171] Workaround for #48 --- .../Protocol1_11_1To1_12.java | 2 + .../packets/BlockItemPackets1_12.java | 194 ++++++++++++++---- .../packets/ChangedPacketIds1_12.java | 1 - .../storage/InventoryTracker.java | 32 +++ 4 files changed, 192 insertions(+), 37 deletions(-) create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/storage/InventoryTracker.java diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/Protocol1_11_1To1_12.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/Protocol1_11_1To1_12.java index 94542771..0a3652c7 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/Protocol1_11_1To1_12.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/Protocol1_11_1To1_12.java @@ -15,6 +15,7 @@ import nl.matsv.viabackwards.api.BackwardsProtocol; import nl.matsv.viabackwards.api.entities.storage.EntityTracker; import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.data.ShoulderTracker; import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.packets.*; +import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.storage.InventoryTracker; import us.myles.ViaVersion.api.data.UserConnection; import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; @@ -44,6 +45,7 @@ public class Protocol1_11_1To1_12 extends BackwardsProtocol { user.put(new EntityTracker(user)); user.put(new ShoulderTracker(user)); + user.put(new InventoryTracker(user)); // Init protocol in EntityTracker user.get(EntityTracker.class).initProtocol(this); diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/BlockItemPackets1_12.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/BlockItemPackets1_12.java index 7c01bbe7..8ed1bcf8 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/BlockItemPackets1_12.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/BlockItemPackets1_12.java @@ -10,10 +10,12 @@ package nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.packets; +import com.google.common.collect.Lists; import nl.matsv.viabackwards.api.rewriters.BlockItemRewriter; import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.Protocol1_11_1To1_12; import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.data.BlockColors; import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.data.MapColorMapping; +import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.storage.InventoryTracker; import nl.matsv.viabackwards.utils.Block; import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.minecraft.BlockChangeRecord; @@ -27,14 +29,68 @@ import us.myles.ViaVersion.packets.State; import us.myles.ViaVersion.protocols.protocol1_9_1_2to1_9_3_4.types.Chunk1_9_3_4Type; import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; import us.myles.viaversion.libs.opennbt.tag.builtin.CompoundTag; +import us.myles.viaversion.libs.opennbt.tag.builtin.DoubleTag; import us.myles.viaversion.libs.opennbt.tag.builtin.ListTag; import java.util.Collections; +import java.util.Iterator; public class BlockItemPackets1_12 extends BlockItemRewriter { @Override protected void registerPackets(Protocol1_11_1To1_12 protocol) { - /* Item packets */ + /* Item packets */ + + // Confirm Transaction + protocol.registerOutgoing(State.PLAY, 0x11, 0x11, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE); // Window id + map(Type.SHORT); // Action number + map(Type.BOOLEAN); // Accepted + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper packetWrapper) throws Exception { + byte window = packetWrapper.get(Type.BYTE, 0); + boolean accepted = packetWrapper.get(Type.BOOLEAN, 0); + short actionNumber = packetWrapper.get(Type.SHORT, 0); + InventoryTracker tracker = packetWrapper.user().get(InventoryTracker.class); + + boolean clear = false; + Iterator it = Lists.reverse(tracker.getClicks()).iterator(); + while (it.hasNext()) { + InventoryTracker.ClickWindow entry = it.next(); + if (entry.actionNumber == actionNumber || clear) { + it.remove(); + clear = true; + } + } + if (!accepted) { + if (tracker.getLastTransactionWindow() == window && + tracker.getLastShiftTransaction() != -1) { + PacketWrapper confirm = packetWrapper.create(0x6); + confirm.write(Type.BYTE, window); + confirm.write(Type.SHORT, actionNumber); + confirm.write(Type.BOOLEAN, false); + confirm.sendToServer(Protocol1_11_1To1_12.class, true, true); + } + if (tracker.getClicks().size() != 0) { + InventoryTracker.ClickWindow entry = tracker.getClicks().get(0); + PacketWrapper click = packetWrapper.create(0x8); + click.write(Type.UNSIGNED_BYTE, entry.windowId); + click.write(Type.SHORT, entry.slot); + click.write(Type.BYTE, entry.button); + click.write(Type.SHORT, entry.actionNumber); + click.write(Type.VAR_INT, entry.mode); + CompoundTag tag = new CompoundTag(""); + tag.put(new DoubleTag("force reject", Double.NaN)); + click.write(Type.ITEM, new Item((short) 1, (byte) 1, (short) 1, tag)); + click.sendToServer(Protocol1_11_1To1_12.class, true, true); + } + } + } + }); + } + }); protocol.registerOutgoing(State.PLAY, 0x24, 0x24, new PacketRemapper() { @Override @@ -158,8 +214,35 @@ public class BlockItemPackets1_12 extends BlockItemRewriter { - Metadata data = e.getData(); + protocol.getEntityPackets(). - if (data.getMetaType().getType().equals(Type.ITEM)) // Is Item - data.setValue(handleItemToClient((Item) data.getValue())); + registerMetaHandler(). - return data; - }); + handle(e -> + + { + Metadata data = e.getData(); + + if (data.getMetaType().getType().equals(Type.ITEM)) // Is Item + data.setValue(handleItemToClient((Item) data.getValue())); + + return data; + }); // Client Status - protocol.registerIncoming(State.PLAY, 0x04, 0x03, new PacketRemapper() { - @Override - public void registerMap() { - map(Type.VAR_INT); // Action ID + protocol.registerIncoming(State.PLAY, 0x04, 0x03, new - handler(new PacketHandler() { + PacketRemapper() { @Override - public void handle(PacketWrapper wrapper) throws Exception { - // Open Inventory - if (wrapper.get(Type.VAR_INT, 0) == 2) - wrapper.cancel(); // TODO is this replaced by something else? + public void registerMap() { + map(Type.VAR_INT); // Action ID + + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + // Open Inventory + if (wrapper.get(Type.VAR_INT, 0) == 2) + wrapper.cancel(); // TODO is this replaced by something else? + } + }); } }); - } - }); } @Override diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/ChangedPacketIds1_12.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/ChangedPacketIds1_12.java index 17e48b30..88ab112b 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/ChangedPacketIds1_12.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/ChangedPacketIds1_12.java @@ -92,7 +92,6 @@ public class ChangedPacketIds1_12 extends Rewriter { p.registerIncoming(State.PLAY, 0x03, 0x02); // Chat Message (Serverbound) // 0x04->0x03 Client Status handled in BlockItemPackets1_12.java p.registerIncoming(State.PLAY, 0x05, 0x04); // Client Settings - p.registerIncoming(State.PLAY, 0x06, 0x05); // Confirm Transaction (Serverbound) p.registerIncoming(State.PLAY, 0x07, 0x06); // Enchant Item // 0x08 -> 0x07 Click Window handled in BlockItemPackets1_12.java p.registerIncoming(State.PLAY, 0x09, 0x08); // Close Window (Serverbound) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/storage/InventoryTracker.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/storage/InventoryTracker.java new file mode 100644 index 00000000..956b307a --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/storage/InventoryTracker.java @@ -0,0 +1,32 @@ +package nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.storage; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.Setter; +import us.myles.ViaVersion.api.data.StoredObject; +import us.myles.ViaVersion.api.data.UserConnection; + +import java.util.ArrayList; + +@Getter +@Setter +public class InventoryTracker extends StoredObject { + private int lastTransactionWindow = -1; + private int lastShiftTransaction = -1; + // Workaround for https://github.com/Matsv/ViaBackwards/issues/48 + // Resent when it is rejected + private ArrayList clicks = new ArrayList<>(); + + public InventoryTracker(UserConnection user) { + super(user); + } + + @AllArgsConstructor + public static class ClickWindow { + public short windowId; + public short slot; + public byte button; + public short actionNumber; + public int mode; + } +} From ce63e5ee627f0914baabdfab9122b4b97fa8a379 Mon Sep 17 00:00:00 2001 From: creeper123123321 Date: Thu, 7 Mar 2019 14:49:54 -0300 Subject: [PATCH 074/171] Revert "Workaround for #48" This reverts commit df53ce3e1c0c2ecef5ab10435ef175c1189b7a12. --- .../Protocol1_11_1To1_12.java | 2 - .../packets/BlockItemPackets1_12.java | 194 ++++-------------- .../packets/ChangedPacketIds1_12.java | 1 + .../storage/InventoryTracker.java | 32 --- 4 files changed, 37 insertions(+), 192 deletions(-) delete mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/storage/InventoryTracker.java diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/Protocol1_11_1To1_12.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/Protocol1_11_1To1_12.java index 0a3652c7..94542771 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/Protocol1_11_1To1_12.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/Protocol1_11_1To1_12.java @@ -15,7 +15,6 @@ import nl.matsv.viabackwards.api.BackwardsProtocol; import nl.matsv.viabackwards.api.entities.storage.EntityTracker; import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.data.ShoulderTracker; import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.packets.*; -import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.storage.InventoryTracker; import us.myles.ViaVersion.api.data.UserConnection; import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; @@ -45,7 +44,6 @@ public class Protocol1_11_1To1_12 extends BackwardsProtocol { user.put(new EntityTracker(user)); user.put(new ShoulderTracker(user)); - user.put(new InventoryTracker(user)); // Init protocol in EntityTracker user.get(EntityTracker.class).initProtocol(this); diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/BlockItemPackets1_12.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/BlockItemPackets1_12.java index 8ed1bcf8..7c01bbe7 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/BlockItemPackets1_12.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/BlockItemPackets1_12.java @@ -10,12 +10,10 @@ package nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.packets; -import com.google.common.collect.Lists; import nl.matsv.viabackwards.api.rewriters.BlockItemRewriter; import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.Protocol1_11_1To1_12; import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.data.BlockColors; import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.data.MapColorMapping; -import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.storage.InventoryTracker; import nl.matsv.viabackwards.utils.Block; import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.minecraft.BlockChangeRecord; @@ -29,68 +27,14 @@ import us.myles.ViaVersion.packets.State; import us.myles.ViaVersion.protocols.protocol1_9_1_2to1_9_3_4.types.Chunk1_9_3_4Type; import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; import us.myles.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import us.myles.viaversion.libs.opennbt.tag.builtin.DoubleTag; import us.myles.viaversion.libs.opennbt.tag.builtin.ListTag; import java.util.Collections; -import java.util.Iterator; public class BlockItemPackets1_12 extends BlockItemRewriter { @Override protected void registerPackets(Protocol1_11_1To1_12 protocol) { - /* Item packets */ - - // Confirm Transaction - protocol.registerOutgoing(State.PLAY, 0x11, 0x11, new PacketRemapper() { - @Override - public void registerMap() { - map(Type.BYTE); // Window id - map(Type.SHORT); // Action number - map(Type.BOOLEAN); // Accepted - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper packetWrapper) throws Exception { - byte window = packetWrapper.get(Type.BYTE, 0); - boolean accepted = packetWrapper.get(Type.BOOLEAN, 0); - short actionNumber = packetWrapper.get(Type.SHORT, 0); - InventoryTracker tracker = packetWrapper.user().get(InventoryTracker.class); - - boolean clear = false; - Iterator it = Lists.reverse(tracker.getClicks()).iterator(); - while (it.hasNext()) { - InventoryTracker.ClickWindow entry = it.next(); - if (entry.actionNumber == actionNumber || clear) { - it.remove(); - clear = true; - } - } - if (!accepted) { - if (tracker.getLastTransactionWindow() == window && - tracker.getLastShiftTransaction() != -1) { - PacketWrapper confirm = packetWrapper.create(0x6); - confirm.write(Type.BYTE, window); - confirm.write(Type.SHORT, actionNumber); - confirm.write(Type.BOOLEAN, false); - confirm.sendToServer(Protocol1_11_1To1_12.class, true, true); - } - if (tracker.getClicks().size() != 0) { - InventoryTracker.ClickWindow entry = tracker.getClicks().get(0); - PacketWrapper click = packetWrapper.create(0x8); - click.write(Type.UNSIGNED_BYTE, entry.windowId); - click.write(Type.SHORT, entry.slot); - click.write(Type.BYTE, entry.button); - click.write(Type.SHORT, entry.actionNumber); - click.write(Type.VAR_INT, entry.mode); - CompoundTag tag = new CompoundTag(""); - tag.put(new DoubleTag("force reject", Double.NaN)); - click.write(Type.ITEM, new Item((short) 1, (byte) 1, (short) 1, tag)); - click.sendToServer(Protocol1_11_1To1_12.class, true, true); - } - } - } - }); - } - }); + /* Item packets */ protocol.registerOutgoing(State.PLAY, 0x24, 0x24, new PacketRemapper() { @Override @@ -214,35 +158,8 @@ public class BlockItemPackets1_12 extends BlockItemRewriter { + Metadata data = e.getData(); - registerMetaHandler(). + if (data.getMetaType().getType().equals(Type.ITEM)) // Is Item + data.setValue(handleItemToClient((Item) data.getValue())); - handle(e -> - - { - Metadata data = e.getData(); - - if (data.getMetaType().getType().equals(Type.ITEM)) // Is Item - data.setValue(handleItemToClient((Item) data.getValue())); - - return data; - }); + return data; + }); // Client Status - protocol.registerIncoming(State.PLAY, 0x04, 0x03, new + protocol.registerIncoming(State.PLAY, 0x04, 0x03, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); // Action ID - PacketRemapper() { + handler(new PacketHandler() { @Override - public void registerMap() { - map(Type.VAR_INT); // Action ID - - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - // Open Inventory - if (wrapper.get(Type.VAR_INT, 0) == 2) - wrapper.cancel(); // TODO is this replaced by something else? - } - }); + public void handle(PacketWrapper wrapper) throws Exception { + // Open Inventory + if (wrapper.get(Type.VAR_INT, 0) == 2) + wrapper.cancel(); // TODO is this replaced by something else? } }); + } + }); } @Override diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/ChangedPacketIds1_12.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/ChangedPacketIds1_12.java index 88ab112b..17e48b30 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/ChangedPacketIds1_12.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/ChangedPacketIds1_12.java @@ -92,6 +92,7 @@ public class ChangedPacketIds1_12 extends Rewriter { p.registerIncoming(State.PLAY, 0x03, 0x02); // Chat Message (Serverbound) // 0x04->0x03 Client Status handled in BlockItemPackets1_12.java p.registerIncoming(State.PLAY, 0x05, 0x04); // Client Settings + p.registerIncoming(State.PLAY, 0x06, 0x05); // Confirm Transaction (Serverbound) p.registerIncoming(State.PLAY, 0x07, 0x06); // Enchant Item // 0x08 -> 0x07 Click Window handled in BlockItemPackets1_12.java p.registerIncoming(State.PLAY, 0x09, 0x08); // Close Window (Serverbound) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/storage/InventoryTracker.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/storage/InventoryTracker.java deleted file mode 100644 index 956b307a..00000000 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/storage/InventoryTracker.java +++ /dev/null @@ -1,32 +0,0 @@ -package nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.storage; - -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.Setter; -import us.myles.ViaVersion.api.data.StoredObject; -import us.myles.ViaVersion.api.data.UserConnection; - -import java.util.ArrayList; - -@Getter -@Setter -public class InventoryTracker extends StoredObject { - private int lastTransactionWindow = -1; - private int lastShiftTransaction = -1; - // Workaround for https://github.com/Matsv/ViaBackwards/issues/48 - // Resent when it is rejected - private ArrayList clicks = new ArrayList<>(); - - public InventoryTracker(UserConnection user) { - super(user); - } - - @AllArgsConstructor - public static class ClickWindow { - public short windowId; - public short slot; - public byte button; - public short actionNumber; - public int mode; - } -} From a352822afaf9f3df05d2a2019260fea0e2cb73f0 Mon Sep 17 00:00:00 2001 From: creeper123123321 Date: Thu, 7 Mar 2019 14:56:00 -0300 Subject: [PATCH 075/171] shorter workaround --- .../packets/BlockItemPackets1_12.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/BlockItemPackets1_12.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/BlockItemPackets1_12.java index 7c01bbe7..f07105f5 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/BlockItemPackets1_12.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/BlockItemPackets1_12.java @@ -27,6 +27,7 @@ import us.myles.ViaVersion.packets.State; import us.myles.ViaVersion.protocols.protocol1_9_1_2to1_9_3_4.types.Chunk1_9_3_4Type; import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; import us.myles.viaversion.libs.opennbt.tag.builtin.CompoundTag; +import us.myles.viaversion.libs.opennbt.tag.builtin.DoubleTag; import us.myles.viaversion.libs.opennbt.tag.builtin.ListTag; import java.util.Collections; @@ -172,6 +173,21 @@ public class BlockItemPackets1_12 extends BlockItemRewriter Date: Sat, 16 Mar 2019 13:00:19 +0100 Subject: [PATCH 076/171] :rocket: Bump version for the development branch --- all/pom.xml | 2 +- bukkit/pom.xml | 2 +- bungee/pom.xml | 2 +- core/pom.xml | 2 +- .../protocol1_13_1to1_13_2/packets/EntityPackets1_13_2.java | 1 - pom.xml | 2 +- sponge/pom.xml | 2 +- velocity/pom.xml | 2 +- 8 files changed, 7 insertions(+), 8 deletions(-) diff --git a/all/pom.xml b/all/pom.xml index 0cee5e97..20fc5e8f 100644 --- a/all/pom.xml +++ b/all/pom.xml @@ -15,7 +15,7 @@ viabackwards-parent nl.matsv - 2.4.0-SNAPSHOT + 3.0.0-SNAPSHOT 4.0.0 diff --git a/bukkit/pom.xml b/bukkit/pom.xml index 91da18e2..8f98e030 100644 --- a/bukkit/pom.xml +++ b/bukkit/pom.xml @@ -15,7 +15,7 @@ viabackwards-parent nl.matsv - 2.4.0-SNAPSHOT + 3.0.0-SNAPSHOT 4.0.0 diff --git a/bungee/pom.xml b/bungee/pom.xml index 510c7df9..d8f73ff1 100644 --- a/bungee/pom.xml +++ b/bungee/pom.xml @@ -15,7 +15,7 @@ viabackwards-parent nl.matsv - 2.4.0-SNAPSHOT + 3.0.0-SNAPSHOT 4.0.0 diff --git a/core/pom.xml b/core/pom.xml index 265ab1a0..f6a7e408 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -15,7 +15,7 @@ viabackwards-parent nl.matsv - 2.4.0-SNAPSHOT + 3.0.0-SNAPSHOT 4.0.0 diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/EntityPackets1_13_2.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/EntityPackets1_13_2.java index 000800c1..945d9a61 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/EntityPackets1_13_2.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_1to1_13_2/packets/EntityPackets1_13_2.java @@ -73,7 +73,6 @@ public class EntityPackets1_13_2 { } }); - // Metadata packet protocol.registerOutgoing(State.PLAY, 0x3F, 0x3F, new PacketRemapper() { @Override diff --git a/pom.xml b/pom.xml index e1d7713f..6fd7c8b8 100644 --- a/pom.xml +++ b/pom.xml @@ -16,7 +16,7 @@ nl.matsv viabackwards-parent - 2.4.0-SNAPSHOT + 3.0.0-SNAPSHOT pom Allow newer clients to join older server versions. diff --git a/sponge/pom.xml b/sponge/pom.xml index f2c67031..0ab7811a 100644 --- a/sponge/pom.xml +++ b/sponge/pom.xml @@ -15,7 +15,7 @@ viabackwards-parent nl.matsv - 2.4.0-SNAPSHOT + 3.0.0-SNAPSHOT 4.0.0 diff --git a/velocity/pom.xml b/velocity/pom.xml index ff974ef4..162c5196 100644 --- a/velocity/pom.xml +++ b/velocity/pom.xml @@ -15,7 +15,7 @@ viabackwards-parent nl.matsv - 2.4.0-SNAPSHOT + 3.0.0-SNAPSHOT 4.0.0 From b2b5ed2ae893109995b4e878182f41a31ab89214 Mon Sep 17 00:00:00 2001 From: creeper123123321 Date: Sun, 3 Mar 2019 16:07:55 -0300 Subject: [PATCH 077/171] probably bugged 1.14 -> 1.13.2 protocol --- .../api/ViaBackwardsPlatform.java | 2 + .../api/entities/types/EntityType1_14.java | 257 ++++++++ .../Protocol1_13_2To1_14.java | 183 ++++++ .../data/BackwardsMappings.java | 99 +++ .../data/EntityTypeMapping.java | 28 + .../data/SoundMapping.java | 44 ++ .../packets/BlockItemPackets1_14.java | 592 ++++++++++++++++++ .../packets/EntityPackets1_14.java | 208 ++++++ .../packets/PlayerPackets1_14.java | 139 ++++ .../packets/SoundPackets1_14.java | 34 + .../data/mapping-1.13.2to1.14.json | 4 + pom.xml | 2 +- 12 files changed, 1591 insertions(+), 1 deletion(-) create mode 100644 core/src/main/java/nl/matsv/viabackwards/api/entities/types/EntityType1_14.java create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/BackwardsMappings.java create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/EntityTypeMapping.java create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/SoundMapping.java create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/PlayerPackets1_14.java create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/SoundPackets1_14.java create mode 100644 core/src/main/resources/assets/viabackwards/data/mapping-1.13.2to1.14.json diff --git a/core/src/main/java/nl/matsv/viabackwards/api/ViaBackwardsPlatform.java b/core/src/main/java/nl/matsv/viabackwards/api/ViaBackwardsPlatform.java index 4ce67b3e..4228b5a1 100644 --- a/core/src/main/java/nl/matsv/viabackwards/api/ViaBackwardsPlatform.java +++ b/core/src/main/java/nl/matsv/viabackwards/api/ViaBackwardsPlatform.java @@ -18,6 +18,7 @@ import nl.matsv.viabackwards.protocol.protocol1_12_1to1_12_2.Protocol1_12_1To1_1 import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.Protocol1_12_2To1_13; import nl.matsv.viabackwards.protocol.protocol1_12to1_12_1.Protocol1_12To1_12_1; import nl.matsv.viabackwards.protocol.protocol1_13_1to1_13_2.Protocol1_13_1To1_13_2; +import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.Protocol1_13_2To1_14; import nl.matsv.viabackwards.protocol.protocol1_13to1_13_1.Protocol1_13To1_13_1; import nl.matsv.viabackwards.protocol.protocol1_9_4to1_10.Protocol1_9_4To1_10; import us.myles.ViaVersion.api.protocol.ProtocolRegistry; @@ -44,6 +45,7 @@ public interface ViaBackwardsPlatform { ProtocolRegistry.registerProtocol(new Protocol1_12_2To1_13(), Collections.singletonList(ProtocolVersion.v1_12_2.getId()), ProtocolVersion.v1_13.getId()); ProtocolRegistry.registerProtocol(new Protocol1_13To1_13_1(), Collections.singletonList(ProtocolVersion.v1_13.getId()), ProtocolVersion.v1_13_1.getId()); ProtocolRegistry.registerProtocol(new Protocol1_13_1To1_13_2(), Collections.singletonList(ProtocolVersion.v1_13_1.getId()), ProtocolVersion.v1_13_2.getId()); + ProtocolRegistry.registerProtocol(new Protocol1_13_2To1_14(), Collections.singletonList(ProtocolVersion.v1_13_2.getId()), ProtocolVersion.v1_14.getId()); } } diff --git a/core/src/main/java/nl/matsv/viabackwards/api/entities/types/EntityType1_14.java b/core/src/main/java/nl/matsv/viabackwards/api/entities/types/EntityType1_14.java new file mode 100644 index 00000000..df97e3a1 --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/api/entities/types/EntityType1_14.java @@ -0,0 +1,257 @@ +package nl.matsv.viabackwards.api.entities.types; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import us.myles.ViaVersion.api.Via; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +public class EntityType1_14 { + public static EntityType1_14.EntityType getTypeFromId(int typeID) { + Optional type = EntityType.findById(typeID); + + if (!type.isPresent()) { + Via.getPlatform().getLogger().severe("Could not find type id " + typeID); + return EntityType.ENTITY; // Fall back to the basic ENTITY + } + + return type.get(); + } + + @AllArgsConstructor + @Getter + public enum EntityType implements AbstractEntityType { + // Auto generated + + ENTITY(-1), + + AREA_EFFECT_CLOUD(0, ENTITY), + ENDER_CRYSTAL(17, ENTITY), + EVOCATION_FANGS(21, ENTITY), + XP_ORB(23, ENTITY), + EYE_OF_ENDER_SIGNAL(24, ENTITY), + FALLING_BLOCK(25, ENTITY), + FIREWORKS_ROCKET(26, ENTITY), + ITEM(34, ENTITY), + LLAMA_SPIT(39, ENTITY), + TNT(58, ENTITY), + SHULKER_BULLET(63, ENTITY), + FISHING_BOBBER(101, ENTITY), + + LIVINGENTITY(-1, ENTITY), + ARMOR_STAND(1, LIVINGENTITY), + PLAYER(100, LIVINGENTITY), + + ABSTRACT_INSENTIENT(-1, LIVINGENTITY), + ENDER_DRAGON(18, ABSTRACT_INSENTIENT), + + ABSTRACT_CREATURE(-1, ABSTRACT_INSENTIENT), + + ABSTRACT_AGEABLE(-1, ABSTRACT_CREATURE), + VILLAGER(84, ABSTRACT_AGEABLE), + WANDERING_TRADER(88, ABSTRACT_AGEABLE), + + // Animals + ABSTRACT_ANIMAL(-1, ABSTRACT_AGEABLE), + DOLPHIN(13, ABSTRACT_INSENTIENT), + CHICKEN(8, ABSTRACT_ANIMAL), + COW(10, ABSTRACT_ANIMAL), + MOOSHROOM(49, COW), + PIG(54, ABSTRACT_ANIMAL), + POLAR_BEAR(57, ABSTRACT_ANIMAL), + RABBIT(59, ABSTRACT_ANIMAL), + SHEEP(61, ABSTRACT_ANIMAL), + TURTLE(77, ABSTRACT_ANIMAL), + FOX(27, ABSTRACT_ANIMAL), + + ABSTRACT_TAMEABLE_ANIMAL(-1, ABSTRACT_ANIMAL), + CAT(6, ABSTRACT_TAMEABLE_ANIMAL), + OCELOT(50, ABSTRACT_TAMEABLE_ANIMAL), + WOLF(93, ABSTRACT_TAMEABLE_ANIMAL), + + ABSTRACT_PARROT(-1, ABSTRACT_TAMEABLE_ANIMAL), + PARROT(53, ABSTRACT_PARROT), + + // Horses + ABSTRACT_HORSE(-1, ABSTRACT_ANIMAL), + CHESTED_HORSE(-1, ABSTRACT_HORSE), + DONKEY(12, CHESTED_HORSE), + MULE(48, CHESTED_HORSE), + LLAMA(38, CHESTED_HORSE), + TRADER_LLAMA(75, CHESTED_HORSE), + HORSE(31, ABSTRACT_HORSE), + SKELETON_HORSE(66, ABSTRACT_HORSE), + ZOMBIE_HORSE(95, ABSTRACT_HORSE), + + // Golem + ABSTRACT_GOLEM(-1, ABSTRACT_CREATURE), + SNOWMAN(69, ABSTRACT_GOLEM), + VILLAGER_GOLEM(85, ABSTRACT_GOLEM), + SHULKER(62, ABSTRACT_GOLEM), + + // Fish + ABSTRACT_FISHES(-1, ABSTRACT_CREATURE), + COD(9, ABSTRACT_FISHES), + PUFFER_FISH(55, ABSTRACT_FISHES), + SALMON_MOB(60, ABSTRACT_FISHES), + TROPICAL_FISH(76, ABSTRACT_FISHES), + + // Monsters + ABSTRACT_MONSTER(-1, ABSTRACT_CREATURE), + BLAZE(4, ABSTRACT_MONSTER), + CREEPER(11, ABSTRACT_MONSTER), + ENDERMITE(20, ABSTRACT_MONSTER), + ENDERMAN(19, ABSTRACT_MONSTER), + GIANT(29, ABSTRACT_MONSTER), + SILVERFISH(64, ABSTRACT_MONSTER), + VEX(83, ABSTRACT_MONSTER), + WITCH(89, ABSTRACT_MONSTER), + WITHER(90, ABSTRACT_MONSTER), + RAVAGER(98, ABSTRACT_MONSTER), + + // Illagers + ABSTRACT_ILLAGER_BASE(-1, ABSTRACT_MONSTER), + ABSTRACT_EVO_ILLU_ILLAGER(-1, ABSTRACT_ILLAGER_BASE), + EVOCATION_ILLAGER(22, ABSTRACT_EVO_ILLU_ILLAGER), + ILLUSION_ILLAGER(33, ABSTRACT_EVO_ILLU_ILLAGER), + VINDICATION_ILLAGER(86, ABSTRACT_ILLAGER_BASE), + PILLAGER(87, ABSTRACT_ILLAGER_BASE), + + // Skeletons + ABSTRACT_SKELETON(-1, ABSTRACT_MONSTER), + SKELETON(65, ABSTRACT_SKELETON), + STRAY(74, ABSTRACT_SKELETON), + WITHER_SKELETON(91, ABSTRACT_SKELETON), + + // Guardians + GUARDIAN(30, ABSTRACT_MONSTER), + ELDER_GUARDIAN(16, GUARDIAN), + + // Spiders + SPIDER(72, ABSTRACT_MONSTER), + CAVE_SPIDER(7, SPIDER), + + // Zombies - META CHECKED + ZOMBIE(94, ABSTRACT_MONSTER), + DROWNED(15, ZOMBIE), + HUSK(32, ZOMBIE), + ZOMBIE_PIGMAN(56, ZOMBIE), + ZOMBIE_VILLAGER(96, ZOMBIE), + + // Flying entities + ABSTRACT_FLYING(-1, ABSTRACT_INSENTIENT), + GHAST(28, ABSTRACT_FLYING), + PHANTOM(97, ABSTRACT_FLYING), + + ABSTRACT_AMBIENT(-1, ABSTRACT_INSENTIENT), + BAT(3, ABSTRACT_AMBIENT), + + ABSTRACT_WATERMOB(-1, ABSTRACT_INSENTIENT), + SQUID(73, ABSTRACT_WATERMOB), + + // Slimes + SLIME(67, ABSTRACT_INSENTIENT), + MAGMA_CUBE(40, SLIME), + + // Hangable objects + ABSTRACT_HANGING(-1, ENTITY), + LEASH_KNOT(37, ABSTRACT_HANGING), + ITEM_FRAME(35, ABSTRACT_HANGING), + PAINTING(51, ABSTRACT_HANGING), + + ABSTRACT_LIGHTNING(-1, ENTITY), + LIGHTNING_BOLT(99, ABSTRACT_LIGHTNING), + + // Arrows + ABSTRACT_ARROW(-1, ENTITY), + ARROW(2, ABSTRACT_ARROW), + SPECTRAL_ARROW(71, ABSTRACT_ARROW), + TRIDENT(82, ABSTRACT_ARROW), + + // Fireballs + ABSTRACT_FIREBALL(-1, ENTITY), + DRAGON_FIREBALL(14, ABSTRACT_FIREBALL), + FIREBALL(36, ABSTRACT_FIREBALL), + SMALL_FIREBALL(68, ABSTRACT_FIREBALL), + WITHER_SKULL(92, ABSTRACT_FIREBALL), + + // Projectiles + PROJECTILE_ABSTRACT(-1, ENTITY), + SNOWBALL(70, PROJECTILE_ABSTRACT), + ENDER_PEARL(79, PROJECTILE_ABSTRACT), + EGG(78, PROJECTILE_ABSTRACT), + POTION(81, PROJECTILE_ABSTRACT), + XP_BOTTLE(80, PROJECTILE_ABSTRACT), + + // Vehicles + MINECART_ABSTRACT(-1, ENTITY), + CHESTED_MINECART_ABSTRACT(-1, MINECART_ABSTRACT), + CHEST_MINECART(42, CHESTED_MINECART_ABSTRACT), + HOPPER_MINECART(45, CHESTED_MINECART_ABSTRACT), + MINECART(41, MINECART_ABSTRACT), + FURNACE_MINECART(44, MINECART_ABSTRACT), + COMMANDBLOCK_MINECART(43, MINECART_ABSTRACT), + TNT_MINECART(47, MINECART_ABSTRACT), + SPAWNER_MINECART(46, MINECART_ABSTRACT), + BOAT(5, ENTITY), + ; + + private final int id; + private final EntityType parent; + + EntityType(int id) { + this.id = id; + this.parent = null; + } + + public static java.util.Optional findById(int id) { + if (id == -1) // Check if this is called + return java.util.Optional.empty(); + + for (EntityType ent : EntityType.values()) + if (ent.getId() == id) + return java.util.Optional.of(ent); + + return java.util.Optional.empty(); + } + + public boolean is(AbstractEntityType... types) { + for (AbstractEntityType type : types) + if (is(type)) + return true; + return false; + } + + public boolean is(AbstractEntityType type) { + return this == type; + } + + public boolean isOrHasParent(AbstractEntityType type) { + EntityType parent = this; + + do { + if (parent == type) + return true; + + parent = parent.getParent(); + } while (parent != null); + + return false; + } + + @Override + public List getParents() { + List types = new ArrayList<>(); + EntityType parent = this; + + do { + types.add(parent); + parent = parent.getParent(); + } while (parent != null); + + return types; + } + } +} \ No newline at end of file diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java new file mode 100644 index 00000000..b2ad930d --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java @@ -0,0 +1,183 @@ +package nl.matsv.viabackwards.protocol.protocol1_13_2to1_14; + +import nl.matsv.viabackwards.ViaBackwards; +import nl.matsv.viabackwards.api.BackwardsProtocol; +import nl.matsv.viabackwards.api.entities.storage.EntityTracker; +import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.data.BackwardsMappings; +import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.data.SoundMapping; +import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.packets.BlockItemPackets1_14; +import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.packets.EntityPackets1_14; +import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.packets.PlayerPackets1_14; +import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.packets.SoundPackets1_14; +import us.myles.ViaVersion.api.PacketWrapper; +import us.myles.ViaVersion.api.data.UserConnection; +import us.myles.ViaVersion.api.remapper.PacketHandler; +import us.myles.ViaVersion.api.remapper.PacketRemapper; +import us.myles.ViaVersion.api.type.Type; +import us.myles.ViaVersion.packets.State; +import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; + +public class Protocol1_13_2To1_14 extends BackwardsProtocol { + public static BlockItemPackets1_14 blockItem; + public static EntityPackets1_14 entity; + + static { + BackwardsMappings.init(); + SoundMapping.init(); + } + + @Override + protected void registerPackets() { + blockItem = new BlockItemPackets1_14(); + blockItem.register(this); + entity = new EntityPackets1_14(); + entity.register(this); + new PlayerPackets1_14().register(this); + new SoundPackets1_14().register(this); + + out(State.PLAY, 0x2E, 0x2D); // c + out(State.PLAY, 0x2F, 0x2E); // c + out(State.PLAY, 0x30, 0x2F); // c + out(State.PLAY, 0x31, 0x30); // c + out(State.PLAY, 0x32, 0x31); // c + out(State.PLAY, 0x33, 0x32); // c + // Entity sound + out(State.PLAY, 0x4E, -1, new PacketRemapper() { + @Override + public void registerMap() { // c + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper packetWrapper) throws Exception { + packetWrapper.cancel(); // todo + } + }); + } + }); + + registerOutgoing(State.PLAY, 0x4F, 0x4E); // c + registerOutgoing(State.PLAY, 0x50, 0x4F); // c + registerOutgoing(State.PLAY, 0x51, 0x50); // c + + registerOutgoing(State.PLAY, 0x52, 0x51, new PacketRemapper() { // c + @Override + public void registerMap() { + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + wrapper.passthrough(Type.BOOLEAN); // Reset/clear + int size = wrapper.passthrough(Type.VAR_INT); // Mapping size + + for (int i = 0; i < size; i++) { + wrapper.passthrough(Type.STRING); // Identifier + + // Parent + if (wrapper.passthrough(Type.BOOLEAN)) + wrapper.passthrough(Type.STRING); + + // Display data + if (wrapper.passthrough(Type.BOOLEAN)) { + wrapper.passthrough(Type.STRING); // Title + wrapper.passthrough(Type.STRING); // Description + blockItem.handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Icon + wrapper.passthrough(Type.VAR_INT); // Frame type + int flags = wrapper.passthrough(Type.INT); // Flags + if ((flags & 1) != 0) + wrapper.passthrough(Type.STRING); // Background texture + wrapper.passthrough(Type.FLOAT); // X + wrapper.passthrough(Type.FLOAT); // Y + } + + wrapper.passthrough(Type.STRING_ARRAY); // Criteria + + int arrayLength = wrapper.passthrough(Type.VAR_INT); + for (int array = 0; array < arrayLength; array++) { + wrapper.passthrough(Type.STRING_ARRAY); // String array + } + } + } + }); + } + }); + + registerOutgoing(State.PLAY, 0x53, 0x52); // c + registerOutgoing(State.PLAY, 0x54, 0x53); // c + + // tags + registerOutgoing(State.PLAY, 0x56, 0x55, new PacketRemapper() { + @Override + public void registerMap() { // c + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + int blockTagsSize = wrapper.read(Type.VAR_INT); + wrapper.write(Type.VAR_INT, blockTagsSize); // block tags + for (int i = 0; i < blockTagsSize; i++) { + wrapper.passthrough(Type.STRING); + Integer[] blockIds = wrapper.passthrough(Type.VAR_INT_ARRAY); + for (int j = 0; j < blockIds.length; j++) { + blockIds[j] = getNewBlockStateId(blockIds[j]); + } + } + int itemTagsSize = wrapper.read(Type.VAR_INT); + wrapper.write(Type.VAR_INT, itemTagsSize); // item tags + for (int i = 0; i < itemTagsSize; i++) { + wrapper.passthrough(Type.STRING); + Integer[] itemIds = wrapper.passthrough(Type.VAR_INT_ARRAY); + for (int j = 0; j < itemIds.length; j++) { + itemIds[j] = /*BlockItemPackets1_14.getNewItemId TODO BLOCK IDS*/(itemIds[j]); + } + } + int fluidTagsSize = wrapper.passthrough(Type.VAR_INT); // fluid tags + for (int i = 0; i < fluidTagsSize; i++) { + wrapper.passthrough(Type.STRING); + wrapper.passthrough(Type.VAR_INT_ARRAY); + } + // Eat entity tags + int entityTagsSize = wrapper.read(Type.VAR_INT); + for (int i = 0; i < entityTagsSize; i++) { + wrapper.read(Type.STRING); + wrapper.read(Type.VAR_INT_ARRAY); + } + } + }); + } + }); + + + // Light update + out(State.PLAY, 0x57, -1, new PacketRemapper() { + @Override + public void registerMap() { + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper packetWrapper) throws Exception { + packetWrapper.cancel(); // todo + } + }); + } + }); + } + + public static int getNewBlockStateId(int id) { + int newId = BackwardsMappings.blockMappings.getNewBlock(id); + if (newId == -1) { + ViaBackwards.getPlatform().getLogger().warning("Missing 1.14 block for 1.13.2 block " + id); + return 0; + } + return newId; + } + + @Override + public void init(UserConnection user) { + // Register ClientWorld + if (!user.has(ClientWorld.class)) + user.put(new ClientWorld(user)); + + // Register EntityTracker if it doesn't exist yet. + if (!user.has(EntityTracker.class)) + user.put(new EntityTracker(user)); + + // Init protocol in EntityTracker + user.get(EntityTracker.class).initProtocol(this); + } +} diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/BackwardsMappings.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/BackwardsMappings.java new file mode 100644 index 00000000..aba75614 --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/BackwardsMappings.java @@ -0,0 +1,99 @@ +package nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.data; + +import nl.matsv.viabackwards.ViaBackwards; +import us.myles.ViaVersion.api.Via; +import us.myles.ViaVersion.protocols.protocol1_14to1_13_2.data.MappingData; +import us.myles.ViaVersion.util.GsonUtil; +import us.myles.viaversion.libs.gson.JsonElement; +import us.myles.viaversion.libs.gson.JsonObject; +import us.myles.viaversion.libs.gson.JsonPrimitive; + +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.Arrays; +import java.util.Map; + +public class BackwardsMappings { + public static BlockMappings blockMappings; + + public static void init() { + JsonObject mapping1_13_2 = MappingData.loadData("mapping-1.13.2.json"); + JsonObject mapping1_14 = MappingData.loadData("mapping-1.14.json"); + JsonObject mapping1_13_2to1_14 = loadData("mapping-1.13.2to1.14.json"); + + ViaBackwards.getPlatform().getLogger().info("Loading block mapping..."); + blockMappings = new BlockMappingsShortArray(mapping1_14.getAsJsonObject("blockstates"), mapping1_13_2.getAsJsonObject("blockstates"), mapping1_13_2to1_14.getAsJsonObject("blockstates")); + } + + + private static void mapIdentifiers(short[] output, JsonObject newIdentifiers, JsonObject oldIdentifiers, JsonObject mapping) { + for (Map.Entry entry : newIdentifiers.entrySet()) { + String key = entry.getValue().getAsString(); + Map.Entry value = findValue(oldIdentifiers, key); + if (value == null) { + JsonPrimitive replacement = mapping.getAsJsonPrimitive(key); + if (replacement == null && key.contains("[")) { + replacement = mapping.getAsJsonPrimitive(key.substring(0, key.indexOf('['))); + } + if (replacement != null) { + if (replacement.getAsString().startsWith("id:")) { + String id = replacement.getAsString().replace("id:", ""); + value = findValue(oldIdentifiers, oldIdentifiers.getAsJsonPrimitive(id).getAsString()); + } else { + value = findValue(oldIdentifiers, replacement.getAsString()); + } + } + if (value == null) { + if (!Via.getConfig().isSuppress1_13ConversionErrors() || Via.getManager().isDebug()) { + if (replacement != null) { + ViaBackwards.getPlatform().getLogger().warning("No key for " + entry.getValue() + "/" + replacement.getAsString() + " :( "); + } else { + ViaBackwards.getPlatform().getLogger().warning("No key for " + entry.getValue() + " :( "); + } + } + continue; + } + } + output[Integer.parseInt(entry.getKey())] = Short.parseShort(value.getKey()); + } + } + + + private static Map.Entry findValue(JsonObject object, String needle) { + for (Map.Entry entry : object.entrySet()) { + String value = entry.getValue().getAsString(); + if (value.equals(needle)) { + return entry; + } + } + return null; + } + + public static JsonObject loadData(String name) { + try (InputStreamReader reader = new InputStreamReader(BackwardsMappings.class.getClassLoader().getResourceAsStream("assets/viabackwards/data/" + name))) { + return GsonUtil.getGson().fromJson(reader, JsonObject.class); + } catch (IOException ex) { + ex.printStackTrace(); + } + + return null; + } + + public interface BlockMappings { + int getNewBlock(int old); + } + + private static class BlockMappingsShortArray implements BlockMappings { + private short[] oldToNew = new short[11258 + 1]; + + private BlockMappingsShortArray(JsonObject newIdentifiers, JsonObject oldIdentifiers, JsonObject mapping) { + Arrays.fill(oldToNew, (short) -1); + mapIdentifiers(oldToNew, newIdentifiers, oldIdentifiers, mapping); + } + + @Override + public int getNewBlock(int old) { + return old >= 0 && old < oldToNew.length ? oldToNew[old] : -1; + } + } +} diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/EntityTypeMapping.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/EntityTypeMapping.java new file mode 100644 index 00000000..fed85d0d --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/EntityTypeMapping.java @@ -0,0 +1,28 @@ +package nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.data; + + +import us.myles.ViaVersion.protocols.protocol1_14to1_13_2.data.EntityTypeRewriter; + +import java.lang.reflect.Field; +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; + +public class EntityTypeMapping { + private static Map entityTypes = new HashMap<>(); + + static { + try { + Field field = EntityTypeRewriter.class.getDeclaredField("entityTypes"); + field.setAccessible(true); + Map entityTypes = (Map) field.get(null); + entityTypes.forEach((type1_12, type1_13) -> EntityTypeMapping.entityTypes.put(type1_13, type1_12)); + } catch (NoSuchFieldException | IllegalAccessException ex) { + ex.printStackTrace(); + } + } + + public static Optional getOldId(int type1_13) { + return Optional.ofNullable(entityTypes.get(type1_13)); + } +} diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/SoundMapping.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/SoundMapping.java new file mode 100644 index 00000000..fd92084a --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/SoundMapping.java @@ -0,0 +1,44 @@ +package nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.data; + +import us.myles.viaversion.libs.gson.JsonArray; +import us.myles.viaversion.libs.gson.JsonElement; +import us.myles.viaversion.libs.gson.JsonObject; + +import java.util.Arrays; + +import static us.myles.ViaVersion.protocols.protocol1_13to1_12_2.data.MappingData.loadData; + +public class SoundMapping { + private static short[] sounds = new short[772]; + + public static void init() { + JsonObject mapping1_13_2 = loadData("mapping-1.13.2.json"); + JsonObject mapping1_14 = loadData("mapping-1.14.json"); + + Arrays.fill(sounds, (short) -1); + mapIdentifiers(sounds, mapping1_14.getAsJsonArray("sounds"), mapping1_13_2.getAsJsonArray("sounds")); + } + + private static void mapIdentifiers(short[] output, JsonArray oldIdentifiers, JsonArray newIdentifiers) { + for (int i = 0; i < oldIdentifiers.size(); i++) { + JsonElement v = oldIdentifiers.get(i); + Integer index = findIndex(newIdentifiers, v.getAsString()); + if (index == null) continue; //There will be missing sounds, since we are goind backwards + output[i] = index.shortValue(); + } + } + + private static Integer findIndex(JsonArray array, String value) { + for (int i = 0; i < array.size(); i++) { + JsonElement v = array.get(i); + if (v.getAsString().equals(value)) { + return i; + } + } + return null; + } + + public static int getOldSound(int newSound) { + return newSound >= sounds.length ? -1 : sounds[newSound]; + } +} diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java new file mode 100644 index 00000000..7afa91c7 --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java @@ -0,0 +1,592 @@ +package nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.packets; + +import com.google.common.collect.ImmutableSet; +import nl.matsv.viabackwards.ViaBackwards; +import nl.matsv.viabackwards.api.rewriters.BlockItemRewriter; +import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.Protocol1_13_2To1_14; +import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.data.BackwardsMappings; +import nl.matsv.viabackwards.protocol.protocol1_13to1_13_1.packets.InventoryPackets1_13_1; +import us.myles.ViaVersion.api.PacketWrapper; +import us.myles.ViaVersion.api.minecraft.BlockChangeRecord; +import us.myles.ViaVersion.api.minecraft.Environment; +import us.myles.ViaVersion.api.minecraft.chunks.Chunk; +import us.myles.ViaVersion.api.minecraft.chunks.ChunkSection; +import us.myles.ViaVersion.api.minecraft.item.Item; +import us.myles.ViaVersion.api.remapper.PacketHandler; +import us.myles.ViaVersion.api.remapper.PacketRemapper; +import us.myles.ViaVersion.api.remapper.ValueCreator; +import us.myles.ViaVersion.api.type.Type; +import us.myles.ViaVersion.packets.State; +import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.ChatRewriter; +import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.types.Chunk1_13Type; +import us.myles.ViaVersion.protocols.protocol1_14to1_13_2.Protocol1_14To1_13_2; +import us.myles.ViaVersion.protocols.protocol1_14to1_13_2.data.MappingData; +import us.myles.ViaVersion.protocols.protocol1_14to1_13_2.types.Chunk1_14Type; +import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; +import us.myles.viaversion.libs.opennbt.conversion.ConverterRegistry; +import us.myles.viaversion.libs.opennbt.tag.builtin.CompoundTag; +import us.myles.viaversion.libs.opennbt.tag.builtin.ListTag; +import us.myles.viaversion.libs.opennbt.tag.builtin.StringTag; +import us.myles.viaversion.libs.opennbt.tag.builtin.Tag; + +import java.util.Set; + +public class BlockItemPackets1_14 extends BlockItemRewriter { + private static String NBT_TAG_NAME = "ViaBackwards|" + Protocol1_13_2To1_14.class.getSimpleName(); + + @Override + protected void registerPackets(Protocol1_13_2To1_14 protocol) { + // Open window + protocol.registerOutgoing(State.PLAY, 0x58, 0x14, new PacketRemapper() { + @Override + public void registerMap() { // c + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + int id = wrapper.read(Type.VAR_INT); + wrapper.write(Type.UNSIGNED_BYTE, (short) id); + int type = wrapper.read(Type.VAR_INT); + String stringType = null; + int slotSize = 0; + switch (type) { + case 0: + stringType = "minecraft:container"; + slotSize = 27; + break; + case 1: + stringType = "minecraft:container"; + slotSize = 54; + break; + case 7: + stringType = "minecraft:crafting_table"; + break; + case 9: + stringType = "minecraft:furnace"; + break; + case 2: + stringType = "minecraft:dropper"; + break; + case 8: + stringType = "minecraft:enchanting_table"; + break; + case 6: + stringType = "minecraft:brewing_stand"; + break; + case 14: + stringType = "minecraft:villager"; + break; + case 4: + stringType = "minecraft:beacon"; + break; + case 3: + stringType = "minecraft:anvil"; + break; + case 11: + stringType = "minecraft:hopper"; + break; + case 15: + stringType = "minecraft:shulker_box"; + break; + } + + if (stringType == null) { + ViaBackwards.getPlatform().getLogger().warning("Can't open inventory for 1.13 player! Type: " + type); + wrapper.cancel(); + return; + } + + wrapper.write(Type.STRING, stringType); + wrapper.passthrough(Type.STRING); + wrapper.write(Type.UNSIGNED_BYTE, (short) slotSize); + } + }); + } + }); + + // Horse window + protocol.registerOutgoing(State.PLAY, 0x14, 0x14, new PacketRemapper() { + @Override + public void registerMap() { // c + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + wrapper.passthrough(Type.UNSIGNED_BYTE); // Window id + wrapper.write(Type.STRING, "EntityHorse"); // Type + wrapper.write(Type.STRING, "{\"translate\":\"minecraft.horse\"}"); // Title + wrapper.write(Type.UNSIGNED_BYTE, wrapper.read(Type.VAR_INT).shortValue()); // Number of slots + wrapper.passthrough(Type.INT); // Entity id + } + }); + } + }); + + // Window items packet + protocol.registerOutgoing(State.PLAY, 0x15, 0x15, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.UNSIGNED_BYTE); // 0 - Window ID + map(Type.FLAT_VAR_INT_ITEM_ARRAY); // 1 - Window Values + + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + Item[] stacks = wrapper.get(Type.FLAT_VAR_INT_ITEM_ARRAY, 0); + for (Item stack : stacks) handleItemToClient(stack); + } + }); + } + }); + + // Set slot packet + protocol.registerOutgoing(State.PLAY, 0x17, 0x17, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE); // 0 - Window ID + map(Type.SHORT); // 1 - Slot ID + map(Type.FLAT_VAR_INT_ITEM); // 2 - Slot Value + + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + handleItemToClient(wrapper.get(Type.FLAT_VAR_INT_ITEM, 0)); + } + }); + } + }); + + // Trade list + protocol.out(State.PLAY, 0x59, 0x19, new PacketRemapper() { + @Override + public void registerMap() { + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + wrapper.write(Type.STRING, "minecraft:trader_list"); + wrapper.read(Type.STRING); // Remove channel + + int windowId = wrapper.read(Type.INT); + wrapper.write(Type.VAR_INT, windowId); + + int size = wrapper.passthrough(Type.UNSIGNED_BYTE); + for (int i = 0; i < size; i++) { + // Input Item + handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); + // Output Item + handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); + + boolean secondItem = wrapper.passthrough(Type.BOOLEAN); // Has second item + if (secondItem) { + // Second Item + handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); + } + + wrapper.passthrough(Type.BOOLEAN); // Trade disabled + wrapper.passthrough(Type.INT); // Number of tools uses + wrapper.passthrough(Type.INT); // Maximum number of trade uses + } + } + }); + } + }); + + // Book open + protocol.registerOutgoing(State.PLAY, 0x2C, 0x19, new PacketRemapper() { + @Override + public void registerMap() { + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + wrapper.write(Type.STRING, "minecraft:book_open"); + wrapper.passthrough(Type.VAR_INT); + } + }); + } + }); + + // Entity Equipment Packet + protocol.registerOutgoing(State.PLAY, 0x42, 0x42, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); // 0 - Entity ID + map(Type.VAR_INT); // 1 - Slot ID + map(Type.FLAT_VAR_INT_ITEM); // 2 - Item + + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + handleItemToClient(wrapper.get(Type.FLAT_VAR_INT_ITEM, 0)); + } + }); + } + }); + + Set removedTypes = ImmutableSet.of("crafting_special_suspiciousstew", "blasting", "smoking", "campfire_cooking"); + + // Declare Recipes + protocol.registerOutgoing(State.PLAY, 0x55, 0x54, new PacketRemapper() { // c + @Override + public void registerMap() { + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + int size = wrapper.passthrough(Type.VAR_INT); + int deleted = 0; + for (int i = 0; i < size; i++) { + String type = wrapper.read(Type.STRING); + String id = wrapper.read(Type.STRING); // Recipe Identifier + type = type.replace("minecraft:", ""); + if (removedTypes.contains(type)) { + if (!type.equals("crafting_special_suspiciousstew")) { + wrapper.read(Type.STRING); // Group + Item[] items = wrapper.read(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT); // Ingredients + wrapper.read(Type.FLAT_VAR_INT_ITEM); + wrapper.read(Type.FLOAT); // EXP + wrapper.read(Type.VAR_INT); // Cooking time + } + deleted++; + continue; + } + wrapper.write(Type.STRING, id); + wrapper.write(Type.STRING, type); + + if (type.equals("crafting_shapeless")) { + wrapper.passthrough(Type.STRING); // Group + int ingredientsNo = wrapper.passthrough(Type.VAR_INT); + for (int j = 0; j < ingredientsNo; j++) { + Item[] items = wrapper.passthrough(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT); // Ingredients + for (Item item : items) handleItemToClient(item); + } + handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Result + } else if (type.equals("crafting_shaped")) { + int ingredientsNo = wrapper.passthrough(Type.VAR_INT) * wrapper.passthrough(Type.VAR_INT); + wrapper.passthrough(Type.STRING); // Group + for (int j = 0; j < ingredientsNo; j++) { + Item[] items = wrapper.passthrough(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT); // Ingredients + for (Item item : items) handleItemToClient(item); + } + handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Result + } else if (type.equals("smelting")) { + wrapper.passthrough(Type.STRING); // Group + Item[] items = wrapper.passthrough(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT); // Ingredients + for (Item item : items) handleItemToClient(item); + handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); + wrapper.passthrough(Type.FLOAT); // EXP + wrapper.passthrough(Type.VAR_INT); // Cooking time + } + } + wrapper.set(Type.VAR_INT, 0, size - deleted); + } + }); + } + }); + + + /* + Incoming packets + */ + + // Click window packet + protocol.registerIncoming(State.PLAY, 0x08, 0x08, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.UNSIGNED_BYTE); // 0 - Window ID + map(Type.SHORT); // 1 - Slot + map(Type.BYTE); // 2 - Button + map(Type.SHORT); // 3 - Action number + map(Type.VAR_INT); // 4 - Mode + map(Type.FLAT_VAR_INT_ITEM); // 5 - Clicked Item + + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + handleItemToServer(wrapper.get(Type.FLAT_VAR_INT_ITEM, 0)); + } + }); + } + }); + + // Creative Inventory Action + protocol.registerIncoming(State.PLAY, 0x24, 0x24, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.SHORT); // 0 - Slot + map(Type.FLAT_VAR_INT_ITEM); // 1 - Clicked Item + + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + handleItemToServer(wrapper.get(Type.FLAT_VAR_INT_ITEM, 0)); + } + }); + } + }); + + // Block break animation + protocol.registerOutgoing(State.PLAY, 0x08, 0x08, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); + map(Type.POSITION1_14, Type.POSITION); + map(Type.BYTE); + } + }); + + // Update block entity + protocol.registerOutgoing(State.PLAY, 0x09, 0x09, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.POSITION1_14, Type.POSITION); + } + }); + + // Block Action + protocol.registerOutgoing(State.PLAY, 0x0A, 0x0A, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.POSITION, Type.POSITION1_14); // Location + map(Type.UNSIGNED_BYTE); // Action id + map(Type.UNSIGNED_BYTE); // Action param + map(Type.VAR_INT); // Block id - /!\ NOT BLOCK STATE + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + wrapper.set(Type.VAR_INT, 0, Protocol1_13_2To1_14.getNewBlockStateId(wrapper.get(Type.VAR_INT, 0))); + } + }); + } + }); + + // Block Change + protocol.registerOutgoing(State.PLAY, 0xB, 0xB, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.POSITION, Type.POSITION1_14); + map(Type.VAR_INT); + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + int id = wrapper.get(Type.VAR_INT, 0); + + wrapper.set(Type.VAR_INT, 0, Protocol1_13_2To1_14.getNewBlockStateId(id)); + } + }); + } + }); + + // Multi Block Change + protocol.registerOutgoing(State.PLAY, 0xF, 0xF, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // 0 - Chunk X + map(Type.INT); // 1 - Chunk Z + map(Type.BLOCK_CHANGE_RECORD_ARRAY); // 2 - Records + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + // Convert ids + for (BlockChangeRecord record : wrapper.get(Type.BLOCK_CHANGE_RECORD_ARRAY, 0)) { + int id = record.getBlockId(); + record.setBlockId(Protocol1_13_2To1_14.getNewBlockStateId(id)); + } + } + }); + } + }); + + //Chunk + protocol.registerOutgoing(State.PLAY, 0x22, 0x22, new PacketRemapper() { + @Override + public void registerMap() { + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); + Chunk chunk = wrapper.read(new Chunk1_14Type(clientWorld)); + wrapper.write(new Chunk1_13Type(clientWorld), chunk); + + for (ChunkSection section : chunk.getSections()) { + if (section == null) continue; + section.setBlockLight(new byte[2048]); + if (clientWorld.getEnvironment() == Environment.NORMAL) { + section.setSkyLight(new byte[2048]); + } + for (int i = 0; i < section.getPaletteSize(); i++) { + int old = section.getPaletteEntry(i); + int newId = Protocol1_13_2To1_14.getNewBlockStateId(old); + section.setPaletteEntry(i, newId); + } + } + } + }); + } + }); + + // Effect packet + protocol.registerOutgoing(State.PLAY, 0x23, 0x23, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // Effect Id + map(Type.POSITION, Type.POSITION1_14); // Location + map(Type.INT); // Data + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + int id = wrapper.get(Type.INT, 0); + int data = wrapper.get(Type.INT, 1); + if (id == 1010) { // Play record + wrapper.set(Type.INT, 1, data = BlockItemPackets1_14.getNewItemId(data)); + } else if (id == 2001) { // Block break + block break sound + wrapper.set(Type.INT, 1, data = Protocol1_14To1_13_2.getNewBlockStateId(data)); + } + } + }); + } + }); + + //spawn particle + protocol.registerOutgoing(State.PLAY, 0x24, 0x24, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // 0 - Particle ID + map(Type.BOOLEAN); // 1 - Long Distance + map(Type.FLOAT); // 2 - X + map(Type.FLOAT); // 3 - Y + map(Type.FLOAT); // 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(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + int id = wrapper.get(Type.INT, 0); + if (id == 3 || id == 20) { + int data = wrapper.passthrough(Type.VAR_INT); + wrapper.set(Type.VAR_INT, 0, Protocol1_14To1_13_2.getNewBlockStateId(data)); + } else if (id == 27) { + handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); + } + } + }); + } + }); + + + //Map Data + protocol.registerOutgoing(State.PLAY, 0x26, 0x26, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); + map(Type.BYTE); + map(Type.BOOLEAN); + map(Type.BOOLEAN, Type.NOTHING); // Locked + } + }); + + //respawn + protocol.registerOutgoing(State.PLAY, 0x38, 0x38, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // 0 - Dimension ID + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); + int dimensionId = wrapper.get(Type.INT, 0); + clientWorld.setEnvironment(dimensionId); + } + }); + } + }); + + // Spawn position + protocol.registerOutgoing(State.PLAY, 0x49, 0x49, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.POSITION, Type.POSITION1_14); + } + }); + } + + @Override + protected void registerRewrites() { + + } + + @Override + public Item handleItemToClient(Item i) { + Item item = super.handleItemToClient(i); + item.setIdentifier(getOldItemId(item.getIdentifier())); + + CompoundTag tag; + if ((tag = item.getTag()) != null) { + // Display Name now uses JSON + if (tag.get("display") instanceof CompoundTag) { + CompoundTag display = tag.get("display"); + if (((CompoundTag) tag.get("display")).get("Lore") instanceof ListTag) { + ListTag lore = display.get("Lore"); + ListTag via = display.get(NBT_TAG_NAME + "|Lore"); + if (via != null) { + display.put(ConverterRegistry.convertToTag("Lore", ConverterRegistry.convertToValue(via))); + } else { + for (Tag loreEntry : lore) { + if (loreEntry instanceof StringTag) { + ((StringTag) loreEntry).setValue( + ChatRewriter.jsonTextToLegacy( + ((StringTag) loreEntry).getValue() + ) + ); + } + } + } + display.remove(NBT_TAG_NAME + "|Lore"); + } + } + } + return item; + } + + @Override + public Item handleItemToServer(Item i) { + Item item = super.handleItemToServer(i); + item.setIdentifier(getNewItemId(item.getIdentifier())); + + CompoundTag tag; + if ((tag = item.getTag()) != null) { + // Display Lore now uses JSON + if (tag.get("display") instanceof CompoundTag) { + CompoundTag display = tag.get("display"); + if (display.get("Lore") instanceof ListTag) { + ListTag lore = display.get("Lore"); + display.put(ConverterRegistry.convertToTag(NBT_TAG_NAME + "|Lore", ConverterRegistry.convertToValue(lore))); + for (Tag loreEntry : lore) { + if (loreEntry instanceof StringTag) { + ((StringTag) loreEntry).setValue( + ChatRewriter.legacyTextToJson( + ((StringTag) loreEntry).getValue() + ) + ); + } + } + } + } + } + return item; + } + + public static int getNewItemId(int id) { + Integer newId = MappingData.oldToNewItems.get(id); + if (newId == null) { + ViaBackwards.getPlatform().getLogger().warning("Missing 1.14 item for 1.13.2 item " + id); + return 1; + } + return newId; + } + + + public static int getOldItemId(int id) { + Integer oldId = MappingData.oldToNewItems.inverse().get(id); + return oldId != null ? oldId : 1; + } +} diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java new file mode 100644 index 00000000..84c96bc4 --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java @@ -0,0 +1,208 @@ +package nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.packets; + +import nl.matsv.viabackwards.api.entities.storage.MetaStorage; +import nl.matsv.viabackwards.api.entities.types.EntityType1_13; +import nl.matsv.viabackwards.api.entities.types.EntityType1_14; +import nl.matsv.viabackwards.api.rewriters.EntityRewriter; +import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.Protocol1_13_2To1_14; +import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.data.EntityTypeMapping; +import us.myles.ViaVersion.api.PacketWrapper; +import us.myles.ViaVersion.api.remapper.PacketHandler; +import us.myles.ViaVersion.api.remapper.PacketRemapper; +import us.myles.ViaVersion.api.type.Type; +import us.myles.ViaVersion.api.type.types.version.Types1_13_2; +import us.myles.ViaVersion.api.type.types.version.Types1_14; +import us.myles.ViaVersion.packets.State; +import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; + +public class EntityPackets1_14 extends EntityRewriter { + @Override + protected void registerPackets(Protocol1_13_2To1_14 protocol) { +// Spawn entity + protocol.registerOutgoing(State.PLAY, 0x0, 0x0, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); // 0 - Entity id + map(Type.UUID); // 1 - UUID + map(Type.VAR_INT, Type.BYTE); // 2 - Type + map(Type.DOUBLE); // 3 - X + map(Type.DOUBLE); // 4 - Y + map(Type.DOUBLE); // 5 - Z + map(Type.BYTE); // 6 - Pitch + map(Type.BYTE); // 7 - Yaw + map(Type.INT); // 8 - Data + + // Track Entity + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + int entityId = wrapper.get(Type.VAR_INT, 0); + int typeId = wrapper.get(Type.VAR_INT, 1); + + EntityType1_14.EntityType type1_14 = EntityType1_14.getTypeFromId(typeId); + typeId = EntityTypeMapping.getOldId(type1_14.getId()).orElse(type1_14.getId()); + EntityType1_13.EntityType type1_13 = EntityType1_13.getTypeFromId(typeId, true); // todo object id + wrapper.cancel(); + + if (type1_13 != null) { + if (type1_13.is(EntityType1_13.EntityType.FALLING_BLOCK)) { + int data = wrapper.get(Type.INT, 0); + wrapper.set(Type.INT, 0, Protocol1_13_2To1_14.blockItem.handleBlockID(data)); + } + } + + wrapper.set(Type.VAR_INT, 1, typeId); + // Register Type ID + getEntityTracker(wrapper.user()).trackEntityType(entityId, type1_13); + } + }); + } + }); + + // Spawn mob packet + protocol.registerOutgoing(State.PLAY, 0x3, 0x3, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); // 0 - Entity ID + map(Type.UUID); // 1 - Entity UUID + map(Type.VAR_INT); // 2 - Entity Type + map(Type.DOUBLE); // 3 - X + map(Type.DOUBLE); // 4 - Y + map(Type.DOUBLE); // 5 - Z + map(Type.BYTE); // 6 - Yaw + map(Type.BYTE); // 7 - Pitch + map(Type.BYTE); // 8 - Head Pitch + map(Type.SHORT); // 9 - Velocity X + map(Type.SHORT); // 10 - Velocity Y + map(Type.SHORT); // 11 - Velocity Z + map(Types1_14.METADATA_LIST, Types1_13_2.METADATA_LIST); // 12 - Metadata + + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + int entityId = wrapper.get(Type.VAR_INT, 0); + int type = wrapper.get(Type.VAR_INT, 1); + + type = EntityTypeMapping.getOldId(type).orElse(type); + + EntityType1_13.EntityType entType = EntityType1_13.getTypeFromId(type, false); + + wrapper.set(Type.VAR_INT, 1, type); + + // Register Type ID + addTrackedEntity(wrapper.user(), entityId, entType); + + wrapper.set(Types1_13_2.METADATA_LIST, 0, + handleMeta( + wrapper.user(), + entityId, + new MetaStorage(wrapper.get(Types1_13_2.METADATA_LIST, 0)) + ).getMetaDataList() + ); + } + }); + } + }); + + // Spawn painting + protocol.registerOutgoing(State.PLAY, 0x04, 0x04, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); + map(Type.UUID); + map(Type.VAR_INT); + map(Type.POSITION1_14, Type.POSITION); + map(Type.BYTE); + } + }); + + // Spawn player packet + protocol.registerOutgoing(State.PLAY, 0x05, 0x05, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); // 0 - Entity ID + map(Type.UUID); // 1 - Player UUID + map(Type.DOUBLE); // 2 - X + map(Type.DOUBLE); // 3 - Y + map(Type.DOUBLE); // 4 - Z + map(Type.BYTE); // 5 - Yaw + map(Type.BYTE); // 6 - Pitch + map(Types1_14.METADATA_LIST, Types1_13_2.METADATA_LIST); // 7 - Metadata + + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + int entityId = wrapper.get(Type.VAR_INT, 0); + + EntityType1_13.EntityType entType = EntityType1_13.EntityType.PLAYER; + // Register Type ID + addTrackedEntity(wrapper.user(), entityId, entType); + wrapper.set(Types1_13_2.METADATA_LIST, 0, + handleMeta( + wrapper.user(), + entityId, + new MetaStorage(wrapper.get(Types1_13_2.METADATA_LIST, 0)) + ).getMetaDataList() + ); + } + }); + } + }); + + + // Metadata packet + protocol.registerOutgoing(State.PLAY, 0x3F, 0x3F, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); // 0 - Entity ID + map(Types1_14.METADATA_LIST, Types1_13_2.METADATA_LIST); // 1 - Metadata list + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + int entityId = wrapper.get(Type.VAR_INT, 0); + + wrapper.set(Types1_13_2.METADATA_LIST, 0, + handleMeta( + wrapper.user(), + entityId, + new MetaStorage(wrapper.get(Types1_13_2.METADATA_LIST, 0)) + ).getMetaDataList() + ); + } + }); + } + }); + + //join game + protocol.registerOutgoing(State.PLAY, 0x25, 0x25, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // 0 - Entity ID + map(Type.UNSIGNED_BYTE); // 1 - Gamemode + map(Type.INT); // 2 - Dimension + + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + // Store the player + ClientWorld clientChunks = wrapper.user().get(ClientWorld.class); + int dimensionId = wrapper.get(Type.INT, 1); + clientChunks.setEnvironment(dimensionId); + + int entityId = wrapper.get(Type.INT, 0); + + // Register Type ID + addTrackedEntity(wrapper.user(), entityId, EntityType1_13.EntityType.PLAYER); + } + }); + } + }); + + + } + + @Override + protected void registerRewrites() { + + } +} diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/PlayerPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/PlayerPackets1_14.java new file mode 100644 index 00000000..f41cb8eb --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/PlayerPackets1_14.java @@ -0,0 +1,139 @@ +package nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.packets; + +import nl.matsv.viabackwards.api.rewriters.Rewriter; +import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.Protocol1_13_2To1_14; +import us.myles.ViaVersion.api.PacketWrapper; +import us.myles.ViaVersion.api.minecraft.Position; +import us.myles.ViaVersion.api.remapper.PacketHandler; +import us.myles.ViaVersion.api.remapper.PacketRemapper; +import us.myles.ViaVersion.api.type.Type; +import us.myles.ViaVersion.packets.State; + +public class PlayerPackets1_14 extends Rewriter { + @Override + protected void registerPackets(Protocol1_13_2To1_14 protocol) { + + // Open Sign Editor + protocol.registerOutgoing(State.PLAY, 0x2D, 0x2C, new PacketRemapper() { // c + @Override + public void registerMap() { + map(Type.POSITION1_14, Type.POSITION); + } + }); + + // Query Block NBT + protocol.registerIncoming(State.PLAY, 0x01, 0x01, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); + map(Type.POSITION, Type.POSITION1_14); + } + }); + + // Edit Book + protocol.registerIncoming(State.PLAY, 0x0B, 0x0B, new PacketRemapper() { + @Override + public void registerMap() { + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + Protocol1_13_2To1_14.blockItem.handleItemToServer(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); + } + }); + } + }); + + // Player Digging + protocol.registerIncoming(State.PLAY, 0x18, 0x18, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); + map(Type.POSITION, Type.POSITION1_14); + map(Type.BYTE); + } + }); + + // Recipe Book Data + protocol.registerIncoming(State.PLAY, 0x1B, 0x1B, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + int type = wrapper.get(Type.VAR_INT, 0); + if (type == 0) { + wrapper.passthrough(Type.STRING); + } else if (type == 1) { + wrapper.passthrough(Type.BOOLEAN); // Crafting Recipe Book Open + wrapper.passthrough(Type.BOOLEAN); // Crafting Recipe Filter Active + wrapper.passthrough(Type.BOOLEAN); // Smelting Recipe Book Open + wrapper.passthrough(Type.BOOLEAN); // Smelting Recipe Filter Active + + // Unknown new booleans + wrapper.read(Type.BOOLEAN); + wrapper.read(Type.BOOLEAN); + wrapper.read(Type.BOOLEAN); + wrapper.read(Type.BOOLEAN); + } + } + }); + } + }); + + // Update Command Block + protocol.registerIncoming(State.PLAY, 0x22, 0x22, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.POSITION, Type.POSITION1_14); + } + }); + + // Update Structure Block + protocol.registerIncoming(State.PLAY, 0x25, 0x25, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.POSITION, Type.POSITION1_14); + } + }); + + // Update Sign + protocol.registerIncoming(State.PLAY, 0x26, 0x26, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.POSITION, Type.POSITION1_14); + } + }); + + // Player Block Placement + protocol.registerIncoming(State.PLAY, 0x29, 0x29, new PacketRemapper() { + @Override + public void registerMap() { + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + Position position = wrapper.read(Type.POSITION); + int face = wrapper.read(Type.VAR_INT); + int hand = wrapper.read(Type.VAR_INT); + float x = wrapper.read(Type.FLOAT); + float y = wrapper.read(Type.FLOAT); + float z = wrapper.read(Type.FLOAT); + + wrapper.write(Type.VAR_INT, hand); + wrapper.write(Type.POSITION1_14, position); + wrapper.write(Type.VAR_INT, face); + wrapper.write(Type.FLOAT, x); + wrapper.write(Type.FLOAT, y); + wrapper.write(Type.FLOAT, z); + wrapper.write(Type.BOOLEAN, false); // Inside block + } + }); + } + }); + } + + @Override + protected void registerRewrites() { + + } +} diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/SoundPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/SoundPackets1_14.java new file mode 100644 index 00000000..5e803edb --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/SoundPackets1_14.java @@ -0,0 +1,34 @@ +package nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.packets; + +import nl.matsv.viabackwards.api.rewriters.Rewriter; +import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.Protocol1_13_2To1_14; +import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.data.SoundMapping; +import us.myles.ViaVersion.api.PacketWrapper; +import us.myles.ViaVersion.api.remapper.PacketHandler; +import us.myles.ViaVersion.api.remapper.PacketRemapper; +import us.myles.ViaVersion.api.type.Type; +import us.myles.ViaVersion.packets.State; + +public class SoundPackets1_14 extends Rewriter { + @Override + protected void registerPackets(Protocol1_13_2To1_14 protocol) { + // Sound Effect + protocol.registerOutgoing(State.PLAY, 0x4D, 0x4D, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); // Sound Id + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + wrapper.set(Type.VAR_INT, 0, SoundMapping.getOldSound(wrapper.get(Type.VAR_INT, 0))); + } + }); + } + }); + } + + @Override + protected void registerRewrites() { + + } +} diff --git a/core/src/main/resources/assets/viabackwards/data/mapping-1.13.2to1.14.json b/core/src/main/resources/assets/viabackwards/data/mapping-1.13.2to1.14.json new file mode 100644 index 00000000..26bb3825 --- /dev/null +++ b/core/src/main/resources/assets/viabackwards/data/mapping-1.13.2to1.14.json @@ -0,0 +1,4 @@ +{ + "blockstates": { + } +} \ No newline at end of file diff --git a/pom.xml b/pom.xml index 6fd7c8b8..fa166e63 100644 --- a/pom.xml +++ b/pom.xml @@ -66,7 +66,7 @@ us.myles viaversion - 2.0.0-SNAPSHOT + 2.0.0-19w09a provided From de4789822e3d7684f9b137b9822e481e31d345b2 Mon Sep 17 00:00:00 2001 From: creeper123123321 Date: Sun, 3 Mar 2019 17:22:46 -0300 Subject: [PATCH 078/171] stonecutting handling - todo opennbt long array --- .../packets/BlockItemPackets1_14.java | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java index 7afa91c7..29c23f11 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java @@ -4,8 +4,6 @@ import com.google.common.collect.ImmutableSet; import nl.matsv.viabackwards.ViaBackwards; import nl.matsv.viabackwards.api.rewriters.BlockItemRewriter; import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.Protocol1_13_2To1_14; -import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.data.BackwardsMappings; -import nl.matsv.viabackwards.protocol.protocol1_13to1_13_1.packets.InventoryPackets1_13_1; import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.minecraft.BlockChangeRecord; import us.myles.ViaVersion.api.minecraft.Environment; @@ -14,7 +12,6 @@ import us.myles.ViaVersion.api.minecraft.chunks.ChunkSection; import us.myles.ViaVersion.api.minecraft.item.Item; import us.myles.ViaVersion.api.remapper.PacketHandler; import us.myles.ViaVersion.api.remapper.PacketRemapper; -import us.myles.ViaVersion.api.remapper.ValueCreator; import us.myles.ViaVersion.api.type.Type; import us.myles.ViaVersion.packets.State; import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.ChatRewriter; @@ -220,7 +217,7 @@ public class BlockItemPackets1_14 extends BlockItemRewriter removedTypes = ImmutableSet.of("crafting_special_suspiciousstew", "blasting", "smoking", "campfire_cooking"); + Set removedTypes = ImmutableSet.of("crafting_special_suspiciousstew", "blasting", "smoking", "campfire_cooking", "stonecutting"); // Declare Recipes protocol.registerOutgoing(State.PLAY, 0x55, 0x54, new PacketRemapper() { // c @@ -236,12 +233,21 @@ public class BlockItemPackets1_14 extends BlockItemRewriter Date: Mon, 4 Mar 2019 09:20:13 -0300 Subject: [PATCH 079/171] trying to rewrite entity data --- .../data/EntityTypeMapping.java | 23 ++++++- .../packets/EntityPackets1_14.java | 65 +++++++++++++++++-- 2 files changed, 82 insertions(+), 6 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/EntityTypeMapping.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/EntityTypeMapping.java index fed85d0d..98b02f20 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/EntityTypeMapping.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/EntityTypeMapping.java @@ -1,6 +1,7 @@ package nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.data; +import us.myles.ViaVersion.api.entities.Entity1_13Types; import us.myles.ViaVersion.protocols.protocol1_14to1_13_2.data.EntityTypeRewriter; import java.lang.reflect.Field; @@ -10,6 +11,7 @@ import java.util.Optional; public class EntityTypeMapping { private static Map entityTypes = new HashMap<>(); + private static Map oldEntityToOldObject = new HashMap<>(); static { try { @@ -20,9 +22,26 @@ public class EntityTypeMapping { } catch (NoSuchFieldException | IllegalAccessException ex) { ex.printStackTrace(); } + for (Map.Entry newToOld : entityTypes.entrySet()) { + Entity1_13Types.EntityType type1_13 = Entity1_13Types.getTypeFromId(newToOld.getValue(), false); + Entity1_13Types.ObjectTypes object1_13 = null; + for (Entity1_13Types.ObjectTypes objectType : Entity1_13Types.ObjectTypes.values()) { + if (objectType.getType() == type1_13) { + object1_13 = objectType; + break; + } + } + if (object1_13 != null) { + oldEntityToOldObject.put(type1_13.getId(), object1_13.getId()); + } + } } - public static Optional getOldId(int type1_13) { - return Optional.ofNullable(entityTypes.get(type1_13)); + public static Optional getOldId(int type1_14) { + return Optional.ofNullable(entityTypes.get(type1_14)); + } + + public static Optional getObjectId(int type1_13) { + return Optional.ofNullable(oldEntityToOldObject.get(type1_13)); } } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java index 84c96bc4..fa8afab2 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java @@ -7,6 +7,10 @@ import nl.matsv.viabackwards.api.rewriters.EntityRewriter; import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.Protocol1_13_2To1_14; import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.data.EntityTypeMapping; import us.myles.ViaVersion.api.PacketWrapper; +import us.myles.ViaVersion.api.minecraft.VillagerData; +import us.myles.ViaVersion.api.minecraft.item.Item; +import us.myles.ViaVersion.api.minecraft.metadata.Metadata; +import us.myles.ViaVersion.api.minecraft.metadata.types.MetaType1_13_2; import us.myles.ViaVersion.api.remapper.PacketHandler; import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.api.type.Type; @@ -41,8 +45,8 @@ public class EntityPackets1_14 extends EntityRewriter { EntityType1_14.EntityType type1_14 = EntityType1_14.getTypeFromId(typeId); typeId = EntityTypeMapping.getOldId(type1_14.getId()).orElse(type1_14.getId()); - EntityType1_13.EntityType type1_13 = EntityType1_13.getTypeFromId(typeId, true); // todo object id - wrapper.cancel(); + EntityType1_13.EntityType type1_13 = EntityType1_13.getTypeFromId(typeId, true); + typeId = EntityTypeMapping.getObjectId(type1_14.getId()).orElse(type1_14.getId()); if (type1_13 != null) { if (type1_13.is(EntityType1_13.EntityType.FALLING_BLOCK)) { @@ -197,12 +201,65 @@ public class EntityPackets1_14 extends EntityRewriter { }); } }); - - } @Override protected void registerRewrites() { + regEntType(EntityType1_14.EntityType.CAT, EntityType1_14.EntityType.OCELOT).mobName("Cat").spawnMetadata(e -> { + e.add(new Metadata(13, MetaType1_13_2.Byte, (byte) 0x4)); // Tamed cat + }); + regEntType(EntityType1_14.EntityType.OCELOT, EntityType1_14.EntityType.OCELOT).mobName("Ocelot"); + regEntType(EntityType1_14.EntityType.TRADER_LLAMA, EntityType1_14.EntityType.LLAMA).mobName("Trader Llama"); + registerMetaHandler().handle(e -> { + if (e.getData().getMetaType().getTypeID() == 6) { // Slot + Protocol1_13_2To1_14.blockItem.handleItemToClient((Item) e.getData().getValue()); + } + return e.getData(); + }); + // Remove entity pose + registerMetaHandler().filter(EntityType1_14.EntityType.ENTITY, 6).removed(); + registerMetaHandler().filter(EntityType1_14.EntityType.ENTITY).handle(e -> { + if (e.getIndex() > 6) e.getData().setId(e.getIndex() - 1); + return e.getData(); + }); + registerMetaHandler().filter(EntityType1_14.EntityType.CAT, 13).removed(); + registerMetaHandler().filter(EntityType1_14.EntityType.CAT, 14).removed(); + registerMetaHandler().filter(EntityType1_14.EntityType.CAT, 15).removed(); + // Villager data -> var int + registerMetaHandler().handle(e -> { + if (e.getData().getValue() instanceof VillagerData) { + e.getData().setMetaType(MetaType1_13_2.VarInt); + e.getData().setValue(villagerDataToProfession(((VillagerData) e.getData().getValue()))); + } + return e.getData(); + }); + } + + public int villagerDataToProfession(VillagerData data) { + switch (data.getProfession()) { + case 1: // Armorer + case 10: // Mason + case 13: // Toolsmith + case 14: // Weaponsmith + return 3; // Blacksmith + case 2: // Butcher + case 8: // Leatherworker + return 4; // Butcher + case 3: // Cartographer + case 9: // Librarian + return 1; // Librarian + case 4: // Cleric + return 2; // Priest + case 5: // Farmer + case 6: // Fisherman + case 7: // Fletcher + case 12: // Shepherd + return 0; // Farmer + case 0: // None + case 11: // Nitwit + default: + return 5; // Nitwit + } } } From 8e2feeb37597a468fdf84f94d897352efdcae9b4 Mon Sep 17 00:00:00 2001 From: creeper123123321 Date: Mon, 4 Mar 2019 10:10:17 -0300 Subject: [PATCH 080/171] fix 18 serializer error --- .../packets/EntityPackets1_14.java | 130 +++++++++++++----- 1 file changed, 95 insertions(+), 35 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java index fa8afab2..384c2311 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java @@ -1,9 +1,14 @@ package nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.packets; +import nl.matsv.viabackwards.ViaBackwards; +import nl.matsv.viabackwards.api.entities.storage.EntityData; import nl.matsv.viabackwards.api.entities.storage.MetaStorage; +import nl.matsv.viabackwards.api.entities.types.AbstractEntityType; +import nl.matsv.viabackwards.api.entities.types.EntityType1_12; import nl.matsv.viabackwards.api.entities.types.EntityType1_13; import nl.matsv.viabackwards.api.entities.types.EntityType1_14; import nl.matsv.viabackwards.api.rewriters.EntityRewriter; +import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.packets.BlockItemPackets1_13; import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.Protocol1_13_2To1_14; import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.data.EntityTypeMapping; import us.myles.ViaVersion.api.PacketWrapper; @@ -14,15 +19,18 @@ import us.myles.ViaVersion.api.minecraft.metadata.types.MetaType1_13_2; import us.myles.ViaVersion.api.remapper.PacketHandler; import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.api.type.Type; +import us.myles.ViaVersion.api.type.types.version.Types1_12; import us.myles.ViaVersion.api.type.types.version.Types1_13_2; import us.myles.ViaVersion.api.type.types.version.Types1_14; import us.myles.ViaVersion.packets.State; import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; +import java.util.Optional; + public class EntityPackets1_14 extends EntityRewriter { @Override protected void registerPackets(Protocol1_13_2To1_14 protocol) { -// Spawn entity + // Spawn Object protocol.registerOutgoing(State.PLAY, 0x0, 0x0, new PacketRemapper() { @Override public void registerMap() { @@ -36,28 +44,52 @@ public class EntityPackets1_14 extends EntityRewriter { map(Type.BYTE); // 7 - Yaw map(Type.INT); // 8 - Data - // Track Entity handler(new PacketHandler() { @Override public void handle(PacketWrapper wrapper) throws Exception { - int entityId = wrapper.get(Type.VAR_INT, 0); - int typeId = wrapper.get(Type.VAR_INT, 1); - - EntityType1_14.EntityType type1_14 = EntityType1_14.getTypeFromId(typeId); - typeId = EntityTypeMapping.getOldId(type1_14.getId()).orElse(type1_14.getId()); - EntityType1_13.EntityType type1_13 = EntityType1_13.getTypeFromId(typeId, true); - typeId = EntityTypeMapping.getObjectId(type1_14.getId()).orElse(type1_14.getId()); - - if (type1_13 != null) { - if (type1_13.is(EntityType1_13.EntityType.FALLING_BLOCK)) { - int data = wrapper.get(Type.INT, 0); - wrapper.set(Type.INT, 0, Protocol1_13_2To1_14.blockItem.handleBlockID(data)); - } + byte type = wrapper.get(Type.BYTE, 0); + EntityType1_14.EntityType entityType = EntityType1_14.getTypeFromId(type); + if (entityType == null) { + ViaBackwards.getPlatform().getLogger().warning("Could not find 1.14 entity type " + type); + return; + } + addTrackedEntity( + wrapper.user(), + wrapper.get(Type.VAR_INT, 0), + entityType + ); + } + }); + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + Optional type = EntityType1_13.ObjectType.findById(EntityTypeMapping.getObjectId( + EntityTypeMapping.getOldId(wrapper.get(Type.BYTE, 0)) + .orElse(0) + ).orElse(0)); + if (type.isPresent()) { + wrapper.set(Type.BYTE, 0, (byte) type.get().getId()); + } + if (type.isPresent() && type.get() == EntityType1_13.ObjectType.FALLING_BLOCK) { + int blockState = wrapper.get(Type.INT, 0); + int combined = BlockItemPackets1_13.toOldId(blockState); + combined = ((combined >> 4) & 0xFFF) | ((combined & 0xF) << 12); + wrapper.set(Type.INT, 0, combined); + } else if (type.isPresent() && type.get() == EntityType1_13.ObjectType.ITEM_FRAME) { + int data = wrapper.get(Type.INT, 0); + switch (data) { + case 3: + data = 0; + break; + case 4: + data = 1; + break; + case 5: + data = 3; + break; + } + wrapper.set(Type.INT, 0, data); } - - wrapper.set(Type.VAR_INT, 1, typeId); - // Register Type ID - getEntityTracker(wrapper.user()).trackEntityType(entityId, type1_13); } }); } @@ -84,24 +116,52 @@ public class EntityPackets1_14 extends EntityRewriter { handler(new PacketHandler() { @Override public void handle(PacketWrapper wrapper) throws Exception { - int entityId = wrapper.get(Type.VAR_INT, 0); int type = wrapper.get(Type.VAR_INT, 1); + EntityType1_14.EntityType entityType = EntityType1_14.getTypeFromId(type); + addTrackedEntity( + wrapper.user(), + wrapper.get(Type.VAR_INT, 0), + entityType + ); + Optional oldId = EntityTypeMapping.getOldId(type); + if (!oldId.isPresent()) { + if (!hasData(entityType)) + ViaBackwards.getPlatform().getLogger().warning("Could not find 1.12 entity type for 1.13 entity type " + type + "/" + entityType); + } else { + wrapper.set(Type.VAR_INT, 1, oldId.get()); + } + } + }); - type = EntityTypeMapping.getOldId(type).orElse(type); + // Handle entity type & metadata + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + int entityId = wrapper.get(Type.VAR_INT, 0); + AbstractEntityType type = getEntityType(wrapper.user(), entityId); - EntityType1_13.EntityType entType = EntityType1_13.getTypeFromId(type, false); + MetaStorage storage = new MetaStorage(wrapper.get(Types1_13_2.METADATA_LIST, 0)); + handleMeta( + wrapper.user(), + wrapper.get(Type.VAR_INT, 0), + storage + ); - wrapper.set(Type.VAR_INT, 1, type); + Optional optEntDat = getEntityData(type); + if (optEntDat.isPresent()) { + EntityData data = optEntDat.get(); - // Register Type ID - addTrackedEntity(wrapper.user(), entityId, entType); + Optional replacementId = EntityTypeMapping.getOldId(data.getReplacementId()); + wrapper.set(Type.VAR_INT, 1, replacementId.orElse(EntityType1_13.EntityType.ZOMBIE.getId())); + if (data.hasBaseMeta()) + data.getDefaultMeta().handle(storage); + } - wrapper.set(Types1_13_2.METADATA_LIST, 0, - handleMeta( - wrapper.user(), - entityId, - new MetaStorage(wrapper.get(Types1_13_2.METADATA_LIST, 0)) - ).getMetaDataList() + // Rewrite Metadata + wrapper.set( + Types1_13_2.METADATA_LIST, + 0, + storage.getMetaDataList() ); } }); @@ -138,7 +198,7 @@ public class EntityPackets1_14 extends EntityRewriter { public void handle(PacketWrapper wrapper) throws Exception { int entityId = wrapper.get(Type.VAR_INT, 0); - EntityType1_13.EntityType entType = EntityType1_13.EntityType.PLAYER; + EntityType1_14.EntityType entType = EntityType1_14.EntityType.PLAYER; // Register Type ID addTrackedEntity(wrapper.user(), entityId, entType); wrapper.set(Types1_13_2.METADATA_LIST, 0, @@ -196,7 +256,7 @@ public class EntityPackets1_14 extends EntityRewriter { int entityId = wrapper.get(Type.INT, 0); // Register Type ID - addTrackedEntity(wrapper.user(), entityId, EntityType1_13.EntityType.PLAYER); + addTrackedEntity(wrapper.user(), entityId, EntityType1_14.EntityType.PLAYER); } }); } @@ -218,8 +278,8 @@ public class EntityPackets1_14 extends EntityRewriter { return e.getData(); }); // Remove entity pose - registerMetaHandler().filter(EntityType1_14.EntityType.ENTITY, 6).removed(); - registerMetaHandler().filter(EntityType1_14.EntityType.ENTITY).handle(e -> { + registerMetaHandler().filter(EntityType1_14.EntityType.ENTITY, true, 6).removed(); + registerMetaHandler().filter(EntityType1_14.EntityType.ENTITY, true).handle(e -> { if (e.getIndex() > 6) e.getData().setId(e.getIndex() - 1); return e.getData(); }); From 3252d483833029d890496710e91618ce4572ac99 Mon Sep 17 00:00:00 2001 From: creeper123123321 Date: Mon, 4 Mar 2019 10:33:20 -0300 Subject: [PATCH 081/171] fix npe, remove living bed position --- .../packets/BlockItemPackets1_14.java | 2 ++ .../protocol1_13_2to1_14/packets/EntityPackets1_14.java | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java index 29c23f11..1584dce0 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java @@ -523,6 +523,7 @@ public class BlockItemPackets1_14 extends BlockItemRewriter { Optional oldId = EntityTypeMapping.getOldId(type); if (!oldId.isPresent()) { if (!hasData(entityType)) - ViaBackwards.getPlatform().getLogger().warning("Could not find 1.12 entity type for 1.13 entity type " + type + "/" + entityType); + ViaBackwards.getPlatform().getLogger().warning("Could not find 1.13.2 entity type for 1.14 entity type " + type + "/" + entityType); } else { wrapper.set(Type.VAR_INT, 1, oldId.get()); } @@ -283,6 +283,12 @@ public class EntityPackets1_14 extends EntityRewriter { if (e.getIndex() > 6) e.getData().setId(e.getIndex() - 1); return e.getData(); }); + // Remove bed location - todo send sleep packet + registerMetaHandler().filter(EntityType1_14.EntityType.LIVINGENTITY, true, 12).removed(); + registerMetaHandler().filter(EntityType1_14.EntityType.LIVINGENTITY, true).handle(e -> { + if (e.getIndex() > 12) e.getData().setId(e.getIndex() - 1); + return e.getData(); + }); registerMetaHandler().filter(EntityType1_14.EntityType.CAT, 13).removed(); registerMetaHandler().filter(EntityType1_14.EntityType.CAT, 14).removed(); registerMetaHandler().filter(EntityType1_14.EntityType.CAT, 15).removed(); From d99c5f5e6067de47137bd4dcea24c1951f6221a9 Mon Sep 17 00:00:00 2001 From: creeper123123321 Date: Thu, 7 Mar 2019 12:11:04 -0300 Subject: [PATCH 082/171] metadata --- .../packets/EntityPackets1_14.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java index 6045e21b..5c6f2952 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java @@ -4,7 +4,6 @@ import nl.matsv.viabackwards.ViaBackwards; import nl.matsv.viabackwards.api.entities.storage.EntityData; import nl.matsv.viabackwards.api.entities.storage.MetaStorage; import nl.matsv.viabackwards.api.entities.types.AbstractEntityType; -import nl.matsv.viabackwards.api.entities.types.EntityType1_12; import nl.matsv.viabackwards.api.entities.types.EntityType1_13; import nl.matsv.viabackwards.api.entities.types.EntityType1_14; import nl.matsv.viabackwards.api.rewriters.EntityRewriter; @@ -277,18 +276,18 @@ public class EntityPackets1_14 extends EntityRewriter { } return e.getData(); }); - // Remove entity pose - registerMetaHandler().filter(EntityType1_14.EntityType.ENTITY, true, 6).removed(); - registerMetaHandler().filter(EntityType1_14.EntityType.ENTITY, true).handle(e -> { - if (e.getIndex() > 6) e.getData().setId(e.getIndex() - 1); - return e.getData(); - }); // Remove bed location - todo send sleep packet registerMetaHandler().filter(EntityType1_14.EntityType.LIVINGENTITY, true, 12).removed(); registerMetaHandler().filter(EntityType1_14.EntityType.LIVINGENTITY, true).handle(e -> { if (e.getIndex() > 12) e.getData().setId(e.getIndex() - 1); return e.getData(); }); + // Remove entity pose + registerMetaHandler().filter(EntityType1_14.EntityType.ENTITY, true, 6).removed(); + registerMetaHandler().filter(EntityType1_14.EntityType.ENTITY, true).handle(e -> { + if (e.getIndex() > 6) e.getData().setId(e.getIndex() - 1); + return e.getData(); + }); registerMetaHandler().filter(EntityType1_14.EntityType.CAT, 13).removed(); registerMetaHandler().filter(EntityType1_14.EntityType.CAT, 14).removed(); registerMetaHandler().filter(EntityType1_14.EntityType.CAT, 15).removed(); From 1885840768a6680a25eddf1e062305658055a570 Mon Sep 17 00:00:00 2001 From: creeper123123321 Date: Sat, 16 Mar 2019 09:27:36 -0300 Subject: [PATCH 083/171] 19w11b --- .../Protocol1_13_2To1_14.java | 42 +++++++++ .../packets/BlockItemPackets1_14.java | 88 ++++++++++--------- .../packets/EntityPackets1_14.java | 2 + .../packets/PlayerPackets1_14.java | 23 +++-- 4 files changed, 106 insertions(+), 49 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java index b2ad930d..b37a2a7a 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java @@ -54,6 +54,48 @@ public class Protocol1_13_2To1_14 extends BackwardsProtocol { } }); + //Unknown packet added in 19w11a - 0x02 + registerIncoming(State.PLAY, 0x03, 0x02); // r + registerIncoming(State.PLAY, 0x04, 0x03); // r + registerIncoming(State.PLAY, 0x05, 0x04); // r + registerIncoming(State.PLAY, 0x06, 0x05); // r + registerIncoming(State.PLAY, 0x07, 0x06); // r + registerIncoming(State.PLAY, 0x08, 0x07); // r + + registerIncoming(State.PLAY, 0x0A, 0x09); // r + registerIncoming(State.PLAY, 0x0B, 0x0A); // r + + registerIncoming(State.PLAY, 0x0D, 0x0C); // r + registerIncoming(State.PLAY, 0x0E, 0x0D); // r + //Unknown packet added in 19w11a - 0x0F + registerIncoming(State.PLAY, 0x10, 0x0E); // r + registerIncoming(State.PLAY, 0x11, 0x0F); // r + registerIncoming(State.PLAY, 0x12, 0x10); // r + registerIncoming(State.PLAY, 0x13, 0x11); // r + registerIncoming(State.PLAY, 0x14, 0x12); // r + registerIncoming(State.PLAY, 0x15, 0x13); // r + registerIncoming(State.PLAY, 0x16, 0x14); // r + registerIncoming(State.PLAY, 0x17, 0x15); // r + registerIncoming(State.PLAY, 0x18, 0x16); // r + registerIncoming(State.PLAY, 0x19, 0x17); // r + + registerIncoming(State.PLAY, 0x1B, 0x19); // r + registerIncoming(State.PLAY, 0x1C, 0x1A); // r + + registerIncoming(State.PLAY, 0x1E, 0x1C); // r + registerIncoming(State.PLAY, 0x1F, 0x1D); // r + registerIncoming(State.PLAY, 0x20, 0x1E); // r + registerIncoming(State.PLAY, 0x21, 0x1F); // r + registerIncoming(State.PLAY, 0x22, 0x20); // r + registerIncoming(State.PLAY, 0x23, 0x21); // r + + registerIncoming(State.PLAY, 0x25, 0x23); // r + + registerIncoming(State.PLAY, 0x29, 0x27); // r + registerIncoming(State.PLAY, 0x2A, 0x28); // r + + registerIncoming(State.PLAY, 0x2C, 0x2A); // r + registerOutgoing(State.PLAY, 0x4F, 0x4E); // c registerOutgoing(State.PLAY, 0x50, 0x4F); // c registerOutgoing(State.PLAY, 0x51, 0x50); // c diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java index 1584dce0..5aebf719 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java @@ -45,46 +45,42 @@ public class BlockItemPackets1_14 extends BlockItemRewriter { // Register Type ID addTrackedEntity(wrapper.user(), entityId, EntityType1_14.EntityType.PLAYER); + + wrapper.write(Type.UNSIGNED_BYTE, (short) 0); } }); } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/PlayerPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/PlayerPackets1_14.java index f41cb8eb..d3a7404c 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/PlayerPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/PlayerPackets1_14.java @@ -13,6 +13,15 @@ public class PlayerPackets1_14 extends Rewriter { @Override protected void registerPackets(Protocol1_13_2To1_14 protocol) { + // Server Difficulty + protocol.registerOutgoing(State.PLAY, 0x0D, 0x0D, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.UNSIGNED_BYTE); + map(Type.BOOLEAN, Type.NOTHING); // Locked + } + }); + // Open Sign Editor protocol.registerOutgoing(State.PLAY, 0x2D, 0x2C, new PacketRemapper() { // c @Override @@ -31,7 +40,7 @@ public class PlayerPackets1_14 extends Rewriter { }); // Edit Book - protocol.registerIncoming(State.PLAY, 0x0B, 0x0B, new PacketRemapper() { + protocol.registerIncoming(State.PLAY, 0x0c, 0x0B, new PacketRemapper() { @Override public void registerMap() { handler(new PacketHandler() { @@ -44,7 +53,7 @@ public class PlayerPackets1_14 extends Rewriter { }); // Player Digging - protocol.registerIncoming(State.PLAY, 0x18, 0x18, new PacketRemapper() { + protocol.registerIncoming(State.PLAY, 0x1a, 0x18, new PacketRemapper() { @Override public void registerMap() { map(Type.VAR_INT); @@ -54,7 +63,7 @@ public class PlayerPackets1_14 extends Rewriter { }); // Recipe Book Data - protocol.registerIncoming(State.PLAY, 0x1B, 0x1B, new PacketRemapper() { + protocol.registerIncoming(State.PLAY, 0x1d, 0x1B, new PacketRemapper() { @Override public void registerMap() { map(Type.VAR_INT); @@ -82,7 +91,7 @@ public class PlayerPackets1_14 extends Rewriter { }); // Update Command Block - protocol.registerIncoming(State.PLAY, 0x22, 0x22, new PacketRemapper() { + protocol.registerIncoming(State.PLAY, 0x24, 0x22, new PacketRemapper() { @Override public void registerMap() { map(Type.POSITION, Type.POSITION1_14); @@ -90,7 +99,7 @@ public class PlayerPackets1_14 extends Rewriter { }); // Update Structure Block - protocol.registerIncoming(State.PLAY, 0x25, 0x25, new PacketRemapper() { + protocol.registerIncoming(State.PLAY, 0x27, 0x25, new PacketRemapper() { @Override public void registerMap() { map(Type.POSITION, Type.POSITION1_14); @@ -98,7 +107,7 @@ public class PlayerPackets1_14 extends Rewriter { }); // Update Sign - protocol.registerIncoming(State.PLAY, 0x26, 0x26, new PacketRemapper() { + protocol.registerIncoming(State.PLAY, 0x28, 0x26, new PacketRemapper() { @Override public void registerMap() { map(Type.POSITION, Type.POSITION1_14); @@ -106,7 +115,7 @@ public class PlayerPackets1_14 extends Rewriter { }); // Player Block Placement - protocol.registerIncoming(State.PLAY, 0x29, 0x29, new PacketRemapper() { + protocol.registerIncoming(State.PLAY, 0x2b, 0x29, new PacketRemapper() { @Override public void registerMap() { handler(new PacketHandler() { From 91acf71454b0896419602b389f801aa43fb3c040 Mon Sep 17 00:00:00 2001 From: creeper123123321 Date: Sat, 16 Mar 2019 09:41:24 -0300 Subject: [PATCH 084/171] fix aoob exception --- .../protocol/protocol1_13_2to1_14/data/SoundMapping.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/SoundMapping.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/SoundMapping.java index fd92084a..826d070d 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/SoundMapping.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/SoundMapping.java @@ -9,7 +9,7 @@ import java.util.Arrays; import static us.myles.ViaVersion.protocols.protocol1_13to1_12_2.data.MappingData.loadData; public class SoundMapping { - private static short[] sounds = new short[772]; + private static short[] sounds = new short[789]; public static void init() { JsonObject mapping1_13_2 = loadData("mapping-1.13.2.json"); From 0497ce198d1edd3ed42b3e312f235bcf4c3108e0 Mon Sep 17 00:00:00 2001 From: Matsv Date: Sat, 16 Mar 2019 15:11:23 +0100 Subject: [PATCH 085/171] :wrench: Start working on flower pot special treatment --- .../FlowerPotHandler.java | 8 +- .../packets/BlockItemPackets1_13.java | 94 ++++++++++++++----- .../BackwardsBlockEntityProvider.java | 19 ++++ 3 files changed, 95 insertions(+), 26 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/FlowerPotHandler.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/FlowerPotHandler.java index d7ebfbb9..7a406efc 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/FlowerPotHandler.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/FlowerPotHandler.java @@ -13,8 +13,8 @@ package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handler import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.providers.BackwardsBlockEntityProvider; import us.myles.ViaVersion.api.Pair; import us.myles.ViaVersion.api.data.UserConnection; -import us.myles.viaversion.libs.opennbt.tag.builtin.ByteTag; import us.myles.viaversion.libs.opennbt.tag.builtin.CompoundTag; +import us.myles.viaversion.libs.opennbt.tag.builtin.IntTag; import us.myles.viaversion.libs.opennbt.tag.builtin.StringTag; import java.util.Map; @@ -53,6 +53,10 @@ public class FlowerPotHandler implements BackwardsBlockEntityProvider.BackwardsB flowers.put(id, new Pair<>(identifier, data)); } + public static boolean isFlowah(int id) { + return flowers.containsKey(id); + } + public Pair getOrDefault(int blockId) { if (flowers.containsKey(blockId)) return flowers.get(blockId); @@ -66,7 +70,7 @@ public class FlowerPotHandler implements BackwardsBlockEntityProvider.BackwardsB Pair item = getOrDefault(blockId); tag.put(new StringTag("Item", item.getKey())); - tag.put(new ByteTag("Data", item.getValue())); + tag.put(new IntTag("Data", item.getValue())); return tag; } 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 600ad538..7a5cabf5 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 @@ -14,11 +14,13 @@ import com.google.common.base.Optional; import nl.matsv.viabackwards.ViaBackwards; import nl.matsv.viabackwards.api.rewriters.BlockItemRewriter; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.Protocol1_12_2To1_13; +import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handlers.FlowerPotHandler; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.data.BackwardsMappings; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.providers.BackwardsBlockEntityProvider; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.storage.BackwardsBlockStorage; import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.Via; +import us.myles.ViaVersion.api.data.UserConnection; import us.myles.ViaVersion.api.minecraft.BlockChangeRecord; import us.myles.ViaVersion.api.minecraft.Position; import us.myles.ViaVersion.api.minecraft.chunks.Chunk; @@ -58,6 +60,20 @@ public class BlockItemPackets1_13 extends BlockItemRewriter= 256 && id <= 259 // iron shovel, pickaxe, axe, flint and steel + || id == 261 // bow + || id >= 267 && id <= 279 // iron sword, wooden+stone+diamond swords, shovels, pickaxes, axes + || id >= 283 && id <= 286 // gold sword, shovel, pickaxe, axe + || id >= 290 && id <= 294 // hoes + || id >= 298 && id <= 317 // armors + || id == 346 // fishing rod + || id == 359 // shears + || id == 398 // carrot on a stick + || id == 442 // shield + || id == 443; // elytra + } + @Override protected void registerPackets(Protocol1_12_2To1_13 protocol) { NBT_TAG_NAME = "ViaBackwards|" + protocol.getClass().getSimpleName(); @@ -140,12 +156,16 @@ public class BlockItemPackets1_13 extends BlockItemRewriter 0) { + if (dummyEnchatment && enchantments.size() > 0) { ByteTag hideFlags = tag.get("HideFlags"); - if(hideFlags == null){ + if (hideFlags == null) { hideFlags = new ByteTag("HideFlags"); tag.put(new ByteTag(NBT_TAG_NAME + "|noHideFlags")); } @@ -892,13 +941,13 @@ public class BlockItemPackets1_13 extends BlockItemRewriter= 256 && id <= 259 // iron shovel, pickaxe, axe, flint and steel - || id == 261 // bow - || id >= 267 && id <= 279 // iron sword, wooden+stone+diamond swords, shovels, pickaxes, axes - || id >= 283 && id <= 286 // gold sword, shovel, pickaxe, axe - || id >= 290 && id <= 294 // hoes - || id >= 298 && id <= 317 // armors - || id == 346 // fishing rod - || id == 359 // shears - || id == 398 // carrot on a stick - || id == 442 // shield - || id == 443; // elytra - } + private static void flowerPotSpecialTreatment(UserConnection user, int blockState, Position position) throws Exception { + if (FlowerPotHandler.isFlowah(blockState)) { + BackwardsBlockEntityProvider beProvider = Via.getManager().getProviders().get(BackwardsBlockEntityProvider.class); + CompoundTag nbt = beProvider.transform(user, position, "minecraft:flower_pot"); - private void handleEnchantmentClient(Item item) { + PacketWrapper wrapper = new PacketWrapper(0x09, null, user); + wrapper.write(Type.POSITION, position); + wrapper.write(Type.UNSIGNED_BYTE, (short) 5); + wrapper.write(Type.NBT, nbt); + // TODO Why does this not work? + wrapper.send(Protocol1_12_2To1_13.class, true); + } } } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/providers/BackwardsBlockEntityProvider.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/providers/BackwardsBlockEntityProvider.java index 3792a978..bb02f256 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/providers/BackwardsBlockEntityProvider.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/providers/BackwardsBlockEntityProvider.java @@ -18,6 +18,8 @@ import us.myles.ViaVersion.api.data.UserConnection; import us.myles.ViaVersion.api.minecraft.Position; import us.myles.ViaVersion.api.platform.providers.Provider; import us.myles.viaversion.libs.opennbt.tag.builtin.CompoundTag; +import us.myles.viaversion.libs.opennbt.tag.builtin.IntTag; +import us.myles.viaversion.libs.opennbt.tag.builtin.StringTag; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -72,6 +74,23 @@ public class BackwardsBlockEntityProvider implements Provider { return handler.transform(user, storage.get(position), tag); } + /** + * Transform blocks to block entities! + * + * @param user The user + * @param position The position of the block entity + * @param id The block entity id + */ + public CompoundTag transform(UserConnection user, Position position, String id) throws Exception { + CompoundTag tag = new CompoundTag(""); + tag.put(new StringTag("id", id)); + tag.put(new IntTag("x", Math.toIntExact(position.getX()))); + tag.put(new IntTag("y", Math.toIntExact(position.getY()))); + tag.put(new IntTag("z", Math.toIntExact(position.getZ()))); + + return this.transform(user, position, tag); + } + public interface BackwardsBlockEntityHandler { CompoundTag transform(UserConnection user, int blockId, CompoundTag tag); } From 6fb9f9adf35807b93b97723dc4731fc2d4bce9aa Mon Sep 17 00:00:00 2001 From: Matsv Date: Sat, 16 Mar 2019 16:03:32 +0100 Subject: [PATCH 086/171] :sos: Hacky way to fix flower pots --- .../packets/BlockItemPackets1_13.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 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 7a5cabf5..f6102ff4 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 @@ -1098,19 +1098,32 @@ public class BlockItemPackets1_13 extends BlockItemRewriter Date: Sat, 16 Mar 2019 16:15:49 +0100 Subject: [PATCH 087/171] :bug: Fix recipe book crash --- .../protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java index bb43efe0..5c71e1df 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java @@ -123,7 +123,7 @@ public class Protocol1_12_2To1_13 extends BackwardsProtocol { in(State.PLAY, 0x18, 0x14); // Player Digging in(State.PLAY, 0x19, 0x15); // Entity Action in(State.PLAY, 0x1A, 0x16); // Steer Vehicle - in(State.PLAY, 0x1B, 0x17); // Recipe Book Data + in(State.PLAY, 0x1B, 0x17, cancel()); // Recipe Book Data TODO MODIFIED in(State.PLAY, 0x1D, 0x18); // Resource Pack Status in(State.PLAY, 0x1E, 0x19); // Advancement Tab in(State.PLAY, 0x1F, -1); // Select Trade From 6c49c0b2d366f941c3536a7de9d3ff21f91e3ef0 Mon Sep 17 00:00:00 2001 From: Matsv Date: Sat, 16 Mar 2019 16:43:46 +0100 Subject: [PATCH 088/171] :sparkles: Fix paintings --- .../data/PaintingMapping.java | 52 +++++++++---------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/PaintingMapping.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/PaintingMapping.java index 578ed5f9..0a591996 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/PaintingMapping.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/PaintingMapping.java @@ -7,32 +7,32 @@ public class PaintingMapping { private static Map paintings = new HashMap<>(); public static void init() { - add("kebab"); - add("aztec"); - add("alban"); - add("aztec2"); - add("bomb"); - add("plant"); - add("wasteland"); - add("pool"); - add("courbet"); - add("sea"); - add("sunset"); - add("creebet"); - add("wanderer"); - add("graham"); - add("match"); - add("bust"); - add("stage"); - add("void"); - add("skullandroses"); - add("wither"); - add("fighters"); - add("pointer"); - add("pigscene"); - add("burningskull"); - add("skeleton"); - add("donkeykong"); + add("Kebab"); + add("Aztec"); + add("Alban"); + add("Aztec2"); + add("Bomb"); + add("Plant"); + add("Wasteland"); + add("Pool"); + add("Courbet"); + add("Sea"); + add("Sunset"); + add("Creebet"); + add("Wanderer"); + add("Graham"); + add("Match"); + add("Bust"); + add("Stage"); + add("Void"); + add("SkullAndRoses"); + add("Wither"); + add("Fighters"); + add("Pointer"); + add("Pigscene"); + add("BurningSkull"); + add("Skeleton"); + add("DonkeyKong"); } private static void add(String motive) { From b8c87cfa2eeba95939ec8027aed107d72a3de599 Mon Sep 17 00:00:00 2001 From: creeper123123321 Date: Sat, 16 Mar 2019 17:29:23 -0300 Subject: [PATCH 089/171] Fix wrong position remappings --- .../packets/BlockItemPackets1_14.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java index 5aebf719..c5d7b9fa 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java @@ -352,7 +352,7 @@ public class BlockItemPackets1_14 extends BlockItemRewriter Date: Sat, 30 Mar 2019 14:39:45 -0300 Subject: [PATCH 090/171] fix toServer --- .../protocol1_12_2to1_13/packets/BlockItemPackets1_13.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 f6102ff4..e1dcb99c 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 @@ -867,7 +867,6 @@ public class BlockItemPackets1_13 extends BlockItemRewriter Date: Sat, 30 Mar 2019 15:08:31 -0300 Subject: [PATCH 091/171] fix possible array out of bounds --- .../protocol/protocol1_12_2to1_13/data/SoundMapping.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/SoundMapping.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/SoundMapping.java index c9096b01..80dcd2c4 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/SoundMapping.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/SoundMapping.java @@ -39,6 +39,6 @@ public class SoundMapping { } public static int getOldSound(int newSound) { - return newSound >= sounds.length ? -1 : sounds[newSound]; + return newSound < 0 || newSound >= sounds.length ? -1 : sounds[newSound]; } } From 77efe57015e315eafe014e4e9fa2a5db9562c7af Mon Sep 17 00:00:00 2001 From: creeper123123321 Date: Sat, 30 Mar 2019 16:33:02 -0300 Subject: [PATCH 092/171] fix tag name conflict --- .../protocol1_12_2to1_13/packets/BlockItemPackets1_13.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 e1dcb99c..790e5206 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 @@ -76,7 +76,7 @@ public class BlockItemPackets1_13 extends BlockItemRewriter Date: Sat, 20 Apr 2019 18:33:29 -0300 Subject: [PATCH 093/171] Set item to null when shift clicking --- .../packets/BlockItemPackets1_12.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/BlockItemPackets1_12.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/BlockItemPackets1_12.java index f07105f5..e297e819 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/BlockItemPackets1_12.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/BlockItemPackets1_12.java @@ -174,14 +174,17 @@ public class BlockItemPackets1_12 extends BlockItemRewriter Date: Tue, 23 Apr 2019 13:04:03 +0100 Subject: [PATCH 094/171] Use ViaVersion libraries --- all/pom.xml | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/all/pom.xml b/all/pom.xml index 0cee5e97..f75af1f7 100644 --- a/all/pom.xml +++ b/all/pom.xml @@ -44,6 +44,34 @@ false false + + + com.github.steveice10.opennbt + us.myles.viaversion.libs.opennbt + + + com.google.gson + us.myles.viaversion.libs.gson + + + javassist + us.myles.viaversion.libs.javassist + + + org.yaml.snakeyaml + us.myles.viaversion.libs.snakeyaml + + + net.md_5.bungee + us.myles.viaversion.libs.bungeecordchat + + net.md_5.bungee.api.chat.** + net.md_5.bungee.api.ChatColor + net.md_5.bungee.api.ChatMessageType + net.md_5.bungee.chat.** + + + From cec91ee159435f0315095cb09dc23d59ba9d6ecb Mon Sep 17 00:00:00 2001 From: Myles Date: Tue, 23 Apr 2019 15:49:38 +0100 Subject: [PATCH 095/171] Fix compiling --- .../protocol/protocol1_11_1to1_12/data/ShoulderTracker.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/data/ShoulderTracker.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/data/ShoulderTracker.java index c9594c7f..a1895e07 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/data/ShoulderTracker.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/data/ShoulderTracker.java @@ -20,7 +20,7 @@ import us.myles.ViaVersion.api.data.StoredObject; import us.myles.ViaVersion.api.data.UserConnection; import us.myles.ViaVersion.api.type.Type; import us.myles.ViaVersion.protocols.protocol1_12to1_11_1.Protocol1_12To1_11_1; -import us.myles.ViaVersion.protocols.protocol1_9to1_8.Protocol1_9TO1_8; +import us.myles.ViaVersion.protocols.protocol1_9to1_8.Protocol1_9To1_8; @Getter @Setter @@ -37,7 +37,7 @@ public class ShoulderTracker extends StoredObject { public void update() { PacketWrapper wrapper = new PacketWrapper(0x0F, null, getUser()); - wrapper.write(Type.STRING, Protocol1_9TO1_8.fixJson(generateString())); + wrapper.write(Type.STRING, Protocol1_9To1_8.fixJson(generateString())); wrapper.write(Type.BYTE, (byte) 2); try { From da67500eaab537285055d25bff1d714b5a56a887 Mon Sep 17 00:00:00 2001 From: Marco Neuhaus Date: Wed, 1 May 2019 14:46:06 +0200 Subject: [PATCH 096/171] fix play record rewrites --- .../protocol1_13to1_13_1/packets/WorldPackets1_13_1.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/WorldPackets1_13_1.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/WorldPackets1_13_1.java index 2d3dc3fa..ae8f0592 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/WorldPackets1_13_1.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13to1_13_1/packets/WorldPackets1_13_1.java @@ -109,7 +109,7 @@ public class WorldPackets1_13_1 { int id = wrapper.get(Type.INT, 0); int data = wrapper.get(Type.INT, 1); if (id == 1010) { // Play record - wrapper.set(Type.INT, 1, data = InventoryPackets1_13_1.getNewItemId(data)); + wrapper.set(Type.INT, 1, data = InventoryPackets1_13_1.getOldItemId(data)); } else if (id == 2001) { // Block break + block break sound wrapper.set(Type.INT, 1, data = Protocol1_13To1_13_1.getNewBlockStateId(data)); } From 9441a1e49eb4f6f4be0de1059fdb9ebf802371d3 Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Tue, 7 May 2019 13:13:15 +0200 Subject: [PATCH 097/171] fix map packet --- .../protocol1_12_2to1_13/packets/BlockItemPackets1_13.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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 790e5206..f6e768e0 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 @@ -382,7 +382,10 @@ public class BlockItemPackets1_13 extends BlockItemRewriter 9) continue; + if (type > 9) { + wrapper.set(Type.VAR_INT, 1, wrapper.get(Type.VAR_INT, 1) - 1); + continue; + } wrapper.write(Type.BYTE, (byte) ((type << 4) | (direction & 0x0F))); wrapper.write(Type.BYTE, x); wrapper.write(Type.BYTE, z); From 15324dd14925ce9fe9c48b3de6af60476d5d1e5d Mon Sep 17 00:00:00 2001 From: creeper123123321 <7974274+creeper123123321@users.noreply.github.com> Date: Sun, 12 May 2019 11:35:28 -0300 Subject: [PATCH 098/171] Stop shading guava --- pom.xml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/pom.xml b/pom.xml index e1d7713f..f2e34391 100644 --- a/pom.xml +++ b/pom.xml @@ -56,12 +56,6 @@ 1.16.18 provided - - - com.google.guava - guava - 19.0 - us.myles From e4a54fbadee466434cc75adbdc17735f3b426b71 Mon Sep 17 00:00:00 2001 From: Marco Neuhaus Date: Wed, 15 May 2019 13:44:59 +0200 Subject: [PATCH 099/171] add 1.14.1 support (not tested yet) --- .../MetadataRewriter.java | 37 ++++++ .../Protocol1_14To1_14_1.java | 22 ++++ .../packets/EntityPackets.java | 106 ++++++++++++++++++ .../storage/EntityTracker.java | 49 ++++++++ pom.xml | 2 +- 5 files changed, 215 insertions(+), 1 deletion(-) create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14to1_14_1/MetadataRewriter.java create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14to1_14_1/Protocol1_14To1_14_1.java create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14to1_14_1/packets/EntityPackets.java create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14to1_14_1/storage/EntityTracker.java diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14to1_14_1/MetadataRewriter.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14to1_14_1/MetadataRewriter.java new file mode 100644 index 00000000..9a57018a --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14to1_14_1/MetadataRewriter.java @@ -0,0 +1,37 @@ +package nl.matsv.viabackwards.protocol.protocol1_14to1_14_1; + +import us.myles.ViaVersion.api.Via; +import us.myles.ViaVersion.api.data.UserConnection; +import us.myles.ViaVersion.api.entities.Entity1_14Types; +import us.myles.ViaVersion.api.minecraft.metadata.Metadata; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by Marco Neuhaus on 15.05.2019 for the Project ViaBackwardsFoorcee. + */ +public class MetadataRewriter { + + public static void handleMetadata(int entityId, Entity1_14Types.EntityType type, List metadatas, UserConnection connection) { + if (type == null) return; + + for (Metadata metadata : new ArrayList<>(metadatas)) { + try { + if (type.is(Entity1_14Types.EntityType.VILLAGER) || type.is(Entity1_14Types.EntityType.WANDERING_TRADER)) { + if (metadata.getId() >= 16) { + metadata.setId(metadata.getId() - 1); + } + } + } catch (Exception e) { + metadatas.remove(metadata); + if (!Via.getConfig().isSuppressMetadataErrors() || Via.getManager().isDebug()) { + Via.getPlatform().getLogger().warning("An error occurred with entity metadata handler"); + Via.getPlatform().getLogger().warning("Metadata: " + metadata); + e.printStackTrace(); + } + } + } + } + +} diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14to1_14_1/Protocol1_14To1_14_1.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14to1_14_1/Protocol1_14To1_14_1.java new file mode 100644 index 00000000..44fbe63c --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14to1_14_1/Protocol1_14To1_14_1.java @@ -0,0 +1,22 @@ +package nl.matsv.viabackwards.protocol.protocol1_14to1_14_1; + +import nl.matsv.viabackwards.api.BackwardsProtocol; +import us.myles.ViaVersion.api.data.UserConnection; +import us.myles.ViaVersion.protocols.protocol1_14_1to1_14.packets.EntityPackets; +import us.myles.ViaVersion.protocols.protocol1_14_1to1_14.storage.EntityTracker; + +/** + * Created by Marco Neuhaus on 15.05.2019 for the Project ViaBackwardsFoorcee. + */ +public class Protocol1_14To1_14_1 extends BackwardsProtocol { + + @Override + protected void registerPackets() { + EntityPackets.register(this); + } + + @Override + public void init(UserConnection userConnection) { + userConnection.put(new EntityTracker(userConnection)); + } +} diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14to1_14_1/packets/EntityPackets.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14to1_14_1/packets/EntityPackets.java new file mode 100644 index 00000000..7e56b95a --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14to1_14_1/packets/EntityPackets.java @@ -0,0 +1,106 @@ +package nl.matsv.viabackwards.protocol.protocol1_14to1_14_1.packets; + +import com.google.common.base.Optional; +import nl.matsv.viabackwards.protocol.protocol1_14to1_14_1.MetadataRewriter; +import nl.matsv.viabackwards.protocol.protocol1_14to1_14_1.storage.EntityTracker; +import us.myles.ViaVersion.api.PacketWrapper; +import us.myles.ViaVersion.api.entities.Entity1_14Types; +import us.myles.ViaVersion.api.entities.Entity1_14Types.EntityType; +import us.myles.ViaVersion.api.protocol.Protocol; +import us.myles.ViaVersion.api.remapper.PacketHandler; +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.packets.State; + +/** + * Created by Marco Neuhaus on 15.05.2019 for the Project ViaBackwardsFoorcee. + */ +public class EntityPackets { + + public static void register(Protocol protocol) { + + // Spawn Mob + protocol.registerOutgoing(State.PLAY, 0x03, 0x03, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); // 0 - Entity ID + map(Type.UUID); // 1 - Entity UUID + map(Type.VAR_INT); // 2 - Entity Type + map(Type.DOUBLE); // 3 - X + map(Type.DOUBLE); // 4 - Y + map(Type.DOUBLE); // 5 - Z + map(Type.BYTE); // 6 - Yaw + map(Type.BYTE); // 7 - Pitch + map(Type.BYTE); // 8 - Head Pitch + map(Type.SHORT); // 9 - Velocity X + map(Type.SHORT); // 10 - Velocity Y + map(Type.SHORT); // 11 - Velocity Z + map(Types1_14.METADATA_LIST); // 12 - Metadata + + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + int entityId = wrapper.get(Type.VAR_INT, 0); + int type = wrapper.get(Type.VAR_INT, 1); + + Entity1_14Types.EntityType entType = Entity1_14Types.getTypeFromId(type); + + // Register Type ID + wrapper.user().get(EntityTracker.class).addEntity(entityId, entType); + + MetadataRewriter.handleMetadata(entityId, entType, wrapper.get(Types1_14.METADATA_LIST, 0), wrapper.user()); + } + }); + } + }); + + // Spawn Player + protocol.registerOutgoing(State.PLAY, 0x05, 0x05, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); // 0 - Entity ID + map(Type.UUID); // 1 - Player UUID + map(Type.DOUBLE); // 2 - X + map(Type.DOUBLE); // 3 - Y + map(Type.DOUBLE); // 4 - Z + map(Type.BYTE); // 5 - Yaw + map(Type.BYTE); // 6 - Pitch + map(Types1_14.METADATA_LIST); // 7 - Metadata + + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + int entityId = wrapper.get(Type.VAR_INT, 0); + + Entity1_14Types.EntityType entType = Entity1_14Types.EntityType.PLAYER; + + // Register Type ID + wrapper.user().get(EntityTracker.class).addEntity(entityId, entType); + MetadataRewriter.handleMetadata(entityId, entType, wrapper.get(Types1_14.METADATA_LIST, 0), wrapper.user()); + } + }); + } + }); + + // Entity Metadata + protocol.registerOutgoing(State.PLAY, 0x43, 0x43, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); // 0 - Entity ID + map(Types1_14.METADATA_LIST); // 1 - Metadata list + + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + int entityId = wrapper.get(Type.VAR_INT, 0); + + Optional type = wrapper.user().get(EntityTracker.class).get(entityId); + MetadataRewriter.handleMetadata(entityId, type.orNull(), wrapper.get(Types1_14.METADATA_LIST, 0), wrapper.user()); + } + }); + } + }); + } + +} diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14to1_14_1/storage/EntityTracker.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14to1_14_1/storage/EntityTracker.java new file mode 100644 index 00000000..40acb3d5 --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14to1_14_1/storage/EntityTracker.java @@ -0,0 +1,49 @@ +package nl.matsv.viabackwards.protocol.protocol1_14to1_14_1.storage; + +import com.google.common.base.Optional; +import lombok.Getter; +import lombok.Setter; +import us.myles.ViaVersion.api.data.ExternalJoinGameListener; +import us.myles.ViaVersion.api.data.StoredObject; +import us.myles.ViaVersion.api.data.UserConnection; +import us.myles.ViaVersion.api.entities.Entity1_14Types; +import us.myles.ViaVersion.api.entities.Entity1_14Types.EntityType; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * Created by Marco Neuhaus on 15.05.2019 for the Project ViaBackwardsFoorcee. + */ +public class EntityTracker extends StoredObject implements ExternalJoinGameListener { + private final Map clientEntityTypes = new ConcurrentHashMap<>(); + @Getter + @Setter + private int clientEntityId; + + public EntityTracker(UserConnection user) { + super(user); + } + + public void removeEntity(int entityId) { + clientEntityTypes.remove(entityId); + } + + public void addEntity(int entityId, Entity1_14Types.EntityType type) { + clientEntityTypes.put(entityId, type); + } + + public boolean has(int entityId) { + return clientEntityTypes.containsKey(entityId); + } + + public Optional get(int id) { + return Optional.fromNullable(clientEntityTypes.get(id)); + } + + @Override + public void onExternalJoinGame(int playerEntityId) { + clientEntityId = playerEntityId; + clientEntityTypes.put(playerEntityId, Entity1_14Types.EntityType.PLAYER); + } +} \ No newline at end of file diff --git a/pom.xml b/pom.xml index 0c04e268..aac471a7 100644 --- a/pom.xml +++ b/pom.xml @@ -60,7 +60,7 @@ us.myles viaversion - 2.0.0-19w09a + 2.1.0 provided From 53d753932fa71405041257efaa513fdc56eab270 Mon Sep 17 00:00:00 2001 From: Marco Neuhaus Date: Wed, 15 May 2019 13:47:10 +0200 Subject: [PATCH 100/171] register protocol --- .../java/nl/matsv/viabackwards/api/ViaBackwardsPlatform.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/src/main/java/nl/matsv/viabackwards/api/ViaBackwardsPlatform.java b/core/src/main/java/nl/matsv/viabackwards/api/ViaBackwardsPlatform.java index 4228b5a1..7594fbd7 100644 --- a/core/src/main/java/nl/matsv/viabackwards/api/ViaBackwardsPlatform.java +++ b/core/src/main/java/nl/matsv/viabackwards/api/ViaBackwardsPlatform.java @@ -20,6 +20,7 @@ import nl.matsv.viabackwards.protocol.protocol1_12to1_12_1.Protocol1_12To1_12_1; import nl.matsv.viabackwards.protocol.protocol1_13_1to1_13_2.Protocol1_13_1To1_13_2; import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.Protocol1_13_2To1_14; import nl.matsv.viabackwards.protocol.protocol1_13to1_13_1.Protocol1_13To1_13_1; +import nl.matsv.viabackwards.protocol.protocol1_14to1_14_1.Protocol1_14To1_14_1; import nl.matsv.viabackwards.protocol.protocol1_9_4to1_10.Protocol1_9_4To1_10; import us.myles.ViaVersion.api.protocol.ProtocolRegistry; import us.myles.ViaVersion.api.protocol.ProtocolVersion; @@ -46,6 +47,7 @@ public interface ViaBackwardsPlatform { ProtocolRegistry.registerProtocol(new Protocol1_13To1_13_1(), Collections.singletonList(ProtocolVersion.v1_13.getId()), ProtocolVersion.v1_13_1.getId()); ProtocolRegistry.registerProtocol(new Protocol1_13_1To1_13_2(), Collections.singletonList(ProtocolVersion.v1_13_1.getId()), ProtocolVersion.v1_13_2.getId()); ProtocolRegistry.registerProtocol(new Protocol1_13_2To1_14(), Collections.singletonList(ProtocolVersion.v1_13_2.getId()), ProtocolVersion.v1_14.getId()); + ProtocolRegistry.registerProtocol(new Protocol1_14To1_14_1(), Collections.singletonList(ProtocolVersion.v1_14.getId()), ProtocolVersion.v1_14_1.getId()); } } From cb396c8534454487883e7ae4230b488e54285ad9 Mon Sep 17 00:00:00 2001 From: Marco Date: Sun, 19 May 2019 16:54:27 +0200 Subject: [PATCH 101/171] fix 1.14.1 --- .../protocol/protocol1_13_2to1_14/data/SoundMapping.java | 2 +- .../protocol/protocol1_14to1_14_1/Protocol1_14To1_14_1.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/SoundMapping.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/SoundMapping.java index 826d070d..356a39f9 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/SoundMapping.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/SoundMapping.java @@ -9,7 +9,7 @@ import java.util.Arrays; import static us.myles.ViaVersion.protocols.protocol1_13to1_12_2.data.MappingData.loadData; public class SoundMapping { - private static short[] sounds = new short[789]; + private static short[] sounds = new short[795]; public static void init() { JsonObject mapping1_13_2 = loadData("mapping-1.13.2.json"); diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14to1_14_1/Protocol1_14To1_14_1.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14to1_14_1/Protocol1_14To1_14_1.java index 44fbe63c..49eb734e 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14to1_14_1/Protocol1_14To1_14_1.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14to1_14_1/Protocol1_14To1_14_1.java @@ -1,9 +1,9 @@ package nl.matsv.viabackwards.protocol.protocol1_14to1_14_1; import nl.matsv.viabackwards.api.BackwardsProtocol; +import nl.matsv.viabackwards.protocol.protocol1_14to1_14_1.packets.EntityPackets; +import nl.matsv.viabackwards.protocol.protocol1_14to1_14_1.storage.EntityTracker; import us.myles.ViaVersion.api.data.UserConnection; -import us.myles.ViaVersion.protocols.protocol1_14_1to1_14.packets.EntityPackets; -import us.myles.ViaVersion.protocols.protocol1_14_1to1_14.storage.EntityTracker; /** * Created by Marco Neuhaus on 15.05.2019 for the Project ViaBackwardsFoorcee. From 3706b728556a64f272907a7274c80065539cea50 Mon Sep 17 00:00:00 2001 From: Marco Date: Sun, 19 May 2019 19:15:50 +0200 Subject: [PATCH 102/171] update 1.13.2 -> 1.14 Packet Ids --- .../Protocol1_13_2To1_14.java | 156 +++++++++++------- .../packets/BlockItemPackets1_14.java | 26 +-- .../packets/EntityPackets1_14.java | 25 ++- .../packets/PlayerPackets1_14.java | 14 +- .../packets/SoundPackets1_14.java | 2 +- 5 files changed, 141 insertions(+), 82 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java index b37a2a7a..6440bd70 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java @@ -35,72 +35,62 @@ public class Protocol1_13_2To1_14 extends BackwardsProtocol { new PlayerPackets1_14().register(this); new SoundPackets1_14().register(this); - out(State.PLAY, 0x2E, 0x2D); // c - out(State.PLAY, 0x2F, 0x2E); // c - out(State.PLAY, 0x30, 0x2F); // c - out(State.PLAY, 0x31, 0x30); // c - out(State.PLAY, 0x32, 0x31); // c - out(State.PLAY, 0x33, 0x32); // c - // Entity sound - out(State.PLAY, 0x4E, -1, new PacketRemapper() { - @Override - public void registerMap() { // c - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper packetWrapper) throws Exception { - packetWrapper.cancel(); // todo - } - }); - } - }); + registerOutgoing(State.PLAY, 0x15, 0x16); - //Unknown packet added in 19w11a - 0x02 - registerIncoming(State.PLAY, 0x03, 0x02); // r - registerIncoming(State.PLAY, 0x04, 0x03); // r - registerIncoming(State.PLAY, 0x05, 0x04); // r - registerIncoming(State.PLAY, 0x06, 0x05); // r - registerIncoming(State.PLAY, 0x07, 0x06); // r - registerIncoming(State.PLAY, 0x08, 0x07); // r + registerOutgoing(State.PLAY, 0x17, 0x18); - registerIncoming(State.PLAY, 0x0A, 0x09); // r - registerIncoming(State.PLAY, 0x0B, 0x0A); // r + registerOutgoing(State.PLAY, 0x19, 0x1A); + registerOutgoing(State.PLAY, 0x1A, 0x1B); + registerOutgoing(State.PLAY, 0x1B, 0x1C); + registerOutgoing(State.PLAY, 0x54, 0x1D); + registerOutgoing(State.PLAY, 0x1C, 0x1E); + registerOutgoing(State.PLAY, 0x1D, 0x1F); + registerOutgoing(State.PLAY, 0x1E, 0x20); + registerOutgoing(State.PLAY, 0x20, 0x21); - registerIncoming(State.PLAY, 0x0D, 0x0C); // r - registerIncoming(State.PLAY, 0x0E, 0x0D); // r - //Unknown packet added in 19w11a - 0x0F - registerIncoming(State.PLAY, 0x10, 0x0E); // r - registerIncoming(State.PLAY, 0x11, 0x0F); // r - registerIncoming(State.PLAY, 0x12, 0x10); // r - registerIncoming(State.PLAY, 0x13, 0x11); // r - registerIncoming(State.PLAY, 0x14, 0x12); // r - registerIncoming(State.PLAY, 0x15, 0x13); // r - registerIncoming(State.PLAY, 0x16, 0x14); // r - registerIncoming(State.PLAY, 0x17, 0x15); // r - registerIncoming(State.PLAY, 0x18, 0x16); // r - registerIncoming(State.PLAY, 0x19, 0x17); // r + registerOutgoing(State.PLAY, 0x2B, 0x27); - registerIncoming(State.PLAY, 0x1B, 0x19); // r - registerIncoming(State.PLAY, 0x1C, 0x1A); // r + registerOutgoing(State.PLAY, 0x2C, 0x2B); - registerIncoming(State.PLAY, 0x1E, 0x1C); // r - registerIncoming(State.PLAY, 0x1F, 0x1D); // r - registerIncoming(State.PLAY, 0x20, 0x1E); // r - registerIncoming(State.PLAY, 0x21, 0x1F); // r - registerIncoming(State.PLAY, 0x22, 0x20); // r - registerIncoming(State.PLAY, 0x23, 0x21); // r + registerOutgoing(State.PLAY, 0x30, 0x2D); + registerOutgoing(State.PLAY, 0x31, 0x2E); + registerOutgoing(State.PLAY, 0x32, 0x2F); + registerOutgoing(State.PLAY, 0x33, 0x30); + registerOutgoing(State.PLAY, 0x34, 0x31); + // Position and look + registerOutgoing(State.PLAY, 0x35, 0x32); - registerIncoming(State.PLAY, 0x25, 0x23); // r + registerOutgoing(State.PLAY, 0x36, 0x34); - registerIncoming(State.PLAY, 0x29, 0x27); // r - registerIncoming(State.PLAY, 0x2A, 0x28); // r + registerOutgoing(State.PLAY, 0x38, 0x36); + registerOutgoing(State.PLAY, 0x39, 0x37); - registerIncoming(State.PLAY, 0x2C, 0x2A); // r + registerOutgoing(State.PLAY, 0x3B, 0x39); + registerOutgoing(State.PLAY, 0x3C, 0x3A); + registerOutgoing(State.PLAY, 0x3D, 0x3B); + registerOutgoing(State.PLAY, 0x3E, 0x3C); + registerOutgoing(State.PLAY, 0x3F, 0x3D); + registerOutgoing(State.PLAY, 0x42, 0x3E); - registerOutgoing(State.PLAY, 0x4F, 0x4E); // c - registerOutgoing(State.PLAY, 0x50, 0x4F); // c - registerOutgoing(State.PLAY, 0x51, 0x50); // c + registerOutgoing(State.PLAY, 0x44, 0x40); + registerOutgoing(State.PLAY, 0x45, 0x41); - registerOutgoing(State.PLAY, 0x52, 0x51, new PacketRemapper() { // c + registerOutgoing(State.PLAY, 0x47, 0x43); + registerOutgoing(State.PLAY, 0x48, 0x44); + registerOutgoing(State.PLAY, 0x49, 0x45); + registerOutgoing(State.PLAY, 0x4A, 0x46); + registerOutgoing(State.PLAY, 0x4B, 0x47); + registerOutgoing(State.PLAY, 0x4C, 0x48); + + registerOutgoing(State.PLAY, 0x4E, 0x4A); + registerOutgoing(State.PLAY, 0x4F, 0x4B); + registerOutgoing(State.PLAY, 0x52, 0x4C); + + registerOutgoing(State.PLAY, 0x53, 0x4E); // c + registerOutgoing(State.PLAY, 0x55, 0x4F); // c + registerOutgoing(State.PLAY, 0x56, 0x50); // c + + registerOutgoing(State.PLAY, 0x57, 0x51, new PacketRemapper() { // c @Override public void registerMap() { handler(new PacketHandler() { @@ -141,11 +131,11 @@ public class Protocol1_13_2To1_14 extends BackwardsProtocol { } }); - registerOutgoing(State.PLAY, 0x53, 0x52); // c - registerOutgoing(State.PLAY, 0x54, 0x53); // c + registerOutgoing(State.PLAY, 0x58, 0x52); // c + registerOutgoing(State.PLAY, 0x59, 0x53); // c // tags - registerOutgoing(State.PLAY, 0x56, 0x55, new PacketRemapper() { + registerOutgoing(State.PLAY, 0x5B, 0x55, new PacketRemapper() { @Override public void registerMap() { // c handler(new PacketHandler() { @@ -187,7 +177,7 @@ public class Protocol1_13_2To1_14 extends BackwardsProtocol { // Light update - out(State.PLAY, 0x57, -1, new PacketRemapper() { + out(State.PLAY, 0x24, -1, new PacketRemapper() { @Override public void registerMap() { handler(new PacketHandler() { @@ -198,6 +188,52 @@ public class Protocol1_13_2To1_14 extends BackwardsProtocol { }); } }); + + + + //Incomming + + //Unknown packet added in 19w11a - 0x02 + registerIncoming(State.PLAY, 0x03, 0x02); // r + registerIncoming(State.PLAY, 0x04, 0x03); // r + registerIncoming(State.PLAY, 0x05, 0x04); // r + registerIncoming(State.PLAY, 0x06, 0x05); // r + registerIncoming(State.PLAY, 0x07, 0x06); // r + registerIncoming(State.PLAY, 0x08, 0x07); // r + + registerIncoming(State.PLAY, 0x0A, 0x09); // r + registerIncoming(State.PLAY, 0x0B, 0x0A); // r + + registerIncoming(State.PLAY, 0x0D, 0x0C); // r + registerIncoming(State.PLAY, 0x0E, 0x0D); // r + //Unknown packet added in 19w11a - 0x0F + registerIncoming(State.PLAY, 0x0F, 0x0E); // r + registerIncoming(State.PLAY, 0x11, 0x10); // r + registerIncoming(State.PLAY, 0x12, 0x11); // r + registerIncoming(State.PLAY, 0x13, 0x12); // r + registerIncoming(State.PLAY, 0x14, 0xF0); // r + registerIncoming(State.PLAY, 0x15, 0x13); // r + registerIncoming(State.PLAY, 0x16, 0x14); // r + registerIncoming(State.PLAY, 0x17, 0x15); // r + registerIncoming(State.PLAY, 0x18, 0x16); // r + registerIncoming(State.PLAY, 0x19, 0x17); // r + + registerIncoming(State.PLAY, 0x1B, 0x19); // r + registerIncoming(State.PLAY, 0x1C, 0x1A); // r + + registerIncoming(State.PLAY, 0x1E, 0x1C); // r + registerIncoming(State.PLAY, 0x1F, 0x1D); // r + registerIncoming(State.PLAY, 0x20, 0x1E); // r +// registerIncoming(State.PLAY, 0x21, 0x1F); // r TDO fix + registerIncoming(State.PLAY, 0x22, 0x20); // r + registerIncoming(State.PLAY, 0x23, 0x21); // r + + registerIncoming(State.PLAY, 0x25, 0x23); // r + +// registerIncoming(State.PLAY, 0x29, 0x27); // r + registerIncoming(State.PLAY, 0x2A, 0x27); // r + registerIncoming(State.PLAY, 0x2B, 0x28); // r + registerIncoming(State.PLAY, 0x2D, 0x2A); // r } public static int getNewBlockStateId(int id) { diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java index c5d7b9fa..10b7ea01 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java @@ -34,7 +34,7 @@ public class BlockItemPackets1_14 extends BlockItemRewriter removedTypes = ImmutableSet.of("crafting_special_suspiciousstew", "blasting", "smoking", "campfire_cooking", "stonecutting"); // Declare Recipes - protocol.registerOutgoing(State.PLAY, 0x55, 0x54, new PacketRemapper() { // c + protocol.registerOutgoing(State.PLAY, 0x5A, 0x54, new PacketRemapper() { // c @Override public void registerMap() { handler(new PacketHandler() { @@ -403,7 +403,7 @@ public class BlockItemPackets1_14 extends BlockItemRewriter { @@ -212,9 +218,24 @@ public class EntityPackets1_14 extends EntityRewriter { } }); + // Destroy entities + protocol.registerOutgoing(State.PLAY, 0x37, 0x35, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT_ARRAY); // 0 - Entity IDS + + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + for (int entity : wrapper.get(Type.VAR_INT_ARRAY, 0)) + wrapper.user().get(EntityTracker.class).removeEntity(entity); + } + }); + } + }); // Metadata packet - protocol.registerOutgoing(State.PLAY, 0x3F, 0x3F, new PacketRemapper() { + protocol.registerOutgoing(State.PLAY, 0x43, 0x3F, new PacketRemapper() { @Override public void registerMap() { map(Type.VAR_INT); // 0 - Entity ID @@ -258,6 +279,8 @@ public class EntityPackets1_14 extends EntityRewriter { addTrackedEntity(wrapper.user(), entityId, EntityType1_14.EntityType.PLAYER); wrapper.write(Type.UNSIGNED_BYTE, (short) 0); + + wrapper.read(Type.VAR_INT); //Read View Distance } }); } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/PlayerPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/PlayerPackets1_14.java index d3a7404c..b9cc6a5e 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/PlayerPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/PlayerPackets1_14.java @@ -23,7 +23,7 @@ public class PlayerPackets1_14 extends Rewriter { }); // Open Sign Editor - protocol.registerOutgoing(State.PLAY, 0x2D, 0x2C, new PacketRemapper() { // c + protocol.registerOutgoing(State.PLAY, 0x2F, 0x2C, new PacketRemapper() { // c @Override public void registerMap() { map(Type.POSITION1_14, Type.POSITION); @@ -40,7 +40,7 @@ public class PlayerPackets1_14 extends Rewriter { }); // Edit Book - protocol.registerIncoming(State.PLAY, 0x0c, 0x0B, new PacketRemapper() { + protocol.registerIncoming(State.PLAY, 0x0C, 0x0B, new PacketRemapper() { @Override public void registerMap() { handler(new PacketHandler() { @@ -53,7 +53,7 @@ public class PlayerPackets1_14 extends Rewriter { }); // Player Digging - protocol.registerIncoming(State.PLAY, 0x1a, 0x18, new PacketRemapper() { + protocol.registerIncoming(State.PLAY, 0x1A, 0x18, new PacketRemapper() { @Override public void registerMap() { map(Type.VAR_INT); @@ -63,7 +63,7 @@ public class PlayerPackets1_14 extends Rewriter { }); // Recipe Book Data - protocol.registerIncoming(State.PLAY, 0x1d, 0x1B, new PacketRemapper() { + protocol.registerIncoming(State.PLAY, 0x1D, 0x1B, new PacketRemapper() { @Override public void registerMap() { map(Type.VAR_INT); @@ -99,7 +99,7 @@ public class PlayerPackets1_14 extends Rewriter { }); // Update Structure Block - protocol.registerIncoming(State.PLAY, 0x27, 0x25, new PacketRemapper() { + protocol.registerIncoming(State.PLAY, 0x28, 0x25, new PacketRemapper() { @Override public void registerMap() { map(Type.POSITION, Type.POSITION1_14); @@ -107,7 +107,7 @@ public class PlayerPackets1_14 extends Rewriter { }); // Update Sign - protocol.registerIncoming(State.PLAY, 0x28, 0x26, new PacketRemapper() { + protocol.registerIncoming(State.PLAY, 0x29, 0x26, new PacketRemapper() { @Override public void registerMap() { map(Type.POSITION, Type.POSITION1_14); @@ -115,7 +115,7 @@ public class PlayerPackets1_14 extends Rewriter { }); // Player Block Placement - protocol.registerIncoming(State.PLAY, 0x2b, 0x29, new PacketRemapper() { + protocol.registerIncoming(State.PLAY, 0x2C, 0x29, new PacketRemapper() { @Override public void registerMap() { handler(new PacketHandler() { diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/SoundPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/SoundPackets1_14.java index 5e803edb..ff20187e 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/SoundPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/SoundPackets1_14.java @@ -13,7 +13,7 @@ public class SoundPackets1_14 extends Rewriter { @Override protected void registerPackets(Protocol1_13_2To1_14 protocol) { // Sound Effect - protocol.registerOutgoing(State.PLAY, 0x4D, 0x4D, new PacketRemapper() { + protocol.registerOutgoing(State.PLAY, 0x51, 0x4D, new PacketRemapper() { @Override public void registerMap() { map(Type.VAR_INT); // Sound Id From 2c66e21268d061d584341d0587e766f9ddead42e Mon Sep 17 00:00:00 2001 From: Marco Date: Sun, 19 May 2019 20:47:05 +0200 Subject: [PATCH 103/171] fix more problems --- .../Protocol1_13_2To1_14.java | 27 +++++++++++++++++++ .../packets/BlockItemPackets1_14.java | 12 +++++++-- .../packets/EntityPackets1_14.java | 13 +++++---- 3 files changed, 45 insertions(+), 7 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java index 6440bd70..6c29383f 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java @@ -39,6 +39,8 @@ public class Protocol1_13_2To1_14 extends BackwardsProtocol { registerOutgoing(State.PLAY, 0x17, 0x18); + registerOutgoing(State.PLAY, 0x18, 0x19); + registerOutgoing(State.PLAY, 0x19, 0x1A); registerOutgoing(State.PLAY, 0x1A, 0x1B); registerOutgoing(State.PLAY, 0x1B, 0x1C); @@ -90,6 +92,31 @@ public class Protocol1_13_2To1_14 extends BackwardsProtocol { registerOutgoing(State.PLAY, 0x55, 0x4F); // c registerOutgoing(State.PLAY, 0x56, 0x50); // c + //Update View Position + registerOutgoing(State.PLAY, 0x40, -1, new PacketRemapper() { + @Override + public void registerMap() { + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper packetWrapper) throws Exception { + packetWrapper.cancel(); + } + }); + } + }); + //Update View Distance + registerOutgoing(State.PLAY, 0x41, -1, new PacketRemapper() { + @Override + public void registerMap() { + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper packetWrapper) throws Exception { + packetWrapper.cancel(); + } + }); + } + }); + registerOutgoing(State.PLAY, 0x57, 0x51, new PacketRemapper() { // c @Override public void registerMap() { diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java index 10b7ea01..deb5f193 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java @@ -26,11 +26,18 @@ import us.myles.viaversion.libs.opennbt.tag.builtin.ListTag; import us.myles.viaversion.libs.opennbt.tag.builtin.StringTag; import us.myles.viaversion.libs.opennbt.tag.builtin.Tag; +import java.util.Arrays; import java.util.Set; public class BlockItemPackets1_14 extends BlockItemRewriter { private static String NBT_TAG_NAME = "ViaBackwards|" + Protocol1_13_2To1_14.class.getSimpleName(); + private static byte[] fullLight = new byte[2048]; + + static { + Arrays.fill(fullLight, (byte) 0xFF); + } + @Override protected void registerPackets(Protocol1_13_2To1_14 protocol) { // Open window @@ -415,9 +422,10 @@ public class BlockItemPackets1_14 extends BlockItemRewriter { @Override public void handle(PacketWrapper wrapper) throws Exception { for (int entity : wrapper.get(Type.VAR_INT_ARRAY, 0)) - wrapper.user().get(EntityTracker.class).removeEntity(entity); + wrapper.user().get(EntityTracker.class).get(protocol).removeEntity(entity); } }); } @@ -280,6 +280,8 @@ public class EntityPackets1_14 extends EntityRewriter { wrapper.write(Type.UNSIGNED_BYTE, (short) 0); + wrapper.passthrough(Type.UNSIGNED_BYTE); // Max Players + wrapper.passthrough(Type.STRING); // Level Type wrapper.read(Type.VAR_INT); //Read View Distance } }); @@ -313,9 +315,10 @@ public class EntityPackets1_14 extends EntityRewriter { if (e.getIndex() > 6) e.getData().setId(e.getIndex() - 1); return e.getData(); }); - registerMetaHandler().filter(EntityType1_14.EntityType.CAT, 13).removed(); - registerMetaHandler().filter(EntityType1_14.EntityType.CAT, 14).removed(); - registerMetaHandler().filter(EntityType1_14.EntityType.CAT, 15).removed(); + registerMetaHandler().filter(EntityType1_14.EntityType.CAT, 17).removed(); + registerMetaHandler().filter(EntityType1_14.EntityType.CAT, 18).removed(); + registerMetaHandler().filter(EntityType1_14.EntityType.CAT, 19).removed(); + registerMetaHandler().filter(EntityType1_14.EntityType.CAT, 20).removed(); // Villager data -> var int registerMetaHandler().handle(e -> { if (e.getData().getValue() instanceof VillagerData) { From 4493f1c3a6a4d217aa6c7017aa81ff721f7d5eca Mon Sep 17 00:00:00 2001 From: Marco Neuhaus Date: Mon, 20 May 2019 21:51:45 +0200 Subject: [PATCH 104/171] fix spawn object --- .../api/entities/types/EntityType1_13.java | 7 ++++ .../api/entities/types/EntityType1_14.java | 1 + .../Protocol1_13_2To1_14.java | 2 +- .../packets/EntityPackets1_14.java | 33 +++++++++++-------- 4 files changed, 28 insertions(+), 15 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/api/entities/types/EntityType1_13.java b/core/src/main/java/nl/matsv/viabackwards/api/entities/types/EntityType1_13.java index 3b7b1a95..d5a1c93e 100644 --- a/core/src/main/java/nl/matsv/viabackwards/api/entities/types/EntityType1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/api/entities/types/EntityType1_13.java @@ -307,5 +307,12 @@ public class EntityType1_13 { return output.map(ObjectType::getType); } + + public static Optional fromEntityType(EntityType type){ + for (ObjectType ent : ObjectType.values()) + if (ent.getType() == type) + return Optional.of(ent); + return Optional.empty(); + } } } diff --git a/core/src/main/java/nl/matsv/viabackwards/api/entities/types/EntityType1_14.java b/core/src/main/java/nl/matsv/viabackwards/api/entities/types/EntityType1_14.java index df97e3a1..3ea747ea 100644 --- a/core/src/main/java/nl/matsv/viabackwards/api/entities/types/EntityType1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/api/entities/types/EntityType1_14.java @@ -59,6 +59,7 @@ public class EntityType1_14 { CHICKEN(8, ABSTRACT_ANIMAL), COW(10, ABSTRACT_ANIMAL), MOOSHROOM(49, COW), + PANDA(52, ABSTRACT_INSENTIENT), PIG(54, ABSTRACT_ANIMAL), POLAR_BEAR(57, ABSTRACT_ANIMAL), RABBIT(59, ABSTRACT_ANIMAL), diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java index 6c29383f..5bccd61a 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java @@ -238,7 +238,7 @@ public class Protocol1_13_2To1_14 extends BackwardsProtocol { registerIncoming(State.PLAY, 0x11, 0x10); // r registerIncoming(State.PLAY, 0x12, 0x11); // r registerIncoming(State.PLAY, 0x13, 0x12); // r - registerIncoming(State.PLAY, 0x14, 0xF0); // r + registerIncoming(State.PLAY, 0x14, 0x0F); // r registerIncoming(State.PLAY, 0x15, 0x13); // r registerIncoming(State.PLAY, 0x16, 0x14); // r registerIncoming(State.PLAY, 0x17, 0x15); // r diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java index 5bba4d29..39cf3c1e 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java @@ -2,7 +2,6 @@ package nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.packets; import nl.matsv.viabackwards.ViaBackwards; import nl.matsv.viabackwards.api.entities.storage.EntityData; -import nl.matsv.viabackwards.api.entities.storage.EntityTracker; import nl.matsv.viabackwards.api.entities.storage.MetaStorage; import nl.matsv.viabackwards.api.entities.types.AbstractEntityType; import nl.matsv.viabackwards.api.entities.types.EntityType1_13; @@ -12,24 +11,17 @@ import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.packets.BlockItemPack import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.Protocol1_13_2To1_14; import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.data.EntityTypeMapping; import us.myles.ViaVersion.api.PacketWrapper; -import us.myles.ViaVersion.api.minecraft.Position; import us.myles.ViaVersion.api.minecraft.VillagerData; import us.myles.ViaVersion.api.minecraft.item.Item; -import us.myles.ViaVersion.api.minecraft.metadata.Metadata; import us.myles.ViaVersion.api.minecraft.metadata.types.MetaType1_13_2; -import us.myles.ViaVersion.api.minecraft.metadata.types.MetaType1_14; import us.myles.ViaVersion.api.remapper.PacketHandler; import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.api.type.Type; -import us.myles.ViaVersion.api.type.types.version.Types1_12; import us.myles.ViaVersion.api.type.types.version.Types1_13_2; import us.myles.ViaVersion.api.type.types.version.Types1_14; import us.myles.ViaVersion.packets.State; -import us.myles.ViaVersion.protocols.protocol1_14to1_13_2.MetadataRewriter; import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; -import java.util.LinkedList; -import java.util.List; import java.util.Optional; public class EntityPackets1_14 extends EntityRewriter { @@ -68,10 +60,9 @@ public class EntityPackets1_14 extends EntityRewriter { handler(new PacketHandler() { @Override public void handle(PacketWrapper wrapper) throws Exception { - Optional type = EntityType1_13.ObjectType.findById(EntityTypeMapping.getObjectId( - EntityTypeMapping.getOldId(wrapper.get(Type.BYTE, 0)) - .orElse(0) - ).orElse(0)); + int id = wrapper.get(Type.BYTE, 0); + EntityType1_13.EntityType entityType = EntityType1_13.getTypeFromId(EntityTypeMapping.getOldId(id).orElse(id), false); + Optional type = EntityType1_13.ObjectType.fromEntityType(entityType); if (type.isPresent()) { wrapper.set(Type.BYTE, 0, (byte) type.get().getId()); } @@ -228,7 +219,7 @@ public class EntityPackets1_14 extends EntityRewriter { @Override public void handle(PacketWrapper wrapper) throws Exception { for (int entity : wrapper.get(Type.VAR_INT_ARRAY, 0)) - wrapper.user().get(EntityTracker.class).get(protocol).removeEntity(entity); + getEntityTracker(wrapper.user()).removeEntity(entity); } }); } @@ -292,10 +283,24 @@ public class EntityPackets1_14 extends EntityRewriter { @Override protected void registerRewrites() { regEntType(EntityType1_14.EntityType.CAT, EntityType1_14.EntityType.OCELOT).mobName("Cat").spawnMetadata(e -> { - e.add(new Metadata(13, MetaType1_13_2.Byte, (byte) 0x4)); // Tamed cat + // e.add(new Metadata(13, MetaType1_13_2.Byte, (byte) 0x4)); // Tamed cat }); regEntType(EntityType1_14.EntityType.OCELOT, EntityType1_14.EntityType.OCELOT).mobName("Ocelot"); regEntType(EntityType1_14.EntityType.TRADER_LLAMA, EntityType1_14.EntityType.LLAMA).mobName("Trader Llama"); + regEntType(EntityType1_14.EntityType.FOX, EntityType1_14.EntityType.WOLF).mobName("Fox"); + regEntType(EntityType1_14.EntityType.PANDA, EntityType1_14.EntityType.POLAR_BEAR).mobName("Panda"); + + registerMetaHandler().filter(EntityType1_14.EntityType.FOX, 15).removed(); + registerMetaHandler().filter(EntityType1_14.EntityType.FOX, 16).removed(); + registerMetaHandler().filter(EntityType1_14.EntityType.FOX, 17).removed(); + registerMetaHandler().filter(EntityType1_14.EntityType.FOX, 18).removed(); + + registerMetaHandler().filter(EntityType1_14.EntityType.PANDA, 15).removed(); + registerMetaHandler().filter(EntityType1_14.EntityType.PANDA, 16).removed(); + registerMetaHandler().filter(EntityType1_14.EntityType.PANDA, 17).removed(); + registerMetaHandler().filter(EntityType1_14.EntityType.PANDA, 18).removed(); + registerMetaHandler().filter(EntityType1_14.EntityType.PANDA, 19).removed(); + registerMetaHandler().filter(EntityType1_14.EntityType.PANDA, 20).removed(); registerMetaHandler().handle(e -> { if (e.getData().getMetaType().getTypeID() == 6) { // Slot From 028350de3e061ba5517f97a9f15ce018c9d62ace Mon Sep 17 00:00:00 2001 From: Marco Neuhaus Date: Mon, 20 May 2019 22:08:08 +0200 Subject: [PATCH 105/171] fix arrows --- .../packets/EntityPackets1_14.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java index 39cf3c1e..eebccd4a 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java @@ -5,6 +5,7 @@ import nl.matsv.viabackwards.api.entities.storage.EntityData; import nl.matsv.viabackwards.api.entities.storage.MetaStorage; import nl.matsv.viabackwards.api.entities.types.AbstractEntityType; import nl.matsv.viabackwards.api.entities.types.EntityType1_13; +import nl.matsv.viabackwards.api.entities.types.EntityType1_13.EntityType; import nl.matsv.viabackwards.api.entities.types.EntityType1_14; import nl.matsv.viabackwards.api.rewriters.EntityRewriter; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.packets.BlockItemPackets1_13; @@ -13,6 +14,7 @@ import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.data.EntityTypeMappin import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.minecraft.VillagerData; import us.myles.ViaVersion.api.minecraft.item.Item; +import us.myles.ViaVersion.api.minecraft.metadata.Metadata; import us.myles.ViaVersion.api.minecraft.metadata.types.MetaType1_13_2; import us.myles.ViaVersion.api.remapper.PacketHandler; import us.myles.ViaVersion.api.remapper.PacketRemapper; @@ -326,6 +328,16 @@ public class EntityPackets1_14 extends EntityRewriter { registerMetaHandler().filter(EntityType1_14.EntityType.CAT, 20).removed(); // Villager data -> var int registerMetaHandler().handle(e -> { + EntityType type = (EntityType) e.getEntity().getType(); + Metadata metadata = e.getData(); + if(e.getData().getId() > 6){ + e.getData().setValue(e.getData().getId() - 1); + } + if(type.isOrHasParent(EntityType.ABSTRACT_ARROW)){ + if (metadata.getId() >= 10) { // New piercing + metadata.setId(metadata.getId() - 1); + } + } if (e.getData().getValue() instanceof VillagerData) { e.getData().setMetaType(MetaType1_13_2.VarInt); e.getData().setValue(villagerDataToProfession(((VillagerData) e.getData().getValue()))); From 0bb4539d57023c6dc57b183e532529ca3afd0bc6 Mon Sep 17 00:00:00 2001 From: Marco Date: Tue, 21 May 2019 16:33:23 +0200 Subject: [PATCH 106/171] first metadata rewriting --- .../packets/EntityPackets1_14.java | 110 +++++++++++++++++- 1 file changed, 108 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java index eebccd4a..fdb394c7 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java @@ -12,16 +12,21 @@ import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.packets.BlockItemPack import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.Protocol1_13_2To1_14; import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.data.EntityTypeMapping; import us.myles.ViaVersion.api.PacketWrapper; +import us.myles.ViaVersion.api.entities.Entity1_14Types; import us.myles.ViaVersion.api.minecraft.VillagerData; import us.myles.ViaVersion.api.minecraft.item.Item; import us.myles.ViaVersion.api.minecraft.metadata.Metadata; import us.myles.ViaVersion.api.minecraft.metadata.types.MetaType1_13_2; +import us.myles.ViaVersion.api.minecraft.metadata.types.MetaType1_14; import us.myles.ViaVersion.api.remapper.PacketHandler; import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.api.type.Type; import us.myles.ViaVersion.api.type.types.version.Types1_13_2; import us.myles.ViaVersion.api.type.types.version.Types1_14; import us.myles.ViaVersion.packets.State; +import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.data.Particle; +import us.myles.ViaVersion.protocols.protocol1_14to1_13_2.Protocol1_14To1_13_2; +import us.myles.ViaVersion.protocols.protocol1_14to1_13_2.packets.InventoryPackets; import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; import java.util.Optional; @@ -333,11 +338,93 @@ public class EntityPackets1_14 extends EntityRewriter { if(e.getData().getId() > 6){ e.getData().setValue(e.getData().getId() - 1); } - if(type.isOrHasParent(EntityType.ABSTRACT_ARROW)){ - if (metadata.getId() >= 10) { // New piercing + + //Metadata 12 added to living_entity + if (metadata.getId() > 12 && type.isOrHasParent(EntityType.LIVINGENTITY)) { + metadata.setId(metadata.getId() - 1); + } + if (type.isOrHasParent(EntityType.ABSTRACT_INSENTIENT)) { //TODO + if (metadata.getId() == 13) { + tracker.setInsentientData(entityId, (byte) ((((Number) metadata.getValue()).byteValue() & ~0x4) + | (tracker.getInsentientData(entityId) & 0x4))); // New attacking metadata + metadata.setValue(tracker.getInsentientData(entityId)); + } + } + + if (type.isOrHasParent(EntityType.PLAYER)) { //TODO + if (entityId != e.getEntity().getClientEntityId()) { + if (metadata.getId() == 0) { + byte flags = ((Number) metadata.getValue()).byteValue(); + // Mojang overrides the client-side pose updater, see OtherPlayerEntity#updateSize + tracker.setEntityFlags(entityId, flags); + } else if (metadata.getId() == 7) { + tracker.setRiptide(entityId, (((Number) metadata.getValue()).byteValue() & 0x4) != 0); + } + if (metadata.getId() == 0 || metadata.getId() == 7) { + metadatas.add(new Metadata(6, MetaType1_14.Pose, recalculatePlayerPose(entityId, tracker))); + } + } + } else if (type.isOrHasParent(EntityType.ZOMBIE)) { //TODO + if (metadata.getId() == 16) { + tracker.setInsentientData(entityId, (byte) ((tracker.getInsentientData(entityId) & ~0x4) + | ((boolean) metadata.getValue() ? 0x4 : 0))); // New attacking + metadatas.remove(metadata); // "Are hands held up" + metadatas.add(new Metadata(13, MetaType1_14.Byte, tracker.getInsentientData(entityId))); + } else if (metadata.getId() > 16) { metadata.setId(metadata.getId() - 1); } } + if (type.isOrHasParent(EntityType.MINECART_ABSTRACT)) { + if (metadata.getId() == 10) { + // New block format + int data = (int) metadata.getValue(); + metadata.setValue(Protocol1_13_2To1_14.getNewBlockStateId(data)); + } + } else if (type.is(EntityType.HORSE)) { //TODO + if (metadata.getId() == 18) { + metadatas.remove(metadata); + + int armorType = (int) metadata.getValue(); + Item armorItem = null; + if (armorType == 1) { //iron armor + armorItem = new Item(InventoryPackets.getNewItemId(727), (byte) 1, (short) 0, null); + } else if (armorType == 2) { //gold armor + armorItem = new Item(InventoryPackets.getNewItemId(728), (byte) 1, (short) 0, null); + } else if (armorType == 3) { //diamond armor + armorItem = new Item(InventoryPackets.getNewItemId(729), (byte) 1, (short) 0, null); + } + + PacketWrapper equipmentPacket = new PacketWrapper(0x46, null, connection); + equipmentPacket.write(Type.VAR_INT, entityId); + equipmentPacket.write(Type.VAR_INT, 4); + equipmentPacket.write(Type.FLAT_VAR_INT_ITEM, armorItem); + equipmentPacket.send(Protocol1_14To1_13_2.class); + } + } else if(type.isOrHasParent(EntityType.ABSTRACT_ARROW)){ + if (metadata.getId() >= 10) { // New piercing + metadata.setId(metadata.getId() - 1); + } + } else if (type.is(EntityType.FIREWORKS_ROCKET)) { //TODO + if (metadata.getId() == 8) { + if (metadata.getValue().equals(0)) + metadata.setValue(null); // https://bugs.mojang.com/browse/MC-111480 + metadata.setMetaType(MetaType1_14.OptVarInt); + } + } else if (type.isOrHasParent(EntityType.ABSTRACT_SKELETON)) { //TODO + if (metadata.getId() == 14) { + tracker.setInsentientData(entityId, (byte) ((tracker.getInsentientData(entityId) & ~0x4) + | ((boolean) metadata.getValue() ? 0x4 : 0))); // New attacking + metadatas.remove(metadata); // "Is swinging arms" + metadatas.add(new Metadata(13, MetaType1_14.Byte, tracker.getInsentientData(entityId))); + } + } else if (type.is(EntityType.AREA_EFFECT_CLOUD)) { + if (metadata.getId() == 10) { + Particle particle = (Particle) metadata.getValue(); + particle.setId(getOldParticleId(particle.getId())); + } + } + + if (e.getData().getValue() instanceof VillagerData) { e.getData().setMetaType(MetaType1_13_2.VarInt); e.getData().setValue(villagerDataToProfession(((VillagerData) e.getData().getValue()))); @@ -372,4 +459,23 @@ public class EntityPackets1_14 extends EntityRewriter { return 5; // Nitwit } } + + public static int getOldParticleId(int id) { + if (id >= 12) { + id -= 2; // new lava drips 10, 11 + } + if (id >= 14) { + id -= 1; // new water drip 11 -> 13 + } + if (id >= 28) { + id -= 1; // new 24 -> 27 + } + if (id >= 30) { + id -= 1; // skip new short happy villager + } + if (id >= 45) { + id -= 1; // new 39 -> 44 + } + return id; + } } From 1911bc55cd89234b8c63b141a9131c72eea5dd3e Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Tue, 21 May 2019 17:19:49 +0200 Subject: [PATCH 107/171] =?UTF-8?q?further=20work=20on=201.14=20metadata?= =?UTF-8?q?=20=F0=9F=93=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Protocol1_13_2To1_14.java | 16 +- .../packets/EntityPackets1_14.java | 207 ++++++++---------- .../packets/PlayerPackets1_14.java | 2 +- 3 files changed, 106 insertions(+), 119 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java index 5bccd61a..91abf59d 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java @@ -1,5 +1,6 @@ package nl.matsv.viabackwards.protocol.protocol1_13_2to1_14; +import lombok.Getter; import nl.matsv.viabackwards.ViaBackwards; import nl.matsv.viabackwards.api.BackwardsProtocol; import nl.matsv.viabackwards.api.entities.storage.EntityTracker; @@ -17,9 +18,10 @@ import us.myles.ViaVersion.api.type.Type; import us.myles.ViaVersion.packets.State; import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; +@Getter public class Protocol1_13_2To1_14 extends BackwardsProtocol { - public static BlockItemPackets1_14 blockItem; - public static EntityPackets1_14 entity; + private BlockItemPackets1_14 blockItemPackets; + private EntityPackets1_14 entityPacket; static { BackwardsMappings.init(); @@ -28,10 +30,10 @@ public class Protocol1_13_2To1_14 extends BackwardsProtocol { @Override protected void registerPackets() { - blockItem = new BlockItemPackets1_14(); - blockItem.register(this); - entity = new EntityPackets1_14(); - entity.register(this); + blockItemPackets = new BlockItemPackets1_14(); + blockItemPackets.register(this); + entityPacket = new EntityPackets1_14(); + entityPacket.register(this); new PlayerPackets1_14().register(this); new SoundPackets1_14().register(this); @@ -137,7 +139,7 @@ public class Protocol1_13_2To1_14 extends BackwardsProtocol { if (wrapper.passthrough(Type.BOOLEAN)) { wrapper.passthrough(Type.STRING); // Title wrapper.passthrough(Type.STRING); // Description - blockItem.handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Icon + blockItemPackets.handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Icon wrapper.passthrough(Type.VAR_INT); // Frame type int flags = wrapper.passthrough(Type.INT); // Flags if ((flags & 1) != 0) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java index fdb394c7..0bf71dd4 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java @@ -1,23 +1,23 @@ package nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.packets; import nl.matsv.viabackwards.ViaBackwards; +import nl.matsv.viabackwards.api.entities.meta.MetaHandler; import nl.matsv.viabackwards.api.entities.storage.EntityData; import nl.matsv.viabackwards.api.entities.storage.MetaStorage; import nl.matsv.viabackwards.api.entities.types.AbstractEntityType; import nl.matsv.viabackwards.api.entities.types.EntityType1_13; -import nl.matsv.viabackwards.api.entities.types.EntityType1_13.EntityType; import nl.matsv.viabackwards.api.entities.types.EntityType1_14; +import nl.matsv.viabackwards.api.exceptions.RemovedValueException; import nl.matsv.viabackwards.api.rewriters.EntityRewriter; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.packets.BlockItemPackets1_13; import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.Protocol1_13_2To1_14; import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.data.EntityTypeMapping; import us.myles.ViaVersion.api.PacketWrapper; -import us.myles.ViaVersion.api.entities.Entity1_14Types; import us.myles.ViaVersion.api.minecraft.VillagerData; import us.myles.ViaVersion.api.minecraft.item.Item; +import us.myles.ViaVersion.api.minecraft.metadata.MetaType; import us.myles.ViaVersion.api.minecraft.metadata.Metadata; import us.myles.ViaVersion.api.minecraft.metadata.types.MetaType1_13_2; -import us.myles.ViaVersion.api.minecraft.metadata.types.MetaType1_14; import us.myles.ViaVersion.api.remapper.PacketHandler; import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.api.type.Type; @@ -26,7 +26,6 @@ import us.myles.ViaVersion.api.type.types.version.Types1_14; import us.myles.ViaVersion.packets.State; import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.data.Particle; import us.myles.ViaVersion.protocols.protocol1_14to1_13_2.Protocol1_14To1_13_2; -import us.myles.ViaVersion.protocols.protocol1_14to1_13_2.packets.InventoryPackets; import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; import java.util.Optional; @@ -297,6 +296,26 @@ public class EntityPackets1_14 extends EntityRewriter { regEntType(EntityType1_14.EntityType.FOX, EntityType1_14.EntityType.WOLF).mobName("Fox"); regEntType(EntityType1_14.EntityType.PANDA, EntityType1_14.EntityType.POLAR_BEAR).mobName("Panda"); + registerMetaHandler().handle(e -> { + Metadata meta = e.getData(); + int typeId = meta.getMetaType().getTypeID(); + if (typeId <= 15) { + meta.setMetaType(MetaType1_13_2.byId(typeId)); + } + + MetaType type = meta.getMetaType(); + + if (type == MetaType1_13_2.Slot) { + Item item = (Item) meta.getValue(); + meta.setValue(getProtocol().getBlockItemPackets().handleItemToClient(item)); + } else if (type == MetaType1_13_2.BlockID) { + int blockstate = (Integer) meta.getValue(); + meta.setValue(Protocol1_14To1_13_2.getNewBlockStateId(blockstate)); + } + + return meta; + }); + registerMetaHandler().filter(EntityType1_14.EntityType.FOX, 15).removed(); registerMetaHandler().filter(EntityType1_14.EntityType.FOX, 16).removed(); registerMetaHandler().filter(EntityType1_14.EntityType.FOX, 17).removed(); @@ -309,127 +328,93 @@ public class EntityPackets1_14 extends EntityRewriter { registerMetaHandler().filter(EntityType1_14.EntityType.PANDA, 19).removed(); registerMetaHandler().filter(EntityType1_14.EntityType.PANDA, 20).removed(); - registerMetaHandler().handle(e -> { - if (e.getData().getMetaType().getTypeID() == 6) { // Slot - Protocol1_13_2To1_14.blockItem.handleItemToClient((Item) e.getData().getValue()); - } - return e.getData(); - }); - // Remove bed location - todo send sleep packet - registerMetaHandler().filter(EntityType1_14.EntityType.LIVINGENTITY, true, 12).removed(); - registerMetaHandler().filter(EntityType1_14.EntityType.LIVINGENTITY, true).handle(e -> { - if (e.getIndex() > 12) e.getData().setId(e.getIndex() - 1); - return e.getData(); - }); - // Remove entity pose - registerMetaHandler().filter(EntityType1_14.EntityType.ENTITY, true, 6).removed(); - registerMetaHandler().filter(EntityType1_14.EntityType.ENTITY, true).handle(e -> { - if (e.getIndex() > 6) e.getData().setId(e.getIndex() - 1); - return e.getData(); - }); registerMetaHandler().filter(EntityType1_14.EntityType.CAT, 17).removed(); registerMetaHandler().filter(EntityType1_14.EntityType.CAT, 18).removed(); registerMetaHandler().filter(EntityType1_14.EntityType.CAT, 19).removed(); registerMetaHandler().filter(EntityType1_14.EntityType.CAT, 20).removed(); - // Villager data -> var int + registerMetaHandler().handle(e -> { - EntityType type = (EntityType) e.getEntity().getType(); - Metadata metadata = e.getData(); - if(e.getData().getId() > 6){ - e.getData().setValue(e.getData().getId() - 1); - } - - //Metadata 12 added to living_entity - if (metadata.getId() > 12 && type.isOrHasParent(EntityType.LIVINGENTITY)) { - metadata.setId(metadata.getId() - 1); - } - if (type.isOrHasParent(EntityType.ABSTRACT_INSENTIENT)) { //TODO - if (metadata.getId() == 13) { - tracker.setInsentientData(entityId, (byte) ((((Number) metadata.getValue()).byteValue() & ~0x4) - | (tracker.getInsentientData(entityId) & 0x4))); // New attacking metadata - metadata.setValue(tracker.getInsentientData(entityId)); + AbstractEntityType type = e.getEntity().getType(); + Metadata meta = e.getData(); + if (type.isOrHasParent(EntityType1_14.EntityType.ABSTRACT_ILLAGER_BASE) || type == EntityType1_14.EntityType.RAVAGER || type == EntityType1_14.EntityType.WITCH) { + int index = e.getIndex(); + if (index == 14) { + //TODO handle + throw new RemovedValueException(); + } else { + meta.setId(index - 1); } } + return meta; + }); - if (type.isOrHasParent(EntityType.PLAYER)) { //TODO - if (entityId != e.getEntity().getClientEntityId()) { - if (metadata.getId() == 0) { - byte flags = ((Number) metadata.getValue()).byteValue(); - // Mojang overrides the client-side pose updater, see OtherPlayerEntity#updateSize - tracker.setEntityFlags(entityId, flags); - } else if (metadata.getId() == 7) { - tracker.setRiptide(entityId, (((Number) metadata.getValue()).byteValue() & 0x4) != 0); - } - if (metadata.getId() == 0 || metadata.getId() == 7) { - metadatas.add(new Metadata(6, MetaType1_14.Pose, recalculatePlayerPose(entityId, tracker))); - } - } - } else if (type.isOrHasParent(EntityType.ZOMBIE)) { //TODO - if (metadata.getId() == 16) { - tracker.setInsentientData(entityId, (byte) ((tracker.getInsentientData(entityId) & ~0x4) - | ((boolean) metadata.getValue() ? 0x4 : 0))); // New attacking - metadatas.remove(metadata); // "Are hands held up" - metadatas.add(new Metadata(13, MetaType1_14.Byte, tracker.getInsentientData(entityId))); - } else if (metadata.getId() > 16) { - metadata.setId(metadata.getId() - 1); - } + registerMetaHandler().filter(EntityType1_14.EntityType.AREA_EFFECT_CLOUD, 10).handle(e -> { + Metadata meta = e.getData(); + Particle particle = (Particle) meta.getValue(); + particle.setId(getOldParticleId(particle.getId())); + return meta; + }); + + registerMetaHandler().filter(EntityType1_14.EntityType.FIREWORKS_ROCKET, 8).handle(e -> { + Metadata meta = e.getData(); + meta.setMetaType(MetaType1_13_2.VarInt); + Integer value = (Integer) meta.getValue(); + if (value == null) meta.setValue(0); + return meta; + }); + + registerMetaHandler().filter(EntityType1_14.EntityType.ABSTRACT_ARROW, true).handle(e -> { + Metadata meta = e.getData(); + int index = e.getIndex(); + if (index == 9) { + throw new RemovedValueException(); + } else if (index > 9) { + meta.setId(index - 1); } - if (type.isOrHasParent(EntityType.MINECART_ABSTRACT)) { - if (metadata.getId() == 10) { - // New block format - int data = (int) metadata.getValue(); - metadata.setValue(Protocol1_13_2To1_14.getNewBlockStateId(data)); - } - } else if (type.is(EntityType.HORSE)) { //TODO - if (metadata.getId() == 18) { - metadatas.remove(metadata); + return meta; + }); - int armorType = (int) metadata.getValue(); - Item armorItem = null; - if (armorType == 1) { //iron armor - armorItem = new Item(InventoryPackets.getNewItemId(727), (byte) 1, (short) 0, null); - } else if (armorType == 2) { //gold armor - armorItem = new Item(InventoryPackets.getNewItemId(728), (byte) 1, (short) 0, null); - } else if (armorType == 3) { //diamond armor - armorItem = new Item(InventoryPackets.getNewItemId(729), (byte) 1, (short) 0, null); - } + MetaHandler villagerDataHandler = e -> { + Metadata meta = e.getData(); + VillagerData villagerData = (VillagerData) meta.getValue(); + meta.setValue(villagerDataToProfession(villagerData)); + meta.setMetaType(MetaType1_13_2.VarInt); + return meta; + }; - PacketWrapper equipmentPacket = new PacketWrapper(0x46, null, connection); - equipmentPacket.write(Type.VAR_INT, entityId); - equipmentPacket.write(Type.VAR_INT, 4); - equipmentPacket.write(Type.FLAT_VAR_INT_ITEM, armorItem); - equipmentPacket.send(Protocol1_14To1_13_2.class); - } - } else if(type.isOrHasParent(EntityType.ABSTRACT_ARROW)){ - if (metadata.getId() >= 10) { // New piercing - metadata.setId(metadata.getId() - 1); - } - } else if (type.is(EntityType.FIREWORKS_ROCKET)) { //TODO - if (metadata.getId() == 8) { - if (metadata.getValue().equals(0)) - metadata.setValue(null); // https://bugs.mojang.com/browse/MC-111480 - metadata.setMetaType(MetaType1_14.OptVarInt); - } - } else if (type.isOrHasParent(EntityType.ABSTRACT_SKELETON)) { //TODO - if (metadata.getId() == 14) { - tracker.setInsentientData(entityId, (byte) ((tracker.getInsentientData(entityId) & ~0x4) - | ((boolean) metadata.getValue() ? 0x4 : 0))); // New attacking - metadatas.remove(metadata); // "Is swinging arms" - metadatas.add(new Metadata(13, MetaType1_14.Byte, tracker.getInsentientData(entityId))); - } - } else if (type.is(EntityType.AREA_EFFECT_CLOUD)) { - if (metadata.getId() == 10) { - Particle particle = (Particle) metadata.getValue(); - particle.setId(getOldParticleId(particle.getId())); - } + registerMetaHandler().filter(EntityType1_14.EntityType.ZOMBIE_VILLAGER, 18).handle(villagerDataHandler); + registerMetaHandler().filter(EntityType1_14.EntityType.VILLAGER, 15).handle(villagerDataHandler); + + registerMetaHandler().filter(EntityType1_14.EntityType.ZOMBIE).handle(e -> { + Metadata meta = e.getData(); + int index = e.getIndex(); + if (index >= 16) { + meta.setId(index + 1); } + return meta; + }); - - if (e.getData().getValue() instanceof VillagerData) { - e.getData().setMetaType(MetaType1_13_2.VarInt); - e.getData().setValue(villagerDataToProfession(((VillagerData) e.getData().getValue()))); + // Remove bed location - todo send sleep packet + registerMetaHandler().filter(EntityType1_14.EntityType.LIVINGENTITY, true).handle(e -> { + Metadata meta = e.getData(); + int index = e.getIndex(); + if (index == 12) { + throw new RemovedValueException(); + } else if (index > 12) { + meta.setId(index - 1); } - return e.getData(); + return meta; + }); + + registerMetaHandler().filter(EntityType1_14.EntityType.LIVINGENTITY, true).handle(e -> { + Metadata meta = e.getData(); + int index = e.getIndex(); + if (index == 6) { + throw new RemovedValueException(); + } else if (index > 6) { + meta.setId(index - 1); + } + return meta; }); } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/PlayerPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/PlayerPackets1_14.java index b9cc6a5e..4906a545 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/PlayerPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/PlayerPackets1_14.java @@ -46,7 +46,7 @@ public class PlayerPackets1_14 extends Rewriter { handler(new PacketHandler() { @Override public void handle(PacketWrapper wrapper) throws Exception { - Protocol1_13_2To1_14.blockItem.handleItemToServer(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); + getProtocol().getBlockItemPackets().handleItemToServer(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); } }); } From 05e1fef42cb387bd516a39b11771eb2c63cd688b Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Tue, 21 May 2019 17:40:26 +0200 Subject: [PATCH 108/171] remove pose metadata correctly, add debug --- .../packets/EntityPackets1_14.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java index 0bf71dd4..c7e154dc 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java @@ -406,7 +406,7 @@ public class EntityPackets1_14 extends EntityRewriter { return meta; }); - registerMetaHandler().filter(EntityType1_14.EntityType.LIVINGENTITY, true).handle(e -> { + registerMetaHandler().handle(e -> { Metadata meta = e.getData(); int index = e.getIndex(); if (index == 6) { @@ -416,6 +416,16 @@ public class EntityPackets1_14 extends EntityRewriter { } return meta; }); + + registerMetaHandler().handle(e -> { + Metadata meta = e.getData(); + int typeId = meta.getMetaType().getTypeID(); + if (typeId > 15) { + System.out.println("new 1.14 metadata was not handled: " + meta + " entity: " + e.getEntity().getType()); + return null; + } + return meta; + }); } public int villagerDataToProfession(VillagerData data) { From 81025064684d39870d2be856829e1e3e4c53a35c Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Tue, 21 May 2019 18:42:52 +0200 Subject: [PATCH 109/171] a few mappings for 1.14 --- .../data/EntityTypeMapping.java | 1 - .../data/mapping-1.13.2to1.14.json | 2536 +++++++++++++++++ 2 files changed, 2536 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/EntityTypeMapping.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/EntityTypeMapping.java index 98b02f20..bff31c46 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/EntityTypeMapping.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/EntityTypeMapping.java @@ -1,6 +1,5 @@ package nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.data; - import us.myles.ViaVersion.api.entities.Entity1_13Types; import us.myles.ViaVersion.protocols.protocol1_14to1_13_2.data.EntityTypeRewriter; diff --git a/core/src/main/resources/assets/viabackwards/data/mapping-1.13.2to1.14.json b/core/src/main/resources/assets/viabackwards/data/mapping-1.13.2to1.14.json index 26bb3825..84c6b376 100644 --- a/core/src/main/resources/assets/viabackwards/data/mapping-1.13.2to1.14.json +++ b/core/src/main/resources/assets/viabackwards/data/mapping-1.13.2to1.14.json @@ -1,4 +1,2540 @@ { "blockstates": { + "minecraft:note_block[instrument=iron_xylophone,note=0,powered=true]": "minecraft:note_block[instrument=harp,note=0,powered=true]", + "minecraft:note_block[instrument=iron_xylophone,note=0,powered=false]": "minecraft:note_block[instrument=harp,note=0,powered=false]", + "minecraft:note_block[instrument=iron_xylophone,note=1,powered=true]": "minecraft:note_block[instrument=harp,note=1,powered=true]", + "minecraft:note_block[instrument=iron_xylophone,note=1,powered=false]": "minecraft:note_block[instrument=harp,note=1,powered=false]", + "minecraft:note_block[instrument=iron_xylophone,note=2,powered=true]": "minecraft:note_block[instrument=harp,note=2,powered=true]", + "minecraft:note_block[instrument=iron_xylophone,note=2,powered=false]": "minecraft:note_block[instrument=harp,note=2,powered=false]", + "minecraft:note_block[instrument=iron_xylophone,note=3,powered=true]": "minecraft:note_block[instrument=harp,note=3,powered=true]", + "minecraft:note_block[instrument=iron_xylophone,note=3,powered=false]": "minecraft:note_block[instrument=harp,note=3,powered=false]", + "minecraft:note_block[instrument=iron_xylophone,note=4,powered=true]": "minecraft:note_block[instrument=harp,note=4,powered=true]", + "minecraft:note_block[instrument=iron_xylophone,note=4,powered=false]": "minecraft:note_block[instrument=harp,note=4,powered=false]", + "minecraft:note_block[instrument=iron_xylophone,note=5,powered=true]": "minecraft:note_block[instrument=harp,note=5,powered=true]", + "minecraft:note_block[instrument=iron_xylophone,note=5,powered=false]": "minecraft:note_block[instrument=harp,note=5,powered=false]", + "minecraft:note_block[instrument=iron_xylophone,note=6,powered=true]": "minecraft:note_block[instrument=harp,note=6,powered=true]", + "minecraft:note_block[instrument=iron_xylophone,note=6,powered=false]": "minecraft:note_block[instrument=harp,note=6,powered=false]", + "minecraft:note_block[instrument=iron_xylophone,note=7,powered=true]": "minecraft:note_block[instrument=harp,note=7,powered=true]", + "minecraft:note_block[instrument=iron_xylophone,note=7,powered=false]": "minecraft:note_block[instrument=harp,note=7,powered=false]", + "minecraft:note_block[instrument=iron_xylophone,note=8,powered=true]": "minecraft:note_block[instrument=harp,note=8,powered=true]", + "minecraft:note_block[instrument=iron_xylophone,note=8,powered=false]": "minecraft:note_block[instrument=harp,note=8,powered=false]", + "minecraft:note_block[instrument=iron_xylophone,note=9,powered=true]": "minecraft:note_block[instrument=harp,note=9,powered=true]", + "minecraft:note_block[instrument=iron_xylophone,note=9,powered=false]": "minecraft:note_block[instrument=harp,note=9,powered=false]", + "minecraft:note_block[instrument=iron_xylophone,note=10,powered=true]": "minecraft:note_block[instrument=harp,note=10,powered=true]", + "minecraft:note_block[instrument=iron_xylophone,note=10,powered=false]": "minecraft:note_block[instrument=harp,note=10,powered=false]", + "minecraft:note_block[instrument=iron_xylophone,note=11,powered=true]": "minecraft:note_block[instrument=harp,note=11,powered=true]", + "minecraft:note_block[instrument=iron_xylophone,note=11,powered=false]": "minecraft:note_block[instrument=harp,note=11,powered=false]", + "minecraft:note_block[instrument=iron_xylophone,note=12,powered=true]": "minecraft:note_block[instrument=harp,note=12,powered=true]", + "minecraft:note_block[instrument=iron_xylophone,note=12,powered=false]": "minecraft:note_block[instrument=harp,note=12,powered=false]", + "minecraft:note_block[instrument=iron_xylophone,note=13,powered=true]": "minecraft:note_block[instrument=harp,note=13,powered=true]", + "minecraft:note_block[instrument=iron_xylophone,note=13,powered=false]": "minecraft:note_block[instrument=harp,note=13,powered=false]", + "minecraft:note_block[instrument=iron_xylophone,note=14,powered=true]": "minecraft:note_block[instrument=harp,note=14,powered=true]", + "minecraft:note_block[instrument=iron_xylophone,note=14,powered=false]": "minecraft:note_block[instrument=harp,note=14,powered=false]", + "minecraft:note_block[instrument=iron_xylophone,note=15,powered=true]": "minecraft:note_block[instrument=harp,note=15,powered=true]", + "minecraft:note_block[instrument=iron_xylophone,note=15,powered=false]": "minecraft:note_block[instrument=harp,note=15,powered=false]", + "minecraft:note_block[instrument=iron_xylophone,note=16,powered=true]": "minecraft:note_block[instrument=harp,note=16,powered=true]", + "minecraft:note_block[instrument=iron_xylophone,note=16,powered=false]": "minecraft:note_block[instrument=harp,note=16,powered=false]", + "minecraft:note_block[instrument=iron_xylophone,note=17,powered=true]": "minecraft:note_block[instrument=harp,note=17,powered=true]", + "minecraft:note_block[instrument=iron_xylophone,note=17,powered=false]": "minecraft:note_block[instrument=harp,note=17,powered=false]", + "minecraft:note_block[instrument=iron_xylophone,note=18,powered=true]": "minecraft:note_block[instrument=harp,note=18,powered=true]", + "minecraft:note_block[instrument=iron_xylophone,note=18,powered=false]": "minecraft:note_block[instrument=harp,note=18,powered=false]", + "minecraft:note_block[instrument=iron_xylophone,note=19,powered=true]": "minecraft:note_block[instrument=harp,note=19,powered=true]", + "minecraft:note_block[instrument=iron_xylophone,note=19,powered=false]": "minecraft:note_block[instrument=harp,note=19,powered=false]", + "minecraft:note_block[instrument=iron_xylophone,note=20,powered=true]": "minecraft:note_block[instrument=harp,note=20,powered=true]", + "minecraft:note_block[instrument=iron_xylophone,note=20,powered=false]": "minecraft:note_block[instrument=harp,note=20,powered=false]", + "minecraft:note_block[instrument=iron_xylophone,note=21,powered=true]": "minecraft:note_block[instrument=harp,note=21,powered=true]", + "minecraft:note_block[instrument=iron_xylophone,note=21,powered=false]": "minecraft:note_block[instrument=harp,note=21,powered=false]", + "minecraft:note_block[instrument=iron_xylophone,note=22,powered=true]": "minecraft:note_block[instrument=harp,note=22,powered=true]", + "minecraft:note_block[instrument=iron_xylophone,note=22,powered=false]": "minecraft:note_block[instrument=harp,note=22,powered=false]", + "minecraft:note_block[instrument=iron_xylophone,note=23,powered=true]": "minecraft:note_block[instrument=harp,note=23,powered=true]", + "minecraft:note_block[instrument=iron_xylophone,note=23,powered=false]": "minecraft:note_block[instrument=harp,note=23,powered=false]", + "minecraft:note_block[instrument=iron_xylophone,note=24,powered=true]": "minecraft:note_block[instrument=harp,note=24,powered=true]", + "minecraft:note_block[instrument=iron_xylophone,note=24,powered=false]": "minecraft:note_block[instrument=harp,note=24,powered=false]", + "minecraft:note_block[instrument=cow_bell,note=0,powered=true]": "minecraft:note_block[instrument=harp,note=0,powered=true]", + "minecraft:note_block[instrument=cow_bell,note=0,powered=false]": "minecraft:note_block[instrument=harp,note=0,powered=false]", + "minecraft:note_block[instrument=cow_bell,note=1,powered=true]": "minecraft:note_block[instrument=harp,note=1,powered=true]", + "minecraft:note_block[instrument=cow_bell,note=1,powered=false]": "minecraft:note_block[instrument=harp,note=1,powered=false]", + "minecraft:note_block[instrument=cow_bell,note=2,powered=true]": "minecraft:note_block[instrument=harp,note=2,powered=true]", + "minecraft:note_block[instrument=cow_bell,note=2,powered=false]": "minecraft:note_block[instrument=harp,note=2,powered=false]", + "minecraft:note_block[instrument=cow_bell,note=3,powered=true]": "minecraft:note_block[instrument=harp,note=3,powered=true]", + "minecraft:note_block[instrument=cow_bell,note=3,powered=false]": "minecraft:note_block[instrument=harp,note=3,powered=false]", + "minecraft:note_block[instrument=cow_bell,note=4,powered=true]": "minecraft:note_block[instrument=harp,note=4,powered=true]", + "minecraft:note_block[instrument=cow_bell,note=4,powered=false]": "minecraft:note_block[instrument=harp,note=4,powered=false]", + "minecraft:note_block[instrument=cow_bell,note=5,powered=true]": "minecraft:note_block[instrument=harp,note=5,powered=true]", + "minecraft:note_block[instrument=cow_bell,note=5,powered=false]": "minecraft:note_block[instrument=harp,note=5,powered=false]", + "minecraft:note_block[instrument=cow_bell,note=6,powered=true]": "minecraft:note_block[instrument=harp,note=6,powered=true]", + "minecraft:note_block[instrument=cow_bell,note=6,powered=false]": "minecraft:note_block[instrument=harp,note=6,powered=false]", + "minecraft:note_block[instrument=cow_bell,note=7,powered=true]": "minecraft:note_block[instrument=harp,note=7,powered=true]", + "minecraft:note_block[instrument=cow_bell,note=7,powered=false]": "minecraft:note_block[instrument=harp,note=7,powered=false]", + "minecraft:note_block[instrument=cow_bell,note=8,powered=true]": "minecraft:note_block[instrument=harp,note=8,powered=true]", + "minecraft:note_block[instrument=cow_bell,note=8,powered=false]": "minecraft:note_block[instrument=harp,note=8,powered=false]", + "minecraft:note_block[instrument=cow_bell,note=9,powered=true]": "minecraft:note_block[instrument=harp,note=9,powered=true]", + "minecraft:note_block[instrument=cow_bell,note=9,powered=false]": "minecraft:note_block[instrument=harp,note=9,powered=false]", + "minecraft:note_block[instrument=cow_bell,note=10,powered=true]": "minecraft:note_block[instrument=harp,note=10,powered=true]", + "minecraft:note_block[instrument=cow_bell,note=10,powered=false]": "minecraft:note_block[instrument=harp,note=10,powered=false]", + "minecraft:note_block[instrument=cow_bell,note=11,powered=true]": "minecraft:note_block[instrument=harp,note=11,powered=true]", + "minecraft:note_block[instrument=cow_bell,note=11,powered=false]": "minecraft:note_block[instrument=harp,note=11,powered=false]", + "minecraft:note_block[instrument=cow_bell,note=12,powered=true]": "minecraft:note_block[instrument=harp,note=12,powered=true]", + "minecraft:note_block[instrument=cow_bell,note=12,powered=false]": "minecraft:note_block[instrument=harp,note=12,powered=false]", + "minecraft:note_block[instrument=cow_bell,note=13,powered=true]": "minecraft:note_block[instrument=harp,note=13,powered=true]", + "minecraft:note_block[instrument=cow_bell,note=13,powered=false]": "minecraft:note_block[instrument=harp,note=13,powered=false]", + "minecraft:note_block[instrument=cow_bell,note=14,powered=true]": "minecraft:note_block[instrument=harp,note=14,powered=true]", + "minecraft:note_block[instrument=cow_bell,note=14,powered=false]": "minecraft:note_block[instrument=harp,note=14,powered=false]", + "minecraft:note_block[instrument=cow_bell,note=15,powered=true]": "minecraft:note_block[instrument=harp,note=15,powered=true]", + "minecraft:note_block[instrument=cow_bell,note=15,powered=false]": "minecraft:note_block[instrument=harp,note=15,powered=false]", + "minecraft:note_block[instrument=cow_bell,note=16,powered=true]": "minecraft:note_block[instrument=harp,note=16,powered=true]", + "minecraft:note_block[instrument=cow_bell,note=16,powered=false]": "minecraft:note_block[instrument=harp,note=16,powered=false]", + "minecraft:note_block[instrument=cow_bell,note=17,powered=true]": "minecraft:note_block[instrument=harp,note=17,powered=true]", + "minecraft:note_block[instrument=cow_bell,note=17,powered=false]": "minecraft:note_block[instrument=harp,note=17,powered=false]", + "minecraft:note_block[instrument=cow_bell,note=18,powered=true]": "minecraft:note_block[instrument=harp,note=18,powered=true]", + "minecraft:note_block[instrument=cow_bell,note=18,powered=false]": "minecraft:note_block[instrument=harp,note=18,powered=false]", + "minecraft:note_block[instrument=cow_bell,note=19,powered=true]": "minecraft:note_block[instrument=harp,note=19,powered=true]", + "minecraft:note_block[instrument=cow_bell,note=19,powered=false]": "minecraft:note_block[instrument=harp,note=19,powered=false]", + "minecraft:note_block[instrument=cow_bell,note=20,powered=true]": "minecraft:note_block[instrument=harp,note=20,powered=true]", + "minecraft:note_block[instrument=cow_bell,note=20,powered=false]": "minecraft:note_block[instrument=harp,note=20,powered=false]", + "minecraft:note_block[instrument=cow_bell,note=21,powered=true]": "minecraft:note_block[instrument=harp,note=21,powered=true]", + "minecraft:note_block[instrument=cow_bell,note=21,powered=false]": "minecraft:note_block[instrument=harp,note=21,powered=false]", + "minecraft:note_block[instrument=cow_bell,note=22,powered=true]": "minecraft:note_block[instrument=harp,note=22,powered=true]", + "minecraft:note_block[instrument=cow_bell,note=22,powered=false]": "minecraft:note_block[instrument=harp,note=22,powered=false]", + "minecraft:note_block[instrument=cow_bell,note=23,powered=true]": "minecraft:note_block[instrument=harp,note=23,powered=true]", + "minecraft:note_block[instrument=cow_bell,note=23,powered=false]": "minecraft:note_block[instrument=harp,note=23,powered=false]", + "minecraft:note_block[instrument=cow_bell,note=24,powered=true]": "minecraft:note_block[instrument=harp,note=24,powered=true]", + "minecraft:note_block[instrument=cow_bell,note=24,powered=false]": "minecraft:note_block[instrument=harp,note=24,powered=false]", + "minecraft:note_block[instrument=didgeridoo,note=0,powered=true]": "minecraft:note_block[instrument=harp,note=0,powered=true]", + "minecraft:note_block[instrument=didgeridoo,note=0,powered=false]": "minecraft:note_block[instrument=harp,note=0,powered=false]", + "minecraft:note_block[instrument=didgeridoo,note=1,powered=true]": "minecraft:note_block[instrument=harp,note=1,powered=true]", + "minecraft:note_block[instrument=didgeridoo,note=1,powered=false]": "minecraft:note_block[instrument=harp,note=1,powered=false]", + "minecraft:note_block[instrument=didgeridoo,note=2,powered=true]": "minecraft:note_block[instrument=harp,note=2,powered=true]", + "minecraft:note_block[instrument=didgeridoo,note=2,powered=false]": "minecraft:note_block[instrument=harp,note=2,powered=false]", + "minecraft:note_block[instrument=didgeridoo,note=3,powered=true]": "minecraft:note_block[instrument=harp,note=3,powered=true]", + "minecraft:note_block[instrument=didgeridoo,note=3,powered=false]": "minecraft:note_block[instrument=harp,note=3,powered=false]", + "minecraft:note_block[instrument=didgeridoo,note=4,powered=true]": "minecraft:note_block[instrument=harp,note=4,powered=true]", + "minecraft:note_block[instrument=didgeridoo,note=4,powered=false]": "minecraft:note_block[instrument=harp,note=4,powered=false]", + "minecraft:note_block[instrument=didgeridoo,note=5,powered=true]": "minecraft:note_block[instrument=harp,note=5,powered=true]", + "minecraft:note_block[instrument=didgeridoo,note=5,powered=false]": "minecraft:note_block[instrument=harp,note=5,powered=false]", + "minecraft:note_block[instrument=didgeridoo,note=6,powered=true]": "minecraft:note_block[instrument=harp,note=6,powered=true]", + "minecraft:note_block[instrument=didgeridoo,note=6,powered=false]": "minecraft:note_block[instrument=harp,note=6,powered=false]", + "minecraft:note_block[instrument=didgeridoo,note=7,powered=true]": "minecraft:note_block[instrument=harp,note=7,powered=true]", + "minecraft:note_block[instrument=didgeridoo,note=7,powered=false]": "minecraft:note_block[instrument=harp,note=7,powered=false]", + "minecraft:note_block[instrument=didgeridoo,note=8,powered=true]": "minecraft:note_block[instrument=harp,note=8,powered=true]", + "minecraft:note_block[instrument=didgeridoo,note=8,powered=false]": "minecraft:note_block[instrument=harp,note=8,powered=false]", + "minecraft:note_block[instrument=didgeridoo,note=9,powered=true]": "minecraft:note_block[instrument=harp,note=9,powered=true]", + "minecraft:note_block[instrument=didgeridoo,note=9,powered=false]": "minecraft:note_block[instrument=harp,note=9,powered=false]", + "minecraft:note_block[instrument=didgeridoo,note=10,powered=true]": "minecraft:note_block[instrument=harp,note=10,powered=true]", + "minecraft:note_block[instrument=didgeridoo,note=10,powered=false]": "minecraft:note_block[instrument=harp,note=10,powered=false]", + "minecraft:note_block[instrument=didgeridoo,note=11,powered=true]": "minecraft:note_block[instrument=harp,note=11,powered=true]", + "minecraft:note_block[instrument=didgeridoo,note=11,powered=false]": "minecraft:note_block[instrument=harp,note=11,powered=false]", + "minecraft:note_block[instrument=didgeridoo,note=12,powered=true]": "minecraft:note_block[instrument=harp,note=12,powered=true]", + "minecraft:note_block[instrument=didgeridoo,note=12,powered=false]": "minecraft:note_block[instrument=harp,note=12,powered=false]", + "minecraft:note_block[instrument=didgeridoo,note=13,powered=true]": "minecraft:note_block[instrument=harp,note=13,powered=true]", + "minecraft:note_block[instrument=didgeridoo,note=13,powered=false]": "minecraft:note_block[instrument=harp,note=13,powered=false]", + "minecraft:note_block[instrument=didgeridoo,note=14,powered=true]": "minecraft:note_block[instrument=harp,note=14,powered=true]", + "minecraft:note_block[instrument=didgeridoo,note=14,powered=false]": "minecraft:note_block[instrument=harp,note=14,powered=false]", + "minecraft:note_block[instrument=didgeridoo,note=15,powered=true]": "minecraft:note_block[instrument=harp,note=15,powered=true]", + "minecraft:note_block[instrument=didgeridoo,note=15,powered=false]": "minecraft:note_block[instrument=harp,note=15,powered=false]", + "minecraft:note_block[instrument=didgeridoo,note=16,powered=true]": "minecraft:note_block[instrument=harp,note=16,powered=true]", + "minecraft:note_block[instrument=didgeridoo,note=16,powered=false]": "minecraft:note_block[instrument=harp,note=16,powered=false]", + "minecraft:note_block[instrument=didgeridoo,note=17,powered=true]": "minecraft:note_block[instrument=harp,note=17,powered=true]", + "minecraft:note_block[instrument=didgeridoo,note=17,powered=false]": "minecraft:note_block[instrument=harp,note=17,powered=false]", + "minecraft:note_block[instrument=didgeridoo,note=18,powered=true]": "minecraft:note_block[instrument=harp,note=18,powered=true]", + "minecraft:note_block[instrument=didgeridoo,note=18,powered=false]": "minecraft:note_block[instrument=harp,note=18,powered=false]", + "minecraft:note_block[instrument=didgeridoo,note=19,powered=true]": "minecraft:note_block[instrument=harp,note=19,powered=true]", + "minecraft:note_block[instrument=didgeridoo,note=19,powered=false]": "minecraft:note_block[instrument=harp,note=19,powered=false]", + "minecraft:note_block[instrument=didgeridoo,note=20,powered=true]": "minecraft:note_block[instrument=harp,note=20,powered=true]", + "minecraft:note_block[instrument=didgeridoo,note=20,powered=false]": "minecraft:note_block[instrument=harp,note=20,powered=false]", + "minecraft:note_block[instrument=didgeridoo,note=21,powered=true]": "minecraft:note_block[instrument=harp,note=21,powered=true]", + "minecraft:note_block[instrument=didgeridoo,note=21,powered=false]": "minecraft:note_block[instrument=harp,note=21,powered=false]", + "minecraft:note_block[instrument=didgeridoo,note=22,powered=true]": "minecraft:note_block[instrument=harp,note=22,powered=true]", + "minecraft:note_block[instrument=didgeridoo,note=22,powered=false]": "minecraft:note_block[instrument=harp,note=22,powered=false]", + "minecraft:note_block[instrument=didgeridoo,note=23,powered=true]": "minecraft:note_block[instrument=harp,note=23,powered=true]", + "minecraft:note_block[instrument=didgeridoo,note=23,powered=false]": "minecraft:note_block[instrument=harp,note=23,powered=false]", + "minecraft:note_block[instrument=didgeridoo,note=24,powered=true]": "minecraft:note_block[instrument=harp,note=24,powered=true]", + "minecraft:note_block[instrument=didgeridoo,note=24,powered=false]": "minecraft:note_block[instrument=harp,note=24,powered=false]", + "minecraft:note_block[instrument=bit,note=0,powered=true]": "minecraft:note_block[instrument=harp,note=0,powered=true]", + "minecraft:note_block[instrument=bit,note=0,powered=false]": "minecraft:note_block[instrument=harp,note=0,powered=false]", + "minecraft:note_block[instrument=bit,note=1,powered=true]": "minecraft:note_block[instrument=harp,note=1,powered=true]", + "minecraft:note_block[instrument=bit,note=1,powered=false]": "minecraft:note_block[instrument=harp,note=1,powered=false]", + "minecraft:note_block[instrument=bit,note=2,powered=true]": "minecraft:note_block[instrument=harp,note=2,powered=true]", + "minecraft:note_block[instrument=bit,note=2,powered=false]": "minecraft:note_block[instrument=harp,note=2,powered=false]", + "minecraft:note_block[instrument=bit,note=3,powered=true]": "minecraft:note_block[instrument=harp,note=3,powered=true]", + "minecraft:note_block[instrument=bit,note=3,powered=false]": "minecraft:note_block[instrument=harp,note=3,powered=false]", + "minecraft:note_block[instrument=bit,note=4,powered=true]": "minecraft:note_block[instrument=harp,note=4,powered=true]", + "minecraft:note_block[instrument=bit,note=4,powered=false]": "minecraft:note_block[instrument=harp,note=4,powered=false]", + "minecraft:note_block[instrument=bit,note=5,powered=true]": "minecraft:note_block[instrument=harp,note=5,powered=true]", + "minecraft:note_block[instrument=bit,note=5,powered=false]": "minecraft:note_block[instrument=harp,note=5,powered=false]", + "minecraft:note_block[instrument=bit,note=6,powered=true]": "minecraft:note_block[instrument=harp,note=6,powered=true]", + "minecraft:note_block[instrument=bit,note=6,powered=false]": "minecraft:note_block[instrument=harp,note=6,powered=false]", + "minecraft:note_block[instrument=bit,note=7,powered=true]": "minecraft:note_block[instrument=harp,note=7,powered=true]", + "minecraft:note_block[instrument=bit,note=7,powered=false]": "minecraft:note_block[instrument=harp,note=7,powered=false]", + "minecraft:note_block[instrument=bit,note=8,powered=true]": "minecraft:note_block[instrument=harp,note=8,powered=true]", + "minecraft:note_block[instrument=bit,note=8,powered=false]": "minecraft:note_block[instrument=harp,note=8,powered=false]", + "minecraft:note_block[instrument=bit,note=9,powered=true]": "minecraft:note_block[instrument=harp,note=9,powered=true]", + "minecraft:note_block[instrument=bit,note=9,powered=false]": "minecraft:note_block[instrument=harp,note=9,powered=false]", + "minecraft:note_block[instrument=bit,note=10,powered=true]": "minecraft:note_block[instrument=harp,note=10,powered=true]", + "minecraft:note_block[instrument=bit,note=10,powered=false]": "minecraft:note_block[instrument=harp,note=10,powered=false]", + "minecraft:note_block[instrument=bit,note=11,powered=true]": "minecraft:note_block[instrument=harp,note=11,powered=true]", + "minecraft:note_block[instrument=bit,note=11,powered=false]": "minecraft:note_block[instrument=harp,note=11,powered=false]", + "minecraft:note_block[instrument=bit,note=12,powered=true]": "minecraft:note_block[instrument=harp,note=12,powered=true]", + "minecraft:note_block[instrument=bit,note=12,powered=false]": "minecraft:note_block[instrument=harp,note=12,powered=false]", + "minecraft:note_block[instrument=bit,note=13,powered=true]": "minecraft:note_block[instrument=harp,note=13,powered=true]", + "minecraft:note_block[instrument=bit,note=13,powered=false]": "minecraft:note_block[instrument=harp,note=13,powered=false]", + "minecraft:note_block[instrument=bit,note=14,powered=true]": "minecraft:note_block[instrument=harp,note=14,powered=true]", + "minecraft:note_block[instrument=bit,note=14,powered=false]": "minecraft:note_block[instrument=harp,note=14,powered=false]", + "minecraft:note_block[instrument=bit,note=15,powered=true]": "minecraft:note_block[instrument=harp,note=15,powered=true]", + "minecraft:note_block[instrument=bit,note=15,powered=false]": "minecraft:note_block[instrument=harp,note=15,powered=false]", + "minecraft:note_block[instrument=bit,note=16,powered=true]": "minecraft:note_block[instrument=harp,note=16,powered=true]", + "minecraft:note_block[instrument=bit,note=16,powered=false]": "minecraft:note_block[instrument=harp,note=16,powered=false]", + "minecraft:note_block[instrument=bit,note=17,powered=true]": "minecraft:note_block[instrument=harp,note=17,powered=true]", + "minecraft:note_block[instrument=bit,note=17,powered=false]": "minecraft:note_block[instrument=harp,note=17,powered=false]", + "minecraft:note_block[instrument=bit,note=18,powered=true]": "minecraft:note_block[instrument=harp,note=18,powered=true]", + "minecraft:note_block[instrument=bit,note=18,powered=false]": "minecraft:note_block[instrument=harp,note=18,powered=false]", + "minecraft:note_block[instrument=bit,note=19,powered=true]": "minecraft:note_block[instrument=harp,note=19,powered=true]", + "minecraft:note_block[instrument=bit,note=19,powered=false]": "minecraft:note_block[instrument=harp,note=19,powered=false]", + "minecraft:note_block[instrument=bit,note=20,powered=true]": "minecraft:note_block[instrument=harp,note=20,powered=true]", + "minecraft:note_block[instrument=bit,note=20,powered=false]": "minecraft:note_block[instrument=harp,note=20,powered=false]", + "minecraft:note_block[instrument=bit,note=21,powered=true]": "minecraft:note_block[instrument=harp,note=21,powered=true]", + "minecraft:note_block[instrument=bit,note=21,powered=false]": "minecraft:note_block[instrument=harp,note=21,powered=false]", + "minecraft:note_block[instrument=bit,note=22,powered=true]": "minecraft:note_block[instrument=harp,note=22,powered=true]", + "minecraft:note_block[instrument=bit,note=22,powered=false]": "minecraft:note_block[instrument=harp,note=22,powered=false]", + "minecraft:note_block[instrument=bit,note=23,powered=true]": "minecraft:note_block[instrument=harp,note=23,powered=true]", + "minecraft:note_block[instrument=bit,note=23,powered=false]": "minecraft:note_block[instrument=harp,note=23,powered=false]", + "minecraft:note_block[instrument=bit,note=24,powered=true]": "minecraft:note_block[instrument=harp,note=24,powered=true]", + "minecraft:note_block[instrument=bit,note=24,powered=false]": "minecraft:note_block[instrument=harp,note=24,powered=false]", + "minecraft:note_block[instrument=banjo,note=0,powered=true]": "minecraft:note_block[instrument=harp,note=0,powered=true]", + "minecraft:note_block[instrument=banjo,note=0,powered=false]": "minecraft:note_block[instrument=harp,note=0,powered=false]", + "minecraft:note_block[instrument=banjo,note=1,powered=true]": "minecraft:note_block[instrument=harp,note=1,powered=true]", + "minecraft:note_block[instrument=banjo,note=1,powered=false]": "minecraft:note_block[instrument=harp,note=1,powered=false]", + "minecraft:note_block[instrument=banjo,note=2,powered=true]": "minecraft:note_block[instrument=harp,note=2,powered=true]", + "minecraft:note_block[instrument=banjo,note=2,powered=false]": "minecraft:note_block[instrument=harp,note=2,powered=false]", + "minecraft:note_block[instrument=banjo,note=3,powered=true]": "minecraft:note_block[instrument=harp,note=3,powered=true]", + "minecraft:note_block[instrument=banjo,note=3,powered=false]": "minecraft:note_block[instrument=harp,note=3,powered=false]", + "minecraft:note_block[instrument=banjo,note=4,powered=true]": "minecraft:note_block[instrument=harp,note=4,powered=true]", + "minecraft:note_block[instrument=banjo,note=4,powered=false]": "minecraft:note_block[instrument=harp,note=4,powered=false]", + "minecraft:note_block[instrument=banjo,note=5,powered=true]": "minecraft:note_block[instrument=harp,note=5,powered=true]", + "minecraft:note_block[instrument=banjo,note=5,powered=false]": "minecraft:note_block[instrument=harp,note=5,powered=false]", + "minecraft:note_block[instrument=banjo,note=6,powered=true]": "minecraft:note_block[instrument=harp,note=6,powered=true]", + "minecraft:note_block[instrument=banjo,note=6,powered=false]": "minecraft:note_block[instrument=harp,note=6,powered=false]", + "minecraft:note_block[instrument=banjo,note=7,powered=true]": "minecraft:note_block[instrument=harp,note=7,powered=true]", + "minecraft:note_block[instrument=banjo,note=7,powered=false]": "minecraft:note_block[instrument=harp,note=7,powered=false]", + "minecraft:note_block[instrument=banjo,note=8,powered=true]": "minecraft:note_block[instrument=harp,note=8,powered=true]", + "minecraft:note_block[instrument=banjo,note=8,powered=false]": "minecraft:note_block[instrument=harp,note=8,powered=false]", + "minecraft:note_block[instrument=banjo,note=9,powered=true]": "minecraft:note_block[instrument=harp,note=9,powered=true]", + "minecraft:note_block[instrument=banjo,note=9,powered=false]": "minecraft:note_block[instrument=harp,note=9,powered=false]", + "minecraft:note_block[instrument=banjo,note=10,powered=true]": "minecraft:note_block[instrument=harp,note=10,powered=true]", + "minecraft:note_block[instrument=banjo,note=10,powered=false]": "minecraft:note_block[instrument=harp,note=10,powered=false]", + "minecraft:note_block[instrument=banjo,note=11,powered=true]": "minecraft:note_block[instrument=harp,note=11,powered=true]", + "minecraft:note_block[instrument=banjo,note=11,powered=false]": "minecraft:note_block[instrument=harp,note=11,powered=false]", + "minecraft:note_block[instrument=banjo,note=12,powered=true]": "minecraft:note_block[instrument=harp,note=12,powered=true]", + "minecraft:note_block[instrument=banjo,note=12,powered=false]": "minecraft:note_block[instrument=harp,note=12,powered=false]", + "minecraft:note_block[instrument=banjo,note=13,powered=true]": "minecraft:note_block[instrument=harp,note=13,powered=true]", + "minecraft:note_block[instrument=banjo,note=13,powered=false]": "minecraft:note_block[instrument=harp,note=13,powered=false]", + "minecraft:note_block[instrument=banjo,note=14,powered=true]": "minecraft:note_block[instrument=harp,note=14,powered=true]", + "minecraft:note_block[instrument=banjo,note=14,powered=false]": "minecraft:note_block[instrument=harp,note=14,powered=false]", + "minecraft:note_block[instrument=banjo,note=15,powered=true]": "minecraft:note_block[instrument=harp,note=15,powered=true]", + "minecraft:note_block[instrument=banjo,note=15,powered=false]": "minecraft:note_block[instrument=harp,note=15,powered=false]", + "minecraft:note_block[instrument=banjo,note=16,powered=true]": "minecraft:note_block[instrument=harp,note=16,powered=true]", + "minecraft:note_block[instrument=banjo,note=16,powered=false]": "minecraft:note_block[instrument=harp,note=16,powered=false]", + "minecraft:note_block[instrument=banjo,note=17,powered=true]": "minecraft:note_block[instrument=harp,note=17,powered=true]", + "minecraft:note_block[instrument=banjo,note=17,powered=false]": "minecraft:note_block[instrument=harp,note=17,powered=false]", + "minecraft:note_block[instrument=banjo,note=18,powered=true]": "minecraft:note_block[instrument=harp,note=18,powered=true]", + "minecraft:note_block[instrument=banjo,note=18,powered=false]": "minecraft:note_block[instrument=harp,note=18,powered=false]", + "minecraft:note_block[instrument=banjo,note=19,powered=true]": "minecraft:note_block[instrument=harp,note=19,powered=true]", + "minecraft:note_block[instrument=banjo,note=19,powered=false]": "minecraft:note_block[instrument=harp,note=19,powered=false]", + "minecraft:note_block[instrument=banjo,note=20,powered=true]": "minecraft:note_block[instrument=harp,note=20,powered=true]", + "minecraft:note_block[instrument=banjo,note=20,powered=false]": "minecraft:note_block[instrument=harp,note=20,powered=false]", + "minecraft:note_block[instrument=banjo,note=21,powered=true]": "minecraft:note_block[instrument=harp,note=21,powered=true]", + "minecraft:note_block[instrument=banjo,note=21,powered=false]": "minecraft:note_block[instrument=harp,note=21,powered=false]", + "minecraft:note_block[instrument=banjo,note=22,powered=true]": "minecraft:note_block[instrument=harp,note=22,powered=true]", + "minecraft:note_block[instrument=banjo,note=22,powered=false]": "minecraft:note_block[instrument=harp,note=22,powered=false]", + "minecraft:note_block[instrument=banjo,note=23,powered=true]": "minecraft:note_block[instrument=harp,note=23,powered=true]", + "minecraft:note_block[instrument=banjo,note=23,powered=false]": "minecraft:note_block[instrument=harp,note=23,powered=false]", + "minecraft:note_block[instrument=banjo,note=24,powered=true]": "minecraft:note_block[instrument=harp,note=24,powered=true]", + "minecraft:note_block[instrument=banjo,note=24,powered=false]": "minecraft:note_block[instrument=harp,note=24,powered=false]", + "minecraft:note_block[instrument=pling,note=0,powered=true]": "minecraft:note_block[instrument=harp,note=0,powered=true]", + "minecraft:note_block[instrument=pling,note=0,powered=false]": "minecraft:note_block[instrument=harp,note=0,powered=false]", + "minecraft:note_block[instrument=pling,note=1,powered=true]": "minecraft:note_block[instrument=harp,note=1,powered=true]", + "minecraft:note_block[instrument=pling,note=1,powered=false]": "minecraft:note_block[instrument=harp,note=1,powered=false]", + "minecraft:note_block[instrument=pling,note=2,powered=true]": "minecraft:note_block[instrument=harp,note=2,powered=true]", + "minecraft:note_block[instrument=pling,note=2,powered=false]": "minecraft:note_block[instrument=harp,note=2,powered=false]", + "minecraft:note_block[instrument=pling,note=3,powered=true]": "minecraft:note_block[instrument=harp,note=3,powered=true]", + "minecraft:note_block[instrument=pling,note=3,powered=false]": "minecraft:note_block[instrument=harp,note=3,powered=false]", + "minecraft:note_block[instrument=pling,note=4,powered=true]": "minecraft:note_block[instrument=harp,note=4,powered=true]", + "minecraft:note_block[instrument=pling,note=4,powered=false]": "minecraft:note_block[instrument=harp,note=4,powered=false]", + "minecraft:note_block[instrument=pling,note=5,powered=true]": "minecraft:note_block[instrument=harp,note=5,powered=true]", + "minecraft:note_block[instrument=pling,note=5,powered=false]": "minecraft:note_block[instrument=harp,note=5,powered=false]", + "minecraft:note_block[instrument=pling,note=6,powered=true]": "minecraft:note_block[instrument=harp,note=6,powered=true]", + "minecraft:note_block[instrument=pling,note=6,powered=false]": "minecraft:note_block[instrument=harp,note=6,powered=false]", + "minecraft:note_block[instrument=pling,note=7,powered=true]": "minecraft:note_block[instrument=harp,note=7,powered=true]", + "minecraft:note_block[instrument=pling,note=7,powered=false]": "minecraft:note_block[instrument=harp,note=7,powered=false]", + "minecraft:note_block[instrument=pling,note=8,powered=true]": "minecraft:note_block[instrument=harp,note=8,powered=true]", + "minecraft:note_block[instrument=pling,note=8,powered=false]": "minecraft:note_block[instrument=harp,note=8,powered=false]", + "minecraft:note_block[instrument=pling,note=9,powered=true]": "minecraft:note_block[instrument=harp,note=9,powered=true]", + "minecraft:note_block[instrument=pling,note=9,powered=false]": "minecraft:note_block[instrument=harp,note=9,powered=false]", + "minecraft:note_block[instrument=pling,note=10,powered=true]": "minecraft:note_block[instrument=harp,note=10,powered=true]", + "minecraft:note_block[instrument=pling,note=10,powered=false]": "minecraft:note_block[instrument=harp,note=10,powered=false]", + "minecraft:note_block[instrument=pling,note=11,powered=true]": "minecraft:note_block[instrument=harp,note=11,powered=true]", + "minecraft:note_block[instrument=pling,note=11,powered=false]": "minecraft:note_block[instrument=harp,note=11,powered=false]", + "minecraft:note_block[instrument=pling,note=12,powered=true]": "minecraft:note_block[instrument=harp,note=12,powered=true]", + "minecraft:note_block[instrument=pling,note=12,powered=false]": "minecraft:note_block[instrument=harp,note=12,powered=false]", + "minecraft:note_block[instrument=pling,note=13,powered=true]": "minecraft:note_block[instrument=harp,note=13,powered=true]", + "minecraft:note_block[instrument=pling,note=13,powered=false]": "minecraft:note_block[instrument=harp,note=13,powered=false]", + "minecraft:note_block[instrument=pling,note=14,powered=true]": "minecraft:note_block[instrument=harp,note=14,powered=true]", + "minecraft:note_block[instrument=pling,note=14,powered=false]": "minecraft:note_block[instrument=harp,note=14,powered=false]", + "minecraft:note_block[instrument=pling,note=15,powered=true]": "minecraft:note_block[instrument=harp,note=15,powered=true]", + "minecraft:note_block[instrument=pling,note=15,powered=false]": "minecraft:note_block[instrument=harp,note=15,powered=false]", + "minecraft:note_block[instrument=pling,note=16,powered=true]": "minecraft:note_block[instrument=harp,note=16,powered=true]", + "minecraft:note_block[instrument=pling,note=16,powered=false]": "minecraft:note_block[instrument=harp,note=16,powered=false]", + "minecraft:note_block[instrument=pling,note=17,powered=true]": "minecraft:note_block[instrument=harp,note=17,powered=true]", + "minecraft:note_block[instrument=pling,note=17,powered=false]": "minecraft:note_block[instrument=harp,note=17,powered=false]", + "minecraft:note_block[instrument=pling,note=18,powered=true]": "minecraft:note_block[instrument=harp,note=18,powered=true]", + "minecraft:note_block[instrument=pling,note=18,powered=false]": "minecraft:note_block[instrument=harp,note=18,powered=false]", + "minecraft:note_block[instrument=pling,note=19,powered=true]": "minecraft:note_block[instrument=harp,note=19,powered=true]", + "minecraft:note_block[instrument=pling,note=19,powered=false]": "minecraft:note_block[instrument=harp,note=19,powered=false]", + "minecraft:note_block[instrument=pling,note=20,powered=true]": "minecraft:note_block[instrument=harp,note=20,powered=true]", + "minecraft:note_block[instrument=pling,note=20,powered=false]": "minecraft:note_block[instrument=harp,note=20,powered=false]", + "minecraft:note_block[instrument=pling,note=21,powered=true]": "minecraft:note_block[instrument=harp,note=21,powered=true]", + "minecraft:note_block[instrument=pling,note=21,powered=false]": "minecraft:note_block[instrument=harp,note=21,powered=false]", + "minecraft:note_block[instrument=pling,note=22,powered=true]": "minecraft:note_block[instrument=harp,note=22,powered=true]", + "minecraft:note_block[instrument=pling,note=22,powered=false]": "minecraft:note_block[instrument=harp,note=22,powered=false]", + "minecraft:note_block[instrument=pling,note=23,powered=true]": "minecraft:note_block[instrument=harp,note=23,powered=true]", + "minecraft:note_block[instrument=pling,note=23,powered=false]": "minecraft:note_block[instrument=harp,note=23,powered=false]", + "minecraft:note_block[instrument=pling,note=24,powered=true]": "minecraft:note_block[instrument=harp,note=24,powered=true]", + "minecraft:note_block[instrument=pling,note=24,powered=false]": "minecraft:note_block[instrument=harp,note=24,powered=false]", + "minecraft:cornflower": "minecraft:blue_orchid", + "minecraft:wither_rose": "minecraft:brown_mushroom", + "minecraft:lily_of_the_valley": "minecraft:white_tulip", + "minecraft:spruce_sign[rotation=0,waterlogged=true]": "minecraft:oak_sign[rotation=0,waterlogged=true]", + "minecraft:spruce_sign[rotation=0,waterlogged=false]": "minecraft:oak_sign[rotation=0,waterlogged=false]", + "minecraft:spruce_sign[rotation=1,waterlogged=true]": "minecraft:oak_sign[rotation=1,waterlogged=true]", + "minecraft:spruce_sign[rotation=1,waterlogged=false]": "minecraft:oak_sign[rotation=1,waterlogged=false]", + "minecraft:spruce_sign[rotation=2,waterlogged=true]": "minecraft:oak_sign[rotation=2,waterlogged=true]", + "minecraft:spruce_sign[rotation=2,waterlogged=false]": "minecraft:oak_sign[rotation=2,waterlogged=false]", + "minecraft:spruce_sign[rotation=3,waterlogged=true]": "minecraft:oak_sign[rotation=3,waterlogged=true]", + "minecraft:spruce_sign[rotation=3,waterlogged=false]": "minecraft:oak_sign[rotation=3,waterlogged=false]", + "minecraft:spruce_sign[rotation=4,waterlogged=true]": "minecraft:oak_sign[rotation=4,waterlogged=true]", + "minecraft:spruce_sign[rotation=4,waterlogged=false]": "minecraft:oak_sign[rotation=4,waterlogged=false]", + "minecraft:spruce_sign[rotation=5,waterlogged=true]": "minecraft:oak_sign[rotation=5,waterlogged=true]", + "minecraft:spruce_sign[rotation=5,waterlogged=false]": "minecraft:oak_sign[rotation=5,waterlogged=false]", + "minecraft:spruce_sign[rotation=6,waterlogged=true]": "minecraft:oak_sign[rotation=6,waterlogged=true]", + "minecraft:spruce_sign[rotation=6,waterlogged=false]": "minecraft:oak_sign[rotation=6,waterlogged=false]", + "minecraft:spruce_sign[rotation=7,waterlogged=true]": "minecraft:oak_sign[rotation=7,waterlogged=true]", + "minecraft:spruce_sign[rotation=7,waterlogged=false]": "minecraft:oak_sign[rotation=7,waterlogged=false]", + "minecraft:spruce_sign[rotation=8,waterlogged=true]": "minecraft:oak_sign[rotation=8,waterlogged=true]", + "minecraft:spruce_sign[rotation=8,waterlogged=false]": "minecraft:oak_sign[rotation=8,waterlogged=false]", + "minecraft:spruce_sign[rotation=9,waterlogged=true]": "minecraft:oak_sign[rotation=9,waterlogged=true]", + "minecraft:spruce_sign[rotation=9,waterlogged=false]": "minecraft:oak_sign[rotation=9,waterlogged=false]", + "minecraft:spruce_sign[rotation=10,waterlogged=true]": "minecraft:oak_sign[rotation=10,waterlogged=true]", + "minecraft:spruce_sign[rotation=10,waterlogged=false]": "minecraft:oak_sign[rotation=10,waterlogged=false]", + "minecraft:spruce_sign[rotation=11,waterlogged=true]": "minecraft:oak_sign[rotation=11,waterlogged=true]", + "minecraft:spruce_sign[rotation=11,waterlogged=false]": "minecraft:oak_sign[rotation=11,waterlogged=false]", + "minecraft:spruce_sign[rotation=12,waterlogged=true]": "minecraft:oak_sign[rotation=12,waterlogged=true]", + "minecraft:spruce_sign[rotation=12,waterlogged=false]": "minecraft:oak_sign[rotation=12,waterlogged=false]", + "minecraft:spruce_sign[rotation=13,waterlogged=true]": "minecraft:oak_sign[rotation=13,waterlogged=true]", + "minecraft:spruce_sign[rotation=13,waterlogged=false]": "minecraft:oak_sign[rotation=13,waterlogged=false]", + "minecraft:spruce_sign[rotation=14,waterlogged=true]": "minecraft:oak_sign[rotation=14,waterlogged=true]", + "minecraft:spruce_sign[rotation=14,waterlogged=false]": "minecraft:oak_sign[rotation=14,waterlogged=false]", + "minecraft:spruce_sign[rotation=15,waterlogged=true]": "minecraft:oak_sign[rotation=15,waterlogged=true]", + "minecraft:spruce_sign[rotation=15,waterlogged=false]": "minecraft:oak_sign[rotation=15,waterlogged=false]", + "minecraft:birch_sign[rotation=0,waterlogged=true]": "minecraft:oak_sign[rotation=0,waterlogged=true]", + "minecraft:birch_sign[rotation=0,waterlogged=false]": "minecraft:oak_sign[rotation=0,waterlogged=false]", + "minecraft:birch_sign[rotation=1,waterlogged=true]": "minecraft:oak_sign[rotation=1,waterlogged=true]", + "minecraft:birch_sign[rotation=1,waterlogged=false]": "minecraft:oak_sign[rotation=1,waterlogged=false]", + "minecraft:birch_sign[rotation=2,waterlogged=true]": "minecraft:oak_sign[rotation=2,waterlogged=true]", + "minecraft:birch_sign[rotation=2,waterlogged=false]": "minecraft:oak_sign[rotation=2,waterlogged=false]", + "minecraft:birch_sign[rotation=3,waterlogged=true]": "minecraft:oak_sign[rotation=3,waterlogged=true]", + "minecraft:birch_sign[rotation=3,waterlogged=false]": "minecraft:oak_sign[rotation=3,waterlogged=false]", + "minecraft:birch_sign[rotation=4,waterlogged=true]": "minecraft:oak_sign[rotation=4,waterlogged=true]", + "minecraft:birch_sign[rotation=4,waterlogged=false]": "minecraft:oak_sign[rotation=4,waterlogged=false]", + "minecraft:birch_sign[rotation=5,waterlogged=true]": "minecraft:oak_sign[rotation=5,waterlogged=true]", + "minecraft:birch_sign[rotation=5,waterlogged=false]": "minecraft:oak_sign[rotation=5,waterlogged=false]", + "minecraft:birch_sign[rotation=6,waterlogged=true]": "minecraft:oak_sign[rotation=6,waterlogged=true]", + "minecraft:birch_sign[rotation=6,waterlogged=false]": "minecraft:oak_sign[rotation=6,waterlogged=false]", + "minecraft:birch_sign[rotation=7,waterlogged=true]": "minecraft:oak_sign[rotation=7,waterlogged=true]", + "minecraft:birch_sign[rotation=7,waterlogged=false]": "minecraft:oak_sign[rotation=7,waterlogged=false]", + "minecraft:birch_sign[rotation=8,waterlogged=true]": "minecraft:oak_sign[rotation=8,waterlogged=true]", + "minecraft:birch_sign[rotation=8,waterlogged=false]": "minecraft:oak_sign[rotation=8,waterlogged=false]", + "minecraft:birch_sign[rotation=9,waterlogged=true]": "minecraft:oak_sign[rotation=9,waterlogged=true]", + "minecraft:birch_sign[rotation=9,waterlogged=false]": "minecraft:oak_sign[rotation=9,waterlogged=false]", + "minecraft:birch_sign[rotation=10,waterlogged=true]": "minecraft:oak_sign[rotation=10,waterlogged=true]", + "minecraft:birch_sign[rotation=10,waterlogged=false]": "minecraft:oak_sign[rotation=10,waterlogged=false]", + "minecraft:birch_sign[rotation=11,waterlogged=true]": "minecraft:oak_sign[rotation=11,waterlogged=true]", + "minecraft:birch_sign[rotation=11,waterlogged=false]": "minecraft:oak_sign[rotation=11,waterlogged=false]", + "minecraft:birch_sign[rotation=12,waterlogged=true]": "minecraft:oak_sign[rotation=12,waterlogged=true]", + "minecraft:birch_sign[rotation=12,waterlogged=false]": "minecraft:oak_sign[rotation=12,waterlogged=false]", + "minecraft:birch_sign[rotation=13,waterlogged=true]": "minecraft:oak_sign[rotation=13,waterlogged=true]", + "minecraft:birch_sign[rotation=13,waterlogged=false]": "minecraft:oak_sign[rotation=13,waterlogged=false]", + "minecraft:birch_sign[rotation=14,waterlogged=true]": "minecraft:oak_sign[rotation=14,waterlogged=true]", + "minecraft:birch_sign[rotation=14,waterlogged=false]": "minecraft:oak_sign[rotation=14,waterlogged=false]", + "minecraft:birch_sign[rotation=15,waterlogged=true]": "minecraft:oak_sign[rotation=15,waterlogged=true]", + "minecraft:birch_sign[rotation=15,waterlogged=false]": "minecraft:oak_sign[rotation=15,waterlogged=false]", + "minecraft:acacia_sign[rotation=0,waterlogged=true]": "minecraft:oak_sign[rotation=0,waterlogged=true]", + "minecraft:acacia_sign[rotation=0,waterlogged=false]": "minecraft:oak_sign[rotation=0,waterlogged=false]", + "minecraft:acacia_sign[rotation=1,waterlogged=true]": "minecraft:oak_sign[rotation=1,waterlogged=true]", + "minecraft:acacia_sign[rotation=1,waterlogged=false]": "minecraft:oak_sign[rotation=1,waterlogged=false]", + "minecraft:acacia_sign[rotation=2,waterlogged=true]": "minecraft:oak_sign[rotation=2,waterlogged=true]", + "minecraft:acacia_sign[rotation=2,waterlogged=false]": "minecraft:oak_sign[rotation=2,waterlogged=false]", + "minecraft:acacia_sign[rotation=3,waterlogged=true]": "minecraft:oak_sign[rotation=3,waterlogged=true]", + "minecraft:acacia_sign[rotation=3,waterlogged=false]": "minecraft:oak_sign[rotation=3,waterlogged=false]", + "minecraft:acacia_sign[rotation=4,waterlogged=true]": "minecraft:oak_sign[rotation=4,waterlogged=true]", + "minecraft:acacia_sign[rotation=4,waterlogged=false]": "minecraft:oak_sign[rotation=4,waterlogged=false]", + "minecraft:acacia_sign[rotation=5,waterlogged=true]": "minecraft:oak_sign[rotation=5,waterlogged=true]", + "minecraft:acacia_sign[rotation=5,waterlogged=false]": "minecraft:oak_sign[rotation=5,waterlogged=false]", + "minecraft:acacia_sign[rotation=6,waterlogged=true]": "minecraft:oak_sign[rotation=6,waterlogged=true]", + "minecraft:acacia_sign[rotation=6,waterlogged=false]": "minecraft:oak_sign[rotation=6,waterlogged=false]", + "minecraft:acacia_sign[rotation=7,waterlogged=true]": "minecraft:oak_sign[rotation=7,waterlogged=true]", + "minecraft:acacia_sign[rotation=7,waterlogged=false]": "minecraft:oak_sign[rotation=7,waterlogged=false]", + "minecraft:acacia_sign[rotation=8,waterlogged=true]": "minecraft:oak_sign[rotation=8,waterlogged=true]", + "minecraft:acacia_sign[rotation=8,waterlogged=false]": "minecraft:oak_sign[rotation=8,waterlogged=false]", + "minecraft:acacia_sign[rotation=9,waterlogged=true]": "minecraft:oak_sign[rotation=9,waterlogged=true]", + "minecraft:acacia_sign[rotation=9,waterlogged=false]": "minecraft:oak_sign[rotation=9,waterlogged=false]", + "minecraft:acacia_sign[rotation=10,waterlogged=true]": "minecraft:oak_sign[rotation=10,waterlogged=true]", + "minecraft:acacia_sign[rotation=10,waterlogged=false]": "minecraft:oak_sign[rotation=10,waterlogged=false]", + "minecraft:acacia_sign[rotation=11,waterlogged=true]": "minecraft:oak_sign[rotation=11,waterlogged=true]", + "minecraft:acacia_sign[rotation=11,waterlogged=false]": "minecraft:oak_sign[rotation=11,waterlogged=false]", + "minecraft:acacia_sign[rotation=12,waterlogged=true]": "minecraft:oak_sign[rotation=12,waterlogged=true]", + "minecraft:acacia_sign[rotation=12,waterlogged=false]": "minecraft:oak_sign[rotation=12,waterlogged=false]", + "minecraft:acacia_sign[rotation=13,waterlogged=true]": "minecraft:oak_sign[rotation=13,waterlogged=true]", + "minecraft:acacia_sign[rotation=13,waterlogged=false]": "minecraft:oak_sign[rotation=13,waterlogged=false]", + "minecraft:acacia_sign[rotation=14,waterlogged=true]": "minecraft:oak_sign[rotation=14,waterlogged=true]", + "minecraft:acacia_sign[rotation=14,waterlogged=false]": "minecraft:oak_sign[rotation=14,waterlogged=false]", + "minecraft:acacia_sign[rotation=15,waterlogged=true]": "minecraft:oak_sign[rotation=15,waterlogged=true]", + "minecraft:acacia_sign[rotation=15,waterlogged=false]": "minecraft:oak_sign[rotation=15,waterlogged=false]", + "minecraft:jungle_sign[rotation=0,waterlogged=true]": "minecraft:oak_sign[rotation=0,waterlogged=true]", + "minecraft:jungle_sign[rotation=0,waterlogged=false]": "minecraft:oak_sign[rotation=0,waterlogged=false]", + "minecraft:jungle_sign[rotation=1,waterlogged=true]": "minecraft:oak_sign[rotation=1,waterlogged=true]", + "minecraft:jungle_sign[rotation=1,waterlogged=false]": "minecraft:oak_sign[rotation=1,waterlogged=false]", + "minecraft:jungle_sign[rotation=2,waterlogged=true]": "minecraft:oak_sign[rotation=2,waterlogged=true]", + "minecraft:jungle_sign[rotation=2,waterlogged=false]": "minecraft:oak_sign[rotation=2,waterlogged=false]", + "minecraft:jungle_sign[rotation=3,waterlogged=true]": "minecraft:oak_sign[rotation=3,waterlogged=true]", + "minecraft:jungle_sign[rotation=3,waterlogged=false]": "minecraft:oak_sign[rotation=3,waterlogged=false]", + "minecraft:jungle_sign[rotation=4,waterlogged=true]": "minecraft:oak_sign[rotation=4,waterlogged=true]", + "minecraft:jungle_sign[rotation=4,waterlogged=false]": "minecraft:oak_sign[rotation=4,waterlogged=false]", + "minecraft:jungle_sign[rotation=5,waterlogged=true]": "minecraft:oak_sign[rotation=5,waterlogged=true]", + "minecraft:jungle_sign[rotation=5,waterlogged=false]": "minecraft:oak_sign[rotation=5,waterlogged=false]", + "minecraft:jungle_sign[rotation=6,waterlogged=true]": "minecraft:oak_sign[rotation=6,waterlogged=true]", + "minecraft:jungle_sign[rotation=6,waterlogged=false]": "minecraft:oak_sign[rotation=6,waterlogged=false]", + "minecraft:jungle_sign[rotation=7,waterlogged=true]": "minecraft:oak_sign[rotation=7,waterlogged=true]", + "minecraft:jungle_sign[rotation=7,waterlogged=false]": "minecraft:oak_sign[rotation=7,waterlogged=false]", + "minecraft:jungle_sign[rotation=8,waterlogged=true]": "minecraft:oak_sign[rotation=8,waterlogged=true]", + "minecraft:jungle_sign[rotation=8,waterlogged=false]": "minecraft:oak_sign[rotation=8,waterlogged=false]", + "minecraft:jungle_sign[rotation=9,waterlogged=true]": "minecraft:oak_sign[rotation=9,waterlogged=true]", + "minecraft:jungle_sign[rotation=9,waterlogged=false]": "minecraft:oak_sign[rotation=9,waterlogged=false]", + "minecraft:jungle_sign[rotation=10,waterlogged=true]": "minecraft:oak_sign[rotation=10,waterlogged=true]", + "minecraft:jungle_sign[rotation=10,waterlogged=false]": "minecraft:oak_sign[rotation=10,waterlogged=false]", + "minecraft:jungle_sign[rotation=11,waterlogged=true]": "minecraft:oak_sign[rotation=11,waterlogged=true]", + "minecraft:jungle_sign[rotation=11,waterlogged=false]": "minecraft:oak_sign[rotation=11,waterlogged=false]", + "minecraft:jungle_sign[rotation=12,waterlogged=true]": "minecraft:oak_sign[rotation=12,waterlogged=true]", + "minecraft:jungle_sign[rotation=12,waterlogged=false]": "minecraft:oak_sign[rotation=12,waterlogged=false]", + "minecraft:jungle_sign[rotation=13,waterlogged=true]": "minecraft:oak_sign[rotation=13,waterlogged=true]", + "minecraft:jungle_sign[rotation=13,waterlogged=false]": "minecraft:oak_sign[rotation=13,waterlogged=false]", + "minecraft:jungle_sign[rotation=14,waterlogged=true]": "minecraft:oak_sign[rotation=14,waterlogged=true]", + "minecraft:jungle_sign[rotation=14,waterlogged=false]": "minecraft:oak_sign[rotation=14,waterlogged=false]", + "minecraft:jungle_sign[rotation=15,waterlogged=true]": "minecraft:oak_sign[rotation=15,waterlogged=true]", + "minecraft:jungle_sign[rotation=15,waterlogged=false]": "minecraft:oak_sign[rotation=15,waterlogged=false]", + "minecraft:dark_oak_sign[rotation=0,waterlogged=true]": "minecraft:oak_sign[rotation=0,waterlogged=true]", + "minecraft:dark_oak_sign[rotation=0,waterlogged=false]": "minecraft:oak_sign[rotation=0,waterlogged=false]", + "minecraft:dark_oak_sign[rotation=1,waterlogged=true]": "minecraft:oak_sign[rotation=1,waterlogged=true]", + "minecraft:dark_oak_sign[rotation=1,waterlogged=false]": "minecraft:oak_sign[rotation=1,waterlogged=false]", + "minecraft:dark_oak_sign[rotation=2,waterlogged=true]": "minecraft:oak_sign[rotation=2,waterlogged=true]", + "minecraft:dark_oak_sign[rotation=2,waterlogged=false]": "minecraft:oak_sign[rotation=2,waterlogged=false]", + "minecraft:dark_oak_sign[rotation=3,waterlogged=true]": "minecraft:oak_sign[rotation=3,waterlogged=true]", + "minecraft:dark_oak_sign[rotation=3,waterlogged=false]": "minecraft:oak_sign[rotation=3,waterlogged=false]", + "minecraft:dark_oak_sign[rotation=4,waterlogged=true]": "minecraft:oak_sign[rotation=4,waterlogged=true]", + "minecraft:dark_oak_sign[rotation=4,waterlogged=false]": "minecraft:oak_sign[rotation=4,waterlogged=false]", + "minecraft:dark_oak_sign[rotation=5,waterlogged=true]": "minecraft:oak_sign[rotation=5,waterlogged=true]", + "minecraft:dark_oak_sign[rotation=5,waterlogged=false]": "minecraft:oak_sign[rotation=5,waterlogged=false]", + "minecraft:dark_oak_sign[rotation=6,waterlogged=true]": "minecraft:oak_sign[rotation=6,waterlogged=true]", + "minecraft:dark_oak_sign[rotation=6,waterlogged=false]": "minecraft:oak_sign[rotation=6,waterlogged=false]", + "minecraft:dark_oak_sign[rotation=7,waterlogged=true]": "minecraft:oak_sign[rotation=7,waterlogged=true]", + "minecraft:dark_oak_sign[rotation=7,waterlogged=false]": "minecraft:oak_sign[rotation=7,waterlogged=false]", + "minecraft:dark_oak_sign[rotation=8,waterlogged=true]": "minecraft:oak_sign[rotation=8,waterlogged=true]", + "minecraft:dark_oak_sign[rotation=8,waterlogged=false]": "minecraft:oak_sign[rotation=8,waterlogged=false]", + "minecraft:dark_oak_sign[rotation=9,waterlogged=true]": "minecraft:oak_sign[rotation=9,waterlogged=true]", + "minecraft:dark_oak_sign[rotation=9,waterlogged=false]": "minecraft:oak_sign[rotation=9,waterlogged=false]", + "minecraft:dark_oak_sign[rotation=10,waterlogged=true]": "minecraft:oak_sign[rotation=10,waterlogged=true]", + "minecraft:dark_oak_sign[rotation=10,waterlogged=false]": "minecraft:oak_sign[rotation=10,waterlogged=false]", + "minecraft:dark_oak_sign[rotation=11,waterlogged=true]": "minecraft:oak_sign[rotation=11,waterlogged=true]", + "minecraft:dark_oak_sign[rotation=11,waterlogged=false]": "minecraft:oak_sign[rotation=11,waterlogged=false]", + "minecraft:dark_oak_sign[rotation=12,waterlogged=true]": "minecraft:oak_sign[rotation=12,waterlogged=true]", + "minecraft:dark_oak_sign[rotation=12,waterlogged=false]": "minecraft:oak_sign[rotation=12,waterlogged=false]", + "minecraft:dark_oak_sign[rotation=13,waterlogged=true]": "minecraft:oak_sign[rotation=13,waterlogged=true]", + "minecraft:dark_oak_sign[rotation=13,waterlogged=false]": "minecraft:oak_sign[rotation=13,waterlogged=false]", + "minecraft:dark_oak_sign[rotation=14,waterlogged=true]": "minecraft:oak_sign[rotation=14,waterlogged=true]", + "minecraft:dark_oak_sign[rotation=14,waterlogged=false]": "minecraft:oak_sign[rotation=14,waterlogged=false]", + "minecraft:dark_oak_sign[rotation=15,waterlogged=true]": "minecraft:oak_sign[rotation=15,waterlogged=true]", + "minecraft:dark_oak_sign[rotation=15,waterlogged=false]": "minecraft:oak_sign[rotation=15,waterlogged=false]", + "minecraft:spruce_wall_sign[facing=north,waterlogged=true]": "minecraft:oak_wall_sign[facing=north,waterlogged=true]", + "minecraft:spruce_wall_sign[facing=north,waterlogged=false]": "minecraft:oak_wall_sign[facing=north,waterlogged=false]", + "minecraft:spruce_wall_sign[facing=south,waterlogged=true]": "minecraft:oak_wall_sign[facing=south,waterlogged=true]", + "minecraft:spruce_wall_sign[facing=south,waterlogged=false]": "minecraft:oak_wall_sign[facing=south,waterlogged=false]", + "minecraft:spruce_wall_sign[facing=west,waterlogged=true]": "minecraft:oak_wall_sign[facing=west,waterlogged=true]", + "minecraft:spruce_wall_sign[facing=west,waterlogged=false]": "minecraft:oak_wall_sign[facing=west,waterlogged=false]", + "minecraft:spruce_wall_sign[facing=east,waterlogged=true]": "minecraft:oak_wall_sign[facing=east,waterlogged=true]", + "minecraft:spruce_wall_sign[facing=east,waterlogged=false]": "minecraft:oak_wall_sign[facing=east,waterlogged=false]", + "minecraft:birch_wall_sign[facing=north,waterlogged=true]": "minecraft:oak_wall_sign[facing=north,waterlogged=true]", + "minecraft:birch_wall_sign[facing=north,waterlogged=false]": "minecraft:oak_wall_sign[facing=north,waterlogged=false]", + "minecraft:birch_wall_sign[facing=south,waterlogged=true]": "minecraft:oak_wall_sign[facing=south,waterlogged=true]", + "minecraft:birch_wall_sign[facing=south,waterlogged=false]": "minecraft:oak_wall_sign[facing=south,waterlogged=false]", + "minecraft:birch_wall_sign[facing=west,waterlogged=true]": "minecraft:oak_wall_sign[facing=west,waterlogged=true]", + "minecraft:birch_wall_sign[facing=west,waterlogged=false]": "minecraft:oak_wall_sign[facing=west,waterlogged=false]", + "minecraft:birch_wall_sign[facing=east,waterlogged=true]": "minecraft:oak_wall_sign[facing=east,waterlogged=true]", + "minecraft:birch_wall_sign[facing=east,waterlogged=false]": "minecraft:oak_wall_sign[facing=east,waterlogged=false]", + "minecraft:acacia_wall_sign[facing=north,waterlogged=true]": "minecraft:oak_wall_sign[facing=north,waterlogged=true]", + "minecraft:acacia_wall_sign[facing=north,waterlogged=false]": "minecraft:oak_wall_sign[facing=north,waterlogged=false]", + "minecraft:acacia_wall_sign[facing=south,waterlogged=true]": "minecraft:oak_wall_sign[facing=south,waterlogged=true]", + "minecraft:acacia_wall_sign[facing=south,waterlogged=false]": "minecraft:oak_wall_sign[facing=south,waterlogged=false]", + "minecraft:acacia_wall_sign[facing=west,waterlogged=true]": "minecraft:oak_wall_sign[facing=west,waterlogged=true]", + "minecraft:acacia_wall_sign[facing=west,waterlogged=false]": "minecraft:oak_wall_sign[facing=west,waterlogged=false]", + "minecraft:acacia_wall_sign[facing=east,waterlogged=true]": "minecraft:oak_wall_sign[facing=east,waterlogged=true]", + "minecraft:acacia_wall_sign[facing=east,waterlogged=false]": "minecraft:oak_wall_sign[facing=east,waterlogged=false]", + "minecraft:jungle_wall_sign[facing=north,waterlogged=true]": "minecraft:oak_wall_sign[facing=north,waterlogged=true]", + "minecraft:jungle_wall_sign[facing=north,waterlogged=false]": "minecraft:oak_wall_sign[facing=north,waterlogged=false]", + "minecraft:jungle_wall_sign[facing=south,waterlogged=true]": "minecraft:oak_wall_sign[facing=south,waterlogged=true]", + "minecraft:jungle_wall_sign[facing=south,waterlogged=false]": "minecraft:oak_wall_sign[facing=south,waterlogged=false]", + "minecraft:jungle_wall_sign[facing=west,waterlogged=true]": "minecraft:oak_wall_sign[facing=west,waterlogged=true]", + "minecraft:jungle_wall_sign[facing=west,waterlogged=false]": "minecraft:oak_wall_sign[facing=west,waterlogged=false]", + "minecraft:jungle_wall_sign[facing=east,waterlogged=true]": "minecraft:oak_wall_sign[facing=east,waterlogged=true]", + "minecraft:jungle_wall_sign[facing=east,waterlogged=false]": "minecraft:oak_wall_sign[facing=east,waterlogged=false]", + "minecraft:dark_oak_wall_sign[facing=north,waterlogged=true]": "minecraft:oak_wall_sign[facing=north,waterlogged=true]", + "minecraft:dark_oak_wall_sign[facing=north,waterlogged=false]": "minecraft:oak_wall_sign[facing=north,waterlogged=false]", + "minecraft:dark_oak_wall_sign[facing=south,waterlogged=true]": "minecraft:oak_wall_sign[facing=south,waterlogged=true]", + "minecraft:dark_oak_wall_sign[facing=south,waterlogged=false]": "minecraft:oak_wall_sign[facing=south,waterlogged=false]", + "minecraft:dark_oak_wall_sign[facing=west,waterlogged=true]": "minecraft:oak_wall_sign[facing=west,waterlogged=true]", + "minecraft:dark_oak_wall_sign[facing=west,waterlogged=false]": "minecraft:oak_wall_sign[facing=west,waterlogged=false]", + "minecraft:dark_oak_wall_sign[facing=east,waterlogged=true]": "minecraft:oak_wall_sign[facing=east,waterlogged=true]", + "minecraft:dark_oak_wall_sign[facing=east,waterlogged=false]": "minecraft:oak_wall_sign[facing=east,waterlogged=false]", + "minecraft:potted_cornflower": "minecraft:potted_blue_orchid", + "minecraft:potted_lily_of_the_valley": "minecraft:potted_white_tulip", + "minecraft:potted_wither_rose": "minecraft:potted_brown_mushroom", + "minecraft:stone_slab[type=top,waterlogged=true]": "minecraft:smooth_stone_slab[type=top,waterlogged=true]", + "minecraft:stone_slab[type=top,waterlogged=false]": "minecraft:smooth_stone_slab[type=top,waterlogged=false]", + "minecraft:stone_slab[type=bottom,waterlogged=true]": "minecraft:smooth_stone_slab[type=bottom,waterlogged=true]", + "minecraft:stone_slab[type=bottom,waterlogged=false]": "minecraft:smooth_stone_slab[type=bottom,waterlogged=false]", + "minecraft:stone_slab[type=double,waterlogged=true]": "minecraft:smooth_stone_slab[type=double,waterlogged=true]", + "minecraft:stone_slab[type=double,waterlogged=false]": "minecraft:smooth_stone_slab[type=double,waterlogged=false]", + "minecraft:cut_sandstone_slab[type=top,waterlogged=true]": "minecraft:sandstone_slab[type=top,waterlogged=true]", + "minecraft:cut_sandstone_slab[type=top,waterlogged=false]": "minecraft:sandstone_slab[type=top,waterlogged=false]", + "minecraft:cut_sandstone_slab[type=bottom,waterlogged=true]": "minecraft:sandstone_slab[type=bottom,waterlogged=true]", + "minecraft:cut_sandstone_slab[type=bottom,waterlogged=false]": "minecraft:sandstone_slab[type=bottom,waterlogged=false]", + "minecraft:cut_sandstone_slab[type=double,waterlogged=true]": "minecraft:sandstone_slab[type=double,waterlogged=true]", + "minecraft:cut_sandstone_slab[type=double,waterlogged=false]": "minecraft:sandstone_slab[type=double,waterlogged=false]", + "minecraft:cut_red_sandstone_slab[type=top,waterlogged=true]": "minecraft:red_sandstone_slab[type=top,waterlogged=true]", + "minecraft:cut_red_sandstone_slab[type=top,waterlogged=false]": "minecraft:red_sandstone_slab[type=top,waterlogged=false]", + "minecraft:cut_red_sandstone_slab[type=bottom,waterlogged=true]": "minecraft:red_sandstone_slab[type=bottom,waterlogged=true]", + "minecraft:cut_red_sandstone_slab[type=bottom,waterlogged=false]": "minecraft:red_sandstone_slab[type=bottom,waterlogged=false]", + "minecraft:cut_red_sandstone_slab[type=double,waterlogged=true]": "minecraft:red_sandstone_slab[type=double,waterlogged=true]", + "minecraft:cut_red_sandstone_slab[type=double,waterlogged=false]": "minecraft:red_sandstone_slab[type=double,waterlogged=false]", + "minecraft:bamboo_sapling": "minecraft:jungle_sapling", + "minecraft:bamboo": "minecraft:sugar_cane[age=0]", + "minecraft:potted_bamboo": "minecraft:potted_cactus", + "minecraft:polished_granite_stairs[facing=north,half=top,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=north,half=top,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=south,half=top,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=south,half=top,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=west,half=top,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=west,half=top,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=east,half=top,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=east,half=top,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:polished_granite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:polished_granite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:smooth_red_sandstone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:smooth_red_sandstone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:mossy_stone_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:mossy_stone_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=north,half=top,shape=straight,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=north,half=top,shape=straight,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=south,half=top,shape=straight,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=south,half=top,shape=straight,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=west,half=top,shape=straight,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=west,half=top,shape=straight,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=east,half=top,shape=straight,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=east,half=top,shape=straight,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:polished_diorite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:polished_diorite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:mossy_cobblestone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:mossy_cobblestone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=true]": "minecraft:sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]": "minecraft:sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=true]": "minecraft:sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]": "minecraft:sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=true]": "minecraft:sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]": "minecraft:sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=true]": "minecraft:sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]": "minecraft:sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:end_stone_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:end_stone_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:stone_stairs[facing=north,half=top,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "minecraft:stone_stairs[facing=north,half=top,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "minecraft:stone_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "minecraft:stone_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "minecraft:stone_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "minecraft:stone_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "minecraft:stone_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "minecraft:stone_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "minecraft:stone_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "minecraft:stone_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "minecraft:stone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:stone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:stone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:stone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:stone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:stone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:stone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:stone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:stone_stairs[facing=south,half=top,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "minecraft:stone_stairs[facing=south,half=top,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "minecraft:stone_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "minecraft:stone_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "minecraft:stone_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "minecraft:stone_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "minecraft:stone_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "minecraft:stone_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "minecraft:stone_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "minecraft:stone_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "minecraft:stone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:stone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:stone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:stone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:stone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:stone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:stone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:stone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:stone_stairs[facing=west,half=top,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "minecraft:stone_stairs[facing=west,half=top,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "minecraft:stone_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "minecraft:stone_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "minecraft:stone_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "minecraft:stone_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "minecraft:stone_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "minecraft:stone_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "minecraft:stone_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "minecraft:stone_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "minecraft:stone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:stone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:stone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:stone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:stone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:stone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:stone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:stone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:stone_stairs[facing=east,half=top,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "minecraft:stone_stairs[facing=east,half=top,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:stone_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "minecraft:stone_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "minecraft:stone_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "minecraft:stone_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "minecraft:stone_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "minecraft:stone_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "minecraft:stone_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "minecraft:stone_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "minecraft:stone_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "minecraft:stone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:stone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:stone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:stone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:stone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:stone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:stone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:stone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:stone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=true]": "minecraft:sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=false]": "minecraft:sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=true]": "minecraft:sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=false]": "minecraft:sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=true]": "minecraft:sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=false]": "minecraft:sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=true]": "minecraft:sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=false]": "minecraft:sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:smooth_sandstone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:smooth_sandstone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=north,half=top,shape=straight,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=north,half=top,shape=straight,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=south,half=top,shape=straight,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=south,half=top,shape=straight,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=west,half=top,shape=straight,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=west,half=top,shape=straight,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=east,half=top,shape=straight,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=east,half=top,shape=straight,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:smooth_quartz_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:smooth_quartz_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:granite_stairs[facing=north,half=top,shape=straight,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "minecraft:granite_stairs[facing=north,half=top,shape=straight,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:granite_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "minecraft:granite_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "minecraft:granite_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "minecraft:granite_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "minecraft:granite_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "minecraft:granite_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "minecraft:granite_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "minecraft:granite_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "minecraft:granite_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "minecraft:granite_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:granite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:granite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:granite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:granite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:granite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:granite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:granite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:granite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:granite_stairs[facing=south,half=top,shape=straight,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "minecraft:granite_stairs[facing=south,half=top,shape=straight,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:granite_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "minecraft:granite_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "minecraft:granite_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "minecraft:granite_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "minecraft:granite_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "minecraft:granite_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "minecraft:granite_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "minecraft:granite_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "minecraft:granite_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "minecraft:granite_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:granite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:granite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:granite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:granite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:granite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:granite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:granite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:granite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:granite_stairs[facing=west,half=top,shape=straight,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "minecraft:granite_stairs[facing=west,half=top,shape=straight,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:granite_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "minecraft:granite_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "minecraft:granite_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "minecraft:granite_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "minecraft:granite_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "minecraft:granite_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "minecraft:granite_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "minecraft:granite_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "minecraft:granite_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "minecraft:granite_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:granite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:granite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:granite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:granite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:granite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:granite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:granite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:granite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:granite_stairs[facing=east,half=top,shape=straight,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "minecraft:granite_stairs[facing=east,half=top,shape=straight,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:granite_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "minecraft:granite_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "minecraft:granite_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "minecraft:granite_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "minecraft:granite_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "minecraft:granite_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "minecraft:granite_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "minecraft:granite_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "minecraft:granite_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "minecraft:granite_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:granite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:granite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:granite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:granite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:granite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:granite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:granite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:granite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:andesite_stairs[facing=north,half=top,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "minecraft:andesite_stairs[facing=north,half=top,shape=straight,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:andesite_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "minecraft:andesite_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "minecraft:andesite_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "minecraft:andesite_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "minecraft:andesite_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "minecraft:andesite_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "minecraft:andesite_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "minecraft:andesite_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "minecraft:andesite_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "minecraft:andesite_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:andesite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:andesite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:andesite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:andesite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:andesite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:andesite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:andesite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:andesite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:andesite_stairs[facing=south,half=top,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "minecraft:andesite_stairs[facing=south,half=top,shape=straight,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:andesite_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "minecraft:andesite_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "minecraft:andesite_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "minecraft:andesite_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "minecraft:andesite_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "minecraft:andesite_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "minecraft:andesite_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "minecraft:andesite_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "minecraft:andesite_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "minecraft:andesite_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:andesite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:andesite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:andesite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:andesite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:andesite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:andesite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:andesite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:andesite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:andesite_stairs[facing=west,half=top,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "minecraft:andesite_stairs[facing=west,half=top,shape=straight,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:andesite_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "minecraft:andesite_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "minecraft:andesite_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "minecraft:andesite_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "minecraft:andesite_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "minecraft:andesite_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "minecraft:andesite_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "minecraft:andesite_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "minecraft:andesite_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "minecraft:andesite_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:andesite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:andesite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:andesite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:andesite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:andesite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:andesite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:andesite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:andesite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:andesite_stairs[facing=east,half=top,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "minecraft:andesite_stairs[facing=east,half=top,shape=straight,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:andesite_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "minecraft:andesite_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "minecraft:andesite_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "minecraft:andesite_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "minecraft:andesite_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "minecraft:andesite_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "minecraft:andesite_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "minecraft:andesite_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "minecraft:andesite_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "minecraft:andesite_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:andesite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:andesite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:andesite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:andesite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:andesite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:andesite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:andesite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:andesite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=north,half=top,shape=straight,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]": "minecraft:brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]": "minecraft:brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]": "minecraft:brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]": "minecraft:brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]": "minecraft:brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]": "minecraft:brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=south,half=top,shape=straight,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]": "minecraft:brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]": "minecraft:brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]": "minecraft:brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]": "minecraft:brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]": "minecraft:brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]": "minecraft:brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=west,half=top,shape=straight,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]": "minecraft:brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]": "minecraft:brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]": "minecraft:brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]": "minecraft:brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]": "minecraft:brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]": "minecraft:brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=east,half=top,shape=straight,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]": "minecraft:brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]": "minecraft:brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]": "minecraft:brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]": "minecraft:brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]": "minecraft:brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]": "minecraft:brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:red_nether_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:red_nether_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=north,half=top,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=north,half=top,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=south,half=top,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=south,half=top,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=west,half=top,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=west,half=top,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=east,half=top,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=east,half=top,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:polished_andesite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:polished_andesite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:diorite_stairs[facing=north,half=top,shape=straight,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "minecraft:diorite_stairs[facing=north,half=top,shape=straight,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:diorite_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "minecraft:diorite_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "minecraft:diorite_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "minecraft:diorite_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "minecraft:diorite_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "minecraft:diorite_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "minecraft:diorite_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "minecraft:diorite_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "minecraft:diorite_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "minecraft:diorite_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:diorite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:diorite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:diorite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:diorite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:diorite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:diorite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:diorite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:diorite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:quartz_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:diorite_stairs[facing=south,half=top,shape=straight,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "minecraft:diorite_stairs[facing=south,half=top,shape=straight,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:diorite_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "minecraft:diorite_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "minecraft:diorite_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "minecraft:diorite_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "minecraft:diorite_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "minecraft:diorite_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "minecraft:diorite_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "minecraft:diorite_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "minecraft:diorite_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "minecraft:diorite_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:diorite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:diorite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:diorite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:diorite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:diorite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:diorite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:diorite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:diorite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:quartz_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:diorite_stairs[facing=west,half=top,shape=straight,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "minecraft:diorite_stairs[facing=west,half=top,shape=straight,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:diorite_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "minecraft:diorite_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "minecraft:diorite_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "minecraft:diorite_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "minecraft:diorite_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "minecraft:diorite_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "minecraft:diorite_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "minecraft:diorite_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "minecraft:diorite_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "minecraft:diorite_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:diorite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:diorite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:diorite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:diorite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:diorite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:diorite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:diorite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:diorite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:quartz_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:diorite_stairs[facing=east,half=top,shape=straight,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "minecraft:diorite_stairs[facing=east,half=top,shape=straight,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:diorite_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "minecraft:diorite_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "minecraft:diorite_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "minecraft:diorite_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "minecraft:diorite_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "minecraft:diorite_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "minecraft:diorite_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "minecraft:diorite_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "minecraft:diorite_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "minecraft:diorite_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:diorite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:diorite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:diorite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:diorite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:diorite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:diorite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:diorite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:diorite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:quartz_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:polished_granite_slab[type=top,waterlogged=true]": "minecraft:brick_slab[type=top,waterlogged=true]", + "minecraft:polished_granite_slab[type=top,waterlogged=false]": "minecraft:brick_slab[type=top,waterlogged=false]", + "minecraft:polished_granite_slab[type=bottom,waterlogged=true]": "minecraft:brick_slab[type=bottom,waterlogged=true]", + "minecraft:polished_granite_slab[type=bottom,waterlogged=false]": "minecraft:brick_slab[type=bottom,waterlogged=false]", + "minecraft:polished_granite_slab[type=double,waterlogged=true]": "minecraft:brick_slab[type=double,waterlogged=true]", + "minecraft:polished_granite_slab[type=double,waterlogged=false]": "minecraft:brick_slab[type=double,waterlogged=false]", + "minecraft:smooth_red_sandstone_slab[type=top,waterlogged=true]": "minecraft:red_sandstone_slab[type=top,waterlogged=true]", + "minecraft:smooth_red_sandstone_slab[type=top,waterlogged=false]": "minecraft:red_sandstone_slab[type=top,waterlogged=false]", + "minecraft:smooth_red_sandstone_slab[type=bottom,waterlogged=true]": "minecraft:red_sandstone_slab[type=bottom,waterlogged=true]", + "minecraft:smooth_red_sandstone_slab[type=bottom,waterlogged=false]": "minecraft:red_sandstone_slab[type=bottom,waterlogged=false]", + "minecraft:smooth_red_sandstone_slab[type=double,waterlogged=true]": "minecraft:red_sandstone_slab[type=double,waterlogged=true]", + "minecraft:smooth_red_sandstone_slab[type=double,waterlogged=false]": "minecraft:red_sandstone_slab[type=double,waterlogged=false]", + "minecraft:mossy_stone_brick_slab[type=top,waterlogged=true]": "minecraft:stone_brick_slab[type=top,waterlogged=true]", + "minecraft:mossy_stone_brick_slab[type=top,waterlogged=false]": "minecraft:stone_brick_slab[type=top,waterlogged=false]", + "minecraft:mossy_stone_brick_slab[type=bottom,waterlogged=true]": "minecraft:stone_brick_slab[type=bottom,waterlogged=true]", + "minecraft:mossy_stone_brick_slab[type=bottom,waterlogged=false]": "minecraft:stone_brick_slab[type=bottom,waterlogged=false]", + "minecraft:mossy_stone_brick_slab[type=double,waterlogged=true]": "minecraft:stone_brick_slab[type=double,waterlogged=true]", + "minecraft:mossy_stone_brick_slab[type=double,waterlogged=false]": "minecraft:stone_brick_slab[type=double,waterlogged=false]", + "minecraft:polished_diorite_slab[type=top,waterlogged=true]": "minecraft:quartz_slab[type=top,waterlogged=true]", + "minecraft:polished_diorite_slab[type=top,waterlogged=false]": "minecraft:quartz_slab[type=top,waterlogged=false]", + "minecraft:polished_diorite_slab[type=bottom,waterlogged=true]": "minecraft:quartz_slab[type=bottom,waterlogged=true]", + "minecraft:polished_diorite_slab[type=bottom,waterlogged=false]": "minecraft:quartz_slab[type=bottom,waterlogged=false]", + "minecraft:polished_diorite_slab[type=double,waterlogged=true]": "minecraft:quartz_slab[type=double,waterlogged=true]", + "minecraft:polished_diorite_slab[type=double,waterlogged=false]": "minecraft:quartz_slab[type=double,waterlogged=false]", + "minecraft:mossy_cobblestone_slab[type=top,waterlogged=true]": "minecraft:cobblestone_slab[type=top,waterlogged=true]", + "minecraft:mossy_cobblestone_slab[type=top,waterlogged=false]": "minecraft:cobblestone_slab[type=top,waterlogged=false]", + "minecraft:mossy_cobblestone_slab[type=bottom,waterlogged=true]": "minecraft:cobblestone_slab[type=bottom,waterlogged=true]", + "minecraft:mossy_cobblestone_slab[type=bottom,waterlogged=false]": "minecraft:cobblestone_slab[type=bottom,waterlogged=false]", + "minecraft:mossy_cobblestone_slab[type=double,waterlogged=true]": "minecraft:cobblestone_slab[type=double,waterlogged=true]", + "minecraft:mossy_cobblestone_slab[type=double,waterlogged=false]": "minecraft:cobblestone_slab[type=double,waterlogged=false]", + "minecraft:end_stone_brick_slab[type=top,waterlogged=true]": "minecraft:sandstone_slab[type=top,waterlogged=true]", + "minecraft:end_stone_brick_slab[type=top,waterlogged=false]": "minecraft:sandstone_slab[type=top,waterlogged=false]", + "minecraft:end_stone_brick_slab[type=bottom,waterlogged=true]": "minecraft:sandstone_slab[type=bottom,waterlogged=true]", + "minecraft:end_stone_brick_slab[type=bottom,waterlogged=false]": "minecraft:sandstone_slab[type=bottom,waterlogged=false]", + "minecraft:end_stone_brick_slab[type=double,waterlogged=true]": "minecraft:sandstone_slab[type=double,waterlogged=true]", + "minecraft:end_stone_brick_slab[type=double,waterlogged=false]": "minecraft:sandstone_slab[type=double,waterlogged=false]", + "minecraft:smooth_sandstone_slab[type=top,waterlogged=true]": "minecraft:sandstone_slab[type=top,waterlogged=true]", + "minecraft:smooth_sandstone_slab[type=top,waterlogged=false]": "minecraft:sandstone_slab[type=top,waterlogged=false]", + "minecraft:smooth_sandstone_slab[type=bottom,waterlogged=true]": "minecraft:sandstone_slab[type=bottom,waterlogged=true]", + "minecraft:smooth_sandstone_slab[type=bottom,waterlogged=false]": "minecraft:sandstone_slab[type=bottom,waterlogged=false]", + "minecraft:smooth_sandstone_slab[type=double,waterlogged=true]": "minecraft:sandstone_slab[type=double,waterlogged=true]", + "minecraft:smooth_sandstone_slab[type=double,waterlogged=false]": "minecraft:sandstone_slab[type=double,waterlogged=false]", + "minecraft:smooth_quartz_slab[type=top,waterlogged=true]": "minecraft:quartz_slab[type=top,waterlogged=true]", + "minecraft:smooth_quartz_slab[type=top,waterlogged=false]": "minecraft:quartz_slab[type=top,waterlogged=false]", + "minecraft:smooth_quartz_slab[type=bottom,waterlogged=true]": "minecraft:quartz_slab[type=bottom,waterlogged=true]", + "minecraft:smooth_quartz_slab[type=bottom,waterlogged=false]": "minecraft:quartz_slab[type=bottom,waterlogged=false]", + "minecraft:smooth_quartz_slab[type=double,waterlogged=true]": "minecraft:quartz_slab[type=double,waterlogged=true]", + "minecraft:smooth_quartz_slab[type=double,waterlogged=false]": "minecraft:quartz_slab[type=double,waterlogged=false]", + "minecraft:granite_slab[type=top,waterlogged=true]": "minecraft:red_sandstone_slab[type=top,waterlogged=true]", + "minecraft:granite_slab[type=top,waterlogged=false]": "minecraft:red_sandstone_slab[type=top,waterlogged=false]", + "minecraft:granite_slab[type=bottom,waterlogged=true]": "minecraft:red_sandstone_slab[type=bottom,waterlogged=true]", + "minecraft:granite_slab[type=bottom,waterlogged=false]": "minecraft:red_sandstone_slab[type=bottom,waterlogged=false]", + "minecraft:granite_slab[type=double,waterlogged=true]": "minecraft:red_sandstone_slab[type=double,waterlogged=true]", + "minecraft:granite_slab[type=double,waterlogged=false]": "minecraft:red_sandstone_slab[type=double,waterlogged=false]", + "minecraft:andesite_slab[type=top,waterlogged=true]": "minecraft:cobblestone_slab[type=top,waterlogged=true]", + "minecraft:andesite_slab[type=top,waterlogged=false]": "minecraft:cobblestone_slab[type=top,waterlogged=false]", + "minecraft:andesite_slab[type=bottom,waterlogged=true]": "minecraft:cobblestone_slab[type=bottom,waterlogged=true]", + "minecraft:andesite_slab[type=bottom,waterlogged=false]": "minecraft:cobblestone_slab[type=bottom,waterlogged=false]", + "minecraft:andesite_slab[type=double,waterlogged=true]": "minecraft:cobblestone_slab[type=double,waterlogged=true]", + "minecraft:andesite_slab[type=double,waterlogged=false]": "minecraft:cobblestone_slab[type=double,waterlogged=false]", + "minecraft:red_nether_brick_slab[type=top,waterlogged=true]": "minecraft:brick_slab[type=top,waterlogged=true]", + "minecraft:red_nether_brick_slab[type=top,waterlogged=false]": "minecraft:brick_slab[type=top,waterlogged=false]", + "minecraft:red_nether_brick_slab[type=bottom,waterlogged=true]": "minecraft:brick_slab[type=bottom,waterlogged=true]", + "minecraft:red_nether_brick_slab[type=bottom,waterlogged=false]": "minecraft:brick_slab[type=bottom,waterlogged=false]", + "minecraft:red_nether_brick_slab[type=double,waterlogged=true]": "minecraft:brick_slab[type=double,waterlogged=true]", + "minecraft:red_nether_brick_slab[type=double,waterlogged=false]": "minecraft:brick_slab[type=double,waterlogged=false]", + "minecraft:polished_andesite_slab[type=top,waterlogged=true]": "minecraft:stone_brick_slab[type=top,waterlogged=true]", + "minecraft:polished_andesite_slab[type=top,waterlogged=false]": "minecraft:stone_brick_slab[type=top,waterlogged=false]", + "minecraft:polished_andesite_slab[type=bottom,waterlogged=true]": "minecraft:stone_brick_slab[type=bottom,waterlogged=true]", + "minecraft:polished_andesite_slab[type=bottom,waterlogged=false]": "minecraft:stone_brick_slab[type=bottom,waterlogged=false]", + "minecraft:polished_andesite_slab[type=double,waterlogged=true]": "minecraft:stone_brick_slab[type=double,waterlogged=true]", + "minecraft:polished_andesite_slab[type=double,waterlogged=false]": "minecraft:stone_brick_slab[type=double,waterlogged=false]", + "minecraft:diorite_slab[type=top,waterlogged=true]": "minecraft:quartz_slab[type=top,waterlogged=true]", + "minecraft:diorite_slab[type=top,waterlogged=false]": "minecraft:quartz_slab[type=top,waterlogged=false]", + "minecraft:diorite_slab[type=bottom,waterlogged=true]": "minecraft:quartz_slab[type=bottom,waterlogged=true]", + "minecraft:diorite_slab[type=bottom,waterlogged=false]": "minecraft:quartz_slab[type=bottom,waterlogged=false]", + "minecraft:diorite_slab[type=double,waterlogged=true]": "minecraft:quartz_slab[type=double,waterlogged=true]", + "minecraft:diorite_slab[type=double,waterlogged=false]": "minecraft:quartz_slab[type=double,waterlogged=false]", + "minecraft:brick_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]", + "minecraft:brick_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]", + "minecraft:brick_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]", + "minecraft:brick_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]", + "minecraft:brick_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]", + "minecraft:brick_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]", + "minecraft:brick_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]", + "minecraft:brick_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]", + "minecraft:brick_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]", + "minecraft:brick_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]", + "minecraft:brick_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]", + "minecraft:brick_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]", + "minecraft:brick_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]", + "minecraft:brick_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]", + "minecraft:brick_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]", + "minecraft:brick_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]", + "minecraft:brick_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]", + "minecraft:brick_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]", + "minecraft:brick_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]", + "minecraft:brick_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]", + "minecraft:brick_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]", + "minecraft:brick_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]", + "minecraft:brick_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]", + "minecraft:brick_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]", + "minecraft:brick_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]", + "minecraft:brick_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]", + "minecraft:brick_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]", + "minecraft:brick_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]", + "minecraft:brick_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]", + "minecraft:brick_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]", + "minecraft:brick_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]", + "minecraft:brick_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]", + "minecraft:brick_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]", + "minecraft:brick_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]", + "minecraft:brick_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]", + "minecraft:brick_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]", + "minecraft:brick_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]", + "minecraft:brick_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]", + "minecraft:brick_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]", + "minecraft:brick_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]", + "minecraft:brick_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]", + "minecraft:brick_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]", + "minecraft:brick_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]", + "minecraft:brick_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]", + "minecraft:brick_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]", + "minecraft:brick_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]", + "minecraft:brick_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]", + "minecraft:brick_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]", + "minecraft:brick_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]", + "minecraft:brick_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]", + "minecraft:brick_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]", + "minecraft:brick_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]", + "minecraft:brick_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]", + "minecraft:brick_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]", + "minecraft:brick_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]", + "minecraft:brick_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]", + "minecraft:brick_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]", + "minecraft:brick_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]", + "minecraft:brick_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]", + "minecraft:brick_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]", + "minecraft:brick_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]", + "minecraft:brick_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]", + "minecraft:brick_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]", + "minecraft:brick_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]", + "minecraft:prismarine_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]", + "minecraft:prismarine_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]", + "minecraft:prismarine_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]", + "minecraft:prismarine_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]", + "minecraft:prismarine_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]", + "minecraft:prismarine_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]", + "minecraft:prismarine_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]", + "minecraft:prismarine_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]", + "minecraft:prismarine_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]", + "minecraft:prismarine_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]", + "minecraft:prismarine_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]", + "minecraft:prismarine_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]", + "minecraft:prismarine_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]", + "minecraft:prismarine_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]", + "minecraft:prismarine_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]", + "minecraft:prismarine_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]", + "minecraft:prismarine_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]", + "minecraft:prismarine_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]", + "minecraft:prismarine_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]", + "minecraft:prismarine_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]", + "minecraft:prismarine_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]", + "minecraft:prismarine_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]", + "minecraft:prismarine_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]", + "minecraft:prismarine_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]", + "minecraft:prismarine_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]", + "minecraft:prismarine_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]", + "minecraft:prismarine_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]", + "minecraft:prismarine_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]", + "minecraft:prismarine_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]", + "minecraft:prismarine_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]", + "minecraft:prismarine_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]", + "minecraft:prismarine_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]", + "minecraft:prismarine_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]", + "minecraft:prismarine_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]", + "minecraft:prismarine_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]", + "minecraft:prismarine_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]", + "minecraft:prismarine_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]", + "minecraft:prismarine_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]", + "minecraft:prismarine_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]", + "minecraft:prismarine_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]", + "minecraft:prismarine_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]", + "minecraft:prismarine_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]", + "minecraft:prismarine_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]", + "minecraft:prismarine_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]", + "minecraft:prismarine_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]", + "minecraft:prismarine_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]", + "minecraft:prismarine_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]", + "minecraft:prismarine_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]", + "minecraft:prismarine_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]", + "minecraft:prismarine_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]", + "minecraft:prismarine_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]", + "minecraft:prismarine_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]", + "minecraft:prismarine_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]", + "minecraft:prismarine_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]", + "minecraft:prismarine_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]", + "minecraft:prismarine_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]", + "minecraft:prismarine_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]", + "minecraft:prismarine_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]", + "minecraft:prismarine_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]", + "minecraft:prismarine_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]", + "minecraft:prismarine_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]", + "minecraft:prismarine_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]", + "minecraft:prismarine_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]", + "minecraft:prismarine_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]", + "minecraft:red_sandstone_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]", + "minecraft:red_sandstone_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]", + "minecraft:red_sandstone_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]", + "minecraft:red_sandstone_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]", + "minecraft:red_sandstone_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]", + "minecraft:red_sandstone_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]", + "minecraft:red_sandstone_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]", + "minecraft:red_sandstone_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]", + "minecraft:red_sandstone_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]", + "minecraft:red_sandstone_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]", + "minecraft:red_sandstone_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]", + "minecraft:red_sandstone_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]", + "minecraft:red_sandstone_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]", + "minecraft:red_sandstone_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]", + "minecraft:red_sandstone_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]", + "minecraft:red_sandstone_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]", + "minecraft:red_sandstone_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]", + "minecraft:red_sandstone_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]", + "minecraft:red_sandstone_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]", + "minecraft:red_sandstone_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]", + "minecraft:red_sandstone_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]", + "minecraft:red_sandstone_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]", + "minecraft:red_sandstone_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]", + "minecraft:red_sandstone_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]", + "minecraft:red_sandstone_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]", + "minecraft:red_sandstone_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]", + "minecraft:red_sandstone_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]", + "minecraft:red_sandstone_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]", + "minecraft:red_sandstone_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]", + "minecraft:red_sandstone_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]", + "minecraft:red_sandstone_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]", + "minecraft:red_sandstone_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]", + "minecraft:red_sandstone_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]", + "minecraft:red_sandstone_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]", + "minecraft:red_sandstone_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]", + "minecraft:red_sandstone_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]", + "minecraft:red_sandstone_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]", + "minecraft:red_sandstone_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]", + "minecraft:red_sandstone_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]", + "minecraft:red_sandstone_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]", + "minecraft:red_sandstone_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]", + "minecraft:red_sandstone_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]", + "minecraft:red_sandstone_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]", + "minecraft:red_sandstone_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]", + "minecraft:red_sandstone_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]", + "minecraft:red_sandstone_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]", + "minecraft:red_sandstone_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]", + "minecraft:red_sandstone_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]", + "minecraft:red_sandstone_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]", + "minecraft:red_sandstone_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]", + "minecraft:red_sandstone_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]", + "minecraft:red_sandstone_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]", + "minecraft:red_sandstone_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]", + "minecraft:red_sandstone_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]", + "minecraft:red_sandstone_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]", + "minecraft:red_sandstone_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]", + "minecraft:red_sandstone_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]", + "minecraft:red_sandstone_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]", + "minecraft:red_sandstone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]", + "minecraft:red_sandstone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]", + "minecraft:red_sandstone_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]", + "minecraft:red_sandstone_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]", + "minecraft:red_sandstone_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]", + "minecraft:red_sandstone_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]", + "minecraft:mossy_stone_brick_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]": "minecraft:mossy_cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]", + "minecraft:mossy_stone_brick_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]": "minecraft:mossy_cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]", + "minecraft:mossy_stone_brick_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]": "minecraft:mossy_cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]", + "minecraft:mossy_stone_brick_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]": "minecraft:mossy_cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]", + "minecraft:mossy_stone_brick_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]": "minecraft:mossy_cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]", + "minecraft:mossy_stone_brick_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]": "minecraft:mossy_cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]", + "minecraft:mossy_stone_brick_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]": "minecraft:mossy_cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]", + "minecraft:mossy_stone_brick_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]": "minecraft:mossy_cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]", + "minecraft:mossy_stone_brick_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]": "minecraft:mossy_cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]", + "minecraft:mossy_stone_brick_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]": "minecraft:mossy_cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]", + "minecraft:mossy_stone_brick_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]": "minecraft:mossy_cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]", + "minecraft:mossy_stone_brick_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]": "minecraft:mossy_cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]", + "minecraft:mossy_stone_brick_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]": "minecraft:mossy_cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]", + "minecraft:mossy_stone_brick_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]": "minecraft:mossy_cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]", + "minecraft:mossy_stone_brick_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]": "minecraft:mossy_cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]", + "minecraft:mossy_stone_brick_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]": "minecraft:mossy_cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]", + "minecraft:mossy_stone_brick_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]": "minecraft:mossy_cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]", + "minecraft:mossy_stone_brick_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]": "minecraft:mossy_cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]", + "minecraft:mossy_stone_brick_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]": "minecraft:mossy_cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]", + "minecraft:mossy_stone_brick_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]": "minecraft:mossy_cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]", + "minecraft:mossy_stone_brick_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]": "minecraft:mossy_cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]", + "minecraft:mossy_stone_brick_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]": "minecraft:mossy_cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]", + "minecraft:mossy_stone_brick_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]": "minecraft:mossy_cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]", + "minecraft:mossy_stone_brick_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]": "minecraft:mossy_cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]", + "minecraft:mossy_stone_brick_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]": "minecraft:mossy_cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]", + "minecraft:mossy_stone_brick_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]": "minecraft:mossy_cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]", + "minecraft:mossy_stone_brick_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]": "minecraft:mossy_cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]", + "minecraft:mossy_stone_brick_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]": "minecraft:mossy_cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]", + "minecraft:mossy_stone_brick_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]": "minecraft:mossy_cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]", + "minecraft:mossy_stone_brick_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]": "minecraft:mossy_cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]", + "minecraft:mossy_stone_brick_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]": "minecraft:mossy_cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]", + "minecraft:mossy_stone_brick_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]": "minecraft:mossy_cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]", + "minecraft:mossy_stone_brick_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]": "minecraft:mossy_cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]", + "minecraft:mossy_stone_brick_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]": "minecraft:mossy_cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]", + "minecraft:mossy_stone_brick_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]": "minecraft:mossy_cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]", + "minecraft:mossy_stone_brick_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]": "minecraft:mossy_cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]", + "minecraft:mossy_stone_brick_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]": "minecraft:mossy_cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]", + "minecraft:mossy_stone_brick_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]": "minecraft:mossy_cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]", + "minecraft:mossy_stone_brick_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]": "minecraft:mossy_cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]", + "minecraft:mossy_stone_brick_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]": "minecraft:mossy_cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]", + "minecraft:mossy_stone_brick_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]": "minecraft:mossy_cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]", + "minecraft:mossy_stone_brick_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]": "minecraft:mossy_cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]", + "minecraft:mossy_stone_brick_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]": "minecraft:mossy_cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]", + "minecraft:mossy_stone_brick_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]": "minecraft:mossy_cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]", + "minecraft:mossy_stone_brick_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]": "minecraft:mossy_cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]", + "minecraft:mossy_stone_brick_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]": "minecraft:mossy_cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]", + "minecraft:mossy_stone_brick_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]": "minecraft:mossy_cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]", + "minecraft:mossy_stone_brick_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]": "minecraft:mossy_cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]", + "minecraft:mossy_stone_brick_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]": "minecraft:mossy_cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]", + "minecraft:mossy_stone_brick_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]": "minecraft:mossy_cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]", + "minecraft:mossy_stone_brick_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]": "minecraft:mossy_cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]", + "minecraft:mossy_stone_brick_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]": "minecraft:mossy_cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]", + "minecraft:mossy_stone_brick_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]": "minecraft:mossy_cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]", + "minecraft:mossy_stone_brick_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]": "minecraft:mossy_cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]", + "minecraft:mossy_stone_brick_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]": "minecraft:mossy_cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]", + "minecraft:mossy_stone_brick_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]": "minecraft:mossy_cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]", + "minecraft:mossy_stone_brick_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]": "minecraft:mossy_cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]", + "minecraft:mossy_stone_brick_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]": "minecraft:mossy_cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]", + "minecraft:mossy_stone_brick_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]": "minecraft:mossy_cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]", + "minecraft:mossy_stone_brick_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]": "minecraft:mossy_cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]", + "minecraft:mossy_stone_brick_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]": "minecraft:mossy_cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]", + "minecraft:mossy_stone_brick_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]": "minecraft:mossy_cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]", + "minecraft:mossy_stone_brick_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]": "minecraft:mossy_cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]", + "minecraft:mossy_stone_brick_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]": "minecraft:mossy_cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]", + "minecraft:granite_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]", + "minecraft:granite_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]", + "minecraft:granite_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]", + "minecraft:granite_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]", + "minecraft:granite_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]", + "minecraft:granite_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]", + "minecraft:granite_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]", + "minecraft:granite_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]", + "minecraft:granite_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]", + "minecraft:granite_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]", + "minecraft:granite_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]", + "minecraft:granite_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]", + "minecraft:granite_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]", + "minecraft:granite_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]", + "minecraft:granite_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]", + "minecraft:granite_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]", + "minecraft:granite_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]", + "minecraft:granite_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]", + "minecraft:granite_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]", + "minecraft:granite_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]", + "minecraft:granite_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]", + "minecraft:granite_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]", + "minecraft:granite_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]", + "minecraft:granite_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]", + "minecraft:granite_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]", + "minecraft:granite_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]", + "minecraft:granite_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]", + "minecraft:granite_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]", + "minecraft:granite_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]", + "minecraft:granite_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]", + "minecraft:granite_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]", + "minecraft:granite_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]", + "minecraft:granite_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]", + "minecraft:granite_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]", + "minecraft:granite_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]", + "minecraft:granite_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]", + "minecraft:granite_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]", + "minecraft:granite_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]", + "minecraft:granite_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]", + "minecraft:granite_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]", + "minecraft:granite_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]", + "minecraft:granite_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]", + "minecraft:granite_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]", + "minecraft:granite_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]", + "minecraft:granite_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]", + "minecraft:granite_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]", + "minecraft:granite_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]", + "minecraft:granite_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]", + "minecraft:granite_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]", + "minecraft:granite_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]", + "minecraft:granite_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]", + "minecraft:granite_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]", + "minecraft:granite_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]", + "minecraft:granite_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]", + "minecraft:granite_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]", + "minecraft:granite_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]", + "minecraft:granite_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]", + "minecraft:granite_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]", + "minecraft:granite_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]", + "minecraft:granite_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]", + "minecraft:granite_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]", + "minecraft:granite_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]", + "minecraft:granite_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]", + "minecraft:granite_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]", + "minecraft:stone_brick_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]", + "minecraft:stone_brick_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]", + "minecraft:stone_brick_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]", + "minecraft:stone_brick_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]", + "minecraft:stone_brick_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]", + "minecraft:stone_brick_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]", + "minecraft:stone_brick_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]", + "minecraft:stone_brick_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]", + "minecraft:stone_brick_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]", + "minecraft:stone_brick_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]", + "minecraft:stone_brick_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]", + "minecraft:stone_brick_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]", + "minecraft:stone_brick_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]", + "minecraft:stone_brick_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]", + "minecraft:stone_brick_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]", + "minecraft:stone_brick_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]", + "minecraft:stone_brick_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]", + "minecraft:stone_brick_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]", + "minecraft:stone_brick_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]", + "minecraft:stone_brick_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]", + "minecraft:stone_brick_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]", + "minecraft:stone_brick_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]", + "minecraft:stone_brick_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]", + "minecraft:stone_brick_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]", + "minecraft:stone_brick_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]", + "minecraft:stone_brick_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]", + "minecraft:stone_brick_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]", + "minecraft:stone_brick_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]", + "minecraft:stone_brick_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]", + "minecraft:stone_brick_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]", + "minecraft:stone_brick_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]", + "minecraft:stone_brick_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]", + "minecraft:stone_brick_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]", + "minecraft:stone_brick_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]", + "minecraft:stone_brick_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]", + "minecraft:stone_brick_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]", + "minecraft:stone_brick_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]", + "minecraft:stone_brick_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]", + "minecraft:stone_brick_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]", + "minecraft:stone_brick_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]", + "minecraft:stone_brick_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]", + "minecraft:stone_brick_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]", + "minecraft:stone_brick_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]", + "minecraft:stone_brick_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]", + "minecraft:stone_brick_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]", + "minecraft:stone_brick_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]", + "minecraft:stone_brick_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]", + "minecraft:stone_brick_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]", + "minecraft:stone_brick_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]", + "minecraft:stone_brick_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]", + "minecraft:stone_brick_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]", + "minecraft:stone_brick_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]", + "minecraft:stone_brick_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]", + "minecraft:stone_brick_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]", + "minecraft:stone_brick_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]", + "minecraft:stone_brick_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]", + "minecraft:stone_brick_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]", + "minecraft:stone_brick_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]", + "minecraft:stone_brick_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]", + "minecraft:stone_brick_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]", + "minecraft:stone_brick_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]", + "minecraft:stone_brick_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]", + "minecraft:stone_brick_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]", + "minecraft:stone_brick_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]", + "minecraft:nether_brick_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]", + "minecraft:nether_brick_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]", + "minecraft:nether_brick_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]", + "minecraft:nether_brick_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]", + "minecraft:nether_brick_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]", + "minecraft:nether_brick_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]", + "minecraft:nether_brick_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]", + "minecraft:nether_brick_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]", + "minecraft:nether_brick_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]", + "minecraft:nether_brick_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]", + "minecraft:nether_brick_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]", + "minecraft:nether_brick_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]", + "minecraft:nether_brick_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]", + "minecraft:nether_brick_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]", + "minecraft:nether_brick_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]", + "minecraft:nether_brick_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]", + "minecraft:nether_brick_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]", + "minecraft:nether_brick_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]", + "minecraft:nether_brick_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]", + "minecraft:nether_brick_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]", + "minecraft:nether_brick_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]", + "minecraft:nether_brick_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]", + "minecraft:nether_brick_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]", + "minecraft:nether_brick_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]", + "minecraft:nether_brick_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]", + "minecraft:nether_brick_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]", + "minecraft:nether_brick_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]", + "minecraft:nether_brick_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]", + "minecraft:nether_brick_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]", + "minecraft:nether_brick_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]", + "minecraft:nether_brick_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]", + "minecraft:nether_brick_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]", + "minecraft:nether_brick_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]", + "minecraft:nether_brick_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]", + "minecraft:nether_brick_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]", + "minecraft:nether_brick_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]", + "minecraft:nether_brick_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]", + "minecraft:nether_brick_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]", + "minecraft:nether_brick_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]", + "minecraft:nether_brick_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]", + "minecraft:nether_brick_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]", + "minecraft:nether_brick_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]", + "minecraft:nether_brick_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]", + "minecraft:nether_brick_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]", + "minecraft:nether_brick_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]", + "minecraft:nether_brick_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]", + "minecraft:nether_brick_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]", + "minecraft:nether_brick_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]", + "minecraft:nether_brick_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]", + "minecraft:nether_brick_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]", + "minecraft:nether_brick_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]", + "minecraft:nether_brick_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]", + "minecraft:nether_brick_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]", + "minecraft:nether_brick_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]", + "minecraft:nether_brick_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]", + "minecraft:nether_brick_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]", + "minecraft:nether_brick_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]", + "minecraft:nether_brick_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]", + "minecraft:nether_brick_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]", + "minecraft:nether_brick_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]", + "minecraft:nether_brick_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]", + "minecraft:nether_brick_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]", + "minecraft:nether_brick_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]", + "minecraft:nether_brick_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]", + "minecraft:andesite_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]", + "minecraft:andesite_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]", + "minecraft:andesite_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]", + "minecraft:andesite_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]", + "minecraft:andesite_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]", + "minecraft:andesite_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]", + "minecraft:andesite_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]", + "minecraft:andesite_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]", + "minecraft:andesite_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]", + "minecraft:andesite_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]", + "minecraft:andesite_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]", + "minecraft:andesite_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]", + "minecraft:andesite_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]", + "minecraft:andesite_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]", + "minecraft:andesite_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]", + "minecraft:andesite_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]", + "minecraft:andesite_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]", + "minecraft:andesite_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]", + "minecraft:andesite_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]", + "minecraft:andesite_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]", + "minecraft:andesite_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]", + "minecraft:andesite_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]", + "minecraft:andesite_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]", + "minecraft:andesite_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]", + "minecraft:andesite_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]", + "minecraft:andesite_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]", + "minecraft:andesite_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]", + "minecraft:andesite_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]", + "minecraft:andesite_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]", + "minecraft:andesite_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]", + "minecraft:andesite_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]", + "minecraft:andesite_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]", + "minecraft:andesite_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]", + "minecraft:andesite_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]", + "minecraft:andesite_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]", + "minecraft:andesite_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]", + "minecraft:andesite_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]", + "minecraft:andesite_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]", + "minecraft:andesite_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]", + "minecraft:andesite_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]", + "minecraft:andesite_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]", + "minecraft:andesite_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]", + "minecraft:andesite_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]", + "minecraft:andesite_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]", + "minecraft:andesite_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]", + "minecraft:andesite_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]", + "minecraft:andesite_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]", + "minecraft:andesite_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]", + "minecraft:andesite_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]", + "minecraft:andesite_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]", + "minecraft:andesite_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]", + "minecraft:andesite_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]", + "minecraft:andesite_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]", + "minecraft:andesite_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]", + "minecraft:andesite_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]", + "minecraft:andesite_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]", + "minecraft:andesite_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]", + "minecraft:andesite_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]", + "minecraft:andesite_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]", + "minecraft:andesite_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]", + "minecraft:andesite_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]", + "minecraft:andesite_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]", + "minecraft:andesite_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]", + "minecraft:andesite_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]", + "minecraft:red_nether_brick_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]", + "minecraft:red_nether_brick_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]", + "minecraft:red_nether_brick_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]", + "minecraft:red_nether_brick_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]", + "minecraft:red_nether_brick_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]", + "minecraft:red_nether_brick_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]", + "minecraft:red_nether_brick_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]", + "minecraft:red_nether_brick_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]", + "minecraft:red_nether_brick_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]", + "minecraft:red_nether_brick_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]", + "minecraft:red_nether_brick_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]", + "minecraft:red_nether_brick_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]", + "minecraft:red_nether_brick_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]", + "minecraft:red_nether_brick_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]", + "minecraft:red_nether_brick_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]", + "minecraft:red_nether_brick_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]", + "minecraft:red_nether_brick_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]", + "minecraft:red_nether_brick_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]", + "minecraft:red_nether_brick_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]", + "minecraft:red_nether_brick_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]", + "minecraft:red_nether_brick_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]", + "minecraft:red_nether_brick_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]", + "minecraft:red_nether_brick_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]", + "minecraft:red_nether_brick_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]", + "minecraft:red_nether_brick_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]", + "minecraft:red_nether_brick_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]", + "minecraft:red_nether_brick_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]", + "minecraft:red_nether_brick_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]", + "minecraft:red_nether_brick_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]", + "minecraft:red_nether_brick_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]", + "minecraft:red_nether_brick_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]", + "minecraft:red_nether_brick_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]", + "minecraft:red_nether_brick_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]", + "minecraft:red_nether_brick_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]", + "minecraft:red_nether_brick_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]", + "minecraft:red_nether_brick_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]", + "minecraft:red_nether_brick_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]", + "minecraft:red_nether_brick_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]", + "minecraft:red_nether_brick_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]", + "minecraft:red_nether_brick_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]", + "minecraft:red_nether_brick_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]", + "minecraft:red_nether_brick_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]", + "minecraft:red_nether_brick_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]", + "minecraft:red_nether_brick_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]", + "minecraft:red_nether_brick_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]", + "minecraft:red_nether_brick_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]", + "minecraft:red_nether_brick_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]", + "minecraft:red_nether_brick_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]", + "minecraft:red_nether_brick_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]", + "minecraft:red_nether_brick_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]", + "minecraft:red_nether_brick_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]", + "minecraft:red_nether_brick_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]", + "minecraft:red_nether_brick_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]", + "minecraft:red_nether_brick_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]", + "minecraft:red_nether_brick_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]", + "minecraft:red_nether_brick_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]", + "minecraft:red_nether_brick_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]", + "minecraft:red_nether_brick_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]", + "minecraft:red_nether_brick_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]", + "minecraft:red_nether_brick_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]", + "minecraft:red_nether_brick_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]", + "minecraft:red_nether_brick_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]", + "minecraft:red_nether_brick_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]", + "minecraft:red_nether_brick_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]", + "minecraft:sandstone_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]", + "minecraft:sandstone_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]", + "minecraft:sandstone_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]", + "minecraft:sandstone_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]", + "minecraft:sandstone_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]", + "minecraft:sandstone_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]", + "minecraft:sandstone_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]", + "minecraft:sandstone_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]", + "minecraft:sandstone_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]", + "minecraft:sandstone_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]", + "minecraft:sandstone_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]", + "minecraft:sandstone_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]", + "minecraft:sandstone_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]", + "minecraft:sandstone_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]", + "minecraft:sandstone_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]", + "minecraft:sandstone_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]", + "minecraft:sandstone_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]", + "minecraft:sandstone_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]", + "minecraft:sandstone_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]", + "minecraft:sandstone_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]", + "minecraft:sandstone_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]", + "minecraft:sandstone_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]", + "minecraft:sandstone_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]", + "minecraft:sandstone_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]", + "minecraft:sandstone_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]", + "minecraft:sandstone_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]", + "minecraft:sandstone_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]", + "minecraft:sandstone_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]", + "minecraft:sandstone_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]", + "minecraft:sandstone_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]", + "minecraft:sandstone_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]", + "minecraft:sandstone_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]", + "minecraft:sandstone_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]", + "minecraft:sandstone_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]", + "minecraft:sandstone_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]", + "minecraft:sandstone_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]", + "minecraft:sandstone_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]", + "minecraft:sandstone_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]", + "minecraft:sandstone_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]", + "minecraft:sandstone_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]", + "minecraft:sandstone_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]", + "minecraft:sandstone_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]", + "minecraft:sandstone_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]", + "minecraft:sandstone_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]", + "minecraft:sandstone_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]", + "minecraft:sandstone_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]", + "minecraft:sandstone_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]", + "minecraft:sandstone_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]", + "minecraft:sandstone_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]", + "minecraft:sandstone_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]", + "minecraft:sandstone_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]", + "minecraft:sandstone_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]", + "minecraft:sandstone_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]", + "minecraft:sandstone_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]", + "minecraft:sandstone_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]", + "minecraft:sandstone_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]", + "minecraft:sandstone_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]", + "minecraft:sandstone_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]", + "minecraft:sandstone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]", + "minecraft:sandstone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]", + "minecraft:sandstone_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]", + "minecraft:sandstone_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]", + "minecraft:sandstone_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]", + "minecraft:sandstone_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]", + "minecraft:end_stone_brick_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]", + "minecraft:end_stone_brick_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]", + "minecraft:end_stone_brick_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]", + "minecraft:end_stone_brick_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]", + "minecraft:end_stone_brick_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]", + "minecraft:end_stone_brick_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]", + "minecraft:end_stone_brick_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]", + "minecraft:end_stone_brick_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]", + "minecraft:end_stone_brick_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]", + "minecraft:end_stone_brick_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]", + "minecraft:end_stone_brick_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]", + "minecraft:end_stone_brick_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]", + "minecraft:end_stone_brick_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]", + "minecraft:end_stone_brick_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]", + "minecraft:end_stone_brick_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]", + "minecraft:end_stone_brick_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]", + "minecraft:end_stone_brick_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]", + "minecraft:end_stone_brick_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]", + "minecraft:end_stone_brick_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]", + "minecraft:end_stone_brick_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]", + "minecraft:end_stone_brick_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]", + "minecraft:end_stone_brick_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]", + "minecraft:end_stone_brick_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]", + "minecraft:end_stone_brick_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]", + "minecraft:end_stone_brick_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]", + "minecraft:end_stone_brick_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]", + "minecraft:end_stone_brick_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]", + "minecraft:end_stone_brick_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]", + "minecraft:end_stone_brick_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]", + "minecraft:end_stone_brick_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]", + "minecraft:end_stone_brick_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]", + "minecraft:end_stone_brick_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]", + "minecraft:end_stone_brick_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]", + "minecraft:end_stone_brick_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]", + "minecraft:end_stone_brick_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]", + "minecraft:end_stone_brick_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]", + "minecraft:end_stone_brick_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]", + "minecraft:end_stone_brick_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]", + "minecraft:end_stone_brick_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]", + "minecraft:end_stone_brick_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]", + "minecraft:end_stone_brick_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]", + "minecraft:end_stone_brick_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]", + "minecraft:end_stone_brick_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]", + "minecraft:end_stone_brick_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]", + "minecraft:end_stone_brick_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]", + "minecraft:end_stone_brick_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]", + "minecraft:end_stone_brick_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]", + "minecraft:end_stone_brick_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]", + "minecraft:end_stone_brick_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]", + "minecraft:end_stone_brick_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]", + "minecraft:end_stone_brick_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]", + "minecraft:end_stone_brick_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]", + "minecraft:end_stone_brick_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]", + "minecraft:end_stone_brick_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]", + "minecraft:end_stone_brick_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]", + "minecraft:end_stone_brick_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]", + "minecraft:end_stone_brick_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]", + "minecraft:end_stone_brick_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]", + "minecraft:end_stone_brick_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]", + "minecraft:end_stone_brick_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]", + "minecraft:end_stone_brick_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]", + "minecraft:end_stone_brick_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]", + "minecraft:end_stone_brick_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]", + "minecraft:end_stone_brick_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]", + "minecraft:diorite_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]", + "minecraft:diorite_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]", + "minecraft:diorite_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]", + "minecraft:diorite_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]", + "minecraft:diorite_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]", + "minecraft:diorite_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]", + "minecraft:diorite_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]", + "minecraft:diorite_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]", + "minecraft:diorite_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]", + "minecraft:diorite_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]", + "minecraft:diorite_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]", + "minecraft:diorite_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]", + "minecraft:diorite_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]", + "minecraft:diorite_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]", + "minecraft:diorite_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]", + "minecraft:diorite_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]", + "minecraft:diorite_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]", + "minecraft:diorite_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]", + "minecraft:diorite_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]", + "minecraft:diorite_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]", + "minecraft:diorite_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]", + "minecraft:diorite_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]", + "minecraft:diorite_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]", + "minecraft:diorite_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]", + "minecraft:diorite_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]", + "minecraft:diorite_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]", + "minecraft:diorite_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]", + "minecraft:diorite_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]", + "minecraft:diorite_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]", + "minecraft:diorite_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]", + "minecraft:diorite_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]", + "minecraft:diorite_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]", + "minecraft:diorite_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]", + "minecraft:diorite_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]", + "minecraft:diorite_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]", + "minecraft:diorite_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]", + "minecraft:diorite_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]", + "minecraft:diorite_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]", + "minecraft:diorite_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]", + "minecraft:diorite_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]", + "minecraft:diorite_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]", + "minecraft:diorite_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]", + "minecraft:diorite_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]", + "minecraft:diorite_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]", + "minecraft:diorite_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]", + "minecraft:diorite_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]", + "minecraft:diorite_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]", + "minecraft:diorite_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]", + "minecraft:diorite_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]", + "minecraft:diorite_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]", + "minecraft:diorite_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]", + "minecraft:diorite_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]", + "minecraft:diorite_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]", + "minecraft:diorite_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]", + "minecraft:diorite_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]", + "minecraft:diorite_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]", + "minecraft:diorite_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]", + "minecraft:diorite_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]", + "minecraft:diorite_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]", + "minecraft:diorite_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]", + "minecraft:diorite_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]", + "minecraft:diorite_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]", + "minecraft:diorite_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]", + "minecraft:diorite_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]", + "minecraft:loom": "minecraft:crafting_table", + "minecraft:barrel[facing=north,open=true]": "minecraft:dispenser[facing=north,triggered=true]", + "minecraft:barrel[facing=north,open=false]": "minecraft:dispenser[facing=north,triggered=false]", + "minecraft:barrel[facing=east,open=true]": "minecraft:dispenser[facing=east,triggered=true]", + "minecraft:barrel[facing=east,open=false]": "minecraft:dispenser[facing=east,triggered=false]", + "minecraft:barrel[facing=south,open=true]": "minecraft:dispenser[facing=south,triggered=true]", + "minecraft:barrel[facing=south,open=false]": "minecraft:dispenser[facing=south,triggered=false]", + "minecraft:barrel[facing=west,open=true]": "minecraft:dispenser[facing=west,triggered=true]", + "minecraft:barrel[facing=west,open=false]": "minecraft:dispenser[facing=west,triggered=false]", + "minecraft:barrel[facing=up,open=true]": "minecraft:dispenser[facing=up,triggered=true]", + "minecraft:barrel[facing=up,open=false]": "minecraft:dispenser[facing=up,triggered=false]", + "minecraft:barrel[facing=down,open=true]": "minecraft:dispenser[facing=down,triggered=true]", + "minecraft:barrel[facing=down,open=false]": "minecraft:dispenser[facing=down,triggered=false]", + "minecraft:smoker[facing=north,lit=true]": "minecraft:furnace[facing=north,lit=true]", + "minecraft:smoker[facing=north,lit=false]": "minecraft:furnace[facing=north,lit=false]", + "minecraft:smoker[facing=south,lit=true]": "minecraft:furnace[facing=south,lit=true]", + "minecraft:smoker[facing=south,lit=false]": "minecraft:furnace[facing=south,lit=false]", + "minecraft:smoker[facing=west,lit=true]": "minecraft:furnace[facing=west,lit=true]", + "minecraft:smoker[facing=west,lit=false]": "minecraft:furnace[facing=west,lit=false]", + "minecraft:smoker[facing=east,lit=true]": "minecraft:furnace[facing=east,lit=true]", + "minecraft:smoker[facing=east,lit=false]": "minecraft:furnace[facing=east,lit=false]", + "minecraft:blast_furnace[facing=north,lit=true]": "minecraft:furnace[facing=north,lit=true]", + "minecraft:blast_furnace[facing=north,lit=false]": "minecraft:furnace[facing=north,lit=false]", + "minecraft:blast_furnace[facing=south,lit=true]": "minecraft:furnace[facing=south,lit=true]", + "minecraft:blast_furnace[facing=south,lit=false]": "minecraft:furnace[facing=south,lit=false]", + "minecraft:blast_furnace[facing=west,lit=true]": "minecraft:furnace[facing=west,lit=true]", + "minecraft:blast_furnace[facing=west,lit=false]": "minecraft:furnace[facing=west,lit=false]", + "minecraft:blast_furnace[facing=east,lit=true]": "minecraft:furnace[facing=east,lit=true]", + "minecraft:blast_furnace[facing=east,lit=false]": "minecraft:furnace[facing=east,lit=false]", + "minecraft:cartography_table": "minecraft:crafting_table", + "minecraft:fletching_table": "minecraft:crafting_table", + "minecraft:smithing_table": "minecraft:crafting_table", + "minecraft:lantern[hanging=true]": "redstone_lamp[lit=true]", + "minecraft:lantern[hanging=false]": "redstone_lamp[lit=true]", + "minecraft:composter[level=0]": "[level=0]", + "minecraft:composter[level=1]": "[level=0]", + "minecraft:composter[level=2]": "[level=1]", + "minecraft:composter[level=3]": "[level=1]", + "minecraft:composter[level=4]": "[level=1]", + "minecraft:composter[level=5]": "[level=2]", + "minecraft:composter[level=6]": "[level=2]", + "minecraft:composter[level=7]": "[level=2]", + "minecraft:composter[level=8]": "[level=3]" } } \ No newline at end of file From 9aa98846d289a4e0ee40b0e154d8bc106f054ea6 Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Tue, 21 May 2019 19:16:56 +0200 Subject: [PATCH 110/171] fix mappings --- .../data/mapping-1.13.2to1.14.json | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/core/src/main/resources/assets/viabackwards/data/mapping-1.13.2to1.14.json b/core/src/main/resources/assets/viabackwards/data/mapping-1.13.2to1.14.json index 84c6b376..195f31a7 100644 --- a/core/src/main/resources/assets/viabackwards/data/mapping-1.13.2to1.14.json +++ b/core/src/main/resources/assets/viabackwards/data/mapping-1.13.2to1.14.json @@ -2525,16 +2525,16 @@ "minecraft:cartography_table": "minecraft:crafting_table", "minecraft:fletching_table": "minecraft:crafting_table", "minecraft:smithing_table": "minecraft:crafting_table", - "minecraft:lantern[hanging=true]": "redstone_lamp[lit=true]", - "minecraft:lantern[hanging=false]": "redstone_lamp[lit=true]", - "minecraft:composter[level=0]": "[level=0]", - "minecraft:composter[level=1]": "[level=0]", - "minecraft:composter[level=2]": "[level=1]", - "minecraft:composter[level=3]": "[level=1]", - "minecraft:composter[level=4]": "[level=1]", - "minecraft:composter[level=5]": "[level=2]", - "minecraft:composter[level=6]": "[level=2]", - "minecraft:composter[level=7]": "[level=2]", - "minecraft:composter[level=8]": "[level=3]" + "minecraft:lantern[hanging=true]": "minecraft:redstone_lamp[lit=true]", + "minecraft:lantern[hanging=false]": "minecraft:redstone_lamp[lit=true]", + "minecraft:composter[level=0]": "minecraft:cauldron[level=0]", + "minecraft:composter[level=1]": "minecraft:cauldron[level=0]", + "minecraft:composter[level=2]": "minecraft:cauldron[level=1]", + "minecraft:composter[level=3]": "minecraft:cauldron[level=1]", + "minecraft:composter[level=4]": "minecraft:cauldron[level=1]", + "minecraft:composter[level=5]": "minecraft:cauldron[level=2]", + "minecraft:composter[level=6]": "minecraft:cauldron[level=2]", + "minecraft:composter[level=7]": "minecraft:cauldron[level=2]", + "minecraft:composter[level=8]": "minecraft:cauldron[level=3]" } } \ No newline at end of file From 96b05bcd4fc24a4b37215e456accf397404862d0 Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Tue, 21 May 2019 19:43:58 +0200 Subject: [PATCH 111/171] Use logger --- .../protocol1_13_2to1_14/packets/EntityPackets1_14.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java index c7e154dc..6dc54f8a 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java @@ -421,7 +421,7 @@ public class EntityPackets1_14 extends EntityRewriter { Metadata meta = e.getData(); int typeId = meta.getMetaType().getTypeID(); if (typeId > 15) { - System.out.println("new 1.14 metadata was not handled: " + meta + " entity: " + e.getEntity().getType()); + ViaBackwards.getPlatform().getLogger().warning("New 1.14 metadata was not handled: " + meta + " entity: " + e.getEntity().getType()); return null; } return meta; From dd454d56f3b47739c1c776a389ee1621abe3422b Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Tue, 21 May 2019 21:50:57 +0200 Subject: [PATCH 112/171] fix display name --- .../viabackwards/api/rewriters/EntityRewriter.java | 10 +++++++++- .../packets/EntityPackets1_14.java | 3 +++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/api/rewriters/EntityRewriter.java b/core/src/main/java/nl/matsv/viabackwards/api/rewriters/EntityRewriter.java index 9236f03f..ae5b46c9 100644 --- a/core/src/main/java/nl/matsv/viabackwards/api/rewriters/EntityRewriter.java +++ b/core/src/main/java/nl/matsv/viabackwards/api/rewriters/EntityRewriter.java @@ -30,6 +30,7 @@ import us.myles.ViaVersion.api.minecraft.metadata.MetaType; import us.myles.ViaVersion.api.minecraft.metadata.Metadata; import us.myles.ViaVersion.api.minecraft.metadata.types.MetaType1_9; import us.myles.ViaVersion.exception.CancelException; +import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.ChatRewriter; import java.util.ArrayList; import java.util.List; @@ -51,6 +52,9 @@ public abstract class EntityRewriter extends Rewrit @Getter(AccessLevel.PROTECTED) @Setter(AccessLevel.PROTECTED) private int displayNameIndex = 2; + @Getter(AccessLevel.PROTECTED) + @Setter(AccessLevel.PROTECTED) + private boolean isDisplayNameJson = false; protected AbstractEntityType getEntityType(UserConnection connection, int id) { return getEntityTracker(connection).getEntityType(id); @@ -149,7 +153,11 @@ public abstract class EntityRewriter extends Rewrit if (entData.getMobName() != null && (data.getValue() == null || ((String) data.getValue()).isEmpty()) && data.getMetaType().getTypeID() == getDisplayNameMetaType().getTypeID()) { - data.setValue(entData.getMobName()); + String mobName = entData.getMobName(); + if (isDisplayNameJson) { + mobName = ChatRewriter.legacyTextToJson(mobName); + } + data.setValue(mobName); } } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java index 6dc54f8a..9dd49b40 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java @@ -288,6 +288,9 @@ public class EntityPackets1_14 extends EntityRewriter { @Override protected void registerRewrites() { + setDisplayNameJson(true); + setDisplayNameMetaType(MetaType1_13_2.OptChat); + regEntType(EntityType1_14.EntityType.CAT, EntityType1_14.EntityType.OCELOT).mobName("Cat").spawnMetadata(e -> { // e.add(new Metadata(13, MetaType1_13_2.Byte, (byte) 0x4)); // Tamed cat }); From a7126b39dc8a1666780bde9aeb74089715ecc125 Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Tue, 21 May 2019 22:05:36 +0200 Subject: [PATCH 113/171] fix horse armor --- .../Protocol1_13_2To1_14.java | 6 ++-- .../packets/BlockItemPackets1_14.java | 33 +++++++++++++++++++ 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java index 91abf59d..9afa969a 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java @@ -21,7 +21,7 @@ import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; @Getter public class Protocol1_13_2To1_14 extends BackwardsProtocol { private BlockItemPackets1_14 blockItemPackets; - private EntityPackets1_14 entityPacket; + private EntityPackets1_14 entityPackets; static { BackwardsMappings.init(); @@ -32,8 +32,8 @@ public class Protocol1_13_2To1_14 extends BackwardsProtocol { protected void registerPackets() { blockItemPackets = new BlockItemPackets1_14(); blockItemPackets.register(this); - entityPacket = new EntityPackets1_14(); - entityPacket.register(this); + entityPackets = new EntityPackets1_14(); + entityPackets.register(this); new PlayerPackets1_14().register(this); new SoundPackets1_14().register(this); diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java index deb5f193..e9e74104 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java @@ -2,6 +2,9 @@ package nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.packets; import com.google.common.collect.ImmutableSet; import nl.matsv.viabackwards.ViaBackwards; +import nl.matsv.viabackwards.api.entities.storage.EntityTracker; +import nl.matsv.viabackwards.api.entities.types.AbstractEntityType; +import nl.matsv.viabackwards.api.entities.types.EntityType1_14; import nl.matsv.viabackwards.api.rewriters.BlockItemRewriter; import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.Protocol1_13_2To1_14; import us.myles.ViaVersion.api.PacketWrapper; @@ -10,9 +13,12 @@ import us.myles.ViaVersion.api.minecraft.Environment; import us.myles.ViaVersion.api.minecraft.chunks.Chunk; import us.myles.ViaVersion.api.minecraft.chunks.ChunkSection; import us.myles.ViaVersion.api.minecraft.item.Item; +import us.myles.ViaVersion.api.minecraft.metadata.Metadata; +import us.myles.ViaVersion.api.minecraft.metadata.types.MetaType1_13_2; import us.myles.ViaVersion.api.remapper.PacketHandler; import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.api.type.Type; +import us.myles.ViaVersion.api.type.types.version.Types1_13; import us.myles.ViaVersion.packets.State; import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.ChatRewriter; import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.types.Chunk1_13Type; @@ -26,7 +32,9 @@ import us.myles.viaversion.libs.opennbt.tag.builtin.ListTag; import us.myles.viaversion.libs.opennbt.tag.builtin.StringTag; import us.myles.viaversion.libs.opennbt.tag.builtin.Tag; +import java.util.ArrayList; import java.util.Arrays; +import java.util.List; import java.util.Set; public class BlockItemPackets1_14 extends BlockItemRewriter { @@ -224,6 +232,31 @@ public class BlockItemPackets1_14 extends BlockItemRewriter 3) { + ViaBackwards.getPlatform().getLogger().warning("Received invalid horse armor: " + item); + wrapper.cancel(); + return; + } + List metadataList = new ArrayList<>(); + metadataList.add(new Metadata(16, MetaType1_13_2.VarInt, armorType)); + wrapper.write(Types1_13.METADATA_LIST, metadataList); + } + } + }); } }); From 19d86058f9bf77ee2b574297f6485cfa4da29d95 Mon Sep 17 00:00:00 2001 From: Marco Date: Tue, 21 May 2019 22:07:43 +0200 Subject: [PATCH 114/171] add entity remaps --- .../protocol1_13_2to1_14/packets/EntityPackets1_14.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java index c7e154dc..18139b24 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java @@ -18,6 +18,7 @@ import us.myles.ViaVersion.api.minecraft.item.Item; import us.myles.ViaVersion.api.minecraft.metadata.MetaType; import us.myles.ViaVersion.api.minecraft.metadata.Metadata; import us.myles.ViaVersion.api.minecraft.metadata.types.MetaType1_13_2; +import us.myles.ViaVersion.api.minecraft.metadata.types.MetaType1_14; import us.myles.ViaVersion.api.remapper.PacketHandler; import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.api.type.Type; @@ -295,6 +296,8 @@ public class EntityPackets1_14 extends EntityRewriter { regEntType(EntityType1_14.EntityType.TRADER_LLAMA, EntityType1_14.EntityType.LLAMA).mobName("Trader Llama"); regEntType(EntityType1_14.EntityType.FOX, EntityType1_14.EntityType.WOLF).mobName("Fox"); regEntType(EntityType1_14.EntityType.PANDA, EntityType1_14.EntityType.POLAR_BEAR).mobName("Panda"); + regEntType(EntityType1_14.EntityType.PILLAGER, EntityType1_14.EntityType.VILLAGER).mobName("Pillager"); + regEntType(EntityType1_14.EntityType.RAVAGER, EntityType1_14.EntityType.COW).mobName("Ravager"); registerMetaHandler().handle(e -> { Metadata meta = e.getData(); @@ -310,12 +313,14 @@ public class EntityPackets1_14 extends EntityRewriter { meta.setValue(getProtocol().getBlockItemPackets().handleItemToClient(item)); } else if (type == MetaType1_13_2.BlockID) { int blockstate = (Integer) meta.getValue(); - meta.setValue(Protocol1_14To1_13_2.getNewBlockStateId(blockstate)); + meta.setValue(getProtocol().getNewBlockStateId(blockstate)); } return meta; }); + registerMetaHandler().filter(EntityType1_14.EntityType.PILLAGER, 15).removed(); + registerMetaHandler().filter(EntityType1_14.EntityType.FOX, 15).removed(); registerMetaHandler().filter(EntityType1_14.EntityType.FOX, 16).removed(); registerMetaHandler().filter(EntityType1_14.EntityType.FOX, 17).removed(); From e4638688f55a2e7d65537d1b9ec6545acb237911 Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Tue, 21 May 2019 22:15:56 +0200 Subject: [PATCH 115/171] fix mapping size --- .../protocol/protocol1_13_2to1_14/data/BackwardsMappings.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/BackwardsMappings.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/BackwardsMappings.java index aba75614..60a87019 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/BackwardsMappings.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/BackwardsMappings.java @@ -84,7 +84,7 @@ public class BackwardsMappings { } private static class BlockMappingsShortArray implements BlockMappings { - private short[] oldToNew = new short[11258 + 1]; + private short[] oldToNew = new short[11270 + 1]; private BlockMappingsShortArray(JsonObject newIdentifiers, JsonObject oldIdentifiers, JsonObject mapping) { Arrays.fill(oldToNew, (short) -1); From 114dbedfb74e513a2b069428c9218de11970ea2d Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Tue, 21 May 2019 22:28:28 +0200 Subject: [PATCH 116/171] fix missing metadata index check --- .../protocol1_13_2to1_14/packets/EntityPackets1_14.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java index 56f9f797..be615bd8 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java @@ -349,7 +349,7 @@ public class EntityPackets1_14 extends EntityRewriter { if (index == 14) { //TODO handle throw new RemovedValueException(); - } else { + } else if (index > 14) { meta.setId(index - 1); } } From 3d1aa03abb7aef4d890706b3343a02a41a2c9ec5 Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Tue, 21 May 2019 23:06:22 +0200 Subject: [PATCH 117/171] fix cats and ocelots --- .../data/EntityTypeMapping.java | 1 + .../packets/EntityPackets1_14.java | 24 +++++++++++++++---- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/EntityTypeMapping.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/EntityTypeMapping.java index bff31c46..e7a57153 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/EntityTypeMapping.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/EntityTypeMapping.java @@ -34,6 +34,7 @@ public class EntityTypeMapping { oldEntityToOldObject.put(type1_13.getId(), object1_13.getId()); } } + entityTypes.put(50, 48); // ocelot } public static Optional getOldId(int type1_14) { diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java index be615bd8..9a49cdaf 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java @@ -292,10 +292,7 @@ public class EntityPackets1_14 extends EntityRewriter { setDisplayNameJson(true); setDisplayNameMetaType(MetaType1_13_2.OptChat); - regEntType(EntityType1_14.EntityType.CAT, EntityType1_14.EntityType.OCELOT).mobName("Cat").spawnMetadata(e -> { - // e.add(new Metadata(13, MetaType1_13_2.Byte, (byte) 0x4)); // Tamed cat - }); - regEntType(EntityType1_14.EntityType.OCELOT, EntityType1_14.EntityType.OCELOT).mobName("Ocelot"); + regEntType(EntityType1_14.EntityType.CAT, EntityType1_14.EntityType.OCELOT).mobName("Cat"); regEntType(EntityType1_14.EntityType.TRADER_LLAMA, EntityType1_14.EntityType.LLAMA).mobName("Trader Llama"); regEntType(EntityType1_14.EntityType.FOX, EntityType1_14.EntityType.WOLF).mobName("Fox"); regEntType(EntityType1_14.EntityType.PANDA, EntityType1_14.EntityType.POLAR_BEAR).mobName("Panda"); @@ -336,7 +333,6 @@ public class EntityPackets1_14 extends EntityRewriter { registerMetaHandler().filter(EntityType1_14.EntityType.PANDA, 19).removed(); registerMetaHandler().filter(EntityType1_14.EntityType.PANDA, 20).removed(); - registerMetaHandler().filter(EntityType1_14.EntityType.CAT, 17).removed(); registerMetaHandler().filter(EntityType1_14.EntityType.CAT, 18).removed(); registerMetaHandler().filter(EntityType1_14.EntityType.CAT, 19).removed(); registerMetaHandler().filter(EntityType1_14.EntityType.CAT, 20).removed(); @@ -434,6 +430,24 @@ public class EntityPackets1_14 extends EntityRewriter { } return meta; }); + + registerMetaHandler().filter(EntityType1_14.EntityType.OCELOT, 13).handle(e -> { + Metadata meta = e.getData(); + meta.setId(15); + meta.setMetaType(MetaType1_13_2.VarInt); + meta.setValue(0); + return meta; + }); + + registerMetaHandler().filter(EntityType1_14.EntityType.CAT).handle(e -> { + Metadata meta = e.getData(); + if (meta.getId() == 15) { + meta.setValue(1); + } else if (meta.getId() == 13) { + meta.setValue((byte) ((byte) meta.getValue() & 0x4)); + } + return meta; + }); } public int villagerDataToProfession(VillagerData data) { From 4b0881263b2612a7229347c5df439a78687705f3 Mon Sep 17 00:00:00 2001 From: Marco Date: Tue, 21 May 2019 23:10:11 +0200 Subject: [PATCH 118/171] add missing remaps --- .../protocol1_13_2to1_14/data/EntityTypeMapping.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/EntityTypeMapping.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/EntityTypeMapping.java index e7a57153..b6a25f92 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/EntityTypeMapping.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/EntityTypeMapping.java @@ -34,6 +34,11 @@ public class EntityTypeMapping { oldEntityToOldObject.put(type1_13.getId(), object1_13.getId()); } } + for(Entity1_13Types.EntityType type : Entity1_13Types.EntityType.values()){ + if(!entityTypes.containsValue(type.getId())){ + entityTypes.put(type.getId(), type.getId()); + } + } entityTypes.put(50, 48); // ocelot } From 24bfa82c0cfb4fa0a323d2188497d6be73d68ebb Mon Sep 17 00:00:00 2001 From: Marco Date: Tue, 21 May 2019 23:35:49 +0200 Subject: [PATCH 119/171] fix item remaps --- .../packets/BlockItemPackets1_14.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java index e9e74104..77182b1a 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java @@ -566,8 +566,8 @@ public class BlockItemPackets1_14 extends BlockItemRewriter Date: Wed, 22 May 2019 11:27:27 +0200 Subject: [PATCH 120/171] fix wandering traders + trades --- .../protocol1_13_2to1_14/Protocol1_13_2To1_14.java | 2 +- .../protocol1_13_2to1_14/packets/BlockItemPackets1_14.java | 6 +++--- .../protocol1_13_2to1_14/packets/EntityPackets1_14.java | 7 ++++++- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java index 9afa969a..9ce4f822 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java @@ -253,7 +253,7 @@ public class Protocol1_13_2To1_14 extends BackwardsProtocol { registerIncoming(State.PLAY, 0x1E, 0x1C); // r registerIncoming(State.PLAY, 0x1F, 0x1D); // r registerIncoming(State.PLAY, 0x20, 0x1E); // r -// registerIncoming(State.PLAY, 0x21, 0x1F); // r TDO fix + registerIncoming(State.PLAY, 0x21, 0x1F); // r registerIncoming(State.PLAY, 0x22, 0x20); // r registerIncoming(State.PLAY, 0x23, 0x21); // r diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java index 77182b1a..5a89863e 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java @@ -170,10 +170,10 @@ public class BlockItemPackets1_14 extends BlockItemRewriter { ); Optional oldId = EntityTypeMapping.getOldId(type); if (!oldId.isPresent()) { - if (!hasData(entityType)) + Optional oldType = getEntityData(entityType);if (!oldType.isPresent()) { ViaBackwards.getPlatform().getLogger().warning("Could not find 1.13.2 entity type for 1.14 entity type " + type + "/" + entityType); + wrapper.cancel(); + }else{ + wrapper.set(Type.VAR_INT, 1, oldType.get().getReplacementId()); + } } else { wrapper.set(Type.VAR_INT, 1, oldId.get()); } @@ -297,6 +301,7 @@ public class EntityPackets1_14 extends EntityRewriter { regEntType(EntityType1_14.EntityType.FOX, EntityType1_14.EntityType.WOLF).mobName("Fox"); regEntType(EntityType1_14.EntityType.PANDA, EntityType1_14.EntityType.POLAR_BEAR).mobName("Panda"); regEntType(EntityType1_14.EntityType.PILLAGER, EntityType1_14.EntityType.VILLAGER).mobName("Pillager"); + regEntType(EntityType1_14.EntityType.WANDERING_TRADER, EntityType1_14.EntityType.VILLAGER).mobName("Wandering Trader"); regEntType(EntityType1_14.EntityType.RAVAGER, EntityType1_14.EntityType.COW).mobName("Ravager"); registerMetaHandler().handle(e -> { From 88cfa4077605e2e421535ca9a0624bf0503e9408 Mon Sep 17 00:00:00 2001 From: KennyTV <28825609+KennyTV@users.noreply.github.com> Date: Wed, 22 May 2019 15:27:48 +0200 Subject: [PATCH 121/171] Fix painting and xp orb tracker --- .../api/entities/types/EntityType1_14.java | 4 +- .../packets/EntityPackets1_14.java | 43 ++++++++++++++++--- 2 files changed, 39 insertions(+), 8 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/api/entities/types/EntityType1_14.java b/core/src/main/java/nl/matsv/viabackwards/api/entities/types/EntityType1_14.java index 3ea747ea..25e531bd 100644 --- a/core/src/main/java/nl/matsv/viabackwards/api/entities/types/EntityType1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/api/entities/types/EntityType1_14.java @@ -2,7 +2,7 @@ package nl.matsv.viabackwards.api.entities.types; import lombok.AllArgsConstructor; import lombok.Getter; -import us.myles.ViaVersion.api.Via; +import nl.matsv.viabackwards.ViaBackwards; import java.util.ArrayList; import java.util.List; @@ -13,7 +13,7 @@ public class EntityType1_14 { Optional type = EntityType.findById(typeID); if (!type.isPresent()) { - Via.getPlatform().getLogger().severe("Could not find type id " + typeID); + ViaBackwards.getPlatform().getLogger().severe("Could not find type id " + typeID); return EntityType.ENTITY; // Fall back to the basic ENTITY } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java index 2f4126f9..2a136819 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java @@ -18,7 +18,6 @@ import us.myles.ViaVersion.api.minecraft.item.Item; import us.myles.ViaVersion.api.minecraft.metadata.MetaType; import us.myles.ViaVersion.api.minecraft.metadata.Metadata; import us.myles.ViaVersion.api.minecraft.metadata.types.MetaType1_13_2; -import us.myles.ViaVersion.api.minecraft.metadata.types.MetaType1_14; import us.myles.ViaVersion.api.remapper.PacketHandler; import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.api.type.Type; @@ -26,7 +25,6 @@ import us.myles.ViaVersion.api.type.types.version.Types1_13_2; import us.myles.ViaVersion.api.type.types.version.Types1_14; import us.myles.ViaVersion.packets.State; import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.data.Particle; -import us.myles.ViaVersion.protocols.protocol1_14to1_13_2.Protocol1_14To1_13_2; import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; import java.util.Optional; @@ -68,7 +66,7 @@ public class EntityPackets1_14 extends EntityRewriter { @Override public void handle(PacketWrapper wrapper) throws Exception { int id = wrapper.get(Type.BYTE, 0); - EntityType1_13.EntityType entityType = EntityType1_13.getTypeFromId(EntityTypeMapping.getOldId(id).orElse(id), false); + EntityType1_13.EntityType entityType = EntityType1_13.getTypeFromId(EntityTypeMapping.getOldId(id).orElse(id), false); Optional type = EntityType1_13.ObjectType.fromEntityType(entityType); if (type.isPresent()) { wrapper.set(Type.BYTE, 0, (byte) type.get().getId()); @@ -128,10 +126,11 @@ public class EntityPackets1_14 extends EntityRewriter { ); Optional oldId = EntityTypeMapping.getOldId(type); if (!oldId.isPresent()) { - Optional oldType = getEntityData(entityType);if (!oldType.isPresent()) { + Optional oldType = getEntityData(entityType); + if (!oldType.isPresent()) { ViaBackwards.getPlatform().getLogger().warning("Could not find 1.13.2 entity type for 1.14 entity type " + type + "/" + entityType); wrapper.cancel(); - }else{ + } else { wrapper.set(Type.VAR_INT, 1, oldType.get().getReplacementId()); } } else { @@ -175,6 +174,26 @@ public class EntityPackets1_14 extends EntityRewriter { } }); + // Spawn Experience Orb + protocol.registerOutgoing(State.PLAY, 0x01, 0x01, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); // 0 - Entity id + + // Track entity + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + addTrackedEntity( + wrapper.user(), + wrapper.get(Type.VAR_INT, 0), + EntityType1_14.EntityType.XP_ORB + ); + } + }); + } + }); + // Spawn painting protocol.registerOutgoing(State.PLAY, 0x04, 0x04, new PacketRemapper() { @Override @@ -184,6 +203,18 @@ public class EntityPackets1_14 extends EntityRewriter { map(Type.VAR_INT); map(Type.POSITION1_14, Type.POSITION); map(Type.BYTE); + + // Track entity + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + addTrackedEntity( + wrapper.user(), + wrapper.get(Type.VAR_INT, 0), + EntityType1_14.EntityType.PAINTING + ); + } + }); } }); @@ -430,7 +461,7 @@ public class EntityPackets1_14 extends EntityRewriter { Metadata meta = e.getData(); int typeId = meta.getMetaType().getTypeID(); if (typeId > 15) { - ViaBackwards.getPlatform().getLogger().warning("New 1.14 metadata was not handled: " + meta + " entity: " + e.getEntity().getType()); + ViaBackwards.getPlatform().getLogger().warning("New 1.14 metadata was not handled: " + meta + " entity: " + e.getEntity().getType()); return null; } return meta; From 885ae3f63b2a08e5af22de7d312dcf2950ba0a6c Mon Sep 17 00:00:00 2001 From: KennyTV <28825609+KennyTV@users.noreply.github.com> Date: Wed, 22 May 2019 16:23:56 +0200 Subject: [PATCH 122/171] Add trident to EntityType1_13 --- .../viabackwards/api/entities/types/EntityType1_13.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/api/entities/types/EntityType1_13.java b/core/src/main/java/nl/matsv/viabackwards/api/entities/types/EntityType1_13.java index d5a1c93e..3424363a 100644 --- a/core/src/main/java/nl/matsv/viabackwards/api/entities/types/EntityType1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/api/entities/types/EntityType1_13.java @@ -286,7 +286,8 @@ public class EntityType1_13 { EVOCATION_FANGS(79, EntityType.EVOCATION_FANGS), FISHIHNG_HOOK(90, EntityType.FISHING_BOBBER), SPECTRAL_ARROW(91, EntityType.SPECTRAL_ARROW), - DRAGON_FIREBALL(93, EntityType.DRAGON_FIREBALL); + DRAGON_FIREBALL(93, EntityType.DRAGON_FIREBALL), + TRIDENT(94, EntityType.TRIDENT); private final int id; private final EntityType type; @@ -308,7 +309,7 @@ public class EntityType1_13 { return output.map(ObjectType::getType); } - public static Optional fromEntityType(EntityType type){ + public static Optional fromEntityType(EntityType type) { for (ObjectType ent : ObjectType.values()) if (ent.getType() == type) return Optional.of(ent); From 3107094faa44866ac7af41f3f0535c2950ac6878 Mon Sep 17 00:00:00 2001 From: KennyTV <28825609+KennyTV@users.noreply.github.com> Date: Wed, 22 May 2019 17:24:33 +0200 Subject: [PATCH 123/171] Turtle egg and sea pickle mappings --- .../packets/BlockItemPackets1_13.java | 2 ++ .../data/mapping-1.12.2to1.13.json | 20 +++++++++++++++++++ 2 files changed, 22 insertions(+) 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 f6e768e0..cbdc33b0 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 @@ -572,6 +572,8 @@ public class BlockItemPackets1_13 extends BlockItemRewriter Date: Wed, 22 May 2019 18:35:20 +0200 Subject: [PATCH 124/171] Fix minecarts --- .../packets/EntityPackets1_14.java | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java index 2a136819..0a8002d6 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java @@ -67,7 +67,36 @@ public class EntityPackets1_14 extends EntityRewriter { public void handle(PacketWrapper wrapper) throws Exception { int id = wrapper.get(Type.BYTE, 0); EntityType1_13.EntityType entityType = EntityType1_13.getTypeFromId(EntityTypeMapping.getOldId(id).orElse(id), false); - Optional type = EntityType1_13.ObjectType.fromEntityType(entityType); + Optional type; + if (entityType.isOrHasParent(EntityType1_13.EntityType.MINECART_ABSTRACT)) { + type = Optional.of(EntityType1_13.ObjectType.MINECART); + int data = 0; + switch (entityType) { + case CHEST_MINECART: + data = 1; + break; + case FURNACE_MINECART: + data = 2; + break; + case TNT_MINECART: + data = 3; + break; + case SPAWNER_MINECART: + data = 4; + break; + case HOPPER_MINECART: + data = 5; + break; + case COMMANDBLOCK_MINECART: + data = 6; + break; + } + if (data != 0) + wrapper.set(Type.INT, 0, data); + } else { + type = EntityType1_13.ObjectType.fromEntityType(entityType); + } + if (type.isPresent()) { wrapper.set(Type.BYTE, 0, (byte) type.get().getId()); } From a29e88f535b0ec9695f0c42aca1a9b96c0aad180 Mon Sep 17 00:00:00 2001 From: KennyTV <28825609+KennyTV@users.noreply.github.com> Date: Wed, 22 May 2019 19:55:19 +0200 Subject: [PATCH 125/171] Make 'em blocks placeable again! --- .../viabackwards/api/entities/types/EntityType1_13.java | 2 +- .../matsv/viabackwards/api/rewriters/BlockItemRewriter.java | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/api/entities/types/EntityType1_13.java b/core/src/main/java/nl/matsv/viabackwards/api/entities/types/EntityType1_13.java index 3424363a..752aca0f 100644 --- a/core/src/main/java/nl/matsv/viabackwards/api/entities/types/EntityType1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/api/entities/types/EntityType1_13.java @@ -287,7 +287,7 @@ public class EntityType1_13 { FISHIHNG_HOOK(90, EntityType.FISHING_BOBBER), SPECTRAL_ARROW(91, EntityType.SPECTRAL_ARROW), DRAGON_FIREBALL(93, EntityType.DRAGON_FIREBALL), - TRIDENT(94, EntityType.TRIDENT); + TRIDENT(94, EntityType.ARROW); private final int id; private final EntityType type; diff --git a/core/src/main/java/nl/matsv/viabackwards/api/rewriters/BlockItemRewriter.java b/core/src/main/java/nl/matsv/viabackwards/api/rewriters/BlockItemRewriter.java index 92657638..fffd4ba4 100644 --- a/core/src/main/java/nl/matsv/viabackwards/api/rewriters/BlockItemRewriter.java +++ b/core/src/main/java/nl/matsv/viabackwards/api/rewriters/BlockItemRewriter.java @@ -88,8 +88,9 @@ public abstract class BlockItemRewriter extends Rew } protected Item handleItemToServer(Item item) { - if (item == null || item.getTag() == null) - return null; + if (item == null) return null; + if (item.getTag() == null) return item; + CompoundTag tag = item.getTag(); if (tag.contains("ViaBackwards|" + getProtocolName())) { CompoundTag via = tag.get("ViaBackwards|" + getProtocolName()); From b466ed9eb8a5eb6c1a4a900a28c9044b0e47b975 Mon Sep 17 00:00:00 2001 From: Marco Neuhaus Date: Wed, 22 May 2019 23:53:05 +0200 Subject: [PATCH 126/171] fix particle rewrites --- .../packets/BlockItemPackets1_14.java | 2 ++ .../packets/EntityPackets1_14.java | 20 +++++++++---------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java index 5a89863e..1dffe303 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java @@ -511,12 +511,14 @@ public class BlockItemPackets1_14 extends BlockItemRewriter { } public static int getOldParticleId(int id) { - if (id >= 12) { - id -= 2; // new lava drips 10, 11 - } - if (id >= 14) { - id -= 1; // new water drip 11 -> 13 - } - if (id >= 28) { - id -= 1; // new 24 -> 27 + if (id >= 45) { + id -= 1; // new 39 -> 44 } if (id >= 30) { id -= 1; // skip new short happy villager } - if (id >= 45) { - id -= 1; // new 39 -> 44 + if (id >= 28) { + id -= 1; // new 24 -> 27 + } + if (id >= 14) { + id -= 1; // new water drip 11 -> 13 + } + if (id >= 12) { + id -= 2; // new lava drips 10, 11 } return id; } From b20c2cbc3b127c191460e5a856a09904f5b3c98a Mon Sep 17 00:00:00 2001 From: KennyTV <28825609+KennyTV@users.noreply.github.com> Date: Thu, 23 May 2019 11:38:49 +0200 Subject: [PATCH 127/171] Fix lever mappings --- .../protocol1_12_2to1_13/data/BackwardsMappings.java | 2 +- .../protocol1_13_2to1_14/data/BackwardsMappings.java | 2 +- .../assets/viabackwards/data/mapping-1.12.2to1.13.json | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/BackwardsMappings.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/BackwardsMappings.java index 27008c71..4606cc68 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/BackwardsMappings.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/BackwardsMappings.java @@ -31,7 +31,7 @@ public class BackwardsMappings { us.myles.viaversion.libs.gson.JsonObject mapping1_13 = MappingData.loadData("mapping-1.13.json"); us.myles.viaversion.libs.gson.JsonObject mapping1_12_2to1_13 = loadData("mapping-1.12.2to1.13.json"); - ViaBackwards.getPlatform().getLogger().info("Loading block mapping..."); + ViaBackwards.getPlatform().getLogger().info("Loading 1.13 -> 1.12.2 block mapping..."); blockMappings = new BlockMappingsShortArray(mapping1_13.getAsJsonObject("blocks"), mapping1_12.getAsJsonObject("blocks"), mapping1_12_2to1_13.getAsJsonObject("blockstates")); } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/BackwardsMappings.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/BackwardsMappings.java index 60a87019..cf11e798 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/BackwardsMappings.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/BackwardsMappings.java @@ -21,7 +21,7 @@ public class BackwardsMappings { JsonObject mapping1_14 = MappingData.loadData("mapping-1.14.json"); JsonObject mapping1_13_2to1_14 = loadData("mapping-1.13.2to1.14.json"); - ViaBackwards.getPlatform().getLogger().info("Loading block mapping..."); + ViaBackwards.getPlatform().getLogger().info("Loading 1.14 -> 1.13.2 block mapping..."); blockMappings = new BlockMappingsShortArray(mapping1_14.getAsJsonObject("blockstates"), mapping1_13_2.getAsJsonObject("blockstates"), mapping1_13_2to1_14.getAsJsonObject("blockstates")); } diff --git a/core/src/main/resources/assets/viabackwards/data/mapping-1.12.2to1.13.json b/core/src/main/resources/assets/viabackwards/data/mapping-1.12.2to1.13.json index f20d9ea7..b05d5220 100644 --- a/core/src/main/resources/assets/viabackwards/data/mapping-1.12.2to1.13.json +++ b/core/src/main/resources/assets/viabackwards/data/mapping-1.12.2to1.13.json @@ -4779,14 +4779,14 @@ "minecraft:dark_oak_door[facing=east,half=lower,hinge=left,open=false,powered=false]": "minecraft:dark_oak_door[facing=east,half=lower,hinge=right,open=false,powered=false]", "minecraft:dark_oak_door[facing=east,half=lower,hinge=right,open=true,powered=true]": "minecraft:dark_oak_door[facing=east,half=lower,hinge=right,open=true,powered=false]", "minecraft:dark_oak_door[facing=east,half=lower,hinge=right,open=false,powered=true]": "minecraft:dark_oak_door[facing=east,half=lower,hinge=right,open=false,powered=false]", - "minecraft:lever[face=floor,facing=north,powered=true]": "minecraft:lever[face=floor,facing=south,powered=false]", "minecraft:lever[face=floor,facing=south,powered=true]": "minecraft:lever[face=floor,facing=north,powered=false]", - "minecraft:lever[face=floor,facing=west,powered=true]": "minecraft:lever[face=floor,facing=east,powered=false]", + "minecraft:lever[face=floor,facing=south,powered=false]": "minecraft:lever[face=floor,facing=north,powered=true]", "minecraft:lever[face=floor,facing=east,powered=true]": "minecraft:lever[face=floor,facing=west,powered=false]", - "minecraft:lever[face=ceiling,facing=north,powered=true]": "minecraft:lever[face=ceiling,facing=south,powered=false]", + "minecraft:lever[face=floor,facing=east,powered=false]": "minecraft:lever[face=floor,facing=west,powered=true]", "minecraft:lever[face=ceiling,facing=south,powered=true]": "minecraft:lever[face=ceiling,facing=north,powered=false]", - "minecraft:lever[face=ceiling,facing=west,powered=true]": "minecraft:lever[face=ceiling,facing=east,powered=false]", + "minecraft:lever[face=ceiling,facing=south,powered=false]": "minecraft:lever[face=ceiling,facing=north,powered=true]", "minecraft:lever[face=ceiling,facing=east,powered=true]": "minecraft:lever[face=ceiling,facing=west,powered=false]", + "minecraft:lever[face=ceiling,facing=east,powered=false]": "minecraft:lever[face=ceiling,facing=west,powered=true]", "minecraft:dried_kelp_block": "minecraft:hay_block[axis=y]", "minecraft:dead_tube_coral_block": "minecraft:light_gray_wool", "minecraft:dead_brain_coral_block": "minecraft:light_gray_wool", From 747943258eae462853eb7a388ec4724bd4d93d81 Mon Sep 17 00:00:00 2001 From: KennyTV <28825609+KennyTV@users.noreply.github.com> Date: Thu, 23 May 2019 13:00:33 +0200 Subject: [PATCH 128/171] Add remaining 1.13 -> 1.12 mappings --- .../data/mapping-1.12.2to1.13.json | 168 ++++++++++++++++++ 1 file changed, 168 insertions(+) diff --git a/core/src/main/resources/assets/viabackwards/data/mapping-1.12.2to1.13.json b/core/src/main/resources/assets/viabackwards/data/mapping-1.12.2to1.13.json index b05d5220..a4162572 100644 --- a/core/src/main/resources/assets/viabackwards/data/mapping-1.12.2to1.13.json +++ b/core/src/main/resources/assets/viabackwards/data/mapping-1.12.2to1.13.json @@ -5148,6 +5148,174 @@ "minecraft:sea_pickle[pickles=3,waterlogged=false]": "minecraft:cocoa[age=1,facing=east]", "minecraft:sea_pickle[pickles=4,waterlogged=true]": "minecraft:cocoa[age=2,facing=east]", "minecraft:sea_pickle[pickles=4,waterlogged=false]": "minecraft:cocoa[age=2,facing=east]", + "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=false]": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=false,west=true]": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=false,west=false]": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=false,up=true,west=true]": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=false,up=true,west=false]": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=false,up=false,west=true]": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=false,up=false,west=false]": "minecraft:brown_mushroom_block[down=false,east=true,north=true,south=false,up=true,west=false]", + "minecraft:brown_mushroom_block[down=true,east=true,north=false,south=true,up=true,west=true]": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:brown_mushroom_block[down=true,east=true,north=false,south=true,up=true,west=false]": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:brown_mushroom_block[down=true,east=true,north=false,south=true,up=false,west=true]": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:brown_mushroom_block[down=true,east=true,north=false,south=true,up=false,west=false]": "minecraft:brown_mushroom_block[down=false,east=true,north=false,south=true,up=true,west=false]", + "minecraft:brown_mushroom_block[down=true,east=true,north=false,south=false,up=true,west=true]": "minecraft:brown_mushroom_block[down=false,east=true,north=false,south=false,up=true,west=false]", + "minecraft:brown_mushroom_block[down=true,east=true,north=false,south=false,up=true,west=false]": "minecraft:brown_mushroom_block[down=false,east=true,north=false,south=false,up=true,west=false]", + "minecraft:brown_mushroom_block[down=true,east=true,north=false,south=false,up=false,west=true]": "minecraft:brown_mushroom_block[down=false,east=true,north=false,south=false,up=true,west=false]", + "minecraft:brown_mushroom_block[down=true,east=true,north=false,south=false,up=false,west=false]": "minecraft:brown_mushroom_block[down=false,east=true,north=false,south=false,up=true,west=false]", + "minecraft:brown_mushroom_block[down=true,east=false,north=true,south=true,up=true,west=true]": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:brown_mushroom_block[down=true,east=false,north=true,south=true,up=true,west=false]": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:brown_mushroom_block[down=true,east=false,north=true,south=true,up=false,west=true]": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:brown_mushroom_block[down=true,east=false,north=true,south=true,up=false,west=false]": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:brown_mushroom_block[down=true,east=false,north=true,south=false,up=true,west=true]": "minecraft:brown_mushroom_block[down=false,east=false,north=true,south=false,up=true,west=true]", + "minecraft:brown_mushroom_block[down=true,east=false,north=true,south=false,up=true,west=false]": "minecraft:brown_mushroom_block[down=false,east=false,north=true,south=false,up=true,west=false]", + "minecraft:brown_mushroom_block[down=true,east=false,north=true,south=false,up=false,west=true]": "minecraft:brown_mushroom_block[down=false,east=false,north=true,south=false,up=true,west=true]", + "minecraft:brown_mushroom_block[down=true,east=false,north=true,south=false,up=false,west=false]": "minecraft:brown_mushroom_block[down=false,east=false,north=false,south=false,up=false,west=false]", + "minecraft:brown_mushroom_block[down=true,east=false,north=false,south=true,up=true,west=true]": "minecraft:brown_mushroom_block[down=false,east=false,north=false,south=true,up=true,west=true]", + "minecraft:brown_mushroom_block[down=true,east=false,north=false,south=true,up=true,west=false]": "minecraft:brown_mushroom_block[down=false,east=false,north=false,south=true,up=true,west=false]", + "minecraft:brown_mushroom_block[down=true,east=false,north=false,south=true,up=false,west=true]": "minecraft:brown_mushroom_block[down=false,east=false,north=false,south=true,up=true,west=true]", + "minecraft:brown_mushroom_block[down=true,east=false,north=false,south=true,up=false,west=false]": "minecraft:brown_mushroom_block[down=false,east=false,north=false,south=false,up=false,west=false]", + "minecraft:brown_mushroom_block[down=true,east=false,north=false,south=false,up=true,west=true]": "minecraft:brown_mushroom_block[down=false,east=false,north=false,south=false,up=true,west=true]", + "minecraft:brown_mushroom_block[down=true,east=false,north=false,south=false,up=true,west=false]": "minecraft:brown_mushroom_block[down=false,east=false,north=false,south=false,up=true,west=false]", + "minecraft:brown_mushroom_block[down=true,east=false,north=false,south=false,up=false,west=true]": "minecraft:brown_mushroom_block[down=false,east=false,north=false,south=false,up=false,west=false]", + "minecraft:brown_mushroom_block[down=true,east=false,north=false,south=false,up=false,west=false]": "minecraft:brown_mushroom_block[down=false,east=false,north=false,south=false,up=false,west=false]", + "minecraft:brown_mushroom_block[down=false,east=true,north=true,south=true,up=true,west=true]": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:brown_mushroom_block[down=false,east=true,north=true,south=true,up=true,west=false]": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:brown_mushroom_block[down=false,east=true,north=true,south=true,up=false,west=true]": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:brown_mushroom_block[down=false,east=true,north=true,south=true,up=false,west=false]": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:brown_mushroom_block[down=false,east=true,north=true,south=false,up=true,west=true]": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:brown_mushroom_block[down=false,east=true,north=true,south=false,up=false,west=true]": "minecraft:brown_mushroom_block[down=false,east=true,north=true,south=false,up=true,west=false]", + "minecraft:brown_mushroom_block[down=false,east=true,north=true,south=false,up=false,west=false]": "minecraft:brown_mushroom_block[down=false,east=true,north=true,south=false,up=true,west=false]", + "minecraft:brown_mushroom_block[down=false,east=true,north=false,south=true,up=true,west=true]": "minecraft:brown_mushroom_block[down=false,east=true,north=false,south=true,up=true,west=false]", + "minecraft:brown_mushroom_block[down=false,east=true,north=false,south=true,up=false,west=true]": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:brown_mushroom_block[down=false,east=true,north=false,south=true,up=false,west=false]": "minecraft:brown_mushroom_block[down=false,east=true,north=false,south=true,up=true,west=false]", + "minecraft:brown_mushroom_block[down=false,east=true,north=false,south=false,up=true,west=true]": "minecraft:brown_mushroom_block[down=false,east=true,north=false,south=false,up=true,west=false]", + "minecraft:brown_mushroom_block[down=false,east=true,north=false,south=false,up=false,west=true]": "minecraft:brown_mushroom_block[down=false,east=true,north=false,south=false,up=true,west=false]", + "minecraft:brown_mushroom_block[down=false,east=true,north=false,south=false,up=false,west=false]": "minecraft:brown_mushroom_block[down=false,east=true,north=false,south=false,up=true,west=false]", + "minecraft:brown_mushroom_block[down=false,east=false,north=true,south=true,up=true,west=true]": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:brown_mushroom_block[down=false,east=false,north=true,south=true,up=true,west=false]": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:brown_mushroom_block[down=false,east=false,north=true,south=true,up=false,west=true]": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:brown_mushroom_block[down=false,east=false,north=true,south=true,up=false,west=false]": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:brown_mushroom_block[down=false,east=false,north=true,south=false,up=false,west=true]": "minecraft:brown_mushroom_block[down=false,east=false,north=true,south=false,up=true,west=true]", + "minecraft:brown_mushroom_block[down=false,east=false,north=true,south=false,up=false,west=false]": "minecraft:brown_mushroom_block[down=false,east=false,north=true,south=false,up=true,west=false]", + "minecraft:brown_mushroom_block[down=false,east=false,north=false,south=true,up=false,west=true]": "minecraft:brown_mushroom_block[down=false,east=false,north=false,south=true,up=true,west=true]", + "minecraft:brown_mushroom_block[down=false,east=false,north=false,south=true,up=false,west=false]": "minecraft:brown_mushroom_block[down=false,east=false,north=false,south=true,up=true,west=false]", + "minecraft:brown_mushroom_block[down=false,east=false,north=false,south=false,up=false,west=true]": "minecraft:brown_mushroom_block[down=false,east=false,north=false,south=false,up=true,west=true]", + "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=false]": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=false,west=true]": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=false,west=false]": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:red_mushroom_block[down=true,east=true,north=true,south=false,up=true,west=true]": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:red_mushroom_block[down=true,east=true,north=true,south=false,up=true,west=false]": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:red_mushroom_block[down=true,east=true,north=true,south=false,up=false,west=true]": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:red_mushroom_block[down=true,east=true,north=true,south=false,up=false,west=false]": "minecraft:red_mushroom_block[down=false,east=true,north=true,south=false,up=true,west=false]", + "minecraft:red_mushroom_block[down=true,east=true,north=false,south=true,up=true,west=true]": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:red_mushroom_block[down=true,east=true,north=false,south=true,up=true,west=false]": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:red_mushroom_block[down=true,east=true,north=false,south=true,up=false,west=true]": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:red_mushroom_block[down=true,east=true,north=false,south=true,up=false,west=false]": "minecraft:red_mushroom_block[down=false,east=true,north=false,south=true,up=true,west=false]", + "minecraft:red_mushroom_block[down=true,east=true,north=false,south=false,up=true,west=true]": "minecraft:red_mushroom_block[down=false,east=true,north=false,south=false,up=true,west=false]", + "minecraft:red_mushroom_block[down=true,east=true,north=false,south=false,up=true,west=false]": "minecraft:red_mushroom_block[down=false,east=true,north=false,south=false,up=true,west=false]", + "minecraft:red_mushroom_block[down=true,east=true,north=false,south=false,up=false,west=true]": "minecraft:red_mushroom_block[down=false,east=true,north=false,south=false,up=true,west=false]", + "minecraft:red_mushroom_block[down=true,east=true,north=false,south=false,up=false,west=false]": "minecraft:red_mushroom_block[down=false,east=true,north=false,south=false,up=true,west=false]", + "minecraft:red_mushroom_block[down=true,east=false,north=true,south=true,up=true,west=true]": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:red_mushroom_block[down=true,east=false,north=true,south=true,up=true,west=false]": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:red_mushroom_block[down=true,east=false,north=true,south=true,up=false,west=true]": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:red_mushroom_block[down=true,east=false,north=true,south=true,up=false,west=false]": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:red_mushroom_block[down=true,east=false,north=true,south=false,up=true,west=true]": "minecraft:red_mushroom_block[down=false,east=false,north=true,south=false,up=true,west=true]", + "minecraft:red_mushroom_block[down=true,east=false,north=true,south=false,up=true,west=false]": "minecraft:red_mushroom_block[down=false,east=false,north=true,south=false,up=true,west=false]", + "minecraft:red_mushroom_block[down=true,east=false,north=true,south=false,up=false,west=true]": "minecraft:red_mushroom_block[down=false,east=false,north=true,south=false,up=true,west=true]", + "minecraft:red_mushroom_block[down=true,east=false,north=true,south=false,up=false,west=false]": "minecraft:red_mushroom_block[down=false,east=false,north=false,south=false,up=false,west=false]", + "minecraft:red_mushroom_block[down=true,east=false,north=false,south=true,up=true,west=true]": "minecraft:red_mushroom_block[down=false,east=false,north=false,south=true,up=true,west=true]", + "minecraft:red_mushroom_block[down=true,east=false,north=false,south=true,up=true,west=false]": "minecraft:red_mushroom_block[down=false,east=false,north=false,south=true,up=true,west=false]", + "minecraft:red_mushroom_block[down=true,east=false,north=false,south=true,up=false,west=true]": "minecraft:red_mushroom_block[down=false,east=false,north=false,south=true,up=true,west=true]", + "minecraft:red_mushroom_block[down=true,east=false,north=false,south=true,up=false,west=false]": "minecraft:red_mushroom_block[down=false,east=false,north=false,south=false,up=false,west=false]", + "minecraft:red_mushroom_block[down=true,east=false,north=false,south=false,up=true,west=true]": "minecraft:red_mushroom_block[down=false,east=false,north=false,south=false,up=true,west=true]", + "minecraft:red_mushroom_block[down=true,east=false,north=false,south=false,up=true,west=false]": "minecraft:red_mushroom_block[down=false,east=false,north=false,south=false,up=true,west=false]", + "minecraft:red_mushroom_block[down=true,east=false,north=false,south=false,up=false,west=true]": "minecraft:red_mushroom_block[down=false,east=false,north=false,south=false,up=false,west=false]", + "minecraft:red_mushroom_block[down=true,east=false,north=false,south=false,up=false,west=false]": "minecraft:red_mushroom_block[down=false,east=false,north=false,south=false,up=false,west=false]", + "minecraft:red_mushroom_block[down=false,east=true,north=true,south=true,up=true,west=true]": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:red_mushroom_block[down=false,east=true,north=true,south=true,up=true,west=false]": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:red_mushroom_block[down=false,east=true,north=true,south=true,up=false,west=true]": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:red_mushroom_block[down=false,east=true,north=true,south=true,up=false,west=false]": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:red_mushroom_block[down=false,east=true,north=true,south=false,up=true,west=true]": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:red_mushroom_block[down=false,east=true,north=true,south=false,up=false,west=true]": "minecraft:red_mushroom_block[down=false,east=true,north=true,south=false,up=true,west=false]", + "minecraft:red_mushroom_block[down=false,east=true,north=true,south=false,up=false,west=false]": "minecraft:red_mushroom_block[down=false,east=true,north=true,south=false,up=true,west=false]", + "minecraft:red_mushroom_block[down=false,east=true,north=false,south=true,up=true,west=true]": "minecraft:red_mushroom_block[down=false,east=true,north=false,south=true,up=true,west=false]", + "minecraft:red_mushroom_block[down=false,east=true,north=false,south=true,up=false,west=true]": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:red_mushroom_block[down=false,east=true,north=false,south=true,up=false,west=false]": "minecraft:red_mushroom_block[down=false,east=true,north=false,south=true,up=true,west=false]", + "minecraft:red_mushroom_block[down=false,east=true,north=false,south=false,up=true,west=true]": "minecraft:red_mushroom_block[down=false,east=true,north=false,south=false,up=true,west=false]", + "minecraft:red_mushroom_block[down=false,east=true,north=false,south=false,up=false,west=true]": "minecraft:red_mushroom_block[down=false,east=true,north=false,south=false,up=true,west=false]", + "minecraft:red_mushroom_block[down=false,east=true,north=false,south=false,up=false,west=false]": "minecraft:red_mushroom_block[down=false,east=true,north=false,south=false,up=true,west=false]", + "minecraft:red_mushroom_block[down=false,east=false,north=true,south=true,up=true,west=true]": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:red_mushroom_block[down=false,east=false,north=true,south=true,up=true,west=false]": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:red_mushroom_block[down=false,east=false,north=true,south=true,up=false,west=true]": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:red_mushroom_block[down=false,east=false,north=true,south=true,up=false,west=false]": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:red_mushroom_block[down=false,east=false,north=true,south=false,up=false,west=true]": "minecraft:red_mushroom_block[down=false,east=false,north=true,south=false,up=true,west=true]", + "minecraft:red_mushroom_block[down=false,east=false,north=true,south=false,up=false,west=false]": "minecraft:red_mushroom_block[down=false,east=false,north=true,south=false,up=true,west=false]", + "minecraft:red_mushroom_block[down=false,east=false,north=false,south=true,up=false,west=true]": "minecraft:red_mushroom_block[down=false,east=false,north=false,south=true,up=true,west=true]", + "minecraft:red_mushroom_block[down=false,east=false,north=false,south=true,up=false,west=false]": "minecraft:red_mushroom_block[down=false,east=false,north=false,south=true,up=true,west=false]", + "minecraft:red_mushroom_block[down=false,east=false,north=false,south=false,up=false,west=true]": "minecraft:red_mushroom_block[down=false,east=false,north=false,south=false,up=true,west=true]", + "minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=false]": "minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=false,west=true]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=false,west=false]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=true,east=true,north=true,south=false,up=true,west=true]": "minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:mushroom_stem[down=true,east=true,north=true,south=false,up=true,west=false]": "minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:mushroom_stem[down=true,east=true,north=true,south=false,up=false,west=true]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=true,east=true,north=true,south=false,up=false,west=false]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=true,east=true,north=false,south=true,up=true,west=true]": "minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:mushroom_stem[down=true,east=true,north=false,south=true,up=true,west=false]": "minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:mushroom_stem[down=true,east=true,north=false,south=true,up=false,west=true]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=true,east=true,north=false,south=true,up=false,west=false]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=true,east=true,north=false,south=false,up=true,west=true]": "minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:mushroom_stem[down=true,east=true,north=false,south=false,up=true,west=false]": "minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:mushroom_stem[down=true,east=true,north=false,south=false,up=false,west=true]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=true,east=true,north=false,south=false,up=false,west=false]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=true,east=false,north=true,south=true,up=true,west=true]": "minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:mushroom_stem[down=true,east=false,north=true,south=true,up=true,west=false]": "minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:mushroom_stem[down=true,east=false,north=true,south=true,up=false,west=true]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=true,east=false,north=true,south=true,up=false,west=false]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=true,east=false,north=true,south=false,up=true,west=true]": "minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:mushroom_stem[down=true,east=false,north=true,south=false,up=true,west=false]": "minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:mushroom_stem[down=true,east=false,north=true,south=false,up=false,west=true]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=true,east=false,north=true,south=false,up=false,west=false]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=true,east=false,north=false,south=true,up=true,west=true]": "minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:mushroom_stem[down=true,east=false,north=false,south=true,up=true,west=false]": "minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:mushroom_stem[down=true,east=false,north=false,south=true,up=false,west=true]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=true,east=false,north=false,south=true,up=false,west=false]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=true,east=false,north=false,south=false,up=true,west=true]": "minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:mushroom_stem[down=true,east=false,north=false,south=false,up=true,west=false]": "minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true]", + "minecraft:mushroom_stem[down=true,east=false,north=false,south=false,up=false,west=true]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=true,east=false,north=false,south=false,up=false,west=false]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=true,west=true]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=true,west=false]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=false]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=false,east=true,north=true,south=false,up=true,west=true]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=false,east=true,north=true,south=false,up=true,west=false]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=false,east=true,north=true,south=false,up=false,west=true]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=false,east=true,north=true,south=false,up=false,west=false]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=false,east=true,north=false,south=true,up=true,west=true]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=false,east=true,north=false,south=true,up=true,west=false]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=false,east=true,north=false,south=true,up=false,west=true]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=false,east=true,north=false,south=true,up=false,west=false]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=false,east=true,north=false,south=false,up=true,west=true]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=false,east=true,north=false,south=false,up=true,west=false]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=false,east=true,north=false,south=false,up=false,west=true]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=false,east=true,north=false,south=false,up=false,west=false]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=false,east=false,north=true,south=true,up=true,west=true]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=false,east=false,north=true,south=true,up=true,west=false]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=false,east=false,north=true,south=true,up=false,west=true]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=false,east=false,north=true,south=true,up=false,west=false]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=false,east=false,north=true,south=false,up=true,west=true]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=false,east=false,north=true,south=false,up=true,west=false]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=false,east=false,north=true,south=false,up=false,west=true]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=false,east=false,north=true,south=false,up=false,west=false]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=false,east=false,north=false,south=true,up=true,west=true]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=false,east=false,north=false,south=true,up=true,west=false]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=false,east=false,north=false,south=true,up=false,west=true]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=false,east=false,north=false,south=true,up=false,west=false]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=false,east=false,north=false,south=false,up=true,west=true]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=false,east=false,north=false,south=false,up=true,west=false]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=false,east=false,north=false,south=false,up=false,west=true]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "minecraft:mushroom_stem[down=false,east=false,north=false,south=false,up=false,west=false]": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", "minecraft:skeleton_wall_skull[facing=north]": "id:2306", "minecraft:skeleton_wall_skull[facing=south]": "id:2307", "minecraft:skeleton_wall_skull[facing=west]": "id:2308", From 8d02b00cc308f587599a37916f3fd4830bf40232 Mon Sep 17 00:00:00 2001 From: KennyTV <28825609+KennyTV@users.noreply.github.com> Date: Thu, 23 May 2019 13:17:27 +0200 Subject: [PATCH 129/171] Remap mushroom stem item --- .../protocol1_12_2to1_13/packets/BlockItemPackets1_13.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 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 cbdc33b0..38dad210 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 @@ -574,6 +574,8 @@ public class BlockItemPackets1_13 extends BlockItemRewriter Date: Thu, 23 May 2019 19:14:01 +0200 Subject: [PATCH 130/171] fix dust particle --- .../protocol1_13_2to1_14/packets/BlockItemPackets1_14.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java index 1dffe303..571d9a05 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java @@ -514,7 +514,7 @@ public class BlockItemPackets1_14 extends BlockItemRewriter Date: Fri, 24 May 2019 11:20:44 +0200 Subject: [PATCH 131/171] Some 1.13 item mappings --- .../packets/BlockItemPackets1_13.java | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 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 38dad210..65f66978 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 @@ -461,11 +461,11 @@ public class BlockItemPackets1_13 extends BlockItemRewriter Date: Fri, 24 May 2019 12:43:17 +0200 Subject: [PATCH 132/171] Set pom version --- all/pom.xml | 2 +- bukkit/pom.xml | 2 +- bungee/pom.xml | 2 +- core/pom.xml | 2 +- pom.xml | 2 +- sponge/pom.xml | 2 +- velocity/pom.xml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/all/pom.xml b/all/pom.xml index 017b8776..65d1a8c9 100644 --- a/all/pom.xml +++ b/all/pom.xml @@ -15,7 +15,7 @@ viabackwards-parent nl.matsv - 3.0.0-19w11b + 3.0.0-1.14.1 4.0.0 diff --git a/bukkit/pom.xml b/bukkit/pom.xml index 94684dba..51d7eb63 100644 --- a/bukkit/pom.xml +++ b/bukkit/pom.xml @@ -15,7 +15,7 @@ viabackwards-parent nl.matsv - 3.0.0-19w11b + 3.0.0-1.14.1 4.0.0 diff --git a/bungee/pom.xml b/bungee/pom.xml index 1120c19a..397cdd3d 100644 --- a/bungee/pom.xml +++ b/bungee/pom.xml @@ -15,7 +15,7 @@ viabackwards-parent nl.matsv - 3.0.0-19w11b + 3.0.0-1.14.1 4.0.0 diff --git a/core/pom.xml b/core/pom.xml index 91d26cd3..8b0ed5cf 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -15,7 +15,7 @@ viabackwards-parent nl.matsv - 3.0.0-19w11b + 3.0.0-1.14.1 4.0.0 diff --git a/pom.xml b/pom.xml index aac471a7..0d622182 100644 --- a/pom.xml +++ b/pom.xml @@ -16,7 +16,7 @@ nl.matsv viabackwards-parent - 3.0.0-19w11b + 3.0.0-1.14.1 pom Allow newer clients to join older server versions. diff --git a/sponge/pom.xml b/sponge/pom.xml index d6f6be56..8e85de5e 100644 --- a/sponge/pom.xml +++ b/sponge/pom.xml @@ -15,7 +15,7 @@ viabackwards-parent nl.matsv - 3.0.0-19w11b + 3.0.0-1.14.1 4.0.0 diff --git a/velocity/pom.xml b/velocity/pom.xml index e47b28be..51a13ffd 100644 --- a/velocity/pom.xml +++ b/velocity/pom.xml @@ -15,7 +15,7 @@ viabackwards-parent nl.matsv - 3.0.0-19w11b + 3.0.0-1.14.1 4.0.0 From 1d2f9c6d4cfe208a710f2c0ae6c975ef599705a2 Mon Sep 17 00:00:00 2001 From: KennyTV <28825609+KennyTV@users.noreply.github.com> Date: Fri, 24 May 2019 13:28:26 +0200 Subject: [PATCH 133/171] A bunch of 1.14 mappings --- .../packets/BlockItemPackets1_14.java | 42 +++++- .../data/mapping-1.13.2to1.14.json | 120 +++++++++++++++++- 2 files changed, 158 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java index 571d9a05..1c2ba49d 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java @@ -170,7 +170,7 @@ public class BlockItemPackets1_14 extends BlockItemRewriter Date: Fri, 24 May 2019 13:28:36 +0200 Subject: [PATCH 134/171] reimpl. item remaps --- .../packets/BlockItemPackets1_14.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java index 1dffe303..088ebbb7 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java @@ -568,8 +568,8 @@ public class BlockItemPackets1_14 extends BlockItemRewriter Date: Fri, 24 May 2019 15:59:10 +0200 Subject: [PATCH 135/171] 1.14 sign item mappings --- .../packets/BlockItemPackets1_14.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java index 89fb4989..8001722b 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java @@ -597,8 +597,14 @@ public class BlockItemPackets1_14 extends BlockItemRewriter Date: Sat, 25 May 2019 01:37:32 +0200 Subject: [PATCH 136/171] fix item remaps --- .../packets/BlockItemPackets1_14.java | 76 ++++++++++++++----- 1 file changed, 58 insertions(+), 18 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java index 8001722b..88f281f2 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java @@ -139,7 +139,10 @@ public class BlockItemPackets1_14 extends BlockItemRewriter Date: Sat, 25 May 2019 10:47:36 +0200 Subject: [PATCH 137/171] Finish (?) 1.14 mappings --- .../packets/BlockItemPackets1_14.java | 64 +++++++++++++++++-- .../data/mapping-1.13.2to1.14.json | 8 ++- 2 files changed, 64 insertions(+), 8 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java index 88f281f2..a10062d3 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java @@ -393,8 +393,8 @@ public class BlockItemPackets1_14 extends BlockItemRewriter Date: Sat, 25 May 2019 11:03:51 +0200 Subject: [PATCH 138/171] fix item rewrites at to server --- .../packets/BlockItemPackets1_14.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java index 88f281f2..b8136c91 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java @@ -393,8 +393,9 @@ public class BlockItemPackets1_14 extends BlockItemRewriter Date: Sat, 25 May 2019 11:32:40 +0200 Subject: [PATCH 139/171] fix intentory rewrites furnace, blast furnace, grindstone, smoker --- .../protocol1_13_2to1_14/packets/BlockItemPackets1_14.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java index 522c2a01..7438e0fc 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java @@ -68,8 +68,12 @@ public class BlockItemPackets1_14 extends BlockItemRewriter Date: Sat, 25 May 2019 11:41:40 +0200 Subject: [PATCH 140/171] fix inventory slot sizes --- .../protocol1_13_2to1_14/packets/BlockItemPackets1_14.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java index 7438e0fc..4f8401a1 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java @@ -77,27 +77,32 @@ public class BlockItemPackets1_14 extends BlockItemRewriter Date: Sat, 25 May 2019 11:49:35 +0200 Subject: [PATCH 141/171] Fix bell item remap --- .../protocol1_13_2to1_14/packets/BlockItemPackets1_14.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java index 522c2a01..6844d1a5 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java @@ -675,7 +675,7 @@ public class BlockItemPackets1_14 extends BlockItemRewriter Date: Mon, 27 May 2019 09:45:57 +0200 Subject: [PATCH 142/171] Fix zombie submob metadata --- .../protocol1_13_2to1_14/packets/EntityPackets1_14.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java index 8b91fae0..11c4f329 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java @@ -454,7 +454,7 @@ public class EntityPackets1_14 extends EntityRewriter { registerMetaHandler().filter(EntityType1_14.EntityType.ZOMBIE_VILLAGER, 18).handle(villagerDataHandler); registerMetaHandler().filter(EntityType1_14.EntityType.VILLAGER, 15).handle(villagerDataHandler); - registerMetaHandler().filter(EntityType1_14.EntityType.ZOMBIE).handle(e -> { + registerMetaHandler().filter(EntityType1_14.EntityType.ZOMBIE, true).handle(e -> { Metadata meta = e.getData(); int index = e.getIndex(); if (index >= 16) { From 955056ae61a1a0a2ee0500492957d7cdac97a4a6 Mon Sep 17 00:00:00 2001 From: KennyTV <28825609+KennyTV@users.noreply.github.com> Date: Tue, 28 May 2019 13:11:22 +0200 Subject: [PATCH 143/171] Remap bell to goldblock --- .../data/mapping-1.13.2to1.14.json | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/core/src/main/resources/assets/viabackwards/data/mapping-1.13.2to1.14.json b/core/src/main/resources/assets/viabackwards/data/mapping-1.13.2to1.14.json index e80cbe56..b0769e04 100644 --- a/core/src/main/resources/assets/viabackwards/data/mapping-1.13.2to1.14.json +++ b/core/src/main/resources/assets/viabackwards/data/mapping-1.13.2to1.14.json @@ -2596,22 +2596,22 @@ "minecraft:lectern[facing=east,has_book=true,powered=false]": "minecraft:bookshelf", "minecraft:lectern[facing=east,has_book=false,powered=true]": "minecraft:bookshelf", "minecraft:lectern[facing=east,has_book=false,powered=false]": "minecraft:bookshelf", - "minecraft:bell[attachment=floor,facing=north]": "minecraft:cocoa[age=2,facing=north]", - "minecraft:bell[attachment=floor,facing=south]": "minecraft:cocoa[age=2,facing=south]", - "minecraft:bell[attachment=floor,facing=west]": "minecraft:cocoa[age=2,facing=west]", - "minecraft:bell[attachment=floor,facing=east]": "minecraft:cocoa[age=2,facing=east]", - "minecraft:bell[attachment=ceiling,facing=north]": "minecraft:cocoa[age=2,facing=north]", - "minecraft:bell[attachment=ceiling,facing=south]": "minecraft:cocoa[age=2,facing=south]", - "minecraft:bell[attachment=ceiling,facing=west]": "minecraft:cocoa[age=2,facing=west]", - "minecraft:bell[attachment=ceiling,facing=east]": "minecraft:cocoa[age=2,facing=east]", - "minecraft:bell[attachment=single_wall,facing=north]": "minecraft:cocoa[age=2,facing=north]", - "minecraft:bell[attachment=single_wall,facing=south]": "minecraft:cocoa[age=2,facing=south]", - "minecraft:bell[attachment=single_wall,facing=west]": "minecraft:cocoa[age=2,facing=west]", - "minecraft:bell[attachment=single_wall,facing=east]": "minecraft:cocoa[age=2,facing=east]", - "minecraft:bell[attachment=double_wall,facing=north]": "minecraft:cocoa[age=2,facing=north]", - "minecraft:bell[attachment=double_wall,facing=south]": "minecraft:cocoa[age=2,facing=south]", - "minecraft:bell[attachment=double_wall,facing=west]": "minecraft:cocoa[age=2,facing=west]", - "minecraft:bell[attachment=double_wall,facing=east]": "minecraft:cocoa[age=2,facing=east]", + "minecraft:bell[attachment=floor,facing=north]": "minecraft:gold_block", + "minecraft:bell[attachment=floor,facing=south]": "minecraft:gold_block", + "minecraft:bell[attachment=floor,facing=west]": "minecraft:gold_block", + "minecraft:bell[attachment=floor,facing=east]": "minecraft:gold_block", + "minecraft:bell[attachment=ceiling,facing=north]": "minecraft:gold_block", + "minecraft:bell[attachment=ceiling,facing=south]": "minecraft:gold_block", + "minecraft:bell[attachment=ceiling,facing=west]": "minecraft:gold_block", + "minecraft:bell[attachment=ceiling,facing=east]": "minecraft:gold_block", + "minecraft:bell[attachment=single_wall,facing=north]": "minecraft:gold_block", + "minecraft:bell[attachment=single_wall,facing=south]": "minecraft:gold_block", + "minecraft:bell[attachment=single_wall,facing=west]": "minecraft:gold_block", + "minecraft:bell[attachment=single_wall,facing=east]": "minecraft:gold_block", + "minecraft:bell[attachment=double_wall,facing=north]": "minecraft:gold_block", + "minecraft:bell[attachment=double_wall,facing=south]": "minecraft:gold_block", + "minecraft:bell[attachment=double_wall,facing=west]": "minecraft:gold_block", + "minecraft:bell[attachment=double_wall,facing=east]": "minecraft:gold_block", "minecraft:campfire[facing=north,lit=true,signal_fire=true,waterlogged=true]": "minecraft:fire[age=0,east=true,north=true,south=true,up=false,west=true]", "minecraft:campfire[facing=north,lit=true,signal_fire=true,waterlogged=false]": "minecraft:fire[age=0,east=true,north=true,south=true,up=false,west=true]", "minecraft:campfire[facing=north,lit=true,signal_fire=false,waterlogged=true]": "minecraft:fire[age=0,east=true,north=true,south=true,up=false,west=true]", From afe7c69ec1057dbb2979c0862718cadf1d43fd70 Mon Sep 17 00:00:00 2001 From: KennyTV <28825609+KennyTV@users.noreply.github.com> Date: Tue, 28 May 2019 13:11:31 +0200 Subject: [PATCH 144/171] 1.14.2 --- all/pom.xml | 2 +- bukkit/pom.xml | 2 +- bungee/pom.xml | 2 +- core/pom.xml | 2 +- .../viabackwards/api/ViaBackwardsPlatform.java | 2 ++ .../Protocol1_14_1To1_14_2.java | 15 +++++++++++++++ pom.xml | 4 ++-- sponge/pom.xml | 2 +- velocity/pom.xml | 2 +- 9 files changed, 25 insertions(+), 8 deletions(-) create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14_1to1_14_2/Protocol1_14_1To1_14_2.java diff --git a/all/pom.xml b/all/pom.xml index 65d1a8c9..8aecf596 100644 --- a/all/pom.xml +++ b/all/pom.xml @@ -15,7 +15,7 @@ viabackwards-parent nl.matsv - 3.0.0-1.14.1 + 3.0.0-1.14.2 4.0.0 diff --git a/bukkit/pom.xml b/bukkit/pom.xml index 51d7eb63..3134b0ef 100644 --- a/bukkit/pom.xml +++ b/bukkit/pom.xml @@ -15,7 +15,7 @@ viabackwards-parent nl.matsv - 3.0.0-1.14.1 + 3.0.0-1.14.2 4.0.0 diff --git a/bungee/pom.xml b/bungee/pom.xml index 397cdd3d..2fb61539 100644 --- a/bungee/pom.xml +++ b/bungee/pom.xml @@ -15,7 +15,7 @@ viabackwards-parent nl.matsv - 3.0.0-1.14.1 + 3.0.0-1.14.2 4.0.0 diff --git a/core/pom.xml b/core/pom.xml index 8b0ed5cf..9bc9653a 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -15,7 +15,7 @@ viabackwards-parent nl.matsv - 3.0.0-1.14.1 + 3.0.0-1.14.2 4.0.0 diff --git a/core/src/main/java/nl/matsv/viabackwards/api/ViaBackwardsPlatform.java b/core/src/main/java/nl/matsv/viabackwards/api/ViaBackwardsPlatform.java index 7594fbd7..64c63091 100644 --- a/core/src/main/java/nl/matsv/viabackwards/api/ViaBackwardsPlatform.java +++ b/core/src/main/java/nl/matsv/viabackwards/api/ViaBackwardsPlatform.java @@ -20,6 +20,7 @@ import nl.matsv.viabackwards.protocol.protocol1_12to1_12_1.Protocol1_12To1_12_1; import nl.matsv.viabackwards.protocol.protocol1_13_1to1_13_2.Protocol1_13_1To1_13_2; import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.Protocol1_13_2To1_14; import nl.matsv.viabackwards.protocol.protocol1_13to1_13_1.Protocol1_13To1_13_1; +import nl.matsv.viabackwards.protocol.protocol1_14_1to1_14_2.Protocol1_14_1To1_14_2; import nl.matsv.viabackwards.protocol.protocol1_14to1_14_1.Protocol1_14To1_14_1; import nl.matsv.viabackwards.protocol.protocol1_9_4to1_10.Protocol1_9_4To1_10; import us.myles.ViaVersion.api.protocol.ProtocolRegistry; @@ -48,6 +49,7 @@ public interface ViaBackwardsPlatform { ProtocolRegistry.registerProtocol(new Protocol1_13_1To1_13_2(), Collections.singletonList(ProtocolVersion.v1_13_1.getId()), ProtocolVersion.v1_13_2.getId()); ProtocolRegistry.registerProtocol(new Protocol1_13_2To1_14(), Collections.singletonList(ProtocolVersion.v1_13_2.getId()), ProtocolVersion.v1_14.getId()); ProtocolRegistry.registerProtocol(new Protocol1_14To1_14_1(), Collections.singletonList(ProtocolVersion.v1_14.getId()), ProtocolVersion.v1_14_1.getId()); + ProtocolRegistry.registerProtocol(new Protocol1_14_1To1_14_2(), Collections.singletonList(ProtocolVersion.v1_14_1.getId()), ProtocolVersion.v1_14_2.getId()); } } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14_1to1_14_2/Protocol1_14_1To1_14_2.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14_1to1_14_2/Protocol1_14_1To1_14_2.java new file mode 100644 index 00000000..f5c57598 --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14_1to1_14_2/Protocol1_14_1To1_14_2.java @@ -0,0 +1,15 @@ +package nl.matsv.viabackwards.protocol.protocol1_14_1to1_14_2; + +import nl.matsv.viabackwards.api.BackwardsProtocol; +import us.myles.ViaVersion.api.data.UserConnection; + +public class Protocol1_14_1To1_14_2 extends BackwardsProtocol { + + @Override + protected void registerPackets() { + } + + @Override + public void init(UserConnection userConnection) { + } +} diff --git a/pom.xml b/pom.xml index 0d622182..e01455df 100644 --- a/pom.xml +++ b/pom.xml @@ -16,7 +16,7 @@ nl.matsv viabackwards-parent - 3.0.0-1.14.1 + 3.0.0-1.14.2 pom Allow newer clients to join older server versions. @@ -60,7 +60,7 @@ us.myles viaversion - 2.1.0 + 2.1.1 provided diff --git a/sponge/pom.xml b/sponge/pom.xml index 8e85de5e..1674f591 100644 --- a/sponge/pom.xml +++ b/sponge/pom.xml @@ -15,7 +15,7 @@ viabackwards-parent nl.matsv - 3.0.0-1.14.1 + 3.0.0-1.14.2 4.0.0 diff --git a/velocity/pom.xml b/velocity/pom.xml index 51a13ffd..324ddece 100644 --- a/velocity/pom.xml +++ b/velocity/pom.xml @@ -15,7 +15,7 @@ viabackwards-parent nl.matsv - 3.0.0-1.14.1 + 3.0.0-1.14.2 4.0.0 From 25b5b1ca8c5740dea1065019fb485d26f9ec658f Mon Sep 17 00:00:00 2001 From: KennyTV <28825609+KennyTV@users.noreply.github.com> Date: Wed, 29 May 2019 14:00:33 +0200 Subject: [PATCH 145/171] Remap berry bushes to vines --- .../assets/viabackwards/data/mapping-1.13.2to1.14.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/src/main/resources/assets/viabackwards/data/mapping-1.13.2to1.14.json b/core/src/main/resources/assets/viabackwards/data/mapping-1.13.2to1.14.json index b0769e04..e2c9e891 100644 --- a/core/src/main/resources/assets/viabackwards/data/mapping-1.13.2to1.14.json +++ b/core/src/main/resources/assets/viabackwards/data/mapping-1.13.2to1.14.json @@ -2648,10 +2648,10 @@ "minecraft:stonecutter[facing=south]": "minecraft:crafting_table", "minecraft:stonecutter[facing=west]": "minecraft:crafting_table", "minecraft:stonecutter[facing=east]": "minecraft:crafting_table", - "minecraft:sweet_berry_bush[age=0]": "minecraft:sugar_cane[age=0]", - "minecraft:sweet_berry_bush[age=1]": "minecraft:sugar_cane[age=0]", - "minecraft:sweet_berry_bush[age=2]": "minecraft:sugar_cane[age=0]", - "minecraft:sweet_berry_bush[age=3]": "minecraft:sugar_cane[age=0]", + "minecraft:sweet_berry_bush[age=0]": "minecraft:vine[east=true,north=true,south=true,up=true,west=true]", + "minecraft:sweet_berry_bush[age=1]": "minecraft:vine[east=true,north=true,south=true,up=true,west=true]", + "minecraft:sweet_berry_bush[age=2]": "minecraft:vine[east=true,north=true,south=true,up=true,west=true]", + "minecraft:sweet_berry_bush[age=3]": "minecraft:vine[east=true,north=true,south=true,up=true,west=true]", "minecraft:jigsaw[facing=north]": "minecraft:structure_block[mode=corner]", "minecraft:jigsaw[facing=east]": "minecraft:structure_block[mode=corner]", "minecraft:jigsaw[facing=south]": "minecraft:structure_block[mode=corner]", From a12b39b67f07e1dfa6a2bce5f828bc8632af3198 Mon Sep 17 00:00:00 2001 From: Marco Date: Thu, 30 May 2019 14:04:50 +0200 Subject: [PATCH 146/171] remap cartography_table inventory --- .../protocol1_13_2to1_14/packets/BlockItemPackets1_14.java | 1 + 1 file changed, 1 insertion(+) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java index dcd26d3f..6e42b4cd 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java @@ -93,6 +93,7 @@ public class BlockItemPackets1_14 extends BlockItemRewriter Date: Thu, 30 May 2019 14:46:31 +0200 Subject: [PATCH 147/171] inventory name remap --- .../packets/BlockItemPackets1_14.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java index 6e42b4cd..8bbf8ed1 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java @@ -18,6 +18,7 @@ import us.myles.ViaVersion.api.minecraft.metadata.types.MetaType1_13_2; import us.myles.ViaVersion.api.remapper.PacketHandler; import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.api.type.Type; +import us.myles.ViaVersion.api.type.types.StringType; import us.myles.ViaVersion.api.type.types.version.Types1_13; import us.myles.ViaVersion.packets.State; import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.ChatRewriter; @@ -59,8 +60,10 @@ public class BlockItemPackets1_14 extends BlockItemRewriter Date: Thu, 30 May 2019 15:36:11 +0200 Subject: [PATCH 148/171] impl first block id remaps --- .../Protocol1_13_2To1_14.java | 16 ++++++++++++++-- .../data/BackwardsMappings.java | 4 +++- .../packets/BlockItemPackets1_14.java | 2 +- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java index 9ce4f822..38999475 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java @@ -16,6 +16,7 @@ import us.myles.ViaVersion.api.remapper.PacketHandler; import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.api.type.Type; import us.myles.ViaVersion.packets.State; +import us.myles.ViaVersion.protocols.protocol1_14to1_13_2.data.MappingData; import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; @Getter @@ -266,14 +267,25 @@ public class Protocol1_13_2To1_14 extends BackwardsProtocol { } public static int getNewBlockStateId(int id) { - int newId = BackwardsMappings.blockMappings.getNewBlock(id); + int newId = BackwardsMappings.blockStateMappings.getNewBlock(id); if (newId == -1) { - ViaBackwards.getPlatform().getLogger().warning("Missing 1.14 block for 1.13.2 block " + id); + ViaBackwards.getPlatform().getLogger().warning("Missing 1.14 blockstate id for 1.13.2 block " + id); return 0; } return newId; } + + public static int getNewBlockId(int id) { + int newId = BackwardsMappings.blockMappings.getNewBlock(id); + if (newId == -1) { + ViaBackwards.getPlatform().getLogger().warning("Missing 1.14 block id for 1.13.2 block " + id); + return 0; + } + return newId; + } + + @Override public void init(UserConnection user) { // Register ClientWorld diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/BackwardsMappings.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/BackwardsMappings.java index cf11e798..9a8ba24b 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/BackwardsMappings.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/BackwardsMappings.java @@ -14,6 +14,7 @@ import java.util.Arrays; import java.util.Map; public class BackwardsMappings { + public static BlockMappings blockStateMappings; public static BlockMappings blockMappings; public static void init() { @@ -22,7 +23,8 @@ public class BackwardsMappings { JsonObject mapping1_13_2to1_14 = loadData("mapping-1.13.2to1.14.json"); ViaBackwards.getPlatform().getLogger().info("Loading 1.14 -> 1.13.2 block mapping..."); - blockMappings = new BlockMappingsShortArray(mapping1_14.getAsJsonObject("blockstates"), mapping1_13_2.getAsJsonObject("blockstates"), mapping1_13_2to1_14.getAsJsonObject("blockstates")); + blockStateMappings = new BlockMappingsShortArray(mapping1_14.getAsJsonObject("blockstates"), mapping1_13_2.getAsJsonObject("blockstates"), mapping1_13_2to1_14.getAsJsonObject("blockstates")); + blockMappings = new BlockMappingsShortArray(mapping1_14.getAsJsonObject("blocks"), mapping1_13_2.getAsJsonObject("blocks"), mapping1_13_2to1_14.getAsJsonObject("blocks")); } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java index 8bbf8ed1..c5aafe1f 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java @@ -449,7 +449,7 @@ public class BlockItemPackets1_14 extends BlockItemRewriter Date: Sun, 2 Jun 2019 00:00:38 +0200 Subject: [PATCH 149/171] Fix block remaps --- .../protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java | 2 +- .../protocol/protocol1_13_2to1_14/data/BackwardsMappings.java | 2 +- .../protocol1_13_2to1_14/packets/BlockItemPackets1_14.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java index 38999475..853205b8 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java @@ -280,7 +280,7 @@ public class Protocol1_13_2To1_14 extends BackwardsProtocol { int newId = BackwardsMappings.blockMappings.getNewBlock(id); if (newId == -1) { ViaBackwards.getPlatform().getLogger().warning("Missing 1.14 block id for 1.13.2 block " + id); - return 0; + return id; } return newId; } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/BackwardsMappings.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/BackwardsMappings.java index 9a8ba24b..e1245f65 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/BackwardsMappings.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/data/BackwardsMappings.java @@ -24,7 +24,7 @@ public class BackwardsMappings { ViaBackwards.getPlatform().getLogger().info("Loading 1.14 -> 1.13.2 block mapping..."); blockStateMappings = new BlockMappingsShortArray(mapping1_14.getAsJsonObject("blockstates"), mapping1_13_2.getAsJsonObject("blockstates"), mapping1_13_2to1_14.getAsJsonObject("blockstates")); - blockMappings = new BlockMappingsShortArray(mapping1_14.getAsJsonObject("blocks"), mapping1_13_2.getAsJsonObject("blocks"), mapping1_13_2to1_14.getAsJsonObject("blocks")); + //blockMappings = new BlockMappingsShortArray(mapping1_14.getAsJsonObject("blocks"), mapping1_13_2.getAsJsonObject("blocks"), mapping1_13_2to1_14.getAsJsonObject("blocks")); } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java index c5aafe1f..304ff255 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java @@ -449,7 +449,7 @@ public class BlockItemPackets1_14 extends BlockItemRewriter Date: Sun, 2 Jun 2019 20:17:55 +0200 Subject: [PATCH 150/171] Hotfix untracked entity --- .../protocol1_13_2to1_14/packets/BlockItemPackets1_14.java | 1 + 1 file changed, 1 insertion(+) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java index 304ff255..2d9a0e75 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java @@ -271,6 +271,7 @@ public class BlockItemPackets1_14 extends BlockItemRewriter Date: Fri, 7 Jun 2019 14:40:00 +0200 Subject: [PATCH 151/171] Remap 1.14 spawn eggs --- .../packets/BlockItemPackets1_14.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java index 2d9a0e75..a11b1fbd 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java @@ -707,6 +707,14 @@ public class BlockItemPackets1_14 extends BlockItemRewriter Date: Fri, 7 Jun 2019 14:46:48 +0200 Subject: [PATCH 152/171] Fix recipe book data --- .../packets/PlayerPackets1_14.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/PlayerPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/PlayerPackets1_14.java index 4906a545..117b4110 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/PlayerPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/PlayerPackets1_14.java @@ -79,11 +79,11 @@ public class PlayerPackets1_14 extends Rewriter { wrapper.passthrough(Type.BOOLEAN); // Smelting Recipe Book Open wrapper.passthrough(Type.BOOLEAN); // Smelting Recipe Filter Active - // Unknown new booleans - wrapper.read(Type.BOOLEAN); - wrapper.read(Type.BOOLEAN); - wrapper.read(Type.BOOLEAN); - wrapper.read(Type.BOOLEAN); + // Blast furnace/smoker data + wrapper.write(Type.BOOLEAN, false); + wrapper.write(Type.BOOLEAN, false); + wrapper.write(Type.BOOLEAN, false); + wrapper.write(Type.BOOLEAN, false); } } }); From dc12f26f05bf8d4a46323e770a866c3a95ad2963 Mon Sep 17 00:00:00 2001 From: KennyTV <28825609+KennyTV@users.noreply.github.com> Date: Sun, 9 Jun 2019 11:11:33 +0200 Subject: [PATCH 153/171] Let there be light --- .../Protocol1_13_2To1_14.java | 62 ++++++++++++-- .../packets/BlockItemPackets1_14.java | 63 ++++++++++----- .../storage/ChunkLightStorage.java | 80 +++++++++++++++++++ 3 files changed, 179 insertions(+), 26 deletions(-) create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/storage/ChunkLightStorage.java diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java index 853205b8..5a7bca83 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java @@ -10,13 +10,13 @@ import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.packets.BlockItemPack import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.packets.EntityPackets1_14; import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.packets.PlayerPackets1_14; import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.packets.SoundPackets1_14; +import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.storage.ChunkLightStorage; import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.data.UserConnection; import us.myles.ViaVersion.api.remapper.PacketHandler; import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.api.type.Type; import us.myles.ViaVersion.packets.State; -import us.myles.ViaVersion.protocols.protocol1_14to1_13_2.data.MappingData; import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; @Getter @@ -49,7 +49,6 @@ public class Protocol1_13_2To1_14 extends BackwardsProtocol { registerOutgoing(State.PLAY, 0x1B, 0x1C); registerOutgoing(State.PLAY, 0x54, 0x1D); registerOutgoing(State.PLAY, 0x1C, 0x1E); - registerOutgoing(State.PLAY, 0x1D, 0x1F); registerOutgoing(State.PLAY, 0x1E, 0x20); registerOutgoing(State.PLAY, 0x20, 0x21); @@ -212,15 +211,65 @@ public class Protocol1_13_2To1_14 extends BackwardsProtocol { public void registerMap() { handler(new PacketHandler() { @Override - public void handle(PacketWrapper packetWrapper) throws Exception { - packetWrapper.cancel(); // todo + public void handle(PacketWrapper wrapper) throws Exception { + int x = wrapper.read(Type.VAR_INT); + int z = wrapper.read(Type.VAR_INT); + int skyLightMask = wrapper.read(Type.VAR_INT); + int blockLightMask = wrapper.read(Type.VAR_INT); + int emptySkyLightMask = wrapper.read(Type.VAR_INT); + int emptyBlockLightMask = wrapper.read(Type.VAR_INT); + + byte[][] skyLight = new byte[16][]; + // we don't need void and +256 light + if (isSet(skyLightMask, 0)) { + wrapper.read(Type.BYTE_ARRAY); + } + for (int i = 0; i < 16; i++) { + if (isSet(skyLightMask, i + 1)) { + Byte[] array = wrapper.read(Type.BYTE_ARRAY); + skyLight[i] = new byte[array.length]; + for (int j = 0; j < array.length; j++) { + skyLight[i][j] = array[j]; + } + } else if (isSet(emptySkyLightMask, i + 1)) { + skyLight[i] = ChunkLightStorage.EMPTY_LIGHT; + } + } + if (isSet(skyLightMask, 17)) { + wrapper.read(Type.BYTE_ARRAY); + } + + byte[][] blockLight = new byte[18][]; + if (isSet(blockLightMask, 0)) { + wrapper.read(Type.BYTE_ARRAY); + } + for (int i = 0; i < 16; i++) { + if (isSet(blockLightMask, i + 1)) { + Byte[] array = wrapper.read(Type.BYTE_ARRAY); + blockLight[i] = new byte[array.length]; + for (int j = 0; j < array.length; j++) { + blockLight[i][j] = array[j]; + } + } else if (isSet(emptyBlockLightMask, i + 1)) { + blockLight[i] = ChunkLightStorage.EMPTY_LIGHT; + } + } + if (isSet(skyLightMask, 17)) { + wrapper.read(Type.BYTE_ARRAY); + } + + wrapper.user().get(ChunkLightStorage.class).setStoredLight(skyLight, blockLight, x, z); + wrapper.cancel(); + } + + private boolean isSet(int mask, int i) { + return (mask & (1 << i)) != 0; } }); } }); - //Incomming //Unknown packet added in 19w11a - 0x02 @@ -298,5 +347,8 @@ public class Protocol1_13_2To1_14 extends BackwardsProtocol { // Init protocol in EntityTracker user.get(EntityTracker.class).initProtocol(this); + + if (!user.has(ChunkLightStorage.class)) + user.put(new ChunkLightStorage(user)); } } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java index a11b1fbd..6cfca5c5 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java @@ -7,6 +7,7 @@ import nl.matsv.viabackwards.api.entities.types.AbstractEntityType; import nl.matsv.viabackwards.api.entities.types.EntityType1_14; import nl.matsv.viabackwards.api.rewriters.BlockItemRewriter; import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.Protocol1_13_2To1_14; +import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.storage.ChunkLightStorage; import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.minecraft.BlockChangeRecord; import us.myles.ViaVersion.api.minecraft.Environment; @@ -18,7 +19,6 @@ import us.myles.ViaVersion.api.minecraft.metadata.types.MetaType1_13_2; import us.myles.ViaVersion.api.remapper.PacketHandler; import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.api.type.Type; -import us.myles.ViaVersion.api.type.types.StringType; import us.myles.ViaVersion.api.type.types.version.Types1_13; import us.myles.ViaVersion.packets.State; import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.ChatRewriter; @@ -34,19 +34,12 @@ import us.myles.viaversion.libs.opennbt.tag.builtin.StringTag; import us.myles.viaversion.libs.opennbt.tag.builtin.Tag; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.Set; public class BlockItemPackets1_14 extends BlockItemRewriter { private static String NBT_TAG_NAME = "ViaBackwards|" + Protocol1_13_2To1_14.class.getSimpleName(); - private static byte[] fullLight = new byte[2048]; - - static { - Arrays.fill(fullLight, (byte) 0xFF); - } - @Override protected void registerPackets(Protocol1_13_2To1_14 protocol) { // Open window @@ -63,7 +56,7 @@ public class BlockItemPackets1_14 extends BlockItemRewriter fastUtilLongObjectHashMap; + + private final Map storedLight = createLongObjectMap(); + + static { + Arrays.fill(FULL_LIGHT, (byte) 0xFF); + Arrays.fill(EMPTY_LIGHT, (byte) 0x0); + try { + fastUtilLongObjectHashMap = Class.forName("it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap").getConstructor(); + } catch (ClassNotFoundException | NoSuchMethodException ignored) { + } + } + + public ChunkLightStorage(UserConnection user) { + super(user); + } + + public void setStoredLight(byte[][] skyLight, byte[][] blockLight, int x, int z) { + storedLight.put(getChunkSectionIndex(x, z), new ChunkLight(skyLight, blockLight)); + } + + public ChunkLight getStoredLight(int x, int z) { + return storedLight.get(getChunkSectionIndex(x, z)); + } + + public void clear() { + storedLight.clear(); + } + + public void unloadChunk(int x, int z) { + storedLight.remove(getChunkSectionIndex(x, z)); + } + + private long getChunkSectionIndex(int x, int z) { + return ((x & 0x3FFFFFFL) << 38) | (z & 0x3FFFFFFL); + } + + private Map createLongObjectMap() { + if (fastUtilLongObjectHashMap != null) { + try { + return (Map) fastUtilLongObjectHashMap.newInstance(); + } catch (IllegalAccessException | InstantiationException | InvocationTargetException e) { + e.printStackTrace(); + } + } + return new HashMap<>(); + } + + public static class ChunkLight { + private final byte[][] skyLight; + private final byte[][] blockLight; + + public ChunkLight(byte[][] skyLight, byte[][] blockLight) { + this.skyLight = skyLight; + this.blockLight = blockLight; + } + + public byte[][] getSkyLight() { + return skyLight; + } + + public byte[][] getBlockLight() { + return blockLight; + } + } +} From 6c27c1e863076e238dff35b1f7eec8f8908828dc Mon Sep 17 00:00:00 2001 From: KennyTV <28825609+KennyTV@users.noreply.github.com> Date: Sun, 9 Jun 2019 11:13:42 +0200 Subject: [PATCH 154/171] whoops --- .../protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java index 5a7bca83..07a16d49 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java @@ -239,7 +239,7 @@ public class Protocol1_13_2To1_14 extends BackwardsProtocol { wrapper.read(Type.BYTE_ARRAY); } - byte[][] blockLight = new byte[18][]; + byte[][] blockLight = new byte[16][]; if (isSet(blockLightMask, 0)) { wrapper.read(Type.BYTE_ARRAY); } From 4070efd8037313ec9c41eeb889977b3df19f2caa Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Wed, 12 Jun 2019 17:42:11 +0200 Subject: [PATCH 155/171] fix wrong light mask --- .../protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java index 07a16d49..b19cacb0 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java @@ -254,7 +254,7 @@ public class Protocol1_13_2To1_14 extends BackwardsProtocol { blockLight[i] = ChunkLightStorage.EMPTY_LIGHT; } } - if (isSet(skyLightMask, 17)) { + if (isSet(blockLightMask, 17)) { wrapper.read(Type.BYTE_ARRAY); } From 0c7c7ba05c645022f574572f2400fbc447eaa9fa Mon Sep 17 00:00:00 2001 From: KennyTV <28825609+KennyTV@users.noreply.github.com> Date: Thu, 13 Jun 2019 11:45:58 +0200 Subject: [PATCH 156/171] Fix trident entitytype --- .../matsv/viabackwards/api/entities/types/EntityType1_13.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/api/entities/types/EntityType1_13.java b/core/src/main/java/nl/matsv/viabackwards/api/entities/types/EntityType1_13.java index 752aca0f..3424363a 100644 --- a/core/src/main/java/nl/matsv/viabackwards/api/entities/types/EntityType1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/api/entities/types/EntityType1_13.java @@ -287,7 +287,7 @@ public class EntityType1_13 { FISHIHNG_HOOK(90, EntityType.FISHING_BOBBER), SPECTRAL_ARROW(91, EntityType.SPECTRAL_ARROW), DRAGON_FIREBALL(93, EntityType.DRAGON_FIREBALL), - TRIDENT(94, EntityType.ARROW); + TRIDENT(94, EntityType.TRIDENT); private final int id; private final EntityType type; From 3acba1b8e235fa44d9b81ad19039161a75482e78 Mon Sep 17 00:00:00 2001 From: creeper123123321 Date: Sun, 9 Jun 2019 12:23:25 -0300 Subject: [PATCH 157/171] ViaFabric platform --- all/pom.xml | 8 +- bukkit/src/main/resources/plugin.yml | 2 +- fabric/pom.xml | 62 +++++++++++++++ .../nl/matsv/viabackwards/ViaFabricAddon.java | 34 ++++++++ .../fabric/util/LoggerWrapper.java | 78 +++++++++++++++++++ fabric/src/main/resources/fabric.mod.json | 29 +++++++ pom.xml | 1 + .../nl/matsv/viabackwards/SpongePlugin.java | 2 +- .../nl/matsv/viabackwards/VelocityPlugin.java | 2 +- 9 files changed, 214 insertions(+), 4 deletions(-) create mode 100644 fabric/pom.xml create mode 100644 fabric/src/main/java/nl/matsv/viabackwards/ViaFabricAddon.java create mode 100644 fabric/src/main/java/nl/matsv/viabackwards/fabric/util/LoggerWrapper.java create mode 100644 fabric/src/main/resources/fabric.mod.json diff --git a/all/pom.xml b/all/pom.xml index 8aecf596..5982b98a 100644 --- a/all/pom.xml +++ b/all/pom.xml @@ -104,6 +104,12 @@ ${project.parent.version} + + nl.matsv + viabackwards-fabric + ${project.parent.version} + + nl.matsv viabackwards-sponge @@ -116,4 +122,4 @@ ${project.parent.version} - \ No newline at end of file + diff --git a/bukkit/src/main/resources/plugin.yml b/bukkit/src/main/resources/plugin.yml index 8dd6f4ba..20c3585f 100644 --- a/bukkit/src/main/resources/plugin.yml +++ b/bukkit/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: ViaBackwards version: ${project.version} -description: Allows 1.9.x on a 1.10 Spigot server +description: Allow older Minecraft versions to connect to a newer server version. main: nl.matsv.viabackwards.BukkitPlugin authors: [Matsv] diff --git a/fabric/pom.xml b/fabric/pom.xml new file mode 100644 index 00000000..24c5a2ee --- /dev/null +++ b/fabric/pom.xml @@ -0,0 +1,62 @@ + + + + + + viabackwards-parent + nl.matsv + 2.4.0-SNAPSHOT + + 4.0.0 + + viabackwards-fabric + + + + fabric-repo + https://maven.fabricmc.net/ + + + + + + net.fabricmc + fabric-loader + 0.4.8+build.154 + provided + + + org.apache.logging.log4j + log4j-api + 2.8.1 + + + nl.matsv + viabackwards-core + ${project.parent.version} + + + + + + + . + true + src/main/resources/ + + * + + + + + diff --git a/fabric/src/main/java/nl/matsv/viabackwards/ViaFabricAddon.java b/fabric/src/main/java/nl/matsv/viabackwards/ViaFabricAddon.java new file mode 100644 index 00000000..254d6d71 --- /dev/null +++ b/fabric/src/main/java/nl/matsv/viabackwards/ViaFabricAddon.java @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2016 Matsv + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package nl.matsv.viabackwards; + +import lombok.Getter; +import net.fabricmc.loader.api.FabricLoader; +import nl.matsv.viabackwards.api.ViaBackwardsPlatform; +import nl.matsv.viabackwards.fabric.util.LoggerWrapper; +import org.apache.logging.log4j.LogManager; + +import java.util.logging.Logger; + +public class ViaFabricAddon implements ViaBackwardsPlatform, Runnable { + @Getter + private final Logger logger = new LoggerWrapper(LogManager.getLogger("ViaRewind")); + + @Override + public void run() { + this.init(); + } + + @Override + public void disable() { + // Not possible + } +} diff --git a/fabric/src/main/java/nl/matsv/viabackwards/fabric/util/LoggerWrapper.java b/fabric/src/main/java/nl/matsv/viabackwards/fabric/util/LoggerWrapper.java new file mode 100644 index 00000000..e4b65e92 --- /dev/null +++ b/fabric/src/main/java/nl/matsv/viabackwards/fabric/util/LoggerWrapper.java @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2016 Matsv + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package nl.matsv.viabackwards.fabric.util; + +import java.text.MessageFormat; +import java.util.logging.Level; +import java.util.logging.LogRecord; +import java.util.logging.Logger; + +public class LoggerWrapper extends Logger { + private final org.apache.logging.log4j.Logger base; + + public LoggerWrapper(org.apache.logging.log4j.Logger logger) { + super("logger", null); + this.base = logger; + } + + public void log(LogRecord record) { + this.log(record.getLevel(), record.getMessage()); + } + + public void log(Level level, String msg) { + if (level == Level.FINE) { + this.base.debug(msg); + } else if (level == Level.WARNING) { + this.base.warn(msg); + } else if (level == Level.SEVERE) { + this.base.error(msg); + } else if (level == Level.INFO) { + this.base.info(msg); + } else { + this.base.trace(msg); + } + + } + + public void log(Level level, String msg, Object param1) { + if (level == Level.FINE) { + this.base.debug(msg, param1); + } else if (level == Level.WARNING) { + this.base.warn(msg, param1); + } else if (level == Level.SEVERE) { + this.base.error(msg, param1); + } else if (level == Level.INFO) { + this.base.info(msg, param1); + } else { + this.base.trace(msg, param1); + } + + } + + public void log(Level level, String msg, Object[] params) { + log(level, MessageFormat.format(msg, params)); + } + + public void log(Level level, String msg, Throwable params) { + if (level == Level.FINE) { + this.base.debug(msg, params); + } else if (level == Level.WARNING) { + this.base.warn(msg, params); + } else if (level == Level.SEVERE) { + this.base.error(msg, params); + } else if (level == Level.INFO) { + this.base.info(msg, params); + } else { + this.base.trace(msg, params); + } + + } +} diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json new file mode 100644 index 00000000..6f5120a7 --- /dev/null +++ b/fabric/src/main/resources/fabric.mod.json @@ -0,0 +1,29 @@ +{ + "schemaVersion": 1, + "id": "viabackwards", + "name": "ViaBackwards", + "version": "${project.version}", + "description": "Allow older Minecraft versions to connect to a newer server version.", + "license": "MIT", + "contact": { + "homepage": "https://github.com/ViaVersion/ViaBackwards", + "issues": "https://github.com/ViaVersion/ViaBackwards/issues", + "sources": "https://github.com/ViaVersion/ViaBackwards" + }, + "environment": "*", + "authors": [ + "Matsv" + ], + "entrypoints": { + "viafabric:via_api_initialized": [ + "nl.matsv.viabackwards.ViaFabricAddon" + ] + }, + "requires": { + "fabricloader": ">=0.4.0", + "viafabric": "*" + }, + "recommended": { + "viarewind": "*" + } +} diff --git a/pom.xml b/pom.xml index e01455df..e6db8b88 100644 --- a/pom.xml +++ b/pom.xml @@ -27,6 +27,7 @@ core bukkit bungee + fabric sponge velocity all diff --git a/sponge/src/main/java/nl/matsv/viabackwards/SpongePlugin.java b/sponge/src/main/java/nl/matsv/viabackwards/SpongePlugin.java index 090ea4df..f3c43287 100644 --- a/sponge/src/main/java/nl/matsv/viabackwards/SpongePlugin.java +++ b/sponge/src/main/java/nl/matsv/viabackwards/SpongePlugin.java @@ -27,7 +27,7 @@ import java.util.logging.Logger; name = "ViaBackwards", version = VersionInfo.VERSION, authors = {"Matsv"}, - description = "Allow older Minecraft versions to connect to an newer server version.", + description = "Allow older Minecraft versions to connect to a newer server version.", dependencies = {@Dependency(id = "viaversion")} ) public class SpongePlugin implements ViaBackwardsPlatform { diff --git a/velocity/src/main/java/nl/matsv/viabackwards/VelocityPlugin.java b/velocity/src/main/java/nl/matsv/viabackwards/VelocityPlugin.java index f20d6f58..5ff4691e 100644 --- a/velocity/src/main/java/nl/matsv/viabackwards/VelocityPlugin.java +++ b/velocity/src/main/java/nl/matsv/viabackwards/VelocityPlugin.java @@ -27,7 +27,7 @@ import java.util.logging.Logger; name = "ViaBackwards", version = VersionInfo.VERSION, authors = {"Matsv"}, - description = "Allow older Minecraft versions to connect to an newer server version.", + description = "Allow older Minecraft versions to connect to a newer server version.", dependencies = {@Dependency(id = "viaversion")} ) public class VelocityPlugin implements ViaBackwardsPlatform { From fd8c89ae17e1aa745ecd91e685b53f905f0a515a Mon Sep 17 00:00:00 2001 From: creeper123123321 Date: Sun, 9 Jun 2019 12:35:53 -0300 Subject: [PATCH 158/171] Don't shade Log4J API --- fabric/pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/fabric/pom.xml b/fabric/pom.xml index 24c5a2ee..2086c33a 100644 --- a/fabric/pom.xml +++ b/fabric/pom.xml @@ -39,6 +39,7 @@ org.apache.logging.log4j log4j-api 2.8.1 + provided nl.matsv From ac571df2cd17e12b253f1eafd64b3da28e67033b Mon Sep 17 00:00:00 2001 From: creeper123123321 <7974274+creeper123123321@users.noreply.github.com> Date: Sun, 16 Jun 2019 10:05:06 -0300 Subject: [PATCH 159/171] rebased into 1.14 branch --- fabric/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fabric/pom.xml b/fabric/pom.xml index 2086c33a..f3a67529 100644 --- a/fabric/pom.xml +++ b/fabric/pom.xml @@ -15,7 +15,7 @@ viabackwards-parent nl.matsv - 2.4.0-SNAPSHOT + 3.0.0-1.14.2 4.0.0 From 5e1143af4bf48013c4fdf9504f27a6715e3f455a Mon Sep 17 00:00:00 2001 From: creeper123123321 <7974274+creeper123123321@users.noreply.github.com> Date: Sun, 16 Jun 2019 10:21:38 -0300 Subject: [PATCH 160/171] Use correct fabric.mod.json metadata keys --- fabric/src/main/resources/fabric.mod.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index 6f5120a7..e77b486d 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -19,11 +19,11 @@ "nl.matsv.viabackwards.ViaFabricAddon" ] }, - "requires": { + "depends": { "fabricloader": ">=0.4.0", "viafabric": "*" }, - "recommended": { + "recommends": { "viarewind": "*" } } From b4c30dbff3e77eaceadaa1f77221bbb29a3f6e8d Mon Sep 17 00:00:00 2001 From: KennyTV <28825609+KennyTV@users.noreply.github.com> Date: Mon, 24 Jun 2019 17:24:21 +0200 Subject: [PATCH 161/171] Update to 1.14.3 --- all/pom.xml | 2 +- bukkit/pom.xml | 2 +- bungee/pom.xml | 2 +- core/pom.xml | 2 +- .../api/ViaBackwardsPlatform.java | 2 + .../packets/BlockItemPackets1_14.java | 2 +- .../Protocol1_14_2To1_14_3.java | 51 +++++++++++++++++++ fabric/pom.xml | 2 +- pom.xml | 4 +- sponge/pom.xml | 2 +- velocity/pom.xml | 2 +- 11 files changed, 63 insertions(+), 10 deletions(-) create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14_2to1_14_3/Protocol1_14_2To1_14_3.java diff --git a/all/pom.xml b/all/pom.xml index 5982b98a..60b3d8b3 100644 --- a/all/pom.xml +++ b/all/pom.xml @@ -15,7 +15,7 @@ viabackwards-parent nl.matsv - 3.0.0-1.14.2 + 3.0.0-1.14.3 4.0.0 diff --git a/bukkit/pom.xml b/bukkit/pom.xml index 3134b0ef..dff52654 100644 --- a/bukkit/pom.xml +++ b/bukkit/pom.xml @@ -15,7 +15,7 @@ viabackwards-parent nl.matsv - 3.0.0-1.14.2 + 3.0.0-1.14.3 4.0.0 diff --git a/bungee/pom.xml b/bungee/pom.xml index 2fb61539..e531a2a0 100644 --- a/bungee/pom.xml +++ b/bungee/pom.xml @@ -15,7 +15,7 @@ viabackwards-parent nl.matsv - 3.0.0-1.14.2 + 3.0.0-1.14.3 4.0.0 diff --git a/core/pom.xml b/core/pom.xml index 9bc9653a..b428704c 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -15,7 +15,7 @@ viabackwards-parent nl.matsv - 3.0.0-1.14.2 + 3.0.0-1.14.3 4.0.0 diff --git a/core/src/main/java/nl/matsv/viabackwards/api/ViaBackwardsPlatform.java b/core/src/main/java/nl/matsv/viabackwards/api/ViaBackwardsPlatform.java index 64c63091..53b6e5c9 100644 --- a/core/src/main/java/nl/matsv/viabackwards/api/ViaBackwardsPlatform.java +++ b/core/src/main/java/nl/matsv/viabackwards/api/ViaBackwardsPlatform.java @@ -21,6 +21,7 @@ import nl.matsv.viabackwards.protocol.protocol1_13_1to1_13_2.Protocol1_13_1To1_1 import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.Protocol1_13_2To1_14; import nl.matsv.viabackwards.protocol.protocol1_13to1_13_1.Protocol1_13To1_13_1; import nl.matsv.viabackwards.protocol.protocol1_14_1to1_14_2.Protocol1_14_1To1_14_2; +import nl.matsv.viabackwards.protocol.protocol1_14_2to1_14_3.Protocol1_14_2To1_14_3; import nl.matsv.viabackwards.protocol.protocol1_14to1_14_1.Protocol1_14To1_14_1; import nl.matsv.viabackwards.protocol.protocol1_9_4to1_10.Protocol1_9_4To1_10; import us.myles.ViaVersion.api.protocol.ProtocolRegistry; @@ -50,6 +51,7 @@ public interface ViaBackwardsPlatform { ProtocolRegistry.registerProtocol(new Protocol1_13_2To1_14(), Collections.singletonList(ProtocolVersion.v1_13_2.getId()), ProtocolVersion.v1_14.getId()); ProtocolRegistry.registerProtocol(new Protocol1_14To1_14_1(), Collections.singletonList(ProtocolVersion.v1_14.getId()), ProtocolVersion.v1_14_1.getId()); ProtocolRegistry.registerProtocol(new Protocol1_14_1To1_14_2(), Collections.singletonList(ProtocolVersion.v1_14_1.getId()), ProtocolVersion.v1_14_2.getId()); + ProtocolRegistry.registerProtocol(new Protocol1_14_2To1_14_3(), Collections.singletonList(ProtocolVersion.v1_14_2.getId()), ProtocolVersion.v1_14_3.getId()); } } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java index 6cfca5c5..3b519793 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java @@ -527,7 +527,7 @@ public class BlockItemPackets1_14 extends BlockItemRewriter viabackwards-parent nl.matsv - 3.0.0-1.14.2 + 3.0.0-1.14.3 4.0.0 diff --git a/pom.xml b/pom.xml index e6db8b88..b98a0e31 100644 --- a/pom.xml +++ b/pom.xml @@ -16,7 +16,7 @@ nl.matsv viabackwards-parent - 3.0.0-1.14.2 + 3.0.0-1.14.3 pom Allow newer clients to join older server versions. @@ -61,7 +61,7 @@ us.myles viaversion - 2.1.1 + 2.1.2 provided diff --git a/sponge/pom.xml b/sponge/pom.xml index 1674f591..e2c0d36f 100644 --- a/sponge/pom.xml +++ b/sponge/pom.xml @@ -15,7 +15,7 @@ viabackwards-parent nl.matsv - 3.0.0-1.14.2 + 3.0.0-1.14.3 4.0.0 diff --git a/velocity/pom.xml b/velocity/pom.xml index 324ddece..e96ec60c 100644 --- a/velocity/pom.xml +++ b/velocity/pom.xml @@ -15,7 +15,7 @@ viabackwards-parent nl.matsv - 3.0.0-1.14.2 + 3.0.0-1.14.3 4.0.0 From 1c94e0ead2921943559552f2fb3661376418afc5 Mon Sep 17 00:00:00 2001 From: KennyTV <28825609+KennyTV@users.noreply.github.com> Date: Mon, 24 Jun 2019 17:28:32 +0200 Subject: [PATCH 162/171] Fix --- .../protocol/protocol1_14_2to1_14_3/Protocol1_14_2To1_14_3.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14_2to1_14_3/Protocol1_14_2To1_14_3.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14_2to1_14_3/Protocol1_14_2To1_14_3.java index 840dde18..13e38661 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14_2to1_14_3/Protocol1_14_2To1_14_3.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14_2to1_14_3/Protocol1_14_2To1_14_3.java @@ -37,7 +37,7 @@ public class Protocol1_14_2To1_14_3 extends BackwardsProtocol { wrapper.passthrough(Type.VAR_INT); wrapper.passthrough(Type.VAR_INT); - wrapper.read(Type.BOOLEAN); + wrapper.passthrough(Type.BOOLEAN); wrapper.read(Type.BOOLEAN); } }); From 167b71504893f00e0973b13a472411f939062956 Mon Sep 17 00:00:00 2001 From: KennyTV <28825609+KennyTV@users.noreply.github.com> Date: Tue, 25 Jun 2019 09:16:03 +0200 Subject: [PATCH 163/171] Fix new recipe type --- .../Protocol1_14_2To1_14_3.java | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14_2to1_14_3/Protocol1_14_2To1_14_3.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14_2to1_14_3/Protocol1_14_2To1_14_3.java index 13e38661..cc4d0f77 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14_2to1_14_3/Protocol1_14_2To1_14_3.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14_2to1_14_3/Protocol1_14_2To1_14_3.java @@ -43,6 +43,64 @@ public class Protocol1_14_2To1_14_3 extends BackwardsProtocol { }); } }); + + // Declare recipes + registerOutgoing(State.PLAY, 0x5A, 0x5A, new PacketRemapper() { + @Override + public void registerMap() { + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + int size = wrapper.passthrough(Type.VAR_INT); + for (int i = 0; i < size; i++) { + String fullType = wrapper.read(Type.STRING); + String type = fullType.replace("minecraft:", ""); + String id = wrapper.read(Type.STRING); // id + + if (type.equals("crafting_special_repairitem")) continue; // New type + + if (type.equals("crafting_shapeless")) { + wrapper.passthrough(Type.STRING); // Group + int ingredientsNo = wrapper.passthrough(Type.VAR_INT); + for (int j = 0; j < ingredientsNo; j++) { + wrapper.passthrough(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT); // Ingredients + } + wrapper.passthrough(Type.FLAT_VAR_INT_ITEM);// Result + } else if (type.equals("crafting_shaped")) { + int ingredientsNo = wrapper.passthrough(Type.VAR_INT) * wrapper.passthrough(Type.VAR_INT); + wrapper.passthrough(Type.STRING); // Group + for (int j = 0; j < ingredientsNo; j++) { + wrapper.passthrough(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT); // Ingredients + } + wrapper.passthrough(Type.FLAT_VAR_INT_ITEM);// Result + } else if (type.equals("smelting")) { + wrapper.passthrough(Type.STRING); // Group + wrapper.passthrough(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT); // Ingredients + + wrapper.passthrough(Type.FLAT_VAR_INT_ITEM);// Result + + wrapper.passthrough(Type.FLOAT); // EXP + wrapper.passthrough(Type.VAR_INT); // Cooking time + } else if (type.equals("stonecutting")) { + wrapper.passthrough(Type.STRING); // Group? + wrapper.passthrough(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT); // Ingredients + wrapper.passthrough(Type.FLAT_VAR_INT_ITEM); // Result + } else if (type.equals("blasting") || type.equals("campfire_cooking") || type.equals("smoking")) { + wrapper.passthrough(Type.STRING); // Group + wrapper.passthrough(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT); // Ingredients + wrapper.passthrough(Type.FLAT_VAR_INT_ITEM); + wrapper.passthrough(Type.FLOAT); // EXP + wrapper.passthrough(Type.VAR_INT); // Cooking time + } + + wrapper.write(Type.STRING, fullType); + wrapper.write(Type.STRING, id); + } + wrapper.cancel(); + } + }); + } + }); } @Override From 21bd518f4517516042e4ba83daa82fdb19a20d46 Mon Sep 17 00:00:00 2001 From: KennyTV <28825609+KennyTV@users.noreply.github.com> Date: Tue, 25 Jun 2019 12:34:01 +0200 Subject: [PATCH 164/171] Properly fix recipe book from 1.14.3 --- .../Protocol1_14_2To1_14_3.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14_2to1_14_3/Protocol1_14_2To1_14_3.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14_2to1_14_3/Protocol1_14_2To1_14_3.java index cc4d0f77..99cebe50 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14_2to1_14_3/Protocol1_14_2To1_14_3.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_14_2to1_14_3/Protocol1_14_2To1_14_3.java @@ -52,12 +52,19 @@ public class Protocol1_14_2To1_14_3 extends BackwardsProtocol { @Override public void handle(PacketWrapper wrapper) throws Exception { int size = wrapper.passthrough(Type.VAR_INT); + int deleted = 0; for (int i = 0; i < size; i++) { String fullType = wrapper.read(Type.STRING); String type = fullType.replace("minecraft:", ""); String id = wrapper.read(Type.STRING); // id - if (type.equals("crafting_special_repairitem")) continue; // New type + if (type.equals("crafting_special_repairitem")) { + deleted++; + continue; + } + + wrapper.write(Type.STRING, fullType); + wrapper.write(Type.STRING, id); if (type.equals("crafting_shapeless")) { wrapper.passthrough(Type.STRING); // Group @@ -92,11 +99,9 @@ public class Protocol1_14_2To1_14_3 extends BackwardsProtocol { wrapper.passthrough(Type.FLOAT); // EXP wrapper.passthrough(Type.VAR_INT); // Cooking time } - - wrapper.write(Type.STRING, fullType); - wrapper.write(Type.STRING, id); } - wrapper.cancel(); + + wrapper.set(Type.VAR_INT, 0, size - deleted); } }); } From 105e6f23a2097b7ad60f8a9b109339007ec648de Mon Sep 17 00:00:00 2001 From: Matsv Date: Sat, 29 Jun 2019 21:08:24 +0200 Subject: [PATCH 165/171] :sparkles: Rewrite particles --- .../Protocol1_12_2To1_13.java | 1 - .../data/ParticleMapping.java | 135 ++++++++++++++++++ .../packets/BlockItemPackets1_13.java | 2 +- .../packets/PlayerPacket1_13.java | 36 +++++ 4 files changed, 172 insertions(+), 2 deletions(-) create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/ParticleMapping.java diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java index 5c71e1df..169e521e 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java @@ -67,7 +67,6 @@ public class Protocol1_12_2To1_13 extends BackwardsProtocol { out(State.PLAY, 0x1F, 0x1D); // Unload Chunk out(State.PLAY, 0x20, 0x1E); // Change Game State out(State.PLAY, 0x21, 0x1F); // Keep Alive (clientbound) - out(State.PLAY, 0x24, 0x22, cancel()); // Spawn Particle TODO MODIFIED out(State.PLAY, 0x27, 0x25); // Entity out(State.PLAY, 0x28, 0x26); // Entity Relative Move out(State.PLAY, 0x29, 0x27); // Entity Look And Relative Move diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/ParticleMapping.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/ParticleMapping.java new file mode 100644 index 00000000..808a8f19 --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/data/ParticleMapping.java @@ -0,0 +1,135 @@ +/* + * Copyright (c) 2016 Matsv + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.data; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.RequiredArgsConstructor; +import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.Protocol1_12_2To1_13; +import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.packets.BlockItemPackets1_13; +import us.myles.ViaVersion.api.PacketWrapper; +import us.myles.ViaVersion.api.minecraft.item.Item; +import us.myles.ViaVersion.api.type.Type; + +public class ParticleMapping { + private static final ParticleData[] particles; + + static { + particles = new ParticleData[]{ + rewrite(16), // (0->16) minecraft:ambient_entity_effect -> mobSpellAmbient + rewrite(20), // (1->20) minecraft:angry_villager -> angryVillager + rewrite(35), // (2->35) minecraft:barrier -> barrier + rewrite(37, ParticleMapping::blockHandler), + // (3->37) minecraft:block -> blockcrack + rewrite(4), // (4->4) minecraft:bubble -> bubble + rewrite(29), // (5->29) minecraft:cloud -> cloud + rewrite(9), // (6->9) minecraft:crit -> crit + rewrite(44), // (7->44) minecraft:damage_indicator -> damageIndicator‌ + rewrite(42), // (8->42) minecraft:dragon_breath -> dragonbreath + rewrite(19), // (9->19) minecraft:dripping_lava -> dripLava + rewrite(18), // (10->18) minecraft:dripping_water -> dripWater + rewrite(30, ((protocol, wrapper) -> { + float r = wrapper.read(Type.FLOAT); + float g = wrapper.read(Type.FLOAT); + float b = wrapper.read(Type.FLOAT); + float scale = wrapper.read(Type.FLOAT); + + // TODO CONVERT DATA TO OFFSET X/Y/Z SPEED/COUNT + + return new Integer[0]; + })), // (11->30) minecraft:dust -> reddust + rewrite(13), // (12->13) minecraft:effect -> spell + rewrite(41), // (13->41) minecraft:elder_guardian -> mobappearance + rewrite(10), // (14->10) minecraft:enchanted_hit -> magicCrit‌ + rewrite(25), // (15->25) minecraft:enchant -> enchantmenttable + rewrite(43), // (16->43) minecraft:end_rod -> endRod + rewrite(15), // (17->15) minecraft:entity_effect -> mobSpell + rewrite(2), // (18->2) minecraft:explosion_emitter -> hugeexplosion + rewrite(1), // (19->1) minecraft:explosion -> largeexplode + rewrite(46, ParticleMapping::blockHandler), + // (20->46) minecraft:falling_dust -> fallingdust + rewrite(3), // (21->3) minecraft:firework -> fireworksSpark + rewrite(6), // (22->6) minecraft:fishing -> wake + rewrite(26), // (23->26) minecraft:flame -> flame + rewrite(21), // (24->21) minecraft:happy_villager -> happyVillager + rewrite(34), // (25->34) minecraft:heart -> heart + rewrite(14), // (26->14) minecraft:instant_effect -> instantSpell + rewrite(36, (protocol, wrapper) -> { + Item item = protocol.getBlockItemPackets().handleItemToClient( + wrapper.read(Type.FLAT_ITEM) + ); + + return new Integer[]{Integer.valueOf(item.getId()), Integer.valueOf(item.getData())}; + }), // (27->36) minecraft:item -> iconcrack + rewrite(33), // (28->33) minecraft:item_slime -> slime + rewrite(31), // (29->31) minecraft:item_snowball -> snowballpoof + rewrite(12), // (30->12) minecraft:large_smoke -> largesmoke + rewrite(27), // (31->27) minecraft:lava -> lava + rewrite(22), // (32->22) minecraft:mycelium -> townaura + rewrite(23), // (33->23) minecraft:note -> note + rewrite(0), // (34->0) minecraft:poof -> explode + rewrite(24), // (35->24) minecraft:portal -> portal + rewrite(39), // (36->39) minecraft:rain -> droplet + rewrite(11), // (37->11) minecraft:smoke -> smoke + rewrite(48), // (38->48) minecraft:spit -> spit + rewrite(-1), // (39->-1) minecraft:squid_ink -> squid_ink TODO NEW? + rewrite(45), // (40->45) minecraft:sweep_attack -> sweepAttack‌ + rewrite(47), // (41->47) minecraft:totem_of_undying -> totem + rewrite(7), // (42->7) minecraft:underwater -> suspended‌ + rewrite(5), // (43->5) minecraft:splash -> splash + rewrite(17), // (44->17) minecraft:witch -> witchMagic + rewrite(4), // (45->4) minecraft:bubble_pop -> bubble + rewrite(4), // (46->4) minecraft:current_down -> bubble + rewrite(4), // (47->4) minecraft:bubble_column_up -> bubble + rewrite(-1), // (48->-1) minecraft:nautilus -> nautilus TODO NEW? + rewrite(18), // (49->18) minecraft:dolphin -> dripWater + }; + } + + private static Integer[] blockHandler(Protocol1_12_2To1_13 protocol, PacketWrapper wrapper) throws Exception { + int blockType = BlockItemPackets1_13.toOldId(wrapper.read(Type.VAR_INT)); + + int type = blockType >> 4; + int meta = blockType & 15; + + return new Integer[]{type + (meta << 12)}; + } + + public static ParticleData getMapping(int id) { + return particles[id]; + } + + private static ParticleData rewrite(int replacementId) { + return new ParticleData(replacementId); + } + + private static ParticleData rewrite(int replacementId, ParticleHandler handler) { + return new ParticleData(replacementId, handler); + } + + interface ParticleHandler { + Integer[] rewrite(Protocol1_12_2To1_13 protocol, PacketWrapper wrapper) throws Exception; + } + + @Data + @AllArgsConstructor + @RequiredArgsConstructor + public static class ParticleData { + private final int historyId; + private ParticleHandler handler; + + public Integer[] rewriteData(Protocol1_12_2To1_13 protocol, PacketWrapper wrapper) throws Exception { + if (handler == null) + return new Integer[0]; + return handler.rewrite(protocol, wrapper); + } + } +} 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 65f66978..7cfd9096 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 @@ -596,7 +596,7 @@ public class BlockItemPackets1_13 extends BlockItemRewriter { } }); + //Plugin Message protocol.out(State.PLAY, 0x19, 0x18, new PacketRemapper() { @Override @@ -90,6 +93,39 @@ public class PlayerPacket1_13 extends Rewriter { } }); + // Spawn Particle + protocol.out(State.PLAY, 0x24, 0x22, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // 0 - Particle ID + map(Type.BOOLEAN); // 1 - Long Distance + map(Type.FLOAT); // 2 - X + map(Type.FLOAT); // 3 - Y + map(Type.FLOAT); // 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(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + Particle particle = new Particle(wrapper.get(Type.INT, 0)); + + ParticleMapping.ParticleData old = ParticleMapping.getMapping(particle.getId()); + + wrapper.set(Type.INT, 0, old.getHistoryId()); + + for (int i : old.rewriteData(protocol, wrapper)) + wrapper.write(Type.VAR_INT, i); + } + }); + + + } + }); + // Player List Item protocol.out(State.PLAY, 0x30, 0x2E, new PacketRemapper() { @Override From 1d9a0773c7315f7e14fcca5dc46a9337839371de Mon Sep 17 00:00:00 2001 From: KennyTV <28825609+KennyTV@users.noreply.github.com> Date: Sun, 30 Jun 2019 10:44:43 +0200 Subject: [PATCH 166/171] Set version to 3.0.0-SNAPSHOT --- all/pom.xml | 2 +- bukkit/pom.xml | 2 +- bungee/pom.xml | 2 +- core/pom.xml | 2 +- fabric/pom.xml | 2 +- pom.xml | 2 +- sponge/pom.xml | 2 +- velocity/pom.xml | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/all/pom.xml b/all/pom.xml index 60b3d8b3..db2a2d94 100644 --- a/all/pom.xml +++ b/all/pom.xml @@ -15,7 +15,7 @@ viabackwards-parent nl.matsv - 3.0.0-1.14.3 + 3.0.0-SNAPSHOT 4.0.0 diff --git a/bukkit/pom.xml b/bukkit/pom.xml index dff52654..8f98e030 100644 --- a/bukkit/pom.xml +++ b/bukkit/pom.xml @@ -15,7 +15,7 @@ viabackwards-parent nl.matsv - 3.0.0-1.14.3 + 3.0.0-SNAPSHOT 4.0.0 diff --git a/bungee/pom.xml b/bungee/pom.xml index e531a2a0..d8f73ff1 100644 --- a/bungee/pom.xml +++ b/bungee/pom.xml @@ -15,7 +15,7 @@ viabackwards-parent nl.matsv - 3.0.0-1.14.3 + 3.0.0-SNAPSHOT 4.0.0 diff --git a/core/pom.xml b/core/pom.xml index b428704c..f6a7e408 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -15,7 +15,7 @@ viabackwards-parent nl.matsv - 3.0.0-1.14.3 + 3.0.0-SNAPSHOT 4.0.0 diff --git a/fabric/pom.xml b/fabric/pom.xml index ea145472..c1086858 100644 --- a/fabric/pom.xml +++ b/fabric/pom.xml @@ -15,7 +15,7 @@ viabackwards-parent nl.matsv - 3.0.0-1.14.3 + 3.0.0-SNAPSHOT 4.0.0 diff --git a/pom.xml b/pom.xml index b98a0e31..2bdb04c3 100644 --- a/pom.xml +++ b/pom.xml @@ -16,7 +16,7 @@ nl.matsv viabackwards-parent - 3.0.0-1.14.3 + 3.0.0-SNAPSHOT pom Allow newer clients to join older server versions. diff --git a/sponge/pom.xml b/sponge/pom.xml index e2c0d36f..0ab7811a 100644 --- a/sponge/pom.xml +++ b/sponge/pom.xml @@ -15,7 +15,7 @@ viabackwards-parent nl.matsv - 3.0.0-1.14.3 + 3.0.0-SNAPSHOT 4.0.0 diff --git a/velocity/pom.xml b/velocity/pom.xml index e96ec60c..162c5196 100644 --- a/velocity/pom.xml +++ b/velocity/pom.xml @@ -15,7 +15,7 @@ viabackwards-parent nl.matsv - 3.0.0-1.14.3 + 3.0.0-SNAPSHOT 4.0.0 From 92e9eab85e4af165a4068ea001c1e421916f2c42 Mon Sep 17 00:00:00 2001 From: KennyTV <28825609+KennyTV@users.noreply.github.com> Date: Sun, 30 Jun 2019 10:45:16 +0200 Subject: [PATCH 167/171] Remap 1.14 enchants, show enchantment level in 1.13 remaps --- .../packets/BlockItemPackets1_13.java | 29 ++++- .../packets/BlockItemPackets1_14.java | 102 ++++++++++++++++-- 2 files changed, 122 insertions(+), 9 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 7cfd9096..d68e1d2e 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 @@ -781,7 +781,7 @@ public class BlockItemPackets1_13 extends BlockItemRewriter { - private static String NBT_TAG_NAME = "ViaBackwards|" + Protocol1_13_2To1_14.class.getSimpleName(); + + private static final String NBT_TAG_NAME = "ViaBackwards|" + Protocol1_13_2To1_14.class.getSimpleName(); + private final Map enchantmentMappings = new HashMap<>(); @Override protected void registerPackets(Protocol1_13_2To1_14 protocol) { @@ -736,6 +734,10 @@ public class BlockItemPackets1_14 extends BlockItemRewriter lore = new ArrayList<>(); + for (Tag enchantmentEntry : enchantments.clone()) { + String newId = (String) ((CompoundTag) enchantmentEntry).get("id").getValue(); + String enchantmentName = enchantmentMappings.get(newId); + if (enchantmentName != null) { + enchantments.remove(enchantmentEntry); + lore.add(new StringTag("", enchantmentMappings.get(newId) + " " + BlockItemPackets1_13.getRomanNumber((Short) ((CompoundTag) enchantmentEntry).get("lvl").getValue()))); + noMapped.add(enchantmentEntry); + } + } + if (!lore.isEmpty()) { + if (!storedEnchant && enchantments.size() == 0) { + CompoundTag dummyEnchantment = new CompoundTag(""); + dummyEnchantment.put(new StringTag("id", "")); + dummyEnchantment.put(new ShortTag("lvl", (short) 0)); + enchantments.add(dummyEnchantment); + + tag.put(new ByteTag(NBT_TAG_NAME + "|dummyEnchant")); + } + + tag.put(noMapped); + + CompoundTag display = tag.get("display"); + if (display == null) { + tag.put(display = new CompoundTag("display")); + } + ListTag loreTag = display.get("Lore"); + if (loreTag == null) { + display.put(loreTag = new ListTag("Lore", StringTag.class)); + } + + lore.addAll(loreTag.getValue()); + loreTag.setValue(lore); + } + } + @Override public Item handleItemToServer(Item item) { if (item == null) return null; @@ -797,10 +846,47 @@ public class BlockItemPackets1_14 extends BlockItemRewriter Date: Sun, 30 Jun 2019 11:23:42 +0200 Subject: [PATCH 168/171] Fix npe in 1.13 enchant remaps --- .../protocol1_12_2to1_13/packets/BlockItemPackets1_13.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 d68e1d2e..c7dfc68f 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 @@ -710,7 +710,7 @@ public class BlockItemPackets1_13 extends BlockItemRewriter Date: Tue, 2 Jul 2019 19:09:16 +0200 Subject: [PATCH 169/171] Refactor 1.13 enchantment rewrites --- .../packets/BlockItemPackets1_13.java | 367 +++++++----------- 1 file changed, 136 insertions(+), 231 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 c7dfc68f..b7b87e76 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 @@ -698,133 +698,12 @@ public class BlockItemPackets1_13 extends BlockItemRewriter lore = new ArrayList<>(); - boolean dummyEnchatment = true; - for (Tag enchantmentEntry : enchantments.clone()) { - if (enchantmentEntry instanceof CompoundTag) { - CompoundTag enchEntry = new CompoundTag(""); - String newId = (String) ((CompoundTag) enchantmentEntry).get("id").getValue(); - if (enchantmentMappings.containsKey(newId)) { - lore.add(new StringTag("", enchantmentMappings.get(newId))); - noMapped.add(enchantmentEntry); - } else if (!newId.isEmpty()) { - dummyEnchatment = false; - Short oldId = MappingData.oldEnchantmentsIds.inverse().get(newId); - if (oldId == null && newId.startsWith("viaversion:legacy/")) { - oldId = Short.valueOf(newId.substring(18)); - } - enchEntry.put( - new ShortTag( - "id", - oldId - ) - ); - enchEntry.put(new ShortTag("lvl", (Short) ((CompoundTag) enchantmentEntry).get("lvl").getValue())); - ench.add(enchEntry); - } - } - } - if (dummyEnchatment && enchantments.size() > 0) { - ByteTag hideFlags = tag.get("HideFlags"); - if (hideFlags == null) { - hideFlags = new ByteTag("HideFlags"); - tag.put(new ByteTag(NBT_TAG_NAME + "|noHideFlags")); - } - tag.put(new ByteTag(NBT_TAG_NAME + "|dummyEnchatment", hideFlags.getValue())); - - CompoundTag enchEntry = new CompoundTag(""); - enchEntry.put(new ShortTag("id", (short) 0)); - enchEntry.put(new ShortTag("lvl", (short) 1)); - - byte value = hideFlags.getValue(); - hideFlags.setValue(value |= 1); - tag.put(hideFlags); - - ench.add(enchEntry); - } - tag.remove("Enchantment"); - tag.put(noMapped); - tag.put(ench); - - if (!lore.isEmpty()) { - CompoundTag display = tag.get("display"); - if (display == null) { - tag.put(display = new CompoundTag("display")); - tag.put(new ByteTag(NBT_TAG_NAME + "|noDisplay")); - } - ListTag loreTag = display.get("Lore"); - if (loreTag == null) { - display.put(loreTag = new ListTag("Lore", StringTag.class)); - } - - ListTag oldLore = new ListTag(NBT_TAG_NAME + "|OldLore", StringTag.class); - Iterator iterator = lore.iterator(); - while (iterator.hasNext()) { - oldLore.add(iterator.next().clone()); - } - display.put(oldLore); - - lore.addAll(loreTag.getValue()); - loreTag.setValue(lore); - } + rewriteEnchantmentsToClient(tag, false); } if (tag.get("StoredEnchantments") instanceof ListTag) { - ListTag storedEnch = tag.get("StoredEnchantments"); - ListTag noMapped = new ListTag(NBT_TAG_NAME + "|StoredEnchantments", CompoundTag.class); - ListTag newStoredEnch = new ListTag("StoredEnchantments", CompoundTag.class); - List lore = new ArrayList<>(); - for (Tag enchantmentEntry : storedEnch) { - if (enchantmentEntry instanceof CompoundTag) { - CompoundTag enchEntry = new CompoundTag(""); - String newId = (String) ((CompoundTag) enchantmentEntry).get("id").getValue(); - if (enchantmentMappings.containsKey(newId)) { - lore.add(new StringTag("", enchantmentMappings.get(newId) + " " + getRomanNumber((Short) ((CompoundTag) enchantmentEntry).get("lvl").getValue()))); - noMapped.add(enchantmentEntry); - } else { - Short oldId = MappingData.oldEnchantmentsIds.inverse().get(newId); - if (oldId == null && newId.startsWith("viaversion:legacy/")) { - oldId = Short.valueOf(newId.substring(18)); - } - enchEntry.put( - new ShortTag( - "id", - oldId - ) - ); - enchEntry.put(new ShortTag("lvl", (Short) ((CompoundTag) enchantmentEntry).get("lvl").getValue())); - newStoredEnch.add(enchEntry); - } - } - } - tag.remove("StoredEnchantments"); - tag.put(noMapped); - tag.put(newStoredEnch); - - if (!lore.isEmpty()) { - CompoundTag display = tag.get("display"); - if (display == null) { - tag.put(display = new CompoundTag("display")); - tag.put(new ByteTag(NBT_TAG_NAME + "|noDisplay")); - } - ListTag loreTag = display.get("Lore"); - if (loreTag == null) { - display.put(loreTag = new ListTag("Lore", StringTag.class)); - } - - ListTag oldLore = new ListTag(NBT_TAG_NAME + "|OldLore", StringTag.class); - Iterator iterator = lore.iterator(); - while (iterator.hasNext()) { - oldLore.add(iterator.next().clone()); - } - display.put(oldLore); - - lore.addAll(loreTag.getValue()); - loreTag.setValue(lore); - } + rewriteEnchantmentsToClient(tag, true); } + if (tag.get(NBT_TAG_NAME + "|CanPlaceOn") instanceof ListTag) { tag.put(ConverterRegistry.convertToTag( "CanPlaceOn", @@ -877,6 +756,74 @@ public class BlockItemPackets1_13 extends BlockItemRewriter lore = new ArrayList<>(); + for (Tag enchantmentEntry : enchantments.clone()) { + CompoundTag enchEntry = new CompoundTag(""); + String newId = (String) ((CompoundTag) enchantmentEntry).get("id").getValue(); + if (enchantmentMappings.containsKey(newId)) { + lore.add(new StringTag("", enchantmentMappings.get(newId) + " " + + getRomanNumber((Short) ((CompoundTag) enchantmentEntry).get("lvl").getValue()))); + noMapped.add(enchantmentEntry); + } else if (!newId.isEmpty()) { + Short oldId = MappingData.oldEnchantmentsIds.inverse().get(newId); + if (oldId == null && newId.startsWith("viaversion:legacy/")) { + oldId = Short.valueOf(newId.substring(18)); + } + enchEntry.put(new ShortTag("id", oldId)); + enchEntry.put(new ShortTag("lvl", (Short) ((CompoundTag) enchantmentEntry).get("lvl").getValue())); + newEnchantments.add(enchEntry); + } + } + + if (!lore.isEmpty()) { + if (!storedEnch && newEnchantments.size() == 0) { + IntTag hideFlags = tag.get("HideFlags"); + if (hideFlags == null) { + hideFlags = new IntTag("HideFlags"); + } else { + tag.put(new IntTag(NBT_TAG_NAME + "|OldHideFlags", hideFlags.getValue())); + } + + CompoundTag enchEntry = new CompoundTag(""); + enchEntry.put(new ShortTag("id", (short) 0)); + enchEntry.put(new ShortTag("lvl", (short) 1)); + + hideFlags.setValue(hideFlags.getValue() | 1); + tag.put(hideFlags); + + newEnchantments.add(enchEntry); + } + + tag.put(noMapped); + + CompoundTag display = tag.get("display"); + if (display == null) { + tag.put(display = new CompoundTag("display")); + } + ListTag loreTag = display.get("Lore"); + if (loreTag == null) { + display.put(loreTag = new ListTag("Lore", StringTag.class)); + } + + ListTag oldLore = new ListTag(NBT_TAG_NAME + "|OldLore", StringTag.class); + for (Tag value : lore) { + oldLore.add(value.clone()); + } + display.put(oldLore); + + lore.addAll(loreTag.getValue()); + loreTag.setValue(lore); + } + + tag.remove("Enchantments"); + tag.put(newEnchantments); + } + @Override protected Item handleItemToServer(Item item) { if (item == null) return null; @@ -949,116 +896,12 @@ public class BlockItemPackets1_13 extends BlockItemRewriter iterator = noMapped.iterator(); - while (iterator.hasNext()) { - enchantments.add(iterator.next()); - } - tag.remove(NBT_TAG_NAME + "|Enchantments"); - } - tag.remove("ench"); - tag.put(enchantments); + rewriteEnchantmentsToServer(tag, false); } if (tag.get("StoredEnchantments") instanceof ListTag) { - ListTag storedEnch = tag.get("StoredEnchantments"); - ListTag newStoredEnch = new ListTag("StoredEnchantments", CompoundTag.class); - for (Tag enchEntry : storedEnch) { - if (enchEntry instanceof CompoundTag) { - CompoundTag enchantmentEntry = new CompoundTag(""); - short oldId = ((Number) ((CompoundTag) enchEntry).get("id").getValue()).shortValue(); - String newId = MappingData.oldEnchantmentsIds.get(oldId); - if (newId == null) { - newId = "viaversion:legacy/" + oldId; - } - enchantmentEntry.put(new StringTag("id", - newId - )); - enchantmentEntry.put(new ShortTag("lvl", ((Number) ((CompoundTag) enchEntry).get("lvl").getValue()).shortValue())); - newStoredEnch.add(enchantmentEntry); - } - } - if (tag.get(NBT_TAG_NAME + "|Enchantments") instanceof ListTag) { - ListTag noMapped = tag.get(NBT_TAG_NAME + "|StoredEnchantments"); - Iterator iterator = noMapped.iterator(); - while (iterator.hasNext()) { - newStoredEnch.add(iterator.next()); - } - } - tag.remove("StoredEnchantments"); - tag.put(newStoredEnch); - } - if (tag.get("CanPlaceOn") instanceof ListTag) { - ListTag old = tag.get("CanPlaceOn"); - ListTag newCanPlaceOn = new ListTag("CanPlaceOn", StringTag.class); - tag.put(ConverterRegistry.convertToTag(NBT_TAG_NAME + "|CanPlaceOn", ConverterRegistry.convertToValue(old))); // There will be data losing - for (Tag oldTag : old) { - Object value = oldTag.getValue(); - String[] newValues = BlockIdData.blockIdMapping.get(value instanceof String - ? ((String) value).replace("minecraft:", "") - : null); - if (newValues != null) { - for (String newValue : newValues) { - newCanPlaceOn.add(new StringTag("", newValue)); - } - } else { - newCanPlaceOn.add(oldTag); - } - } - tag.put(newCanPlaceOn); - } - if (tag.get("CanDestroy") instanceof ListTag) { - ListTag old = tag.get("CanDestroy"); - ListTag newCanDestroy = new ListTag("CanDestroy", StringTag.class); - tag.put(ConverterRegistry.convertToTag(NBT_TAG_NAME + "|CanDestroy", ConverterRegistry.convertToValue(old))); // There will be data losing - for (Tag oldTag : old) { - Object value = oldTag.getValue(); - String[] newValues = BlockIdData.blockIdMapping.get(value instanceof String - ? ((String) value).replace("minecraft:", "") - : null); - if (newValues != null) { - for (String newValue : newValues) { - newCanDestroy.add(new StringTag("", newValue)); - } - } else { - newCanDestroy.add(oldTag); - } - } - tag.put(newCanDestroy); + rewriteEnchantmentsToServer(tag, true); } + // Handle SpawnEggs if (item.getId() == 383) { if (tag.get("EntityTag") instanceof CompoundTag) { @@ -1110,6 +953,68 @@ public class BlockItemPackets1_13 extends BlockItemRewriter Date: Tue, 2 Jul 2019 19:48:42 +0200 Subject: [PATCH 170/171] Fix 1.14 dummy enchant being lost 1.13 conversion --- .../packets/BlockItemPackets1_13.java | 35 +++++++++++-------- 1 file changed, 21 insertions(+), 14 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 b7b87e76..bef1d754 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 @@ -762,6 +762,7 @@ public class BlockItemPackets1_13 extends BlockItemRewriter lore = new ArrayList<>(); + boolean hasValidEnchants = false; for (Tag enchantmentEntry : enchantments.clone()) { CompoundTag enchEntry = new CompoundTag(""); String newId = (String) ((CompoundTag) enchantmentEntry).get("id").getValue(); @@ -774,31 +775,37 @@ public class BlockItemPackets1_13 extends BlockItemRewriter Date: Wed, 3 Jul 2019 16:28:19 +0200 Subject: [PATCH 171/171] :wrench: Fix commandblock rewrite --- .../protocol1_12_2to1_13/packets/PlayerPacket1_13.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java index 65f344a0..5b85dc73 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java @@ -366,18 +366,27 @@ public class PlayerPacket1_13 extends Rewriter { } } else if (channel.equals("MC|AutoCmd")) { wrapper.setId(0x22); + Integer x = wrapper.read(Type.INT); Integer y = wrapper.read(Type.INT); Integer z = wrapper.read(Type.INT); + wrapper.write(Type.POSITION, new Position(x.longValue(), y.longValue(), z.longValue())); + wrapper.passthrough(Type.STRING); //Command + byte flags = 0; if (wrapper.read(Type.BOOLEAN)) flags |= 0x01; //Track Output + String mode = wrapper.read(Type.STRING); + int modeId = mode.equals("SEQUENCE") ? 0 : mode.equals("AUTO") ? 1 : 2; wrapper.write(Type.VAR_INT, modeId); + if (wrapper.read(Type.BOOLEAN)) flags |= 0x02; //Is conditional if (wrapper.read(Type.BOOLEAN)) flags |= 0x04; //Automatic + + wrapper.write(Type.BYTE, flags); } else if (channel.equals("MC|Struct")) { wrapper.setId(0x25); Integer x = wrapper.read(Type.INT);