aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/common/items/MetaItem_ReactorComponent.java
blob: 45e3a17798f99b11286718fd1b31a6227b811bad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
package common.items;

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.nbt.NBTTagCompound;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IIcon;

import org.lwjgl.input.Keyboard;

import kekztech.KekzCore;
import reactor.items.CoolantCell;
import reactor.items.FuelRod;
import reactor.items.HeatExchanger;
import reactor.items.HeatVent;
import reactor.items.NeutronReflector;

public class MetaItem_ReactorComponent extends Item {

    private static final MetaItem_ReactorComponent INSTANCE = new MetaItem_ReactorComponent();
    private final IIcon[] icons = new IIcon[50];

    private MetaItem_ReactorComponent() {}

    public static MetaItem_ReactorComponent getInstance() {
        return INSTANCE;
    }

    public void registerItem() {
        super.setHasSubtypes(true);
        final String unlocalizedName = "kekztech_reactor_item";
        super.setUnlocalizedName(unlocalizedName);
        super.setCreativeTab(CreativeTabs.tabMisc);
        super.setMaxStackSize(1);
        // GameRegistry.registerItem(getInstance(), unlocalizedName);
    }

    @Override
    public void registerIcons(IIconRegister reg) {
        int counter = 0;
        for (String s : HeatVent.RESOURCE_NAMES) {
            icons[counter++] = reg.registerIcon(KekzCore.MODID + ":" + s);
        }
        for (String s : HeatExchanger.RESOURCE_NAME) {
            icons[counter++] = reg.registerIcon(KekzCore.MODID + ":" + s);
        }
        for (String s : FuelRod.RESOURCE_NAME) {
            icons[counter++] = reg.registerIcon(KekzCore.MODID + ":" + s);
        }
        for (String s : FuelRod.RESOURCE_NAME_DEPLETED) {
            icons[counter++] = reg.registerIcon(KekzCore.MODID + ":" + s);
        }
        for (String s : NeutronReflector.RESOURCE_NAME) {
            icons[counter++] = reg.registerIcon(KekzCore.MODID + ":" + s);
        }
        for (String s : CoolantCell.RESOURCE_NAME) {
            icons[counter++] = reg.registerIcon(KekzCore.MODID + ":" + s);
        }
    }

    @Override
    public IIcon getIconFromDamage(int meta) {
        return icons[meta];
    }

    @SuppressWarnings({ "unchecked" })
    @Override
    public void getSubItems(Item item, CreativeTabs tab, List list) {
        for (int i = 0; i < icons.length; i++) {
            list.add(new ItemStack(item, 1, i));
        }
    }

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

    @SuppressWarnings({ "unchecked" })
    @Override
    public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean b) {
        if (Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) {
            list.add("Property = 1");
        } else {
            list.add("Part for the Modular Nuclear Reactor");
            list.add(
                    "Hold " + EnumChatFormatting.BOLD
                            + "[LSHIFT]"
                            + EnumChatFormatting.RESET
                            + EnumChatFormatting.GRAY
                            + " to display properties");
        }
    }

    @Override
    public double getDurabilityForDisplay(ItemStack stack) {
        NBTTagCompound nbt = (stack.getTagCompound() == null) ? new NBTTagCompound() : stack.getTagCompound();
        if (nbt.getInteger("HEALTH") != 0 && nbt.getInteger("MAXHEALTH") != 0) {
            return 1 - (double) (nbt.getInteger("HEALTH") / nbt.getInteger("MAXHEALTH"));
        } else {
            return 0.0d;
        }
    }

    @Override
    public boolean showDurabilityBar(ItemStack stack) {
        final int meta = stack.getItemDamage();
        return meta < 31 || meta > 45;
    }

    public ItemStack getStackFromDamage(int meta) {
        return new ItemStack(getInstance(), 1, meta);
    }
}