Package pneumaticCraft.common.item

Source Code of pneumaticCraft.common.item.ItemAssemblyProgram

package pneumaticCraft.common.item;

import java.util.List;

import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import pneumaticCraft.common.block.Blockss;
import pneumaticCraft.common.recipes.programs.AssemblyProgram;
import pneumaticCraft.common.recipes.programs.ProgramDrill;
import pneumaticCraft.common.recipes.programs.ProgramDrillLaser;
import pneumaticCraft.common.recipes.programs.ProgramLaser;
import pneumaticCraft.lib.Textures;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

public class ItemAssemblyProgram extends ItemPneumatic{
    public static final int PROGRAMS_AMOUNT = 3;

    public static final int DRILL_DAMAGE = 0;
    public static final int LASER_DAMAGE = 1;
    public static final int DRILL_LASER_DAMAGE = 2;

    private IIcon[] texture;
    private AssemblyProgram[] referencePrograms;

    public ItemAssemblyProgram(){
        setHasSubtypes(true);
    }

    @Override
    @SideOnly(Side.CLIENT)
    public void registerIcons(IIconRegister par1IconRegister){
        texture = new IIcon[PROGRAMS_AMOUNT];
        texture[0] = par1IconRegister.registerIcon(Textures.ITEM_PROGRAM_DRILL);
        texture[1] = par1IconRegister.registerIcon(Textures.ITEM_PROGRAM_LASER);
        texture[2] = par1IconRegister.registerIcon(Textures.ITEM_PROGRAM_DRILL_LASER);
    }

    @Override
    public IIcon getIconFromDamage(int meta){
        return texture[meta < texture.length ? meta : 0];
    }

    @Override
    public String getUnlocalizedName(ItemStack is){
        return super.getUnlocalizedName(is) + is.getItemDamage();
    }

    @Override
    public int getMetadata(int meta){
        return meta;
    }

    @Override
    @SideOnly(Side.CLIENT)
    public void getSubItems(Item par1, CreativeTabs tab, List subItems){
        for(int i = 0; i < PROGRAMS_AMOUNT; i++) {
            subItems.add(new ItemStack(this, 1, i));
        }
    }

    @Override
    @SideOnly(Side.CLIENT)
    public void addInformation(ItemStack stack, EntityPlayer player, List infoList, boolean par4){
        infoList.add("Required Machines:");
        infoList.add("-" + Blockss.assemblyController.getLocalizedName());

        if(referencePrograms == null) {
            referencePrograms = new AssemblyProgram[PROGRAMS_AMOUNT];
            for(int i = 0; i < PROGRAMS_AMOUNT; i++) {
                referencePrograms[i] = getProgramFromItem(i);
            }
        }
        AssemblyProgram program = referencePrograms[Math.min(stack.getItemDamage(), PROGRAMS_AMOUNT - 1)];
        AssemblyProgram.EnumMachine[] requiredMachines = program.getRequiredMachines();
        for(AssemblyProgram.EnumMachine machine : requiredMachines) {
            switch(machine){
                case PLATFORM:
                    infoList.add("-" + Blockss.assemblyPlatform.getLocalizedName());
                    break;
                case DRILL:
                    infoList.add("-" + Blockss.assemblyDrill.getLocalizedName());
                    break;
                case LASER:
                    infoList.add("-" + Blockss.assemblyLaser.getLocalizedName());
                    break;
                case IO_UNIT_EXPORT:
                    infoList.add("-" + Blockss.assemblyIOUnit.getLocalizedName() + " (export)");//TODO localize
                    break;
                case IO_UNIT_IMPORT:
                    infoList.add("-" + Blockss.assemblyIOUnit.getLocalizedName() + " (import)");
                    break;
            }
        }
    }

    public static AssemblyProgram getProgramFromItem(int meta){
        switch(meta){
            case DRILL_DAMAGE:
                return new ProgramDrill();
            case LASER_DAMAGE:
                return new ProgramLaser();
            case DRILL_LASER_DAMAGE:
                return new ProgramDrillLaser();
        }
        return null;
    }

}
TOP

Related Classes of pneumaticCraft.common.item.ItemAssemblyProgram

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.