package ttftcuts.physis.common.item; import java.util.HashMap; import java.util.Map; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import ttftcuts.physis.Physis; import ttftcuts.physis.common.story.StoryEngine; public class ItemPhysisThemed extends ItemPhysis { protected String textureRoot; protected Map<String, IIcon[]> variantIcons = new HashMap<String, IIcon[]>();; protected String baseIcon; @Override public Item setTextureName(String name) { super.setTextureName(name); this.textureRoot = name; return this; } @SideOnly(Side.CLIENT) protected IIcon[] registerIcon(String name, IIconRegister register) { int variants = StoryEngine.getRange("theme"); IIcon[] icons = new IIcon[variants]; for (int i=0; i<variants; i++) { icons[i] = register.registerIcon(Physis.MOD_ID+":theme"+i+"/"+name); } variantIcons.put(name, icons); return icons; } @Override @SideOnly(Side.CLIENT) public void registerIcons(IIconRegister register) { //variantIcons = new HashMap<String, IIcon[]>(); baseIcon = textureRoot; registerIcon(this.textureRoot, register); } @SideOnly(Side.CLIENT) public IIcon getIcon(String name) { int theme = StoryEngine.get("theme", true); if (theme == -1) { return null; } if (this.variantIcons.containsKey(name)) { return this.variantIcons.get(name)[theme]; } return null; } @Override @SideOnly(Side.CLIENT) public IIcon getIconFromDamage(int damage) { return this.getIcon(baseIcon); } @Override public String getUnlocalizedNameInefficiently(ItemStack par1ItemStack) { int theme = StoryEngine.get("theme", true); if (theme == -1) { theme = 0; } return super.getUnlocalizedNameInefficiently(par1ItemStack)+".theme."+theme; } }