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] 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<>();