/** * Register IForgeRegistryEntries in registry * @param features Class with IForgeRegistryEntries * @param registry Registry to where the entries should get registered * @param <T> IForgeRegistryEntry<T> */ public static <T extends IForgeRegistryEntry<T>> void register(Class features, IForgeRegistry<T> registry){ Field[] fields = features.getDeclaredFields(); for (Field field : fields) { if (field.isAnnotationPresent(Feature.class) && registry.getRegistrySuperType().isAssignableFrom(field.getType())){ try { registry.register((T) field.get(null)); MrglgaghCore.logger.info(field.getName() + " registered!"); } catch (IllegalAccessException | IllegalArgumentException e) { MrglgaghCore.logger.error("Can't access feature field: " + field.getName() + ". Make sure it is public static!", e); } } } }
protected void register(IForgeRegistryEntry item, String name) { ResourceLocation loc = getName(name); GameRegistry.register(item, loc); if(item instanceof Block) { GameRegistry.register(new ItemBlock((Block)item).setRegistryName(loc)); } }
/** * Attempts to get the name of the mod which registered the passed object. Minecraft will * be returned for vanilla content while Unknown will be used for invalid cases. * * @param registerable The object to get the mod name for. * @return The name of the mod which registered the object. */ public static String getModName (IForgeRegistryEntry.Impl<?> registerable) { final String modID = registerable.getRegistryName().getResourceDomain(); final ModContainer mod = getModContainer(modID); return mod != null ? mod.getName() : modID.equalsIgnoreCase("minecraft") ? "Minecraft" : "Unknown"; }