You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

153 lines
6.0 KiB

--- ../src-base/minecraft/net/minecraft/entity/DataWatcher.java
+++ ../src-work/minecraft/net/minecraft/entity/DataWatcher.java
@@ -22,12 +22,22 @@
{
private final Entity field_151511_a;
private boolean isBlank = true;
- private static final HashMap dataTypes = new HashMap();
- private final Map watchedObjects = new HashMap();
+
+// private static final HashMap dataTypes = new HashMap();
+// private final Map watchedObjects = new HashMap();
+
private boolean objectChanged;
private ReadWriteLock lock = new ReentrantReadWriteLock();
private static final String __OBFID = "CL_00001559";
+ // Spigot Start
+ private static final gnu.trove.map.TObjectIntMap classToId = new gnu.trove.map.hash.TObjectIntHashMap( 10, 0.5f, -1 );
+ private final gnu.trove.map.TIntObjectMap dataValues = new gnu.trove.map.hash.TIntObjectHashMap( 10, 0.5f, -1 );
+ // These exist as an attempt at backwards compatability for (broken) NMS plugins
+ private static final Map dataTypes = gnu.trove.TDecorators.wrap( classToId );
+ private final Map watchedObjects = gnu.trove.TDecorators.wrap( dataValues );
+ // Spigot End
+
public DataWatcher(Entity p_i45313_1_)
{
this.field_151511_a = p_i45313_1_;
@@ -35,9 +45,9 @@
public void addObject(int p_75682_1_, Object p_75682_2_)
{
- Integer integer = (Integer)dataTypes.get(p_75682_2_.getClass());
+ int integer = classToId.get(p_75682_2_.getClass());
- if (integer == null)
+ if (integer == -1)
{
throw new IllegalArgumentException("Unknown data type: " + p_75682_2_.getClass());
}
@@ -45,15 +55,15 @@
{
throw new IllegalArgumentException("Data value id is too big with " + p_75682_1_ + "! (Max is " + 31 + ")");
}
- else if (this.watchedObjects.containsKey(Integer.valueOf(p_75682_1_)))
+ else if (this.dataValues.containsKey(p_75682_1_))
{
throw new IllegalArgumentException("Duplicate id value for " + p_75682_1_ + "!");
}
else
{
- DataWatcher.WatchableObject watchableobject = new DataWatcher.WatchableObject(integer.intValue(), p_75682_1_, p_75682_2_);
+ DataWatcher.WatchableObject watchableobject = new DataWatcher.WatchableObject(integer, p_75682_1_, p_75682_2_);
this.lock.writeLock().lock();
- this.watchedObjects.put(Integer.valueOf(p_75682_1_), watchableobject);
+ this.dataValues.put(p_75682_1_, watchableobject);
this.lock.writeLock().unlock();
this.isBlank = false;
}
@@ -63,7 +73,7 @@
{
DataWatcher.WatchableObject watchableobject = new DataWatcher.WatchableObject(p_82709_2_, p_82709_1_, (Object)null);
this.lock.writeLock().lock();
- this.watchedObjects.put(Integer.valueOf(p_82709_1_), watchableobject);
+ this.dataValues.put(p_82709_1_, watchableobject);
this.lock.writeLock().unlock();
this.isBlank = false;
}
@@ -105,7 +115,7 @@
try
{
- watchableobject = (DataWatcher.WatchableObject)this.watchedObjects.get(Integer.valueOf(p_75691_1_));
+ watchableobject = (DataWatcher.WatchableObject)this.dataValues.get(p_75691_1_);
}
catch (Throwable throwable)
{
@@ -166,7 +176,7 @@
if (this.objectChanged)
{
this.lock.readLock().lock();
- Iterator iterator = this.watchedObjects.values().iterator();
+ Iterator iterator = this.dataValues.valueCollection().iterator();
while (iterator.hasNext())
{
@@ -195,7 +205,7 @@
public void func_151509_a(PacketBuffer p_151509_1_) throws IOException
{
this.lock.readLock().lock();
- Iterator iterator = this.watchedObjects.values().iterator();
+ Iterator iterator = this.dataValues.valueCollection().iterator();
while (iterator.hasNext())
{
@@ -209,9 +219,9 @@
public List getAllWatched()
{
- ArrayList arraylist = null;
+ ArrayList arraylist = new ArrayList();
this.lock.readLock().lock();
- DataWatcher.WatchableObject watchableobject;
+ /*DataWatcher.WatchableObject watchableobject;
for (Iterator iterator = this.watchedObjects.values().iterator(); iterator.hasNext(); arraylist.add(watchableobject))
{
@@ -221,7 +231,8 @@
{
arraylist = new ArrayList();
}
- }
+ }*/
+ arraylist.addAll(this.dataValues.valueCollection());
this.lock.readLock().unlock();
return arraylist;
@@ -318,7 +329,7 @@
while (iterator.hasNext())
{
DataWatcher.WatchableObject watchableobject = (DataWatcher.WatchableObject)iterator.next();
- DataWatcher.WatchableObject watchableobject1 = (DataWatcher.WatchableObject)this.watchedObjects.get(Integer.valueOf(watchableobject.getDataValueId()));
+ DataWatcher.WatchableObject watchableobject1 = (DataWatcher.WatchableObject)this.dataValues.get(watchableobject.getDataValueId());
if (watchableobject1 != null)
{
@@ -343,13 +354,13 @@
static
{
- dataTypes.put(Byte.class, Integer.valueOf(0));
- dataTypes.put(Short.class, Integer.valueOf(1));
- dataTypes.put(Integer.class, Integer.valueOf(2));
- dataTypes.put(Float.class, Integer.valueOf(3));
- dataTypes.put(String.class, Integer.valueOf(4));
- dataTypes.put(ItemStack.class, Integer.valueOf(5));
- dataTypes.put(ChunkCoordinates.class, Integer.valueOf(6));
+ classToId.put(Byte.class, 0);
+ classToId.put(Short.class, 1);
+ classToId.put(Integer.class, 2);
+ classToId.put(Float.class, 3);
+ classToId.put(String.class, 4);
+ classToId.put(ItemStack.class, 5);
+ classToId.put(ChunkCoordinates.class, 6);
}
public static class WatchableObject
@@ -398,4 +409,4 @@
this.watched = p_75671_1_;
}
}
-}
+}