clean up mapping classes

This commit is contained in:
Sen 2025-06-22 19:02:08 +02:00
parent 0ca276b561
commit 7ec9c174a1
Signed by: sen
GPG key ID: 3AC50A6F47D1B722
7 changed files with 50 additions and 55 deletions

View file

@ -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));
}
}

View file

@ -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 {

View file

@ -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);

View file

@ -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 {

View file

@ -1,5 +0,0 @@
package common.util;
public interface IObjectIntIterable<T> extends Iterable<T>
{
}

View file

@ -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();
}
}

View file

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