clean up mapping classes
This commit is contained in:
parent
0ca276b561
commit
7ec9c174a1
7 changed files with 50 additions and 55 deletions
|
@ -138,21 +138,21 @@ import common.world.State;
|
|||
|
||||
public abstract class BlockRegistry {
|
||||
private static final String AIR_ID = "air";
|
||||
public static final Mapping<String, Block> REGISTRY = new Mapping(AIR_ID);
|
||||
public static final Mapping<Block> REGISTRY = new Mapping(AIR_ID);
|
||||
public static final ObjectIntIdentityMap<State> STATEMAP = new ObjectIntIdentityMap();
|
||||
|
||||
private static int nextBlockId = 1;
|
||||
|
||||
public static int getIdFromBlock(Block block) {
|
||||
return REGISTRY.getIDForObject(block);
|
||||
return REGISTRY.getId(block);
|
||||
}
|
||||
|
||||
public static String getNameFromBlock(Block block) {
|
||||
return REGISTRY.getNameForObject(block);
|
||||
return REGISTRY.getName(block);
|
||||
}
|
||||
|
||||
public static String getNameFromFluid(BlockLiquid block) {
|
||||
return REGISTRY.getNameForObject(block instanceof BlockDynamicLiquid dy ? dy.getStaticBlock() : block);
|
||||
return REGISTRY.getName(block instanceof BlockDynamicLiquid dy ? dy.getStaticBlock() : block);
|
||||
}
|
||||
|
||||
public static int getStateId(State state) {
|
||||
|
@ -161,7 +161,7 @@ public abstract class BlockRegistry {
|
|||
}
|
||||
|
||||
public static Block getBlockById(int id) {
|
||||
return REGISTRY.getObjectById(id);
|
||||
return REGISTRY.byId(id);
|
||||
}
|
||||
|
||||
public static State getStateById(int id) {
|
||||
|
@ -176,7 +176,7 @@ public abstract class BlockRegistry {
|
|||
String[] tok = name.split(":");
|
||||
if(tok.length < 1 || tok.length > 2)
|
||||
return def;
|
||||
Block block = REGISTRY.getObjectExact(tok[0]);
|
||||
Block block = REGISTRY.byNameExact(tok[0]);
|
||||
if(block == null)
|
||||
return def;
|
||||
byte data;
|
||||
|
@ -198,7 +198,7 @@ public abstract class BlockRegistry {
|
|||
}
|
||||
|
||||
public static Block getRegisteredBlock(String name) {
|
||||
return REGISTRY.getObject(name);
|
||||
return REGISTRY.byName(name);
|
||||
}
|
||||
|
||||
static void register() {
|
||||
|
@ -216,7 +216,7 @@ public abstract class BlockRegistry {
|
|||
|
||||
for(Block block : REGISTRY) {
|
||||
for(State state : block.getValidStates()) {
|
||||
STATEMAP.put(state, REGISTRY.getIDForObject(block) << 4 | block.getMetaFromState(state));
|
||||
STATEMAP.put(state, REGISTRY.getId(block) << 4 | block.getMetaFromState(state));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -580,9 +580,9 @@ public abstract class Blocks {
|
|||
public static final BlockOre zinc_ore = get("zinc_ore");
|
||||
|
||||
private static <T extends Block> T get(String id) {
|
||||
if(!BlockRegistry.REGISTRY.containsKey(id))
|
||||
if(!BlockRegistry.REGISTRY.has(id))
|
||||
throw new RuntimeException("Block " + id + " existiert nicht");
|
||||
return (T)BlockRegistry.REGISTRY.getObject(id);
|
||||
return (T)BlockRegistry.REGISTRY.byName(id);
|
||||
}
|
||||
|
||||
static {
|
||||
|
|
|
@ -124,22 +124,22 @@ import common.util.Util;
|
|||
import common.world.Weather;
|
||||
|
||||
public abstract class ItemRegistry {
|
||||
public static final Mapping<String, Item> REGISTRY = new Mapping();
|
||||
public static final Mapping<Item> REGISTRY = new Mapping();
|
||||
public static final Map<Block, ItemBlock> BLOCKMAP = Maps.<Block, ItemBlock>newHashMap();
|
||||
public static final Set<Block> SPECIALIZED = Sets.<Block>newHashSet();
|
||||
|
||||
private static int nextItemId = 4096;
|
||||
|
||||
public static int getIdFromItem(Item item) {
|
||||
return item == null ? 0 : REGISTRY.getIDForObject(item);
|
||||
return item == null ? 0 : REGISTRY.getId(item);
|
||||
}
|
||||
|
||||
public static String getNameFromItem(Item item) {
|
||||
return REGISTRY.getNameForObject(item);
|
||||
return REGISTRY.getName(item);
|
||||
}
|
||||
|
||||
public static Item getItemById(int id) {
|
||||
return REGISTRY.getObjectById(id);
|
||||
return REGISTRY.byId(id);
|
||||
}
|
||||
|
||||
public static ItemBlock getItemFromBlock(Block block) {
|
||||
|
@ -147,13 +147,13 @@ public abstract class ItemRegistry {
|
|||
}
|
||||
|
||||
public static Item getRegisteredItem(String name) {
|
||||
return REGISTRY.getObject(name);
|
||||
return REGISTRY.byName(name);
|
||||
}
|
||||
|
||||
public static ItemStack getFromIdName(String name, ItemStack def) {
|
||||
if(name == null)
|
||||
return def;
|
||||
Item item = REGISTRY.getObject(name);
|
||||
Item item = REGISTRY.byName(name);
|
||||
if(item == null)
|
||||
return def;
|
||||
return new ItemStack(item);
|
||||
|
|
|
@ -897,9 +897,9 @@ public abstract class Items {
|
|||
public static final ItemFishFood pufferfish = get("pufferfish");
|
||||
|
||||
private static <T extends Item> T get(String id) {
|
||||
if(!ItemRegistry.REGISTRY.containsKey(id))
|
||||
if(!ItemRegistry.REGISTRY.has(id))
|
||||
throw new RuntimeException("Gegenstand " + id + " existiert nicht");
|
||||
return (T)ItemRegistry.REGISTRY.getObject(id);
|
||||
return (T)ItemRegistry.REGISTRY.byName(id);
|
||||
}
|
||||
|
||||
static {
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
package common.util;
|
||||
|
||||
public interface IObjectIntIterable<T> extends Iterable<T>
|
||||
{
|
||||
}
|
|
@ -8,17 +8,17 @@ import java.util.Set;
|
|||
import common.collect.BiMap;
|
||||
import common.collect.HashBiMap;
|
||||
|
||||
public class Mapping<K, V> implements Iterable<V>, IObjectIntIterable<V> {
|
||||
private final Map<K, V> mapping = HashBiMap.<K, V>create();
|
||||
private final ObjectIntIdentityMap<V> idmap = new ObjectIntIdentityMap();
|
||||
private final Map<V, K> namemap;
|
||||
private final K defaultKey;
|
||||
public class Mapping<V> implements Iterable<V> {
|
||||
private final Map<String, V> mapping = HashBiMap.<String, V>create();
|
||||
private final ObjectIntIdentityMap<V> idMap = new ObjectIntIdentityMap();
|
||||
private final Map<V, String> nameMap;
|
||||
private final String defaultKey;
|
||||
|
||||
private V defaultValue;
|
||||
private boolean registered;
|
||||
|
||||
public Mapping(K def) {
|
||||
this.namemap = ((BiMap)this.mapping).inverse();
|
||||
public Mapping(String def) {
|
||||
this.nameMap = ((BiMap)this.mapping).inverse();
|
||||
this.defaultKey = def;
|
||||
}
|
||||
|
||||
|
@ -26,7 +26,7 @@ public class Mapping<K, V> implements Iterable<V>, IObjectIntIterable<V> {
|
|||
this(null);
|
||||
}
|
||||
|
||||
public void register(int id, K key, V value) {
|
||||
public void register(int id, String key, V value) {
|
||||
if(this.registered)
|
||||
throw new IllegalStateException("Es können keine neuen Werte registriert werden");
|
||||
if(key == null)
|
||||
|
@ -35,10 +35,10 @@ public class Mapping<K, V> implements Iterable<V>, IObjectIntIterable<V> {
|
|||
throw new NullPointerException("Wert ist null");
|
||||
if(this.mapping.containsKey(key))
|
||||
throw new IllegalArgumentException(
|
||||
"Schlüssel " + String.valueOf(key) + " ist bereits mit ID " + this.idmap.get(this.mapping.get(key)) + " registriert");
|
||||
if(this.idmap.getByValue(id) != null)
|
||||
throw new IllegalArgumentException("ID " + id + " ist bereits mit Name " + this.namemap.get(this.idmap.getByValue(id)) + " registriert");
|
||||
this.idmap.put(value, id);
|
||||
"Schlüssel " + key + " ist bereits mit ID " + this.idMap.get(this.mapping.get(key)) + " registriert");
|
||||
if(this.idMap.getByValue(id) != null)
|
||||
throw new IllegalArgumentException("ID " + id + " ist bereits mit Name " + this.nameMap.get(this.idMap.getByValue(id)) + " registriert");
|
||||
this.idMap.put(value, id);
|
||||
this.mapping.put(key, value);
|
||||
if(key.equals(this.defaultKey))
|
||||
this.defaultValue = value;
|
||||
|
@ -50,41 +50,41 @@ public class Mapping<K, V> implements Iterable<V>, IObjectIntIterable<V> {
|
|||
this.registered = true;
|
||||
}
|
||||
|
||||
public Set<K> getKeys() {
|
||||
return Collections.<K>unmodifiableSet(this.mapping.keySet());
|
||||
public Set<String> getKeys() {
|
||||
return Collections.<String>unmodifiableSet(this.mapping.keySet());
|
||||
}
|
||||
|
||||
public V getObject(K name) {
|
||||
public V byName(String name) {
|
||||
V v = this.mapping.get(name);
|
||||
return v == null ? this.defaultValue : v;
|
||||
}
|
||||
|
||||
public V getObjectExact(K name) {
|
||||
public V byNameExact(String name) {
|
||||
return this.mapping.get(name);
|
||||
}
|
||||
|
||||
public K getNameForObject(V value) {
|
||||
return this.namemap.get(value);
|
||||
public String getName(V value) {
|
||||
return this.nameMap.get(value);
|
||||
}
|
||||
|
||||
public boolean containsKey(K key) {
|
||||
return this.mapping.containsKey(key);
|
||||
}
|
||||
|
||||
public int getIDForObject(V value) {
|
||||
return this.idmap.get(value);
|
||||
}
|
||||
|
||||
public V getObjectById(int id) {
|
||||
V v = this.idmap.getByValue(id);
|
||||
public V byId(int id) {
|
||||
V v = this.idMap.getByValue(id);
|
||||
return v == null ? this.defaultValue : v;
|
||||
}
|
||||
|
||||
public V getObjectExact(int id) {
|
||||
return this.idmap.getByValue(id);
|
||||
public V byIdExact(int id) {
|
||||
return this.idMap.getByValue(id);
|
||||
}
|
||||
|
||||
public int getId(V value) {
|
||||
return this.idMap.get(value);
|
||||
}
|
||||
|
||||
public boolean has(String key) {
|
||||
return this.mapping.containsKey(key);
|
||||
}
|
||||
|
||||
public Iterator<V> iterator() {
|
||||
return this.idmap.iterator();
|
||||
return this.idMap.iterator();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@ import java.util.List;
|
|||
import common.collect.Iterators;
|
||||
import common.collect.Lists;
|
||||
|
||||
public class ObjectIntIdentityMap<T> implements IObjectIntIterable<T>
|
||||
public class ObjectIntIdentityMap<T> implements Iterable<T>
|
||||
{
|
||||
private final IdentityHashMap<T, Integer> identityMap = new IdentityHashMap(512);
|
||||
private final List<T> objectList = Lists.<T>newArrayList();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue