From 0b17b81b63ba9bc340790debcf78a7e37d9f0cf0 Mon Sep 17 00:00:00 2001 From: Koppe Date: Mon, 10 Aug 2020 22:17:31 +0200 Subject: [PATCH 1/2] fixed 1.11 -> 1.10.2 potion data remapping --- .../Protocol1_11To1_10.java | 29 +++++++++ .../data/PotionColorMapping.java | 64 +++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 common/src/main/java/us/myles/ViaVersion/protocols/protocol1_11to1_10/data/PotionColorMapping.java diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_11to1_10/Protocol1_11To1_10.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_11to1_10/Protocol1_11To1_10.java index 40b69b212..ae927ffe8 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_11to1_10/Protocol1_11To1_10.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_11to1_10/Protocol1_11To1_10.java @@ -3,6 +3,7 @@ package us.myles.ViaVersion.protocols.protocol1_11to1_10; import com.github.steveice10.opennbt.tag.builtin.CompoundTag; import com.github.steveice10.opennbt.tag.builtin.StringTag; import us.myles.ViaVersion.api.PacketWrapper; +import us.myles.ViaVersion.api.Pair; import us.myles.ViaVersion.api.Via; import us.myles.ViaVersion.api.data.UserConnection; import us.myles.ViaVersion.api.entities.Entity1_11Types; @@ -15,6 +16,7 @@ import us.myles.ViaVersion.api.remapper.ValueTransformer; import us.myles.ViaVersion.api.rewriters.SoundRewriter; import us.myles.ViaVersion.api.type.Type; import us.myles.ViaVersion.api.type.types.version.Types1_9; +import us.myles.ViaVersion.protocols.protocol1_11to1_10.data.PotionColorMapping; import us.myles.ViaVersion.protocols.protocol1_11to1_10.metadata.MetadataRewriter1_11To1_10; import us.myles.ViaVersion.protocols.protocol1_11to1_10.packets.InventoryPackets; import us.myles.ViaVersion.protocols.protocol1_11to1_10.storage.EntityTracker1_11; @@ -260,6 +262,33 @@ public class Protocol1_11To1_10 extends Protocol { + final int effectID = packetWrapper.get(Type.INT, 0); + if (effectID == 2002) { + int data = packetWrapper.get(Type.INT, 1); + final Pair newData = PotionColorMapping.getNewData(data); + if (newData.getKey() == -1) { + Via.getPlatform().getLogger().warning("Received unknown 1.11 -> 1.10.2 potion data (" + data + ")"); + data = 0; + } else { + data = newData.getKey(); + } + if (newData.getValue()) { + packetWrapper.set(Type.INT, 0, 2007); + } + packetWrapper.set(Type.INT, 1, data); + } + }); + } + }); + /* INCOMING PACKETS */ diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_11to1_10/data/PotionColorMapping.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_11to1_10/data/PotionColorMapping.java new file mode 100644 index 000000000..4dafb1c23 --- /dev/null +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_11to1_10/data/PotionColorMapping.java @@ -0,0 +1,64 @@ +package us.myles.ViaVersion.protocols.protocol1_11to1_10.data; + +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; +import us.myles.ViaVersion.api.Pair; + +public class PotionColorMapping { + + // to mapping + private static final Int2ObjectMap> POTIONS = new Int2ObjectOpenHashMap<>(17, 1.0F); + + static { + addRewrite(0, 3694022, false); + addRewrite(1, 3694022, false); + addRewrite(2, 3694022, false); + addRewrite(3, 3694022, false); + addRewrite(4, 3694022, false); + addRewrite(5, 2039713, false); + addRewrite(6, 2039713, false); + addRewrite(7, 8356754, false); + addRewrite(8, 8356754, false); + addRewrite(9, 2293580, false); + addRewrite(10, 2293580, false); + addRewrite(11, 2293580, false); + addRewrite(12, 14981690, false); + addRewrite(13, 14981690, false); + addRewrite(14, 8171462, false); + addRewrite(15, 8171462, false); + addRewrite(16, 8171462, false); + addRewrite(17, 5926017, false); + addRewrite(18, 5926017, false); + addRewrite(19, 3035801, false); + addRewrite(20, 3035801, false); + addRewrite(21, 16262179, true); + addRewrite(22, 16262179, true); + addRewrite(23, 4393481, true); + addRewrite(24, 4393481, true); + addRewrite(25, 5149489, false); + addRewrite(26, 5149489, false); + addRewrite(27, 5149489, false); + addRewrite(28, 13458603, false); + addRewrite(29, 13458603, false); + addRewrite(30, 13458603, false); + addRewrite(31, 9643043, false); + addRewrite(32, 9643043, false); + addRewrite(33, 9643043, false); + addRewrite(34, 4738376, false); + addRewrite(35, 4738376, false); + addRewrite(36, 3381504, false); + } + + public static Pair getNewData(final int oldData) { + return POTIONS.getOrDefault(oldData, new Pair<>(-1, false)); + } + + public static boolean contains(final int oldData) { + return POTIONS.containsKey(oldData); + } + + private static void addRewrite(final int oldData, final int newData, final boolean isInstant) { + POTIONS.put(oldData, new Pair<>(newData, isInstant)); + } + +} From 93c84b1912407ea2014676d1609c92b401651b69 Mon Sep 17 00:00:00 2001 From: Koppe Date: Mon, 10 Aug 2020 22:28:40 +0200 Subject: [PATCH 2/2] minor code improvements --- .../protocol1_11to1_10/Protocol1_11To1_10.java | 10 ++++++---- .../protocol1_11to1_10/data/PotionColorMapping.java | 12 ++++-------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_11to1_10/Protocol1_11To1_10.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_11to1_10/Protocol1_11To1_10.java index ae927ffe8..7aef4ebe4 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_11to1_10/Protocol1_11To1_10.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_11to1_10/Protocol1_11To1_10.java @@ -270,17 +270,19 @@ public class Protocol1_11To1_10 extends Protocol { - final int effectID = packetWrapper.get(Type.INT, 0); + int effectID = packetWrapper.get(Type.INT, 0); if (effectID == 2002) { int data = packetWrapper.get(Type.INT, 1); - final Pair newData = PotionColorMapping.getNewData(data); - if (newData.getKey() == -1) { + boolean isInstant = false; + Pair newData = PotionColorMapping.getNewData(data); + if (newData == null) { Via.getPlatform().getLogger().warning("Received unknown 1.11 -> 1.10.2 potion data (" + data + ")"); data = 0; } else { data = newData.getKey(); + isInstant = newData.getValue(); } - if (newData.getValue()) { + if (isInstant) { packetWrapper.set(Type.INT, 0, 2007); } packetWrapper.set(Type.INT, 1, data); diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_11to1_10/data/PotionColorMapping.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_11to1_10/data/PotionColorMapping.java index 4dafb1c23..70b131e85 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_11to1_10/data/PotionColorMapping.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_11to1_10/data/PotionColorMapping.java @@ -7,7 +7,7 @@ import us.myles.ViaVersion.api.Pair; public class PotionColorMapping { // to mapping - private static final Int2ObjectMap> POTIONS = new Int2ObjectOpenHashMap<>(17, 1.0F); + private static final Int2ObjectMap> POTIONS = new Int2ObjectOpenHashMap<>(37, 1.0F); static { addRewrite(0, 3694022, false); @@ -49,15 +49,11 @@ public class PotionColorMapping { addRewrite(36, 3381504, false); } - public static Pair getNewData(final int oldData) { - return POTIONS.getOrDefault(oldData, new Pair<>(-1, false)); + public static Pair getNewData(int oldData) { + return POTIONS.get(oldData); } - public static boolean contains(final int oldData) { - return POTIONS.containsKey(oldData); - } - - private static void addRewrite(final int oldData, final int newData, final boolean isInstant) { + private static void addRewrite(int oldData, int newData, boolean isInstant) { POTIONS.put(oldData, new Pair<>(newData, isInstant)); }