diff --git a/common/src/main/java/common/init/BlockRegistry.java b/common/src/main/java/common/init/BlockRegistry.java index 018a6f22..447443f1 100755 --- a/common/src/main/java/common/init/BlockRegistry.java +++ b/common/src/main/java/common/init/BlockRegistry.java @@ -131,7 +131,7 @@ import common.color.DyeColor; import common.item.CheatTab; import common.log.Log; import common.model.TextureAnimation; -import common.util.ObjectIntIdentityMap; +import common.util.IdMap; import common.util.Mapping; import common.util.Util; import common.world.State; @@ -139,7 +139,7 @@ import common.world.State; public abstract class BlockRegistry { private static final String AIR_ID = "air"; public static final Mapping REGISTRY = new Mapping(AIR_ID); - public static final ObjectIntIdentityMap STATEMAP = new ObjectIntIdentityMap(); + public static final IdMap STATEMAP = new IdMap(); private static int nextBlockId = 1; diff --git a/common/src/main/java/common/util/IdMap.java b/common/src/main/java/common/util/IdMap.java new file mode 100755 index 00000000..d99576dd --- /dev/null +++ b/common/src/main/java/common/util/IdMap.java @@ -0,0 +1,34 @@ +package common.util; + +import java.util.IdentityHashMap; +import java.util.Iterator; +import java.util.List; + +import common.collect.Iterators; +import common.collect.Lists; + +public class IdMap implements Iterable { + private final IdentityHashMap mapping = new IdentityHashMap(512); + private final List list = Lists.newArrayList(); + + public void put(T key, int value) { + this.mapping.put(key, value); + while(this.list.size() <= value) { + this.list.add(null); + } + this.list.set(value, key); + } + + public int get(T key) { + Integer i = this.mapping.get(key); + return i == null ? -1 : i.intValue(); + } + + public final T getByValue(int value) { + return value >= 0 && value < this.list.size() ? this.list.get(value) : null; + } + + public Iterator iterator() { + return Iterators.filter(this.list.iterator(), Predicates.notNull()); + } +} diff --git a/common/src/main/java/common/util/Mapping.java b/common/src/main/java/common/util/Mapping.java index 2944f626..1f8f269d 100755 --- a/common/src/main/java/common/util/Mapping.java +++ b/common/src/main/java/common/util/Mapping.java @@ -10,7 +10,7 @@ import common.collect.HashBiMap; public class Mapping implements Iterable { private final Map mapping = HashBiMap.create(); - private final ObjectIntIdentityMap idMap = new ObjectIntIdentityMap(); + private final IdMap idMap = new IdMap(); private final Map nameMap; private final String defaultKey; @@ -46,7 +46,7 @@ public class Mapping implements Iterable { public void finish() { if(this.defaultKey != null && this.defaultValue == null) - throw new NullPointerException("Standard-Wert zu Standard-Schlüssel ist null"); + throw new NullPointerException("Wert zu Standard-Schlüssel " + this.defaultKey + " ist nicht vorhanden"); this.registered = true; } diff --git a/common/src/main/java/common/util/ObjectIntIdentityMap.java b/common/src/main/java/common/util/ObjectIntIdentityMap.java deleted file mode 100755 index 514c5b4a..00000000 --- a/common/src/main/java/common/util/ObjectIntIdentityMap.java +++ /dev/null @@ -1,42 +0,0 @@ -package common.util; - -import java.util.IdentityHashMap; -import java.util.Iterator; -import java.util.List; - -import common.collect.Iterators; -import common.collect.Lists; - -public class ObjectIntIdentityMap implements Iterable -{ - private final IdentityHashMap identityMap = new IdentityHashMap(512); - private final List objectList = Lists.newArrayList(); - - public void put(T key, int value) - { - this.identityMap.put(key, value); - - while (this.objectList.size() <= value) - { - this.objectList.add(null); - } - - this.objectList.set(value, key); - } - - public int get(T key) - { - Integer integer = (Integer)this.identityMap.get(key); - return integer == null ? -1 : integer.intValue(); - } - - public final T getByValue(int value) - { - return (T)(value >= 0 && value < this.objectList.size() ? this.objectList.get(value) : null); - } - - public Iterator iterator() - { - return Iterators.filter(this.objectList.iterator(), Predicates.notNull()); - } -}