diff --git a/modules/API/src/main/java/com/comphenix/protocol/injector/netty/NettyProtocolRegistry.java b/modules/API/src/main/java/com/comphenix/protocol/injector/netty/NettyProtocolRegistry.java index 5b0baf6b..01774a36 100644 --- a/modules/API/src/main/java/com/comphenix/protocol/injector/netty/NettyProtocolRegistry.java +++ b/modules/API/src/main/java/com/comphenix/protocol/injector/netty/NettyProtocolRegistry.java @@ -40,7 +40,7 @@ public class NettyProtocolRegistry extends ProtocolRegistry { @Override protected synchronized void initialize() { - ProtocolLogger.debug("NettyProtocolRegistry#initialize()"); // Debug for issue #202 + ProtocolLogger.debug("Initializing the Netty protocol registry"); // Debug for issue #202 Object[] protocols = enumProtocol.getEnumConstants(); diff --git a/modules/API/src/main/java/com/comphenix/protocol/injector/netty/ProtocolRegistry.java b/modules/API/src/main/java/com/comphenix/protocol/injector/netty/ProtocolRegistry.java index 1b3da48c..47bc7a35 100644 --- a/modules/API/src/main/java/com/comphenix/protocol/injector/netty/ProtocolRegistry.java +++ b/modules/API/src/main/java/com/comphenix/protocol/injector/netty/ProtocolRegistry.java @@ -19,7 +19,7 @@ import com.google.common.collect.Sets; * Represents a way of accessing the new netty Protocol enum. * @author Kristian */ -// TODO: Handle modifications to the BiMap + public abstract class ProtocolRegistry { /** * Represents a register we are currently building. @@ -97,7 +97,7 @@ public abstract class ProtocolRegistry { * This operation may block the calling thread. */ public synchronized void synchronize() { - // See if the register is outdated + // Check if the packet registry has changed if (register.isOutdated()) { initialize(); } diff --git a/modules/API/src/main/java/com/comphenix/protocol/injector/packet/MapContainer.java b/modules/API/src/main/java/com/comphenix/protocol/injector/packet/MapContainer.java index 2cdbc357..9d0732c5 100644 --- a/modules/API/src/main/java/com/comphenix/protocol/injector/packet/MapContainer.java +++ b/modules/API/src/main/java/com/comphenix/protocol/injector/packet/MapContainer.java @@ -3,6 +3,7 @@ package com.comphenix.protocol.injector.packet; import java.lang.reflect.Field; import com.comphenix.protocol.reflect.FieldUtils; +import static com.google.common.base.Preconditions.checkNotNull; /** * Represents a class that can detect if a map has changed. @@ -10,17 +11,20 @@ import com.comphenix.protocol.reflect.FieldUtils; */ public class MapContainer { // For detecting changes - private Field modCountField; + private final Field modCountField; private int lastModCount; // The object along with whether or not this is the initial run - private Object source; + private final Object source; private boolean changed; public MapContainer(Object source) { this.source = source; - this.changed = true; - this.modCountField = FieldUtils.getField(source.getClass(), "modCount", true); + this.changed = false; + + Field modCountField = FieldUtils.getField(source.getClass(), "modCount", true); + this.modCountField = checkNotNull(modCountField, "Could not obtain modCount field"); + this.lastModCount = getModificationCount(); } /** @@ -55,13 +59,13 @@ public class MapContainer { /** * Retrieve the current modification count. - * @return The current count, or something different than lastModCount if not accessible. + * @return The current count */ private int getModificationCount() { try { - return modCountField != null ? modCountField.getInt(source) : lastModCount + 1; - } catch (Exception e) { - throw new RuntimeException("Unable to retrieve modCount.", e); + return modCountField.getInt(source); + } catch (ReflectiveOperationException ex) { + throw new RuntimeException("Unable to retrieve modCount.", ex); } } }