From bde4749e2c3b9f282ff254a85a8c656e857fe318 Mon Sep 17 00:00:00 2001 From: Jesse Boyd Date: Thu, 15 Dec 2016 18:32:19 +1100 Subject: [PATCH] Only instantiate packets for the required versions --- .../fawe/bukkit/v1_7/BukkitQueue17.java | 66 ++++++++++--------- 1 file changed, 35 insertions(+), 31 deletions(-) diff --git a/bukkit/src/main/java/com/boydti/fawe/bukkit/v1_7/BukkitQueue17.java b/bukkit/src/main/java/com/boydti/fawe/bukkit/v1_7/BukkitQueue17.java index 7bcb65a9..e46b06f7 100644 --- a/bukkit/src/main/java/com/boydti/fawe/bukkit/v1_7/BukkitQueue17.java +++ b/bukkit/src/main/java/com/boydti/fawe/bukkit/v1_7/BukkitQueue17.java @@ -275,45 +275,49 @@ public class BukkitQueue17 extends BukkitQueue_0 packets = null; int mask = fc.getBitMask(); if (mask == 0 || mask == 65535 && hasEntities(nmsChunk)) { - PacketPlayOutMapChunk packet = new PacketPlayOutMapChunk(nmsChunk, false, 65280, 5); - HashMap customPackets = null; for (EntityPlayer player : players) { - int version = player.playerConnection.networkManager.getVersion(); - if (version != 5) { - if (customPackets == null) { - customPackets = new HashMap<>(); + int currentVersion = player.playerConnection.networkManager.getVersion(); + if (currentVersion != version) { + if (packet != null) { + if (packets == null) { + packets = new HashMap<>(); + } + packets.put(version, packet); + packet = packets.get(currentVersion); } - PacketPlayOutMapChunk customPacket = customPackets.get(version); - if (customPacket == null) { - customPacket = new PacketPlayOutMapChunk(nmsChunk, false, 65280, version); - customPackets.put(version, customPacket); + version = currentVersion; + if (packet == null) { + packet = new PacketPlayOutMapChunk(nmsChunk, false, 65280, version); } - player.playerConnection.sendPacket(customPacket); - } else { - player.playerConnection.sendPacket(packet); } - } - mask = 255; - } - PacketPlayOutMapChunk packet = new PacketPlayOutMapChunk(nmsChunk, false, mask, 5); - HashMap customPackets = null; - for (EntityPlayer player : players) { - int version = player.playerConnection.networkManager.getVersion(); - if (version != 5) { - if (customPackets == null) { - customPackets = new HashMap<>(); - } - PacketPlayOutMapChunk customPacket = customPackets.get(version); - if (customPacket == null) { - customPacket = new PacketPlayOutMapChunk(nmsChunk, false, mask, version); - customPackets.put(version, customPacket); - } - player.playerConnection.sendPacket(customPacket); - } else { player.playerConnection.sendPacket(packet); } + mask = 255; + version = -1; + packet = null; + packets = null; + } + for (EntityPlayer player : players) { + int currentVersion = player.playerConnection.networkManager.getVersion(); + if (currentVersion != version) { + if (packet != null) { + if (packets == null) { + packets = new HashMap<>(); + } + packets.put(version, packet); + packet = packets.get(currentVersion); + } + version = currentVersion; + if (packet == null) { + packet = new PacketPlayOutMapChunk(nmsChunk, false, mask, version); + } + } + player.playerConnection.sendPacket(packet); } } catch (Throwable e) { MainUtil.handleError(e);