From d484545bef8b893d47113d07525f109e468a742a Mon Sep 17 00:00:00 2001 From: Matsv Date: Mon, 5 Feb 2018 20:51:34 +0100 Subject: [PATCH 01/86] 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 7296017ab8e55c585f66482accc426b7c444460c Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Tue, 20 Nov 2018 15:32:49 +0100 Subject: [PATCH 02/86] 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 03/86] 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 04/86] 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 05/86] 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 06/86] 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 07/86] 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 08/86] 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 09/86] 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 10/86] 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 11/86] 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 12/86] 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 13/86] 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 14/86] 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 15/86] 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 16/86] 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 17/86] 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 18/86] 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 19/86] 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 20/86] 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 21/86] 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 22/86] 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 23/86] 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 24/86] 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 25/86] 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 26/86] 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 27/86] 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 28/86] 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 29/86] 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 30/86] 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 31/86] 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 32/86] 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 33/86] 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 34/86] 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 35/86] 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 36/86] 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 37/86] 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 38/86] 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 39/86] 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 40/86] 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 41/86] 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 42/86] 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 43/86] 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 44/86] 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 45/86] 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 46/86] 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 47/86] 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 48/86] 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 49/86] 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 50/86] 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 51/86] 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 52/86] 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 53/86] 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 54/86] 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 55/86] 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 56/86] 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 57/86] =?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 58/86] =?UTF-8?q?=E2=99=BB=20Rewrite=20Entity=201.13.1=20t?= =?UTF-8?q?he=20ViaBackwards=20way=20&=20remove=20incorrect=20metadata=20&?= =?UTF-8?q?=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 59/86] :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 60/86] :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 61/86] 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 62/86] 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 63/86] 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 64/86] 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 65/86] 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 66/86] 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 67/86] 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 68/86] 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 69/86] 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 70/86] 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 71/86] 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 72/86] 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 73/86] :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 0497ce198d1edd3ed42b3e312f235bcf4c3108e0 Mon Sep 17 00:00:00 2001 From: Matsv Date: Sat, 16 Mar 2019 15:11:23 +0100 Subject: [PATCH 74/86] :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 75/86] :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 76/86] :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 77/86] :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 1f3ed39eb67f1b0644bf0d8bf1c480939fd16830 Mon Sep 17 00:00:00 2001 From: creeper123123321 Date: Sat, 30 Mar 2019 14:39:45 -0300 Subject: [PATCH 78/86] 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 79/86] 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 80/86] 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 81/86] 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 82/86] 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 83/86] 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 84/86] 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 85/86] 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 86/86] 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