From ab77eb98c031123d5729c622e8325e29bdd02d8b Mon Sep 17 00:00:00 2001 From: Myles Date: Sun, 23 Sep 2018 18:54:24 +0100 Subject: [PATCH 01/10] Prepare for 1.5.1 release --- bukkit/pom.xml | 2 +- bungee/pom.xml | 2 +- common/pom.xml | 2 +- jar/pom.xml | 2 +- pom.xml | 2 +- sponge-legacy/pom.xml | 2 +- sponge/pom.xml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/bukkit/pom.xml b/bukkit/pom.xml index 2020e0a56..d5d93d0fa 100644 --- a/bukkit/pom.xml +++ b/bukkit/pom.xml @@ -5,7 +5,7 @@ viaversion-parent us.myles - 1.5.1-SNAPSHOT + 1.5.1 4.0.0 diff --git a/bungee/pom.xml b/bungee/pom.xml index eb0a46294..51eef926d 100644 --- a/bungee/pom.xml +++ b/bungee/pom.xml @@ -5,7 +5,7 @@ viaversion-parent us.myles - 1.5.1-SNAPSHOT + 1.5.1 4.0.0 diff --git a/common/pom.xml b/common/pom.xml index 6ba2588b4..d316e6464 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -5,7 +5,7 @@ viaversion-parent us.myles - 1.5.1-SNAPSHOT + 1.5.1 4.0.0 diff --git a/jar/pom.xml b/jar/pom.xml index df047c4c9..739975f48 100644 --- a/jar/pom.xml +++ b/jar/pom.xml @@ -5,7 +5,7 @@ viaversion-parent us.myles - 1.5.1-SNAPSHOT + 1.5.1 4.0.0 viaversion-jar diff --git a/pom.xml b/pom.xml index 5bd535cb9..9f245e862 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ us.myles viaversion-parent - 1.5.1-SNAPSHOT + 1.5.1 pom viaversion-parent diff --git a/sponge-legacy/pom.xml b/sponge-legacy/pom.xml index d80a5c9d1..abfbefce1 100644 --- a/sponge-legacy/pom.xml +++ b/sponge-legacy/pom.xml @@ -5,7 +5,7 @@ viaversion-parent us.myles - 1.5.1-SNAPSHOT + 1.5.1 4.0.0 diff --git a/sponge/pom.xml b/sponge/pom.xml index f7876c559..99fe2ba19 100644 --- a/sponge/pom.xml +++ b/sponge/pom.xml @@ -5,7 +5,7 @@ viaversion-parent us.myles - 1.5.1-SNAPSHOT + 1.5.1 4.0.0 From 9f6766fb82dba8d3f3e995bb114339e6bb619fab Mon Sep 17 00:00:00 2001 From: Myles Date: Sun, 23 Sep 2018 19:28:07 +0100 Subject: [PATCH 02/10] Back to 1.5.2-SNAPSHOT --- README.md | 2 +- bukkit/pom.xml | 2 +- bungee/pom.xml | 2 +- common/pom.xml | 2 +- jar/pom.xml | 2 +- pom.xml | 2 +- sponge-legacy/pom.xml | 2 +- sponge/pom.xml | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index a47dcfe0d..b9740d00c 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ViaVersion 1.5.0 - Spigot, Sponge, BungeeCord +# ViaVersion 1.5.1 - Spigot, Sponge, BungeeCord [![Build Status](https://travis-ci.org/MylesIsCool/ViaVersion.svg?branch=master)](https://travis-ci.org/MylesIsCool/ViaVersion) [![Discord](https://img.shields.io/badge/chat-on%20discord-blue.svg)](https://viaversion.com/discord) diff --git a/bukkit/pom.xml b/bukkit/pom.xml index d5d93d0fa..ee7f4a003 100644 --- a/bukkit/pom.xml +++ b/bukkit/pom.xml @@ -5,7 +5,7 @@ viaversion-parent us.myles - 1.5.1 + 1.5.2-SNAPSHOT 4.0.0 diff --git a/bungee/pom.xml b/bungee/pom.xml index 51eef926d..3bee22a48 100644 --- a/bungee/pom.xml +++ b/bungee/pom.xml @@ -5,7 +5,7 @@ viaversion-parent us.myles - 1.5.1 + 1.5.2-SNAPSHOT 4.0.0 diff --git a/common/pom.xml b/common/pom.xml index d316e6464..9ba94ab4c 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -5,7 +5,7 @@ viaversion-parent us.myles - 1.5.1 + 1.5.2-SNAPSHOT 4.0.0 diff --git a/jar/pom.xml b/jar/pom.xml index 739975f48..60a067957 100644 --- a/jar/pom.xml +++ b/jar/pom.xml @@ -5,7 +5,7 @@ viaversion-parent us.myles - 1.5.1 + 1.5.2-SNAPSHOT 4.0.0 viaversion-jar diff --git a/pom.xml b/pom.xml index 9f245e862..7dbfb6728 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ us.myles viaversion-parent - 1.5.1 + 1.5.2-SNAPSHOT pom viaversion-parent diff --git a/sponge-legacy/pom.xml b/sponge-legacy/pom.xml index abfbefce1..8cdcf732a 100644 --- a/sponge-legacy/pom.xml +++ b/sponge-legacy/pom.xml @@ -5,7 +5,7 @@ viaversion-parent us.myles - 1.5.1 + 1.5.2-SNAPSHOT 4.0.0 diff --git a/sponge/pom.xml b/sponge/pom.xml index 99fe2ba19..03ddef72e 100644 --- a/sponge/pom.xml +++ b/sponge/pom.xml @@ -5,7 +5,7 @@ viaversion-parent us.myles - 1.5.1 + 1.5.2-SNAPSHOT 4.0.0 From eb5c10d3750fd80f06e8227e25a3f280a4596bf7 Mon Sep 17 00:00:00 2001 From: creeper123123321 Date: Mon, 24 Sep 2018 03:42:08 -0300 Subject: [PATCH 03/10] Fix PacketWrapper#constructPacket --- common/src/main/java/us/myles/ViaVersion/api/PacketWrapper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/src/main/java/us/myles/ViaVersion/api/PacketWrapper.java b/common/src/main/java/us/myles/ViaVersion/api/PacketWrapper.java index 2268a9e15..f5fc26223 100644 --- a/common/src/main/java/us/myles/ViaVersion/api/PacketWrapper.java +++ b/common/src/main/java/us/myles/ViaVersion/api/PacketWrapper.java @@ -330,7 +330,7 @@ public class PacketWrapper { resetReader(); // Apply other protocols - apply(Direction.OUTGOING, user().get(ProtocolInfo.class).getState(), index, protocols); + apply(direction, user().get(ProtocolInfo.class).getState(), index, protocols); // Send ByteBuf output = inputBuffer == null ? user().getChannel().alloc().buffer() : inputBuffer.alloc().buffer(); writeToBuffer(output); From 5372d4b8e779096e46d79ebdba2dcfea2370afd5 Mon Sep 17 00:00:00 2001 From: Myles Date: Mon, 24 Sep 2018 11:33:20 +0100 Subject: [PATCH 04/10] 1.5.2 release --- bukkit/pom.xml | 2 +- bungee/pom.xml | 2 +- common/pom.xml | 2 +- jar/pom.xml | 2 +- pom.xml | 2 +- sponge-legacy/pom.xml | 2 +- sponge/pom.xml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/bukkit/pom.xml b/bukkit/pom.xml index ee7f4a003..0beaa6eea 100644 --- a/bukkit/pom.xml +++ b/bukkit/pom.xml @@ -5,7 +5,7 @@ viaversion-parent us.myles - 1.5.2-SNAPSHOT + 1.5.2 4.0.0 diff --git a/bungee/pom.xml b/bungee/pom.xml index 3bee22a48..8f4a9b2d3 100644 --- a/bungee/pom.xml +++ b/bungee/pom.xml @@ -5,7 +5,7 @@ viaversion-parent us.myles - 1.5.2-SNAPSHOT + 1.5.2 4.0.0 diff --git a/common/pom.xml b/common/pom.xml index 9ba94ab4c..1219f270e 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -5,7 +5,7 @@ viaversion-parent us.myles - 1.5.2-SNAPSHOT + 1.5.2 4.0.0 diff --git a/jar/pom.xml b/jar/pom.xml index 60a067957..79e020f2b 100644 --- a/jar/pom.xml +++ b/jar/pom.xml @@ -5,7 +5,7 @@ viaversion-parent us.myles - 1.5.2-SNAPSHOT + 1.5.2 4.0.0 viaversion-jar diff --git a/pom.xml b/pom.xml index 7dbfb6728..2c4df909f 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ us.myles viaversion-parent - 1.5.2-SNAPSHOT + 1.5.2 pom viaversion-parent diff --git a/sponge-legacy/pom.xml b/sponge-legacy/pom.xml index 8cdcf732a..e13538171 100644 --- a/sponge-legacy/pom.xml +++ b/sponge-legacy/pom.xml @@ -5,7 +5,7 @@ viaversion-parent us.myles - 1.5.2-SNAPSHOT + 1.5.2 4.0.0 diff --git a/sponge/pom.xml b/sponge/pom.xml index 03ddef72e..c5d47e82a 100644 --- a/sponge/pom.xml +++ b/sponge/pom.xml @@ -5,7 +5,7 @@ viaversion-parent us.myles - 1.5.2-SNAPSHOT + 1.5.2 4.0.0 From 77472cb9f404dae7c525da34a53bbdd75c5d972d Mon Sep 17 00:00:00 2001 From: Myles Date: Mon, 24 Sep 2018 11:39:14 +0100 Subject: [PATCH 05/10] Back to snapshot --- README.md | 2 +- bukkit/pom.xml | 2 +- bungee/pom.xml | 2 +- common/pom.xml | 2 +- jar/pom.xml | 2 +- pom.xml | 2 +- sponge-legacy/pom.xml | 2 +- sponge/pom.xml | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index b9740d00c..11cd7a931 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ViaVersion 1.5.1 - Spigot, Sponge, BungeeCord +# ViaVersion 1.5.2 - Spigot, Sponge, BungeeCord [![Build Status](https://travis-ci.org/MylesIsCool/ViaVersion.svg?branch=master)](https://travis-ci.org/MylesIsCool/ViaVersion) [![Discord](https://img.shields.io/badge/chat-on%20discord-blue.svg)](https://viaversion.com/discord) diff --git a/bukkit/pom.xml b/bukkit/pom.xml index 0beaa6eea..69802552a 100644 --- a/bukkit/pom.xml +++ b/bukkit/pom.xml @@ -5,7 +5,7 @@ viaversion-parent us.myles - 1.5.2 + 1.5.3-SNAPSHOT 4.0.0 diff --git a/bungee/pom.xml b/bungee/pom.xml index 8f4a9b2d3..1ef5da6d3 100644 --- a/bungee/pom.xml +++ b/bungee/pom.xml @@ -5,7 +5,7 @@ viaversion-parent us.myles - 1.5.2 + 1.5.3-SNAPSHOT 4.0.0 diff --git a/common/pom.xml b/common/pom.xml index 1219f270e..b54d3349a 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -5,7 +5,7 @@ viaversion-parent us.myles - 1.5.2 + 1.5.3-SNAPSHOT 4.0.0 diff --git a/jar/pom.xml b/jar/pom.xml index 79e020f2b..ea4672cec 100644 --- a/jar/pom.xml +++ b/jar/pom.xml @@ -5,7 +5,7 @@ viaversion-parent us.myles - 1.5.2 + 1.5.3-SNAPSHOT 4.0.0 viaversion-jar diff --git a/pom.xml b/pom.xml index 2c4df909f..14bc38587 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ us.myles viaversion-parent - 1.5.2 + 1.5.3-SNAPSHOT pom viaversion-parent diff --git a/sponge-legacy/pom.xml b/sponge-legacy/pom.xml index e13538171..4455919b2 100644 --- a/sponge-legacy/pom.xml +++ b/sponge-legacy/pom.xml @@ -5,7 +5,7 @@ viaversion-parent us.myles - 1.5.2 + 1.5.3-SNAPSHOT 4.0.0 diff --git a/sponge/pom.xml b/sponge/pom.xml index c5d47e82a..d6bd03ff1 100644 --- a/sponge/pom.xml +++ b/sponge/pom.xml @@ -5,7 +5,7 @@ viaversion-parent us.myles - 1.5.2 + 1.5.3-SNAPSHOT 4.0.0 From a206fd75419b190548c6a5c129ea8467981c1704 Mon Sep 17 00:00:00 2001 From: KennyTV <28825609+KennyTV@users.noreply.github.com> Date: Sun, 30 Sep 2018 16:07:08 +0200 Subject: [PATCH 06/10] Remove unncessary doubled map check --- .../bukkit/listeners/protocol1_9to1_8/HandItemCache.java | 2 -- .../sponge/listeners/protocol1_9to1_8/HandItemCache.java | 2 -- 2 files changed, 4 deletions(-) diff --git a/bukkit/src/main/java/us/myles/ViaVersion/bukkit/listeners/protocol1_9to1_8/HandItemCache.java b/bukkit/src/main/java/us/myles/ViaVersion/bukkit/listeners/protocol1_9to1_8/HandItemCache.java index 70aa1e133..776003017 100644 --- a/bukkit/src/main/java/us/myles/ViaVersion/bukkit/listeners/protocol1_9to1_8/HandItemCache.java +++ b/bukkit/src/main/java/us/myles/ViaVersion/bukkit/listeners/protocol1_9to1_8/HandItemCache.java @@ -14,8 +14,6 @@ public class HandItemCache extends BukkitRunnable { private static Map handCache = new ConcurrentHashMap<>(); public static Item getHandItem(UUID player) { - if (!handCache.containsKey(player)) - return null; return handCache.get(player); } diff --git a/sponge/src/main/java/us/myles/ViaVersion/sponge/listeners/protocol1_9to1_8/HandItemCache.java b/sponge/src/main/java/us/myles/ViaVersion/sponge/listeners/protocol1_9to1_8/HandItemCache.java index 59d49f690..fa9833ed7 100644 --- a/sponge/src/main/java/us/myles/ViaVersion/sponge/listeners/protocol1_9to1_8/HandItemCache.java +++ b/sponge/src/main/java/us/myles/ViaVersion/sponge/listeners/protocol1_9to1_8/HandItemCache.java @@ -33,8 +33,6 @@ public class HandItemCache implements Runnable { } public static Item getHandItem(UUID player) { - if (!handCache.containsKey(player)) - return null; return handCache.get(player); } From 449ec15309a87a3a96128527e8c3c1d6f08874dc Mon Sep 17 00:00:00 2001 From: KennyTV <28825609+KennyTV@users.noreply.github.com> Date: Sun, 30 Sep 2018 20:48:23 +0200 Subject: [PATCH 07/10] Remove unncessary/doubled map check --- .../service/ProtocolDetectorService.java | 22 +++++----- .../api/platform/providers/ViaProviders.java | 9 ++--- .../ViaVersion/api/protocol/Protocol.java | 6 +-- .../api/protocol/ProtocolRegistry.java | 14 ++++--- .../api/protocol/ProtocolVersion.java | 5 ++- .../BlockEntityRewriter.java | 6 ++- .../protocol1_11to1_10/EntityIdRewriter.java | 10 +++-- .../data/EntityNameRewriter.java | 13 +++--- .../providers/BlockEntityProvider.java | 6 +-- .../providers/PaintingProvider.java | 6 ++- .../chunks/FakeTileEntity.java | 5 ++- .../protocol1_9to1_8/ItemRewriter.java | 13 +++--- .../protocol1_9to1_8/metadata/MetaIndex.java | 5 ++- .../packets/EntityPackets.java | 6 ++- .../packets/SpawnPackets.java | 10 +++-- .../protocol1_9to1_8/sounds/SoundEffect.java | 4 +- .../storage/CommandBlockStorage.java | 9 +---- .../storage/EntityTracker.java | 30 +++++++------- .../java/us/myles/ViaVersion/util/Config.java | 40 +++++++++++-------- 19 files changed, 120 insertions(+), 99 deletions(-) diff --git a/bungee/src/main/java/us/myles/ViaVersion/bungee/service/ProtocolDetectorService.java b/bungee/src/main/java/us/myles/ViaVersion/bungee/service/ProtocolDetectorService.java index c1e0cebd1..91b1b9dc1 100644 --- a/bungee/src/main/java/us/myles/ViaVersion/bungee/service/ProtocolDetectorService.java +++ b/bungee/src/main/java/us/myles/ViaVersion/bungee/service/ProtocolDetectorService.java @@ -27,16 +27,19 @@ public class ProtocolDetectorService implements Runnable { public static Integer getProtocolId(String serverName) { // Step 1. Check Config Map servers = ((BungeeConfigAPI) Via.getConfig()).getBungeeServerProtocols(); - if (servers.containsKey(serverName)) { - return servers.get(serverName); + Integer protocol = servers.get(serverName); + if (protocol != null) { + return protocol; } // Step 2. Check Detected - if (detectedProtocolIds.containsKey(serverName)) { - return detectedProtocolIds.get(serverName); + Integer detectedProtocol = detectedProtocolIds.get(serverName); + if (detectedProtocol != null) { + return detectedProtocol; } // Step 3. Use Default - if (servers.containsKey("default")) { - return servers.get("default"); + Integer defaultProtocol = servers.get("default"); + if (defaultProtocol != null) { + return detectedProtocol; } // Step 4: Use bungee lowest supported... *cries* return BungeeVersionProvider.getLowestSupportedVersion(); @@ -58,10 +61,9 @@ public class ProtocolDetectorService implements Runnable { detectedProtocolIds.put(key, serverPing.getVersion().getProtocol()); if (((BungeeConfigAPI) Via.getConfig()).isBungeePingSave()) { Map servers = ((BungeeConfigAPI) Via.getConfig()).getBungeeServerProtocols(); - if (servers.containsKey(key)) { - if (servers.get(key) == serverPing.getVersion().getProtocol()) { - return; - } + Integer protocol = servers.get(key); + if (protocol != null && protocol == serverPing.getVersion().getProtocol()) { + return; } // Ensure we're the only ones writing to the config synchronized (Via.getPlatform().getConfigurationProvider()) { diff --git a/common/src/main/java/us/myles/ViaVersion/api/platform/providers/ViaProviders.java b/common/src/main/java/us/myles/ViaVersion/api/platform/providers/ViaProviders.java index 6911a5217..9aa602423 100644 --- a/common/src/main/java/us/myles/ViaVersion/api/platform/providers/ViaProviders.java +++ b/common/src/main/java/us/myles/ViaVersion/api/platform/providers/ViaProviders.java @@ -18,15 +18,14 @@ public class ViaProviders { } public void use(Class provider, T value) { - if (lonelyProviders.contains(provider)) { - lonelyProviders.remove(provider); - } + lonelyProviders.remove(provider); providers.put(provider, value); } public T get(Class provider) { - if (providers.containsKey(provider)) { - return (T) providers.get(provider); + Provider rawProvider = providers.get(provider); + if (rawProvider != null) { + return (T) rawProvider; } else { if (lonelyProviders.contains(provider)) { throw new IllegalStateException("There was no provider for " + provider + ", one is required!"); diff --git a/common/src/main/java/us/myles/ViaVersion/api/protocol/Protocol.java b/common/src/main/java/us/myles/ViaVersion/api/protocol/Protocol.java index 53692398b..1b79569bf 100644 --- a/common/src/main/java/us/myles/ViaVersion/api/protocol/Protocol.java +++ b/common/src/main/java/us/myles/ViaVersion/api/protocol/Protocol.java @@ -137,10 +137,8 @@ public abstract class Protocol { public void transform(Direction direction, State state, PacketWrapper packetWrapper) throws Exception { Pair statePacket = new Pair<>(state, packetWrapper.getId()); Map, ProtocolPacket> packetMap = (direction == Direction.OUTGOING ? outgoing : incoming); - ProtocolPacket protocolPacket; - if (packetMap.containsKey(statePacket)) { - protocolPacket = packetMap.get(statePacket); - } else { + ProtocolPacket protocolPacket = packetMap.get(statePacket); + if (protocolPacket == null) { return; } // write packet id diff --git a/common/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolRegistry.java b/common/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolRegistry.java index a36e68c4c..59fd65212 100644 --- a/common/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolRegistry.java +++ b/common/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolRegistry.java @@ -165,13 +165,14 @@ public class ProtocolRegistry { if (current.size() > 50) return null; // Fail safe, protocol too complicated. // First check if there is any protocols for this - if (!registryMap.containsKey(clientVersion)) { + Map inputMap = registryMap.get(clientVersion); + if (inputMap == null) { return null; // Not supported } // Next check there isn't an obvious path - Map inputMap = registryMap.get(clientVersion); - if (inputMap.containsKey(serverVersion)) { - current.add(new Pair<>(serverVersion, inputMap.get(serverVersion))); + Protocol protocol = inputMap.get(serverVersion); + if (protocol != null) { + current.add(new Pair<>(serverVersion, protocol)); return current; // Easy solution } // There might be a more advanced solution... So we'll see if any of the others can get us there @@ -211,8 +212,9 @@ public class ProtocolRegistry { public static List> getProtocolPath(int clientVersion, int serverVersion) { Pair protocolKey = new Pair<>(clientVersion, serverVersion); // Check cache - if (pathCache.containsKey(protocolKey)) { - return pathCache.get(protocolKey); + List> protocolList = pathCache.get(protocolKey); + if (protocolList != null) { + return protocolList; } // Generate path List> outputPath = getProtocolPath(new ArrayList>(), clientVersion, serverVersion); diff --git a/common/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolVersion.java b/common/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolVersion.java index 597aaee79..b0aadddc7 100644 --- a/common/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolVersion.java +++ b/common/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolVersion.java @@ -77,8 +77,9 @@ public class ProtocolVersion { } public static ProtocolVersion getProtocol(int id) { - if (versions.containsKey(id)) { - return versions.get(id); + ProtocolVersion protocolVersion = versions.get(id); + if (protocolVersion != null) { + return protocolVersion; } else { return new ProtocolVersion(id, "Unknown (" + id + ")"); } diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_11to1_10/BlockEntityRewriter.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_11to1_10/BlockEntityRewriter.java index 730358fb9..fa7b490de 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_11to1_10/BlockEntityRewriter.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_11to1_10/BlockEntityRewriter.java @@ -42,8 +42,10 @@ public class BlockEntityRewriter { } public static String toNewIdentifier(String oldId) { - if (oldToNewNames.containsKey(oldId)) - return oldToNewNames.get(oldId); + String newName = oldToNewNames.get(oldId); + if (newName != null) { + return newName; + } return oldId; } } diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_11to1_10/EntityIdRewriter.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_11to1_10/EntityIdRewriter.java index a840c182b..94051d977 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_11to1_10/EntityIdRewriter.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_11to1_10/EntityIdRewriter.java @@ -90,8 +90,9 @@ public class EntityIdRewriter { public static void toClient(CompoundTag tag) { if (tag.get("id") instanceof StringTag) { StringTag id = tag.get("id"); - if (oldToNewNames.containsKey(id.getValue())) { - id.setValue(oldToNewNames.get(id.getValue())); + String newName = oldToNewNames.get(id.getValue()); + if (newName != null) { + id.setValue(newName); } } } @@ -117,8 +118,9 @@ public class EntityIdRewriter { CompoundTag entityTag = item.getTag().get("EntityTag"); if (entityTag.get("id") instanceof StringTag) { StringTag id = entityTag.get("id"); - if (oldToNewNames.inverse().containsKey(id.getValue())) { - id.setValue(oldToNewNames.inverse().get(id.getValue())); + String newName = oldToNewNames.inverse().get(id.getValue()); + if (newName != null) { + id.setValue(newName); } } } diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/data/EntityNameRewriter.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/data/EntityNameRewriter.java index 30db785d7..df918be0b 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/data/EntityNameRewriter.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/data/EntityNameRewriter.java @@ -46,11 +46,14 @@ public class EntityNameRewriter { } public static String rewrite(String entName) { - if (entityNames.containsKey(entName)) - return entityNames.get(entName); - if (entityNames.containsKey("minecraft:" + entName)) - return entityNames.get("minecraft:" + entName); - else + 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/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/providers/BlockEntityProvider.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/providers/BlockEntityProvider.java index bdcde9e68..5c5ccf6b2 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/providers/BlockEntityProvider.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/providers/BlockEntityProvider.java @@ -39,15 +39,15 @@ public class BlockEntityProvider implements Provider { return -1; String id = (String) tag.get("id").getValue(); - - if (!handlers.containsKey(id)) { + BlockEntityHandler handler = handlers.get(id); + if (handler == null) { if (Via.getManager().isDebug()) { Via.getPlatform().getLogger().warning("Unhandled BlockEntity " + id + " full tag: " + tag); } return -1; } - int newBlock = handlers.get(id).transform(user, tag); + int newBlock = handler.transform(user, tag); if (sendUpdate && newBlock != -1) sendBlockChange(user, position, newBlock); diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/providers/PaintingProvider.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/providers/PaintingProvider.java index 505e476cb..61b29fbb4 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/providers/PaintingProvider.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/providers/PaintingProvider.java @@ -47,8 +47,10 @@ public class PaintingProvider implements Provider { if (!motive.startsWith("minecraft:")) motive = "minecraft:" + motive.toLowerCase(); - if (paintings.containsKey(motive)) - return Optional.of(paintings.get(motive)); + Integer index = paintings.get(motive); + if (index != null) { + return Optional.of(index); + } return Optional.absent(); } diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9_3to1_9_1_2/chunks/FakeTileEntity.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9_3to1_9_1_2/chunks/FakeTileEntity.java index 769ee1390..aefe7cedb 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9_3to1_9_1_2/chunks/FakeTileEntity.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9_3to1_9_1_2/chunks/FakeTileEntity.java @@ -57,8 +57,9 @@ public class FakeTileEntity { } public static CompoundTag getFromBlock(int x, int y, int z, int block) { - if (tileEntities.containsKey(block)) { - CompoundTag tag = tileEntities.get(block).clone(); + CompoundTag originalTag = tileEntities.get(block); + if (originalTag != null) { + CompoundTag tag = originalTag.clone(); tag.put(new IntTag("x", x)); tag.put(new IntTag("y", y)); tag.put(new IntTag("z", z)); diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/ItemRewriter.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/ItemRewriter.java index 17df9b020..da848d8f0 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/ItemRewriter.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/ItemRewriter.java @@ -230,8 +230,9 @@ public class ItemRewriter { tag = new CompoundTag("tag"); } CompoundTag entityTag = new CompoundTag("EntityTag"); - if (ENTTIY_ID_TO_NAME.containsKey((int) item.getData())) { - StringTag id = new StringTag("id", ENTTIY_ID_TO_NAME.get((int) item.getData())); + String entityName = ENTTIY_ID_TO_NAME.get((int) item.getData()); + if (entityName != null) { + StringTag id = new StringTag("id", entityName); entityTag.put(id); tag.put(entityTag); } @@ -379,12 +380,14 @@ public class ItemRewriter { if (oldID >= 16384) { oldID -= 8192; } - if (POTION_INDEX.containsKey(oldID)) { - return POTION_INDEX.get(oldID); + + Integer index = POTION_INDEX.get(oldID); + if (index != null) { + return index; } oldID = POTION_NAME_TO_ID.get(potionNameFromDamage((short) oldID)); - return POTION_INDEX.containsKey(oldID) ? POTION_INDEX.get(oldID) : 0; + return (index = POTION_INDEX.get(oldID)) != null ? index : 0; } private static void registerEntity(Integer id, String name) { diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/metadata/MetaIndex.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/metadata/MetaIndex.java index ffe476089..3c69cf583 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/metadata/MetaIndex.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/metadata/MetaIndex.java @@ -173,8 +173,9 @@ public enum MetaIndex { private static Optional getIndex(Entity1_10Types.EntityType type, int index) { Pair pair = new Pair<>(type, index); - if (metadataRewrites.containsKey(pair)) { - return Optional.of(metadataRewrites.get(pair)); + MetaIndex metaIndex = metadataRewrites.get(pair); + if (metaIndex != null) { + return Optional.of(metaIndex); } return Optional.absent(); diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/packets/EntityPackets.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/packets/EntityPackets.java index bc4987780..464cf7833 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/packets/EntityPackets.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/packets/EntityPackets.java @@ -5,6 +5,7 @@ import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.Pair; import us.myles.ViaVersion.api.Triple; import us.myles.ViaVersion.api.Via; +import us.myles.ViaVersion.api.entities.Entity1_10Types; import us.myles.ViaVersion.api.minecraft.item.Item; import us.myles.ViaVersion.api.minecraft.metadata.Metadata; import us.myles.ViaVersion.api.protocol.Protocol; @@ -184,8 +185,9 @@ public class EntityPackets { List metadataList = wrapper.get(Types1_9.METADATA_LIST, 0); int entityID = wrapper.get(Type.VAR_INT, 0); EntityTracker tracker = wrapper.user().get(EntityTracker.class); - if (tracker.getClientEntityTypes().containsKey(entityID)) { - MetadataRewriter.transform(tracker.getClientEntityTypes().get(entityID), metadataList); + Entity1_10Types.EntityType type = tracker.getClientEntityTypes().get(entityID); + if (type != null) { + MetadataRewriter.transform(type, metadataList); } else { // Buffer tracker.addMetadataToBuffer(entityID, metadataList); diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/packets/SpawnPackets.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/packets/SpawnPackets.java index b8382ce53..1dc71045e 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/packets/SpawnPackets.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/packets/SpawnPackets.java @@ -214,8 +214,9 @@ public class SpawnPackets { List metadataList = wrapper.get(Types1_9.METADATA_LIST, 0); int entityID = wrapper.get(Type.VAR_INT, 0); EntityTracker tracker = wrapper.user().get(EntityTracker.class); - if (tracker.getClientEntityTypes().containsKey(entityID)) { - MetadataRewriter.transform(tracker.getClientEntityTypes().get(entityID), metadataList); + Entity1_10Types.EntityType type = tracker.getClientEntityTypes().get(entityID); + if (type != null) { + MetadataRewriter.transform(type, metadataList); } else { Via.getPlatform().getLogger().warning("Unable to find entity for metadata, entity ID: " + entityID); metadataList.clear(); @@ -319,8 +320,9 @@ public class SpawnPackets { List metadataList = wrapper.get(Types1_9.METADATA_LIST, 0); int entityID = wrapper.get(Type.VAR_INT, 0); EntityTracker tracker = wrapper.user().get(EntityTracker.class); - if (tracker.getClientEntityTypes().containsKey(entityID)) { - MetadataRewriter.transform(tracker.getClientEntityTypes().get(entityID), metadataList); + Entity1_10Types.EntityType type = tracker.getClientEntityTypes().get(entityID); + if (type != null) { + MetadataRewriter.transform(type, metadataList); } else { Via.getPlatform().getLogger().warning("Unable to find entity for metadata, entity ID: " + entityID); metadataList.clear(); diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/sounds/SoundEffect.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/sounds/SoundEffect.java index 65e5eafb2..985d83386 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/sounds/SoundEffect.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/sounds/SoundEffect.java @@ -284,9 +284,7 @@ public enum SoundEffect { public static SoundEffect getByName(String name) { name = name.toLowerCase(); - if (effects.containsKey(name)) - return effects.get(name); - return null; + return effects.get(name); } } diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/storage/CommandBlockStorage.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/storage/CommandBlockStorage.java index 8a0356203..41841df84 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/storage/CommandBlockStorage.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/storage/CommandBlockStorage.java @@ -25,8 +25,7 @@ public class CommandBlockStorage extends StoredObject { public void unloadChunk(int x, int z) { Pair chunkPos = new Pair<>(x, z); - if (storedCommandBlocks.containsKey(chunkPos)) - storedCommandBlocks.remove(chunkPos); + storedCommandBlocks.remove(chunkPos); } public void addOrUpdateBlock(Position position, CompoundTag tag) { @@ -54,12 +53,8 @@ public class CommandBlockStorage extends StoredObject { public Optional getCommandBlock(Position position) { Pair chunkCoords = getChunkCoords(position); - if (!storedCommandBlocks.containsKey(chunkCoords)) - return Optional.absent(); - Map blocks = storedCommandBlocks.get(chunkCoords); - - if (!blocks.containsKey(position)) + if (blocks == null) return Optional.absent(); CompoundTag tag = blocks.get(position).clone(); diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/storage/EntityTracker.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/storage/EntityTracker.java index 2824a0a72..bafffa178 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/storage/EntityTracker.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/storage/EntityTracker.java @@ -59,13 +59,13 @@ public class EntityTracker extends StoredObject { } public UUID getEntityUUID(int id) { - if (uuidMap.containsKey(id)) { - return uuidMap.get(id); - } else { - UUID uuid = UUID.randomUUID(); + UUID uuid = uuidMap.get(id); + if (uuid == null) { + uuid = UUID.randomUUID(); uuidMap.put(id, uuid); - return uuid; } + + return uuid; } public void setSecondHand(Item item) { @@ -117,11 +117,11 @@ public class EntityTracker extends StoredObject { } public void handleMetadata(int entityID, List metadataList) { - if (!clientEntityTypes.containsKey(entityID)) { + Entity1_10Types.EntityType type = clientEntityTypes.get(entityID); + if (type == null) { return; } - Entity1_10Types.EntityType type = clientEntityTypes.get(entityID); for (Metadata metadata : new ArrayList<>(metadataList)) { // Fix: wither (crash fix) if (type == Entity1_10Types.EntityType.WITHER) { @@ -272,21 +272,23 @@ public class EntityTracker extends StoredObject { } public void addMetadataToBuffer(int entityID, List metadataList) { - if (metadataBuffer.containsKey(entityID)) { - metadataBuffer.get(entityID).addAll(metadataList); + final List metadata = metadataBuffer.get(entityID); + if (metadata != null) { + metadata.addAll(metadataList); } else { metadataBuffer.put(entityID, metadataList); } } public void sendMetadataBuffer(int entityID) { - if (metadataBuffer.containsKey(entityID)) { + List metadataList = metadataBuffer.get(entityID); + if (metadataList != null) { PacketWrapper wrapper = new PacketWrapper(0x39, null, getUser()); wrapper.write(Type.VAR_INT, entityID); - wrapper.write(Types1_9.METADATA_LIST, metadataBuffer.get(entityID)); - MetadataRewriter.transform(getClientEntityTypes().get(entityID), metadataBuffer.get(entityID)); - handleMetadata(entityID, metadataBuffer.get(entityID)); - if (metadataBuffer.get(entityID).size() > 0) { + wrapper.write(Types1_9.METADATA_LIST, metadataList); + MetadataRewriter.transform(getClientEntityTypes().get(entityID), metadataList); + handleMetadata(entityID, metadataList); + if (metadataList.size() > 0) { try { wrapper.send(Protocol1_9TO1_8.class); } catch (Exception e) { diff --git a/common/src/main/java/us/myles/ViaVersion/util/Config.java b/common/src/main/java/us/myles/ViaVersion/util/Config.java index 9ae712629..590895db0 100644 --- a/common/src/main/java/us/myles/ViaVersion/util/Config.java +++ b/common/src/main/java/us/myles/ViaVersion/util/Config.java @@ -14,7 +14,7 @@ import java.util.Map; import java.util.concurrent.ConcurrentSkipListMap; public abstract class Config implements ConfigurationProvider { - private static ThreadLocal yaml = new ThreadLocal() { + private static final ThreadLocal YAML = new ThreadLocal() { @Override protected Yaml initialValue() { DumperOptions options = new DumperOptions(); @@ -58,7 +58,7 @@ public abstract class Config implements ConfigurationProvider { Map config = null; if (location.exists()) { try (FileInputStream input = new FileInputStream(location)) { - config = (Map) yaml.get().load(input); + config = (Map) YAML.get().load(input); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { @@ -71,7 +71,7 @@ public abstract class Config implements ConfigurationProvider { Map defaults = config; try (InputStream stream = jarConfigFile.openStream()) { - defaults = (Map) yaml.get().load(stream); + defaults = (Map) YAML.get().load(stream); for (String option : unsupported) { defaults.remove(option); } @@ -97,7 +97,7 @@ public abstract class Config implements ConfigurationProvider { public synchronized void saveConfig(File location, Map config) { try { - commentStore.writeComments(yaml.get().dump(config), location); + commentStore.writeComments(YAML.get().dump(config), location); } catch (IOException e) { e.printStackTrace(); } @@ -128,33 +128,37 @@ public abstract class Config implements ConfigurationProvider { } public T get(String key, Class clazz, T def) { - if (this.config.containsKey(key)) { - return (T) this.config.get(key); + Object o = this.config.get(key); + if (o != null) { + return (T) o; } else { return def; } } public boolean getBoolean(String key, boolean def) { - if (this.config.containsKey(key)) { - return (boolean) this.config.get(key); + Object o = this.config.get(key); + if (o != null) { + return (boolean) o; } else { return def; } } public String getString(String key, String def) { - if (this.config.containsKey(key)) { - return (String) this.config.get(key); + final Object o = this.config.get(key); + if (o != null) { + return (String) o; } else { return def; } } public int getInt(String key, int def) { - if (this.config.containsKey(key)) { - if (this.config.get(key) instanceof Number) { - return ((Number) this.config.get(key)).intValue(); + Object o = this.config.get(key); + if (o != null) { + if (o instanceof Number) { + return ((Number) o).intValue(); } else { return def; } @@ -164,9 +168,10 @@ public abstract class Config implements ConfigurationProvider { } public double getDouble(String key, double def) { - if (this.config.containsKey(key)) { - if (this.config.get(key) instanceof Number) { - return ((Number) this.config.get(key)).doubleValue(); + Object o = this.config.get(key); + if (o != null) { + if (o instanceof Number) { + return ((Number) o).doubleValue(); } else { return def; } @@ -176,7 +181,8 @@ public abstract class Config implements ConfigurationProvider { } public List getIntegerList(String key) { - if (this.config.containsKey(key)) { + Object o = this.config.get(key); + if (o != null) { return (List) this.config.get(key); } else { return new ArrayList<>(); From 033d3bcd4dca3f5e129ecc5d00f0ca6fafe47cf7 Mon Sep 17 00:00:00 2001 From: KennyTV <28825609+KennyTV@users.noreply.github.com> Date: Sun, 30 Sep 2018 21:19:18 +0200 Subject: [PATCH 08/10] Remove some more unncessary/doubled map check --- .../protocol1_11to1_10/storage/EntityTracker.java | 4 +--- .../protocol1_12to1_11_1/storage/EntityTracker.java | 4 +--- .../protocol1_13to1_12_2/providers/PaintingProvider.java | 8 +------- .../protocol1_13to1_12_2/storage/EntityTracker.java | 4 +--- .../protocols/protocol1_9to1_8/metadata/MetaIndex.java | 7 +------ .../protocol1_9to1_8/storage/CommandBlockStorage.java | 7 +++++-- common/src/main/java/us/myles/ViaVersion/util/Config.java | 2 +- 7 files changed, 11 insertions(+), 25 deletions(-) diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_11to1_10/storage/EntityTracker.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_11to1_10/storage/EntityTracker.java index 328be0ec6..f0864562b 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_11to1_10/storage/EntityTracker.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_11to1_10/storage/EntityTracker.java @@ -33,9 +33,7 @@ public class EntityTracker extends StoredObject { } public Optional get(int id) { - if (!has(id)) - return Optional.absent(); - return Optional.of(clientEntityTypes.get(id)); + return Optional.fromNullable(clientEntityTypes.get(id)); } public void addHologram(int entId) { diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_12to1_11_1/storage/EntityTracker.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_12to1_11_1/storage/EntityTracker.java index 1464d0468..015831329 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_12to1_11_1/storage/EntityTracker.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_12to1_11_1/storage/EntityTracker.java @@ -28,9 +28,7 @@ public class EntityTracker extends StoredObject { } public Optional get(int id) { - if (!has(id)) - return Optional.absent(); - return Optional.of(clientEntityTypes.get(id)); + return Optional.fromNullable(clientEntityTypes.get(id)); } } diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/providers/PaintingProvider.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/providers/PaintingProvider.java index 61b29fbb4..819aa808c 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/providers/PaintingProvider.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/providers/PaintingProvider.java @@ -46,12 +46,6 @@ public class PaintingProvider implements Provider { // Handle older versions if (!motive.startsWith("minecraft:")) motive = "minecraft:" + motive.toLowerCase(); - - Integer index = paintings.get(motive); - if (index != null) { - return Optional.of(index); - } - - return Optional.absent(); + return Optional.fromNullable(paintings.get(motive)); } } \ No newline at end of file diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/storage/EntityTracker.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/storage/EntityTracker.java index db7994407..9b23f76da 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/storage/EntityTracker.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/storage/EntityTracker.java @@ -28,9 +28,7 @@ public class EntityTracker extends StoredObject { } public Optional get(int id) { - if (!has(id)) - return Optional.absent(); - return Optional.of(clientEntityTypes.get(id)); + return Optional.fromNullable(clientEntityTypes.get(id)); } } diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/metadata/MetaIndex.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/metadata/MetaIndex.java index 3c69cf583..3d2ef48ab 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/metadata/MetaIndex.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/metadata/MetaIndex.java @@ -173,12 +173,7 @@ public enum MetaIndex { private static Optional getIndex(Entity1_10Types.EntityType type, int index) { Pair pair = new Pair<>(type, index); - MetaIndex metaIndex = metadataRewrites.get(pair); - if (metaIndex != null) { - return Optional.of(metaIndex); - } - - return Optional.absent(); + return Optional.fromNullable(metadataRewrites.get(pair)); } public static MetaIndex searchIndex(Entity1_10Types.EntityType type, int index) { diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/storage/CommandBlockStorage.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/storage/CommandBlockStorage.java index 41841df84..d6e99db20 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/storage/CommandBlockStorage.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/storage/CommandBlockStorage.java @@ -57,11 +57,14 @@ public class CommandBlockStorage extends StoredObject { if (blocks == null) return Optional.absent(); - CompoundTag tag = blocks.get(position).clone(); + CompoundTag tag = blocks.get(position); + if (tag == null) + return Optional.absent(); + + tag = tag.clone(); tag.put(new ByteTag("powered", (byte) 0)); tag.put(new ByteTag("auto", (byte) 0)); tag.put(new ByteTag("conditionMet", (byte) 0)); - return Optional.of(tag); } diff --git a/common/src/main/java/us/myles/ViaVersion/util/Config.java b/common/src/main/java/us/myles/ViaVersion/util/Config.java index 590895db0..822b9c29f 100644 --- a/common/src/main/java/us/myles/ViaVersion/util/Config.java +++ b/common/src/main/java/us/myles/ViaVersion/util/Config.java @@ -183,7 +183,7 @@ public abstract class Config implements ConfigurationProvider { public List getIntegerList(String key) { Object o = this.config.get(key); if (o != null) { - return (List) this.config.get(key); + return (List) o; } else { return new ArrayList<>(); } From e40be243de36fdc049f34b21222335a00b1ab358 Mon Sep 17 00:00:00 2001 From: KennyTV <28825609+KennyTV@users.noreply.github.com> Date: Wed, 3 Oct 2018 10:12:13 +0200 Subject: [PATCH 09/10] Return correct default protocol, whoops! --- .../ViaVersion/bungee/service/ProtocolDetectorService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bungee/src/main/java/us/myles/ViaVersion/bungee/service/ProtocolDetectorService.java b/bungee/src/main/java/us/myles/ViaVersion/bungee/service/ProtocolDetectorService.java index 91b1b9dc1..e3aa9defe 100644 --- a/bungee/src/main/java/us/myles/ViaVersion/bungee/service/ProtocolDetectorService.java +++ b/bungee/src/main/java/us/myles/ViaVersion/bungee/service/ProtocolDetectorService.java @@ -39,7 +39,7 @@ public class ProtocolDetectorService implements Runnable { // Step 3. Use Default Integer defaultProtocol = servers.get("default"); if (defaultProtocol != null) { - return detectedProtocol; + return defaultProtocol; } // Step 4: Use bungee lowest supported... *cries* return BungeeVersionProvider.getLowestSupportedVersion(); From 5cecfd14d989e2bb85b6291e5dccff9b51894aa3 Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Wed, 17 Oct 2018 15:38:59 +0200 Subject: [PATCH 10/10] 1.13.2-pre1 support --- .../metadata/types/MetaType1_13_2.java | 37 +++++ .../api/protocol/ProtocolRegistry.java | 2 + .../api/protocol/ProtocolVersion.java | 2 + .../us/myles/ViaVersion/api/type/Type.java | 3 + .../minecraft/FlatVarIntItemArrayType.java | 30 ++++ .../types/minecraft/FlatVarIntItemType.java | 37 +++++ .../types/version/Metadata1_13_2Type.java | 29 ++++ .../types/version/MetadataList1_13_2Type.java | 32 ++++ .../api/type/types/version/Types1_13_2.java | 18 +++ .../Protocol1_13_2To1_13_1.java | 82 ++++++++++ .../packets/EntityPackets.java | 97 +++++++++++ .../packets/InventoryPackets.java | 151 ++++++++++++++++++ .../packets/WorldPackets.java | 40 +++++ .../types/Particle1_13_2Type.java | 44 +++++ 14 files changed, 604 insertions(+) create mode 100644 common/src/main/java/us/myles/ViaVersion/api/minecraft/metadata/types/MetaType1_13_2.java create mode 100644 common/src/main/java/us/myles/ViaVersion/api/type/types/minecraft/FlatVarIntItemArrayType.java create mode 100644 common/src/main/java/us/myles/ViaVersion/api/type/types/minecraft/FlatVarIntItemType.java create mode 100644 common/src/main/java/us/myles/ViaVersion/api/type/types/version/Metadata1_13_2Type.java create mode 100644 common/src/main/java/us/myles/ViaVersion/api/type/types/version/MetadataList1_13_2Type.java create mode 100644 common/src/main/java/us/myles/ViaVersion/api/type/types/version/Types1_13_2.java create mode 100644 common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13_2to1_13_1/Protocol1_13_2To1_13_1.java create mode 100644 common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13_2to1_13_1/packets/EntityPackets.java create mode 100644 common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13_2to1_13_1/packets/InventoryPackets.java create mode 100644 common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13_2to1_13_1/packets/WorldPackets.java create mode 100644 common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13_2to1_13_1/types/Particle1_13_2Type.java diff --git a/common/src/main/java/us/myles/ViaVersion/api/minecraft/metadata/types/MetaType1_13_2.java b/common/src/main/java/us/myles/ViaVersion/api/minecraft/metadata/types/MetaType1_13_2.java new file mode 100644 index 000000000..a9646a8d0 --- /dev/null +++ b/common/src/main/java/us/myles/ViaVersion/api/minecraft/metadata/types/MetaType1_13_2.java @@ -0,0 +1,37 @@ +package us.myles.ViaVersion.api.minecraft.metadata.types; + +import lombok.Getter; +import lombok.RequiredArgsConstructor; +import us.myles.ViaVersion.api.minecraft.metadata.MetaType; +import us.myles.ViaVersion.api.type.Type; +import us.myles.ViaVersion.protocols.protocol1_13_2to1_13_1.Protocol1_13_2To1_13_1; + +@RequiredArgsConstructor +@Getter +public enum MetaType1_13_2 implements MetaType { + Byte(0, Type.BYTE), + VarInt(1, Type.VAR_INT), + Float(2, Type.FLOAT), + String(3, Type.STRING), + Chat(4, Type.STRING), + OptChat(5, Type.OPTIONAL_CHAT), + Slot(6, Type.FLAT_VAR_INT_ITEM), + Boolean(7, Type.BOOLEAN), + Vector3F(8, Type.ROTATION), + Position(9, Type.POSITION), + OptPosition(10, Type.OPTIONAL_POSITION), + Direction(11, Type.VAR_INT), + OptUUID(12, Type.OPTIONAL_UUID), + BlockID(13, Type.VAR_INT), + NBTTag(14, Type.NBT), + PARTICLE(15, Protocol1_13_2To1_13_1.PARTICLE_TYPE), + Discontinued(99, null); + + private final int typeID; + private final Type type; + + public static MetaType1_13_2 byId(int id) { + return values()[id]; + } + +} diff --git a/common/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolRegistry.java b/common/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolRegistry.java index 59fd65212..76de968b7 100644 --- a/common/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolRegistry.java +++ b/common/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolRegistry.java @@ -13,6 +13,7 @@ import us.myles.ViaVersion.protocols.protocol1_11to1_10.Protocol1_11To1_10; import us.myles.ViaVersion.protocols.protocol1_12_1to1_12.Protocol1_12_1TO1_12; import us.myles.ViaVersion.protocols.protocol1_12_2to1_12_1.Protocol1_12_2TO1_12_1; import us.myles.ViaVersion.protocols.protocol1_12to1_11_1.Protocol1_12To1_11_1; +import us.myles.ViaVersion.protocols.protocol1_13_2to1_13_1.Protocol1_13_2To1_13_1; import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.Protocol1_13To1_12_2; import us.myles.ViaVersion.protocols.protocol1_9_1_2to1_9_3_4.Protocol1_9_1_2TO1_9_3_4; import us.myles.ViaVersion.protocols.protocol1_9_1to1_9.Protocol1_9_1TO1_9; @@ -57,6 +58,7 @@ public class ProtocolRegistry { registerProtocol(new Protocol1_13To1_12_2(), Collections.singletonList(ProtocolVersion.v1_13.getId()), ProtocolVersion.v1_12_2.getId()); registerProtocol(new Protocol1_13_1To1_13(), Arrays.asList(ProtocolVersion.v1_13_1.getId()), ProtocolVersion.v1_13.getId()); + registerProtocol(new Protocol1_13_2To1_13_1(), Arrays.asList(ProtocolVersion.v1_13_2.getId()), ProtocolVersion.v1_13_1.getId()); } /** diff --git a/common/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolVersion.java b/common/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolVersion.java index b0aadddc7..e35faf03b 100644 --- a/common/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolVersion.java +++ b/common/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolVersion.java @@ -34,6 +34,7 @@ public class ProtocolVersion { public static final ProtocolVersion v1_12_2; public static final ProtocolVersion v1_13; public static final ProtocolVersion v1_13_1; + public static final ProtocolVersion v1_13_2; public static final ProtocolVersion unknown; private final int id; @@ -64,6 +65,7 @@ public class ProtocolVersion { register(v1_12_2 = new ProtocolVersion(340, "1.12.2")); register(v1_13 = new ProtocolVersion(393, "1.13")); register(v1_13_1 = new ProtocolVersion(401, "1.13.1")); + register(v1_13_2 = new ProtocolVersion(402, "1.13.2")); register(unknown = new ProtocolVersion(-1, "UNKNOWN")); } diff --git a/common/src/main/java/us/myles/ViaVersion/api/type/Type.java b/common/src/main/java/us/myles/ViaVersion/api/type/Type.java index 3202b27d0..3e1db7013 100644 --- a/common/src/main/java/us/myles/ViaVersion/api/type/Type.java +++ b/common/src/main/java/us/myles/ViaVersion/api/type/Type.java @@ -76,8 +76,11 @@ public abstract class Type implements ByteBufReader, ByteBufWriter { /* 1.13 Flat Item (no data) */ public static final Type FLAT_ITEM = new FlatItemType(); + public static final Type FLAT_VAR_INT_ITEM = new FlatVarIntItemType(); public static final Type FLAT_ITEM_ARRAY = new FlatItemArrayType(); + public static final Type FLAT_VAR_INT_ITEM_ARRAY = new FlatVarIntItemArrayType(); public static final Type FLAT_ITEM_ARRAY_VAR_INT = new ArrayType<>(FLAT_ITEM); + public static final Type FLAT_VAR_INT_ITEM_ARRAY_VAR_INT = new ArrayType<>(FLAT_VAR_INT_ITEM); /* Actual Class */ diff --git a/common/src/main/java/us/myles/ViaVersion/api/type/types/minecraft/FlatVarIntItemArrayType.java b/common/src/main/java/us/myles/ViaVersion/api/type/types/minecraft/FlatVarIntItemArrayType.java new file mode 100644 index 000000000..6316b4c1a --- /dev/null +++ b/common/src/main/java/us/myles/ViaVersion/api/type/types/minecraft/FlatVarIntItemArrayType.java @@ -0,0 +1,30 @@ +package us.myles.ViaVersion.api.type.types.minecraft; + +import io.netty.buffer.ByteBuf; +import us.myles.ViaVersion.api.minecraft.item.Item; +import us.myles.ViaVersion.api.type.Type; + +public class FlatVarIntItemArrayType extends BaseItemArrayType { + + public FlatVarIntItemArrayType() { + super("Flat Item Array"); + } + + @Override + public Item[] read(ByteBuf buffer) throws Exception { + int amount = Type.SHORT.read(buffer); + Item[] array = new Item[amount]; + for (int i = 0; i < amount; i++) { + array[i] = Type.FLAT_VAR_INT_ITEM.read(buffer); + } + return array; + } + + @Override + public void write(ByteBuf buffer, Item[] object) throws Exception { + Type.SHORT.write(buffer, (short) object.length); + for (Item o : object) { + Type.FLAT_VAR_INT_ITEM.write(buffer, o); + } + } +} \ No newline at end of file diff --git a/common/src/main/java/us/myles/ViaVersion/api/type/types/minecraft/FlatVarIntItemType.java b/common/src/main/java/us/myles/ViaVersion/api/type/types/minecraft/FlatVarIntItemType.java new file mode 100644 index 000000000..55390d0dd --- /dev/null +++ b/common/src/main/java/us/myles/ViaVersion/api/type/types/minecraft/FlatVarIntItemType.java @@ -0,0 +1,37 @@ +package us.myles.ViaVersion.api.type.types.minecraft; + +import io.netty.buffer.ByteBuf; +import us.myles.ViaVersion.api.minecraft.item.Item; +import us.myles.ViaVersion.api.type.Type; + +public class FlatVarIntItemType extends BaseItemType { + public FlatVarIntItemType() { + super("FlatVarIntItem"); + } + + @Override + public Item read(ByteBuf buffer) throws Exception { + boolean present = buffer.readBoolean(); + if (!present) { + return null; + } else { + Item item = new Item(); + item.setId(Type.VAR_INT.read(buffer).shortValue()); //TODO Maybe we should consider changing id field type to int + item.setAmount(buffer.readByte()); + item.setTag(Type.NBT.read(buffer)); + return item; + } + } + + @Override + public void write(ByteBuf buffer, Item object) throws Exception { + if (object == null) { + buffer.writeBoolean(false); + } else { + buffer.writeBoolean(true); + Type.VAR_INT.write(buffer, (int) object.getId()); + buffer.writeByte(object.getAmount()); + Type.NBT.write(buffer, object.getTag()); + } + } +} diff --git a/common/src/main/java/us/myles/ViaVersion/api/type/types/version/Metadata1_13_2Type.java b/common/src/main/java/us/myles/ViaVersion/api/type/types/version/Metadata1_13_2Type.java new file mode 100644 index 000000000..608547c0f --- /dev/null +++ b/common/src/main/java/us/myles/ViaVersion/api/type/types/version/Metadata1_13_2Type.java @@ -0,0 +1,29 @@ +package us.myles.ViaVersion.api.type.types.version; + +import io.netty.buffer.ByteBuf; +import us.myles.ViaVersion.api.minecraft.metadata.Metadata; +import us.myles.ViaVersion.api.minecraft.metadata.types.MetaType1_13_2; +import us.myles.ViaVersion.api.type.types.minecraft.MetaTypeTemplate; + +public class Metadata1_13_2Type extends MetaTypeTemplate { + @Override + public Metadata read(ByteBuf buffer) throws Exception { + short index = buffer.readUnsignedByte(); + + if (index == 0xff) return null; //End of metadata + MetaType1_13_2 type = MetaType1_13_2.byId(buffer.readByte()); + + return new Metadata(index, type, type.getType().read(buffer)); + } + + @Override + public void write(ByteBuf buffer, Metadata object) throws Exception { + if (object == null) { + buffer.writeByte(255); + } else { + buffer.writeByte(object.getId()); + buffer.writeByte(object.getMetaType().getTypeID()); + object.getMetaType().getType().write(buffer, object.getValue()); + } + } +} diff --git a/common/src/main/java/us/myles/ViaVersion/api/type/types/version/MetadataList1_13_2Type.java b/common/src/main/java/us/myles/ViaVersion/api/type/types/version/MetadataList1_13_2Type.java new file mode 100644 index 000000000..9f38c0936 --- /dev/null +++ b/common/src/main/java/us/myles/ViaVersion/api/type/types/version/MetadataList1_13_2Type.java @@ -0,0 +1,32 @@ +package us.myles.ViaVersion.api.type.types.version; + +import io.netty.buffer.ByteBuf; +import us.myles.ViaVersion.api.minecraft.metadata.Metadata; +import us.myles.ViaVersion.api.type.types.minecraft.MetaListTypeTemplate; + +import java.util.ArrayList; +import java.util.List; + +public class MetadataList1_13_2Type extends MetaListTypeTemplate { + @Override + public List read(ByteBuf buffer) throws Exception { + List list = new ArrayList<>(); + Metadata meta; + do { + meta = Types1_13_2.METADATA.read(buffer); + if (meta != null) + list.add(meta); + } while (meta != null); + + return list; + } + + @Override + public void write(ByteBuf buffer, List object) throws Exception { + for (Metadata m : object) + Types1_13_2.METADATA.write(buffer, m); + + // Write end of list + Types1_13_2.METADATA.write(buffer, null); + } +} diff --git a/common/src/main/java/us/myles/ViaVersion/api/type/types/version/Types1_13_2.java b/common/src/main/java/us/myles/ViaVersion/api/type/types/version/Types1_13_2.java new file mode 100644 index 000000000..0f3a40173 --- /dev/null +++ b/common/src/main/java/us/myles/ViaVersion/api/type/types/version/Types1_13_2.java @@ -0,0 +1,18 @@ +package us.myles.ViaVersion.api.type.types.version; + +import us.myles.ViaVersion.api.minecraft.metadata.Metadata; +import us.myles.ViaVersion.api.type.Type; + +import java.util.List; + +public class Types1_13_2 { + /** + * Metadata list type for 1.13 + */ + public static final Type> METADATA_LIST = new MetadataList1_13_2Type(); + + /** + * Metadata type for 1.13 + */ + public static final Type METADATA = new Metadata1_13_2Type(); +} diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13_2to1_13_1/Protocol1_13_2To1_13_1.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13_2to1_13_1/Protocol1_13_2To1_13_1.java new file mode 100644 index 000000000..0bc2d5534 --- /dev/null +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13_2to1_13_1/Protocol1_13_2To1_13_1.java @@ -0,0 +1,82 @@ +package us.myles.ViaVersion.protocols.protocol1_13_2to1_13_1; + +import us.myles.ViaVersion.api.PacketWrapper; +import us.myles.ViaVersion.api.data.UserConnection; +import us.myles.ViaVersion.api.minecraft.item.Item; +import us.myles.ViaVersion.api.protocol.Protocol; +import us.myles.ViaVersion.api.remapper.PacketHandler; +import us.myles.ViaVersion.api.remapper.PacketRemapper; +import us.myles.ViaVersion.api.type.Type; +import us.myles.ViaVersion.packets.State; +import us.myles.ViaVersion.protocols.protocol1_13_2to1_13_1.packets.EntityPackets; +import us.myles.ViaVersion.protocols.protocol1_13_2to1_13_1.packets.InventoryPackets; +import us.myles.ViaVersion.protocols.protocol1_13_2to1_13_1.packets.WorldPackets; +import us.myles.ViaVersion.protocols.protocol1_13_2to1_13_1.types.Particle1_13_2Type; + +public class Protocol1_13_2To1_13_1 extends Protocol { + public static final Particle1_13_2Type PARTICLE_TYPE = new Particle1_13_2Type(); + + @Override + protected void registerPackets() { + InventoryPackets.register(this); + WorldPackets.register(this); + EntityPackets.register(this); + + //Edit Book + registerIncoming(State.PLAY, 0x0B, 0x0B, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.FLAT_ITEM, Type.FLAT_VAR_INT_ITEM); + map(Type.BOOLEAN); + } + }); + + // Advancements + registerOutgoing(State.PLAY, 0x51, 0x51, new PacketRemapper() { + @Override + public void registerMap() { + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + wrapper.passthrough(Type.BOOLEAN); // Reset/clear + int size = wrapper.passthrough(Type.VAR_INT); // Mapping size + + for (int i = 0; i < size; i++) { + wrapper.passthrough(Type.STRING); // Identifier + + // Parent + if (wrapper.passthrough(Type.BOOLEAN)) + wrapper.passthrough(Type.STRING); + + // Display data + if (wrapper.passthrough(Type.BOOLEAN)) { + wrapper.passthrough(Type.STRING); // Title + wrapper.passthrough(Type.STRING); // Description + Item icon = wrapper.read(Type.FLAT_ITEM); + wrapper.write(Type.FLAT_VAR_INT_ITEM, icon); + wrapper.passthrough(Type.VAR_INT); // Frame type + int flags = wrapper.passthrough(Type.INT); // Flags + if ((flags & 1) != 0) + wrapper.passthrough(Type.STRING); // Background texture + wrapper.passthrough(Type.FLOAT); // X + wrapper.passthrough(Type.FLOAT); // Y + } + + wrapper.passthrough(Type.STRING_ARRAY); // Criteria + + int arrayLength = wrapper.passthrough(Type.VAR_INT); + for (int array = 0; array < arrayLength; array++) { + wrapper.passthrough(Type.STRING_ARRAY); // String array + } + } + } + }); + } + }); + } + + @Override + public void init(UserConnection userConnection) { + + } +} diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13_2to1_13_1/packets/EntityPackets.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13_2to1_13_1/packets/EntityPackets.java new file mode 100644 index 000000000..5076c268f --- /dev/null +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13_2to1_13_1/packets/EntityPackets.java @@ -0,0 +1,97 @@ +package us.myles.ViaVersion.protocols.protocol1_13_2to1_13_1.packets; + +import us.myles.ViaVersion.api.PacketWrapper; +import us.myles.ViaVersion.api.minecraft.metadata.Metadata; +import us.myles.ViaVersion.api.minecraft.metadata.types.MetaType1_13; +import us.myles.ViaVersion.api.minecraft.metadata.types.MetaType1_13_2; +import us.myles.ViaVersion.api.protocol.Protocol; +import us.myles.ViaVersion.api.remapper.PacketHandler; +import us.myles.ViaVersion.api.remapper.PacketRemapper; +import us.myles.ViaVersion.api.type.Type; +import us.myles.ViaVersion.api.type.types.version.Types1_13; +import us.myles.ViaVersion.api.type.types.version.Types1_13_2; +import us.myles.ViaVersion.packets.State; + +public class EntityPackets { + + public static void register(Protocol protocol) { + // Spawn mob packet + protocol.registerOutgoing(State.PLAY, 0x3, 0x3, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); // 0 - Entity ID + map(Type.UUID); // 1 - Entity UUID + map(Type.VAR_INT); // 2 - Entity Type + map(Type.DOUBLE); // 3 - X + map(Type.DOUBLE); // 4 - Y + map(Type.DOUBLE); // 5 - Z + map(Type.BYTE); // 6 - Yaw + map(Type.BYTE); // 7 - Pitch + map(Type.BYTE); // 8 - Head Pitch + map(Type.SHORT); // 9 - Velocity X + map(Type.SHORT); // 10 - Velocity Y + map(Type.SHORT); // 11 - Velocity Z + map(Types1_13.METADATA_LIST, Types1_13_2.METADATA_LIST); // 12 - Metadata + + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + for (Metadata metadata : wrapper.get(Types1_13_2.METADATA_LIST, 0)) { + if (metadata.getMetaType() == MetaType1_13.Slot) { + metadata.setMetaType(MetaType1_13_2.Slot); + } + } + } + }); + } + }); + + // Spawn player packet + protocol.registerOutgoing(State.PLAY, 0x05, 0x05, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); // 0 - Entity ID + map(Type.UUID); // 1 - Player UUID + map(Type.DOUBLE); // 2 - X + map(Type.DOUBLE); // 3 - Y + map(Type.DOUBLE); // 4 - Z + map(Type.BYTE); // 5 - Yaw + map(Type.BYTE); // 6 - Pitch + map(Types1_13.METADATA_LIST, Types1_13_2.METADATA_LIST); // 7 - Metadata + + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + for (Metadata metadata : wrapper.get(Types1_13_2.METADATA_LIST, 0)) { + if (metadata.getMetaType() == MetaType1_13.Slot) { + metadata.setMetaType(MetaType1_13_2.Slot); + } + } + } + }); + } + }); + + + // Metadata packet + protocol.registerOutgoing(State.PLAY, 0x3F, 0x3F, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); // 0 - Entity ID + map(Types1_13.METADATA_LIST, Types1_13_2.METADATA_LIST); // 1 - Metadata list + + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + for (Metadata metadata : wrapper.get(Types1_13_2.METADATA_LIST, 0)) { + if (metadata.getMetaType() == MetaType1_13.Slot) { + metadata.setMetaType(MetaType1_13_2.Slot); + } + } + } + }); + } + }); + } + +} diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13_2to1_13_1/packets/InventoryPackets.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13_2to1_13_1/packets/InventoryPackets.java new file mode 100644 index 000000000..faa866127 --- /dev/null +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13_2to1_13_1/packets/InventoryPackets.java @@ -0,0 +1,151 @@ +package us.myles.ViaVersion.protocols.protocol1_13_2to1_13_1.packets; + +import us.myles.ViaVersion.api.PacketWrapper; +import us.myles.ViaVersion.api.protocol.Protocol; +import us.myles.ViaVersion.api.remapper.PacketHandler; +import us.myles.ViaVersion.api.remapper.PacketRemapper; +import us.myles.ViaVersion.api.type.Type; +import us.myles.ViaVersion.packets.State; + +public class InventoryPackets { + + public static void register(Protocol protocol) { + + /* + Outgoing packets + */ + + // Set slot packet + protocol.registerOutgoing(State.PLAY, 0x17, 0x17, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE); // 0 - Window ID + map(Type.SHORT); // 1 - Slot ID + map(Type.FLAT_ITEM, Type.FLAT_VAR_INT_ITEM); // 2 - Slot Value + } + }); + + // Window items packet + protocol.registerOutgoing(State.PLAY, 0x15, 0x15, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.UNSIGNED_BYTE); // 0 - Window ID + map(Type.FLAT_ITEM_ARRAY, Type.FLAT_VAR_INT_ITEM_ARRAY); // 1 - Window Values + } + }); + + // Plugin message + protocol.registerOutgoing(State.PLAY, 0x19, 0x19, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.STRING); // Channel + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + String channel = wrapper.get(Type.STRING, 0); + if (channel.equals("minecraft:trader_list") || channel.equals("trader_list")) { + wrapper.passthrough(Type.INT); // Passthrough Window ID + + int size = wrapper.passthrough(Type.UNSIGNED_BYTE); + for (int i = 0; i < size; i++) { + // Input Item + wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.FLAT_ITEM)); + // Output Item + wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.FLAT_ITEM)); + + boolean secondItem = wrapper.passthrough(Type.BOOLEAN); // Has second item + if (secondItem) { + wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.FLAT_ITEM)); + } + + wrapper.passthrough(Type.BOOLEAN); // Trade disabled + wrapper.passthrough(Type.INT); // Number of tools uses + wrapper.passthrough(Type.INT); // Maximum number of trade uses + } + } + } + }); + } + }); + + // Entity Equipment Packet + protocol.registerOutgoing(State.PLAY, 0x42, 0x42, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); // 0 - Entity ID + map(Type.VAR_INT); // 1 - Slot ID + map(Type.FLAT_ITEM, Type.FLAT_VAR_INT_ITEM); // 2 - Item + } + }); + + // Declare Recipes + protocol.registerOutgoing(State.PLAY, 0x54, 0x54, new PacketRemapper() { + @Override + public void registerMap() { + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + int recipesNo = wrapper.passthrough(Type.VAR_INT); + for (int i = 0; i < recipesNo; i++) { + wrapper.passthrough(Type.STRING); // Id + String type = wrapper.passthrough(Type.STRING); + if (type.equals("crafting_shapeless")) { + wrapper.passthrough(Type.STRING); // Group + int ingredientsNo = wrapper.passthrough(Type.VAR_INT); + for (int i1 = 0; i1 < ingredientsNo; i1++) { + wrapper.write(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT, wrapper.read(Type.FLAT_ITEM_ARRAY_VAR_INT)); + } + wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.FLAT_ITEM)); + } else if (type.equals("crafting_shaped")) { + int ingredientsNo = wrapper.passthrough(Type.VAR_INT) * wrapper.passthrough(Type.VAR_INT); + wrapper.passthrough(Type.STRING); // Group + for (int i1 = 0; i1 < ingredientsNo; i1++) { + wrapper.write(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT, wrapper.read(Type.FLAT_ITEM_ARRAY_VAR_INT)); + } + wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.FLAT_ITEM)); + } else if (type.equals("smelting")) { + wrapper.passthrough(Type.STRING); // Group + // Ingredient start + wrapper.write(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT, wrapper.read(Type.FLAT_ITEM_ARRAY_VAR_INT)); + // Ingredient end + wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.FLAT_ITEM)); + wrapper.passthrough(Type.FLOAT); // EXP + wrapper.passthrough(Type.VAR_INT); // Cooking time + } + } + } + }); + } + }); + + + /* + Incoming packets + */ + + // Click window packet + protocol.registerIncoming(State.PLAY, 0x08, 0x08, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.UNSIGNED_BYTE); // 0 - Window ID + map(Type.SHORT); // 1 - Slot + map(Type.BYTE); // 2 - Button + map(Type.SHORT); // 3 - Action number + map(Type.VAR_INT); // 4 - Mode + map(Type.FLAT_VAR_INT_ITEM, Type.FLAT_ITEM); // 5 - Clicked Item + } + } + ); + + // Creative Inventory Action + protocol.registerIncoming(State.PLAY, 0x24, 0x24, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.SHORT); // 0 - Slot + map(Type.FLAT_VAR_INT_ITEM, Type.FLAT_ITEM); // 1 - Clicked Item + } + } + ); + } + +} diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13_2to1_13_1/packets/WorldPackets.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13_2to1_13_1/packets/WorldPackets.java new file mode 100644 index 000000000..b62319af7 --- /dev/null +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13_2to1_13_1/packets/WorldPackets.java @@ -0,0 +1,40 @@ +package us.myles.ViaVersion.protocols.protocol1_13_2to1_13_1.packets; + +import us.myles.ViaVersion.api.PacketWrapper; +import us.myles.ViaVersion.api.protocol.Protocol; +import us.myles.ViaVersion.api.remapper.PacketHandler; +import us.myles.ViaVersion.api.remapper.PacketRemapper; +import us.myles.ViaVersion.api.type.Type; +import us.myles.ViaVersion.packets.State; + +public class WorldPackets { + + public static void register(Protocol protocol) { + //spawn particle + protocol.registerOutgoing(State.PLAY, 0x24, 0x24, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // 0 - Particle ID + map(Type.BOOLEAN); // 1 - Long Distance + map(Type.FLOAT); // 2 - X + map(Type.FLOAT); // 3 - Y + map(Type.FLOAT); // 4 - Z + map(Type.FLOAT); // 5 - Offset X + map(Type.FLOAT); // 6 - Offset Y + map(Type.FLOAT); // 7 - Offset Z + map(Type.FLOAT); // 8 - Particle Data + map(Type.INT); // 9 - Particle Count + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + int id = wrapper.get(Type.INT, 0); + if (id == 27) { + wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.FLAT_ITEM)); + } + } + }); + } + }); + } + +} diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13_2to1_13_1/types/Particle1_13_2Type.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13_2to1_13_1/types/Particle1_13_2Type.java new file mode 100644 index 000000000..7f53c1b28 --- /dev/null +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13_2to1_13_1/types/Particle1_13_2Type.java @@ -0,0 +1,44 @@ +package us.myles.ViaVersion.protocols.protocol1_13_2to1_13_1.types; + +import io.netty.buffer.ByteBuf; +import us.myles.ViaVersion.api.type.Type; +import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.data.Particle; + +public class Particle1_13_2Type extends Type { + public Particle1_13_2Type() { + super("Particle", Particle.class); + } + + @Override + public void write(ByteBuf buffer, Particle object) throws Exception { + Type.VAR_INT.write(buffer, object.getId()); + for (Particle.ParticleData data : object.getArguments()) + data.getType().write(buffer, data.getValue()); + } + + @Override + public Particle read(ByteBuf buffer) throws Exception { + int type = Type.VAR_INT.read(buffer); + Particle particle = new Particle(type); + + switch (type) { + // Block / Falling Dust / + case 3: + case 20: + particle.getArguments().add(new Particle.ParticleData(Type.VAR_INT, Type.VAR_INT.read(buffer))); // Flat Block + break; + // Dust + case 11: + particle.getArguments().add(new Particle.ParticleData(Type.FLOAT, Type.FLOAT.read(buffer))); // Red 0 - 1 + particle.getArguments().add(new Particle.ParticleData(Type.FLOAT, Type.FLOAT.read(buffer))); // Green 0 - 1 + particle.getArguments().add(new Particle.ParticleData(Type.FLOAT, Type.FLOAT.read(buffer))); // Blue 0 - 1 + particle.getArguments().add(new Particle.ParticleData(Type.FLOAT, Type.FLOAT.read(buffer)));// Scale 0.01 - 4 + break; + // Item + case 27: + particle.getArguments().add(new Particle.ParticleData(Type.FLAT_VAR_INT_ITEM, Type.FLAT_VAR_INT_ITEM.read(buffer))); // Flat item + break; + } + return particle; + } +}