diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineTurbineGas.java b/src/main/java/com/hbm/inventory/container/ContainerMachineTurbineGas.java index bf18a213b..b993d3a65 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineTurbineGas.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineTurbineGas.java @@ -5,7 +5,7 @@ import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemFluidIdentifier; -import com.hbm.items.machine.ItemZirnoxRod; +import com.hbm.items.machine.ItemZirnoxRodDeprecated; import com.hbm.tileentity.machine.TileEntityMachineTurbineGas; import api.hbm.energy.IBatteryItem; diff --git a/src/main/java/com/hbm/inventory/container/ContainerReactorZirnox.java b/src/main/java/com/hbm/inventory/container/ContainerReactorZirnox.java index 99365242e..a3a18bb73 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerReactorZirnox.java +++ b/src/main/java/com/hbm/inventory/container/ContainerReactorZirnox.java @@ -3,7 +3,7 @@ package com.hbm.inventory.container; import com.hbm.inventory.FluidContainerRegistry; import com.hbm.inventory.SlotMachineOutput; import com.hbm.inventory.fluid.Fluids; -import com.hbm.items.machine.ItemZirnoxRod; +import com.hbm.items.machine.ItemZirnoxRodDeprecated; import com.hbm.tileentity.machine.TileEntityReactorZirnox; import net.minecraft.entity.player.EntityPlayer; @@ -88,7 +88,7 @@ public class ContainerReactorZirnox extends Container { } else { - if(stack.getItem() instanceof ItemZirnoxRod) { + if(stack.getItem() instanceof ItemZirnoxRodDeprecated) { if(!this.mergeItemStack(stack, 0, 24, true)) return null; diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 9617da267..955065c51 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -3682,18 +3682,18 @@ public class ModItems { rod_quad = (ItemEnumMulti) new ItemBreedingRod().setUnlocalizedName("rod_quad").setContainerItem(ModItems.rod_quad_empty).setCreativeTab(MainRegistry.controlTab); rod_zirnox_empty = new Item().setUnlocalizedName("rod_zirnox_empty").setMaxStackSize(64).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":rod_zirnox_empty"); - rod_zirnox_natural_uranium_fuel = new ItemZirnoxRod(250000, 30).setUnlocalizedName("rod_zirnox_natural_uranium_fuel").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_zirnox_empty).setTextureName(RefStrings.MODID + ":rod_zirnox_natural_uranium_fuel"); - rod_zirnox_uranium_fuel = new ItemZirnoxRod(200000, 50).setUnlocalizedName("rod_zirnox_uranium_fuel").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_zirnox_empty).setTextureName(RefStrings.MODID + ":rod_zirnox_uranium_fuel"); + rod_zirnox_natural_uranium_fuel = new ItemZirnoxRodDeprecated(250000, 30).setUnlocalizedName("rod_zirnox_natural_uranium_fuel").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_zirnox_empty).setTextureName(RefStrings.MODID + ":rod_zirnox_natural_uranium_fuel"); + rod_zirnox_uranium_fuel = new ItemZirnoxRodDeprecated(200000, 50).setUnlocalizedName("rod_zirnox_uranium_fuel").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_zirnox_empty).setTextureName(RefStrings.MODID + ":rod_zirnox_uranium_fuel"); rod_zirnox_th232 = new ItemZirnoxBreedingRod(20000, 0).setUnlocalizedName("rod_zirnox_th232").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":rod_zirnox_th232"); - rod_zirnox_thorium_fuel = new ItemZirnoxRod(200000, 40).setUnlocalizedName("rod_zirnox_thorium_fuel").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":rod_zirnox_thorium_fuel"); - rod_zirnox_mox_fuel = new ItemZirnoxRod(165000, 75).setUnlocalizedName("rod_zirnox_mox_fuel").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":rod_zirnox_mox_fuel"); - rod_zirnox_plutonium_fuel = new ItemZirnoxRod(175000, 65).setUnlocalizedName("rod_zirnox_plutonium_fuel").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":rod_zirnox_plutonium_fuel"); - rod_zirnox_u233_fuel = new ItemZirnoxRod(150000, 100).setUnlocalizedName("rod_zirnox_u233_fuel").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":rod_zirnox_u233_fuel"); - rod_zirnox_u235_fuel = new ItemZirnoxRod(165000, 85).setUnlocalizedName("rod_zirnox_u235_fuel").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":rod_zirnox_u235_fuel"); - rod_zirnox_les_fuel = new ItemZirnoxRod(150000, 150).setUnlocalizedName("rod_zirnox_les_fuel").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":rod_zirnox_les_fuel"); + rod_zirnox_thorium_fuel = new ItemZirnoxRodDeprecated(200000, 40).setUnlocalizedName("rod_zirnox_thorium_fuel").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":rod_zirnox_thorium_fuel"); + rod_zirnox_mox_fuel = new ItemZirnoxRodDeprecated(165000, 75).setUnlocalizedName("rod_zirnox_mox_fuel").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":rod_zirnox_mox_fuel"); + rod_zirnox_plutonium_fuel = new ItemZirnoxRodDeprecated(175000, 65).setUnlocalizedName("rod_zirnox_plutonium_fuel").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":rod_zirnox_plutonium_fuel"); + rod_zirnox_u233_fuel = new ItemZirnoxRodDeprecated(150000, 100).setUnlocalizedName("rod_zirnox_u233_fuel").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":rod_zirnox_u233_fuel"); + rod_zirnox_u235_fuel = new ItemZirnoxRodDeprecated(165000, 85).setUnlocalizedName("rod_zirnox_u235_fuel").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":rod_zirnox_u235_fuel"); + rod_zirnox_les_fuel = new ItemZirnoxRodDeprecated(150000, 150).setUnlocalizedName("rod_zirnox_les_fuel").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":rod_zirnox_les_fuel"); rod_zirnox_lithium = new ItemZirnoxBreedingRod(20000, 0).setUnlocalizedName("rod_zirnox_lithium").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":rod_zirnox_lithium"); rod_zirnox_tritium = new Item().setUnlocalizedName("rod_zirnox_tritium").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_zirnox_empty).setTextureName(RefStrings.MODID + ":rod_zirnox_tritium"); - rod_zirnox_zfb_mox = new ItemZirnoxRod(50000, 35).setUnlocalizedName("rod_zirnox_zfb_mox").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":rod_zirnox_zfb_mox"); + rod_zirnox_zfb_mox = new ItemZirnoxRodDeprecated(50000, 35).setUnlocalizedName("rod_zirnox_zfb_mox").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":rod_zirnox_zfb_mox"); rod_zirnox_natural_uranium_fuel_depleted = new Item().setUnlocalizedName("rod_zirnox_natural_uranium_fuel_depleted").setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_zirnox_empty).setTextureName(RefStrings.MODID + ":rod_zirnox_uranium_fuel_depleted"); rod_zirnox_uranium_fuel_depleted = new Item().setUnlocalizedName("rod_zirnox_uranium_fuel_depleted").setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_zirnox_empty).setTextureName(RefStrings.MODID + ":rod_zirnox_uranium_fuel_depleted"); diff --git a/src/main/java/com/hbm/items/machine/ItemNuclearWasteMulti.java b/src/main/java/com/hbm/items/machine/ItemNuclearWasteMulti.java new file mode 100644 index 000000000..b6b94f077 --- /dev/null +++ b/src/main/java/com/hbm/items/machine/ItemNuclearWasteMulti.java @@ -0,0 +1,34 @@ +package com.hbm.items.machine; + +import java.util.List; + +import com.hbm.items.ItemEnumMulti; +import com.hbm.items.machine.ItemZirnoxRod.EnumZirnoxType; +import com.hbm.util.EnumUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +public class ItemNuclearWasteMulti extends ItemEnumMulti { + + public ItemNuclearWasteMulti(Class theEnum, boolean multiName, boolean multiTexture) { + super(theEnum, multiName, multiTexture); + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubItems(Item item, CreativeTabs tab, List list) { + for(int i = 0; i < theEnum.getEnumConstants().length; i++) { + if(theEnum == ItemZirnoxRod.EnumZirnoxType.class) { //i could make an interface or a base enum, but it's only used for 'nox rods anyway + EnumZirnoxType num = EnumUtil.grabEnumSafely(EnumZirnoxType.class, i); + if(!num.breeding) list.add(new ItemStack(item, 1, i)); //wastes' ordinals are always equal to their fuels' ordinals + } else + list.add(new ItemStack(item, 1, i)); + } + } + + //TODO: cooling stuff +} diff --git a/src/main/java/com/hbm/items/machine/ItemZirnoxBreedingRod.java b/src/main/java/com/hbm/items/machine/ItemZirnoxBreedingRod.java index c0623d2d2..c8c869f25 100644 --- a/src/main/java/com/hbm/items/machine/ItemZirnoxBreedingRod.java +++ b/src/main/java/com/hbm/items/machine/ItemZirnoxBreedingRod.java @@ -9,7 +9,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; -public class ItemZirnoxBreedingRod extends ItemZirnoxRod { +public class ItemZirnoxBreedingRod extends ItemZirnoxRodDeprecated { public ItemZirnoxBreedingRod(int life, int heat) { super(life, heat); diff --git a/src/main/java/com/hbm/items/machine/ItemZirnoxRod.java b/src/main/java/com/hbm/items/machine/ItemZirnoxRod.java index 5ef69303a..6f15c59f8 100644 --- a/src/main/java/com/hbm/items/machine/ItemZirnoxRod.java +++ b/src/main/java/com/hbm/items/machine/ItemZirnoxRod.java @@ -1,30 +1,93 @@ package com.hbm.items.machine; -import java.util.List; +import com.hbm.items.ItemEnumMulti; +import com.hbm.util.EnumUtil; -import com.hbm.util.BobMathUtil; -import com.hbm.util.I18nUtil; - -import net.minecraft.entity.player.EntityPlayer; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.item.ItemStack; -import net.minecraft.util.EnumChatFormatting; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.IIcon; -public class ItemZirnoxRod extends ItemFuelRod { - - public int heat; - - public ItemZirnoxRod(int life, int heat) { - super(life); - this.heat = heat; +public class ItemZirnoxRod extends ItemEnumMulti { + + public ItemZirnoxRod() { + super(EnumZirnoxType.class, true, true); } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { + + public static void setLifeTime(ItemStack stack, int time) { - String[] descLocs = I18nUtil.resolveKeyArray("desc.item.zirnoxRod", heat, BobMathUtil.getShortNumber(lifeTime)); + if(!stack.hasTagCompound()) + stack.stackTagCompound = new NBTTagCompound(); - for(String loc : descLocs) { - list.add(loc); + stack.stackTagCompound.setInteger("life", time); + } + + public static int getLifeTime(ItemStack stack) { + + if(!stack.hasTagCompound()) { + stack.stackTagCompound = new NBTTagCompound(); + return 0; + } + + return stack.stackTagCompound.getInteger("life"); + } + + public boolean showDurabilityBar(ItemStack stack) { + return getDurabilityForDisplay(stack) > 0D; + } + + public double getDurabilityForDisplay(ItemStack stack) { + EnumZirnoxType num = EnumUtil.grabEnumSafely(theEnum, stack.getItemDamage()); + return (double)getLifeTime(stack) / (double)num.maxLife; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister reg) { + Enum[] enums = theEnum.getEnumConstants(); + this.icons = new IIcon[enums.length]; + + for(int i = 0; i < icons.length; i++) { + Enum num = enums[i]; + this.icons[i] = reg.registerIcon(this.getIconString() + "_" + num.name().toLowerCase()); } } -} \ No newline at end of file + + @Override + public String getUnlocalizedName(ItemStack stack) { + Enum num = EnumUtil.grabEnumSafely(theEnum, stack.getItemDamage()); + return super.getUnlocalizedName() + "_" + num.name().toLowerCase(); + } + + public static enum EnumZirnoxType { + NATURAL_URANIUM_FUEL(250_000, 30), + URANIUM_FUEL(200_000, 50), + TH232(20_000, 0, true), + THORIUM_FUEL(200_000, 40), + MOX_FUEL(165_000, 75), + PLUTONIUM_FUEL(175_000, 65), + U233_FUEL(150_000, 100), + U235_FUEL(165_000, 85), + LES_FUEL(150_000, 150), + LITHIUM(20_000, 0, true), + ZFB_MOX(50_000, 35); + + public int maxLife; + public int heat; + /** Doesn't auto-generate a waste type, waste rods, etc. */ + public boolean breeding = false; + + private EnumZirnoxType(int life, int heat, boolean breeding) { + this.maxLife = life; + this.heat = heat; + this.breeding = breeding; + } + + private EnumZirnoxType(int life, int heat) { + this.maxLife = life; + this.heat = heat; + } + } +} diff --git a/src/main/java/com/hbm/items/machine/ItemZirnoxRodDeprecated.java b/src/main/java/com/hbm/items/machine/ItemZirnoxRodDeprecated.java new file mode 100644 index 000000000..1e0605f4e --- /dev/null +++ b/src/main/java/com/hbm/items/machine/ItemZirnoxRodDeprecated.java @@ -0,0 +1,30 @@ +package com.hbm.items.machine; + +import java.util.List; + +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; + +public class ItemZirnoxRodDeprecated extends ItemFuelRod { + + public int heat; + + public ItemZirnoxRodDeprecated(int life, int heat) { + super(life); + this.heat = heat; + } + + @Override + public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { + + String[] descLocs = I18nUtil.resolveKeyArray("desc.item.zirnoxRod", heat, BobMathUtil.getShortNumber(lifeTime)); + + for(String loc : descLocs) { + list.add(loc); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java index f56240304..a7d118374 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java @@ -21,7 +21,7 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemZirnoxBreedingRod; -import com.hbm.items.machine.ItemZirnoxRod; +import com.hbm.items.machine.ItemZirnoxRodDeprecated; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.tileentity.TileEntityMachineBase; @@ -95,12 +95,12 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IF @Override public boolean isItemValidForSlot(int i, ItemStack stack) { - return i < 24 && stack.getItem() instanceof ItemZirnoxRod; + return i < 24 && stack.getItem() instanceof ItemZirnoxRodDeprecated; } @Override public boolean canExtractItem(int i, ItemStack stack, int j) { - return i < 24 && !(stack.getItem() instanceof ItemZirnoxRod); + return i < 24 && !(stack.getItem() instanceof ItemZirnoxRodDeprecated); } @Override @@ -201,7 +201,7 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IF for(int i = 0; i < 24; i++) { if(slots[i] != null) { - if(slots[i].getItem() instanceof ItemZirnoxRod) + if(slots[i].getItem() instanceof ItemZirnoxRodDeprecated) decay(i); else if(slots[i].getItem() == ModItems.meteorite_sword_bred) slots[i] = new ItemStack(ModItems.meteorite_sword_irradiated); @@ -263,7 +263,7 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IF private boolean hasFuelRod(int id) { if(slots[id] != null) { if(!(slots[id].getItem() instanceof ItemZirnoxBreedingRod)) { - return slots[id].getItem() instanceof ItemZirnoxRod; + return slots[id].getItem() instanceof ItemZirnoxRodDeprecated; } } @@ -296,11 +296,11 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IF } for(int i = 0; i < decay; i++) { - ItemZirnoxRod rod = ((ItemZirnoxRod) slots[id].getItem()); + ItemZirnoxRodDeprecated rod = ((ItemZirnoxRodDeprecated) slots[id].getItem()); this.heat += rod.heat; - ItemZirnoxRod.setLifeTime(slots[id], ItemZirnoxRod.getLifeTime(slots[id]) + 1); + ItemZirnoxRodDeprecated.setLifeTime(slots[id], ItemZirnoxRodDeprecated.getLifeTime(slots[id]) + 1); - if(ItemZirnoxRod.getLifeTime(slots[id]) > rod.lifeTime) { + if(ItemZirnoxRodDeprecated.getLifeTime(slots[id]) > rod.lifeTime) { slots[id] = fuelMap.get(new ComparableStack(getStackInSlot(id))).copy(); break; }