package org.halvors.electrometrics.client.render;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.util.IIcon;
import net.minecraftforge.common.util.ForgeDirection;
import org.halvors.electrometrics.common.Reference;
import org.halvors.electrometrics.common.base.ResourceType;
import org.halvors.electrometrics.common.util.ResourceUtils;
@SideOnly(Side.CLIENT)
public class BlockRenderer {
private static final String[] sides = new String[] { "Bottom", "Top", "Front", "Back", "Left", "Right" };
public static void loadDynamicTextures(IIconRegister iconRegister, String name, IIcon[] textures, DefaultIcon... defaultIcons) {
for (ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) {
String texture = name + sides[side.ordinal()];
String textureActive = texture + "Active";
if (textureExists(texture)) {
textures[side.ordinal()] = iconRegister.registerIcon(Reference.PREFIX + texture);
if (textureExists(textureActive)) {
textures[side.ordinal() + 6] = iconRegister.registerIcon(Reference.PREFIX + textureActive);
} else {
boolean found = false;
for (DefaultIcon defaultIcon : defaultIcons) {
if (defaultIcon.getIcons().contains(side.ordinal() + 6)) {
textures[side.ordinal() + 6] = defaultIcon.getDefaultIcon();
found = true;
}
}
if (!found) {
textures[side.ordinal() + 6] = iconRegister.registerIcon(Reference.PREFIX + texture);
}
}
} else {
for (DefaultIcon defaultIcon : defaultIcons) {
if (defaultIcon.getIcons().contains(side.ordinal())) {
textures[side.ordinal()] = defaultIcon.getDefaultIcon();
}
if (defaultIcon.getIcons().contains(side.ordinal() + 6)) {
textures[side.ordinal() + 6] = defaultIcon.getDefaultIcon();
}
}
}
}
}
private static boolean textureExists(String texture) {
try {
Minecraft.getMinecraft().getResourceManager().getAllResources(ResourceUtils.getResource(ResourceType.TEXTURE_BLOCKS, texture + ".png"));
return true;
} catch (Exception e) {
return false;
}
}
}