package hunternif.mc.atlas.registry; import net.minecraftforge.fml.common.FMLContainer; import net.minecraftforge.fml.common.InjectedModContainer; import net.minecraftforge.fml.common.Loader; import net.minecraftforge.fml.common.ModContainer; import net.minecraft.util.ResourceLocation; public interface IRegistryEntry { void setRegistryName(ResourceLocation name); ResourceLocation getRegistryName(); class Impl implements IRegistryEntry { private ResourceLocation registryName = null; public final void setRegistryName(String name) { int index = name.lastIndexOf(':'); String prefix = index == -1 ? "" : name.substring(0, index); name = index == -1 ? name : name.substring(index + 1); if(index == -1) { ModContainer mc = Loader.instance().activeModContainer(); prefix = mc == null || (mc instanceof InjectedModContainer && ((InjectedModContainer)mc).wrappedContainer instanceof FMLContainer) ? "minecraft" : mc.getModId().toLowerCase(); } this.registryName = new ResourceLocation(prefix, name); } //Helper functions public final void setRegistryName(ResourceLocation name){ setRegistryName(name.toString()); } public final void setRegistryName(String modID, String name){ setRegistryName(modID + ":" + name); } public final ResourceLocation getRegistryName() { return registryName != null ? registryName : null; } } }