package buildcraft.core.lib.utils; import java.io.IOException; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.client.resources.IResource; import net.minecraft.util.IIcon; import net.minecraft.util.ResourceLocation; public final class ResourceUtils { private ResourceUtils() { } public static IIcon getIconPriority(IIconRegister register, String prefix, String[] suffixes) { for (int i = 0; i < suffixes.length; i++) { String suffix = suffixes[i]; String path = prefix + "/" + suffix; if (i == suffixes.length - 1 || resourceExists(iconToResourcePath(register, path))) { return register.registerIcon(path); } } return null; } public static IIcon getIcon(IIconRegister register, String prefix, String suffix) { return register.registerIcon(prefix + "/" + suffix); } public static String iconToResourcePath(IIconRegister register, String name) { int splitLocation = name.indexOf(":"); if (register instanceof TextureMap) { String dir = ((TextureMap) register).getTextureType() == 1 ? "items" : "blocks"; return name.substring(0, splitLocation) + ":textures/" + dir + "/" + name.substring(splitLocation + 1) + ".png"; } else { // ??? return name; } } /** * Turns a block/item name into a prefix for finding textures. * * @param objectName * @return */ public static String getObjectPrefix(String objectName) { if (objectName == null) { return null; } int splitLocation = objectName.indexOf(":"); return objectName.substring(0, splitLocation).replaceAll("[^a-zA-Z0-9\\s]", "") + objectName.substring(splitLocation); } public static boolean resourceExists(String name) { try { IResource resource = Minecraft.getMinecraft().getResourceManager().getResource(new ResourceLocation(name)); return resource != null; } catch (IOException e) { return false; } } }