From 6bc7f911c3e160328af27b68f38405e45de84fe7 Mon Sep 17 00:00:00 2001 From: _tomcraft <936063+tomcraft@users.noreply.github.com> Date: Sun, 14 Nov 2021 09:37:03 +0100 Subject: [PATCH] Fix bed rewriting and fix inconsistencies in item rewrite (#2729) --- .../protocol1_12to1_11_1/BedRewriter.java | 37 ------------------- .../MetadataRewriter1_12To1_11_1.java | 6 +-- .../packets/InventoryPackets.java | 26 +++++++++---- 3 files changed, 21 insertions(+), 48 deletions(-) delete mode 100644 common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/BedRewriter.java diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/BedRewriter.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/BedRewriter.java deleted file mode 100644 index 0689b05b4..000000000 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/BedRewriter.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion - * Copyright (C) 2016-2021 ViaVersion and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package com.viaversion.viaversion.protocols.protocol1_12to1_11_1; - -import com.viaversion.viaversion.api.minecraft.item.Item; - -public class BedRewriter { - - public static void toClientItem(Item item) { - if (item == null) return; - if (item.identifier() == 355 && item.data() == 0) { - item.setData((short) 14); - } - } - - public static void toServerItem(Item item) { - if (item == null) return; - if (item.identifier() == 355 && item.data() == 14) { - item.setData((short) 0); - } - } -} diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/metadata/MetadataRewriter1_12To1_11_1.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/metadata/MetadataRewriter1_12To1_11_1.java index 470f00318..ed3def017 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/metadata/MetadataRewriter1_12To1_11_1.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/metadata/MetadataRewriter1_12To1_11_1.java @@ -20,10 +20,8 @@ package com.viaversion.viaversion.protocols.protocol1_12to1_11_1.metadata; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.entities.Entity1_12Types; import com.viaversion.viaversion.api.minecraft.entities.EntityType; -import com.viaversion.viaversion.api.minecraft.item.DataItem; import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.minecraft.metadata.Metadata; -import com.viaversion.viaversion.protocols.protocol1_12to1_11_1.BedRewriter; import com.viaversion.viaversion.protocols.protocol1_12to1_11_1.Protocol1_12To1_11_1; import com.viaversion.viaversion.rewriter.EntityRewriter; @@ -37,9 +35,9 @@ public class MetadataRewriter1_12To1_11_1 extends EntityRewriter metadatas, UserConnection connection) { - if (metadata.getValue() instanceof DataItem) { + if (metadata.getValue() instanceof Item) { // Apply rewrite - BedRewriter.toClientItem((Item) metadata.getValue()); + metadata.setValue(protocol.getItemRewriter().handleItemToClient((Item) metadata.getValue())); } if (type == null) return; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/packets/InventoryPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/packets/InventoryPackets.java index 1d7510d41..f527050f8 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/packets/InventoryPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/packets/InventoryPackets.java @@ -23,12 +23,12 @@ import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; import com.viaversion.viaversion.api.type.Type; -import com.viaversion.viaversion.protocols.protocol1_12to1_11_1.BedRewriter; import com.viaversion.viaversion.protocols.protocol1_12to1_11_1.Protocol1_12To1_11_1; import com.viaversion.viaversion.protocols.protocol1_12to1_11_1.ServerboundPackets1_12; import com.viaversion.viaversion.protocols.protocol1_12to1_11_1.providers.InventoryQuickMoveProvider; import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ClientboundPackets1_9_3; import com.viaversion.viaversion.rewriter.ItemRewriter; +import org.checkerframework.checker.nullness.qual.Nullable; public class InventoryPackets extends ItemRewriter { @@ -56,12 +56,12 @@ public class InventoryPackets extends ItemRewriter { int size = wrapper.passthrough(Type.UNSIGNED_BYTE); for (int i = 0; i < size; i++) { - BedRewriter.toClientItem(wrapper.passthrough(Type.ITEM)); // Input Item - BedRewriter.toClientItem(wrapper.passthrough(Type.ITEM)); // Output Item + handleItemToClient(wrapper.passthrough(Type.ITEM)); // Input Item + handleItemToClient(wrapper.passthrough(Type.ITEM)); // Output Item boolean secondItem = wrapper.passthrough(Type.BOOLEAN); // Has second item if (secondItem) { - BedRewriter.toClientItem(wrapper.passthrough(Type.ITEM)); // Second Item + handleItemToClient(wrapper.passthrough(Type.ITEM)); // Second Item } wrapper.passthrough(Type.BOOLEAN); // Trade disabled @@ -90,7 +90,7 @@ public class InventoryPackets extends ItemRewriter { public void handle(PacketWrapper wrapper) throws Exception { Item item = wrapper.get(Type.ITEM, 0); if (!Via.getConfig().is1_12QuickMoveActionFix()) { - BedRewriter.toServerItem(item); + handleItemToServer(item); return; } byte button = wrapper.get(Type.BYTE, 0); @@ -107,7 +107,7 @@ public class InventoryPackets extends ItemRewriter { } // otherwise just pass through so the server sends the PacketPlayOutTransaction packet. } else { - BedRewriter.toServerItem(item); + handleItemToServer(item); } } }); @@ -122,7 +122,10 @@ public class InventoryPackets extends ItemRewriter { @Override public Item handleItemToServer(Item item) { if (item == null) return null; - BedRewriter.toServerItem(item); + + if (item.identifier() == 355) { // Bed rewrite + item.setData((short) 0); + } boolean newItem = item.identifier() >= 235 && item.identifier() <= 252; newItem |= item.identifier() == 453; @@ -132,4 +135,13 @@ public class InventoryPackets extends ItemRewriter { } return item; } + + @Override + public @Nullable Item handleItemToClient(@Nullable Item item) { + if (item == null) return null; + if (item.identifier() == 355) { // Bed rewrite + item.setData((short) 14); + } + return item; + } }