35 lines
671 B
Java
35 lines
671 B
Java
package net.minecraft.core;
|
|
|
|
import org.jetbrains.annotations.Nullable;
|
|
|
|
public interface IdMap<T> extends Iterable<T> {
|
|
int DEFAULT = -1;
|
|
|
|
/**
|
|
* @return the integer ID used to identify the given object
|
|
*/
|
|
int getId(T value);
|
|
|
|
@Nullable
|
|
T byId(int id);
|
|
|
|
default T byIdOrThrow(int id) {
|
|
T object = this.byId(id);
|
|
if (object == null) {
|
|
throw new IllegalArgumentException("No value with id " + id);
|
|
} else {
|
|
return object;
|
|
}
|
|
}
|
|
|
|
default int getIdOrThrow(T value) {
|
|
int i = this.getId(value);
|
|
if (i == -1) {
|
|
throw new IllegalArgumentException("Can't find id for '" + value + "' in map " + this);
|
|
} else {
|
|
return i;
|
|
}
|
|
}
|
|
|
|
int size();
|
|
}
|