Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @SuppressWarnings("rawtypes")
- public class EntityRegistry extends RegistryMaterials
- {
- private static EntityRegistry instance = null;
- private final BiMap<MinecraftKey, Class<? extends Entity>> customEntities = HashBiMap.create();
- private final BiMap<Class<? extends Entity>, MinecraftKey> customEntityClasses = this.customEntities.inverse();
- private final Map<Class<? extends Entity>, Integer> customEntityIds = new HashMap<>();
- private final RegistryMaterials wrapped;
- private EntityRegistry(RegistryMaterials original)
- {
- this.wrapped = original;
- }
- private static EntityRegistry getInstance()
- {
- if (instance != null)
- return instance;
- instance = new EntityRegistry(EntityTypes.b);
- try
- {
- Field registryMaterialsField = EntityTypes.class.getDeclaredField("b");
- registryMaterialsField.setAccessible(true);
- Field modifiersField = Field.class.getDeclaredField("modifiers");
- modifiersField.setAccessible(true);
- modifiersField.setInt(registryMaterialsField, registryMaterialsField.getModifiers() & ~Modifier.FINAL);
- registryMaterialsField.set(null, instance);
- }
- catch (Exception e)
- {
- instance = null;
- throw new RuntimeException("Unable to override the old entity RegistryMaterials", e);
- }
- return instance;
- }
- static void registerCustomEntity(int entityId, String entityName, Class<? extends Entity> entityClass)
- {
- getInstance().putCustomEntity(entityId, entityName, entityClass);
- }
- private void putCustomEntity(int entityId, String entityName, Class<? extends Entity> entityClass)
- {
- MinecraftKey minecraftKey = new MinecraftKey(entityName);
- this.customEntities.put(minecraftKey, entityClass);
- this.customEntityIds.put(entityClass, entityId);
- }
- @SuppressWarnings("unchecked")
- @Override
- public Class<? extends Entity> get(Object key)
- {
- if (this.customEntities.containsKey(key))
- return this.customEntities.get(key);
- return (Class<? extends Entity>) wrapped.get(key);
- }
- @SuppressWarnings("unchecked")
- @Override
- public int a(Object key)
- {
- if (this.customEntityIds.containsKey(key))
- return this.customEntityIds.get(key);
- return this.wrapped.a(key);
- }
- @SuppressWarnings("unchecked")
- @Override
- public MinecraftKey b(Object value)
- {
- if (this.customEntityClasses.containsKey(value))
- return this.customEntityClasses.get(value);
- return (MinecraftKey) wrapped.b(value);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement