2021-07-27 09:40:57 +02:00
|
|
|
package net.minestom.server.item;
|
|
|
|
|
2021-07-30 15:08:06 +02:00
|
|
|
import com.google.gson.JsonObject;
|
2021-07-27 09:40:57 +02:00
|
|
|
import net.minestom.server.registry.Registry;
|
|
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
|
|
2021-07-30 15:08:06 +02:00
|
|
|
import java.util.Collection;
|
|
|
|
|
2021-07-27 09:40:57 +02:00
|
|
|
final class MaterialImpl implements Material {
|
2021-07-30 15:08:06 +02:00
|
|
|
private static final Registry.Loader<Material> LOADER = new Registry.Loader<>();
|
|
|
|
|
|
|
|
static Material get(@NotNull String namespace) {
|
|
|
|
return LOADER.get(namespace);
|
|
|
|
}
|
|
|
|
|
|
|
|
static Material getSafe(@NotNull String namespace) {
|
|
|
|
return LOADER.getSafe(namespace);
|
|
|
|
}
|
|
|
|
|
|
|
|
static Material getId(int id) {
|
|
|
|
return LOADER.getId(id);
|
|
|
|
}
|
|
|
|
|
|
|
|
static Collection<Material> values() {
|
|
|
|
return LOADER.values();
|
|
|
|
}
|
|
|
|
|
|
|
|
static {
|
|
|
|
// Load data from file
|
|
|
|
JsonObject materials = Registry.load(Registry.Resource.ITEMS);
|
|
|
|
materials.entrySet().forEach(entry -> {
|
|
|
|
final String namespace = entry.getKey();
|
|
|
|
final JsonObject materialObject = entry.getValue().getAsJsonObject();
|
|
|
|
LOADER.register(new MaterialImpl(Registry.material(namespace, materialObject, null)));
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2021-07-27 09:40:57 +02:00
|
|
|
private final Registry.MaterialEntry registry;
|
|
|
|
|
|
|
|
MaterialImpl(Registry.MaterialEntry registry) {
|
|
|
|
this.registry = registry;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public @NotNull Registry.MaterialEntry registry() {
|
|
|
|
return registry;
|
|
|
|
}
|
|
|
|
}
|