com.github.shynixn.petblocks.bukkit.lib.LightRegistry Maven / Gradle / Ivy
package com.github.shynixn.petblocks.bukkit.lib;
import org.bukkit.Bukkit;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
@SuppressWarnings("unused")
@Deprecated
public enum LightRegistry {
RABBIT(101, "RABBIT", "Rabbit", "rabbit", "EntityRabbit"),
HORSE(100, "HORSE", "Horse", "Horse", "EntityHorse"),
ZOMBIE(54, "ZOMBIE", "Zombie", "zombie", "EntityZombie");
final int entityId;
final String name;
final String saveGame_18_19_10;
final String saveGame_11;
final Class> nmsClass;
static EntityRegistry entityRegistry;
LightRegistry(int entityId, String name, String saveGame_18_19_10, String saveGame_11, String nmsClassName) {
try {
this.entityId = entityId;
this.name = name;
this.saveGame_18_19_10 = saveGame_18_19_10;
this.saveGame_11 = saveGame_11;
this.nmsClass = Class.forName("net.minecraft.server." + getServerVersion() + '.' + nmsClassName);
} catch (final Exception ex) {
Bukkit.getLogger().log(Level.WARNING, "Wrong PowerRegistryType configuration. ", ex);
throw new RuntimeException(ex);
}
}
private static String getServerVersion() throws Exception {
return Bukkit.getServer().getClass().getPackage().getName().replace(".", ",").split(",")[3];
}
public static void unregister() {
try {
getRegistry().unregister();
} catch (final Exception ex) {
Bukkit.getLogger().log(Level.WARNING, "Failed to unregister entity! ", ex);
}
}
public void register(String customEntityClazzName) {
try {
this.register(Class.forName(customEntityClazzName.replace("VERSION", getServerVersion())));
} catch (final Exception ex) {
Bukkit.getLogger().log(Level.WARNING, "Failed to register entity! ", ex);
}
}
public void register(Class> customEntityClazz) {
try {
getRegistry().registerCustomEntity(customEntityClazz, this);
} catch (final Exception ex) {
Bukkit.getLogger().log(Level.WARNING, "Failed to register entity!", ex);
}
}
private static EntityRegistry getRegistry() throws Exception {
if (entityRegistry == null) {
return new WrappedEntityRegistry();
}
return entityRegistry;
}
interface EntityRegistry {
void registerCustomEntity(Class> customEntityClazz, LightRegistry powerRegistry) throws Exception;
void unregister() throws Exception;
}
private static class WrappedEntityRegistry implements EntityRegistry {
private static final Map, LightRegistry> types = new HashMap<>();
private static final List © 2015 - 2025 Weber Informatics LLC | Privacy Policy