diff options
Diffstat (limited to 'src/Java/binnie/core/item')
-rw-r--r-- | src/Java/binnie/core/item/IItemEnum.java | 14 | ||||
-rw-r--r-- | src/Java/binnie/core/item/IItemMisc.java | 19 | ||||
-rw-r--r-- | src/Java/binnie/core/item/ItemFieldKit.java | 82 | ||||
-rw-r--r-- | src/Java/binnie/core/item/ItemGenesis.java | 42 | ||||
-rw-r--r-- | src/Java/binnie/core/item/ItemMisc.java | 81 | ||||
-rw-r--r-- | src/Java/binnie/core/item/ManagerItem.java | 11 | ||||
-rw-r--r-- | src/Java/binnie/core/item/ModuleItems.java | 75 |
7 files changed, 324 insertions, 0 deletions
diff --git a/src/Java/binnie/core/item/IItemEnum.java b/src/Java/binnie/core/item/IItemEnum.java new file mode 100644 index 0000000000..70b27d7aa7 --- /dev/null +++ b/src/Java/binnie/core/item/IItemEnum.java @@ -0,0 +1,14 @@ +package binnie.core.item; + +import net.minecraft.item.ItemStack; + +public abstract interface IItemEnum +{ + public abstract boolean isActive(); + + public abstract String getName(ItemStack paramItemStack); + + public abstract int ordinal(); + + public abstract ItemStack get(int paramInt); +} diff --git a/src/Java/binnie/core/item/IItemMisc.java b/src/Java/binnie/core/item/IItemMisc.java new file mode 100644 index 0000000000..1538297884 --- /dev/null +++ b/src/Java/binnie/core/item/IItemMisc.java @@ -0,0 +1,19 @@ +package binnie.core.item; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import java.util.List; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; + +public abstract interface IItemMisc + extends IItemEnum +{ + public abstract IIcon getIcon(ItemStack paramItemStack); + + @SideOnly(Side.CLIENT) + public abstract void registerIcons(IIconRegister paramIIconRegister); + + public abstract void addInformation(List paramList); +} diff --git a/src/Java/binnie/core/item/ItemFieldKit.java b/src/Java/binnie/core/item/ItemFieldKit.java new file mode 100644 index 0000000000..0a6ec0b813 --- /dev/null +++ b/src/Java/binnie/core/item/ItemFieldKit.java @@ -0,0 +1,82 @@ +package binnie.core.item; + +import binnie.core.BinnieCore; +import binnie.core.gui.BinnieCoreGUI; +import binnie.core.proxy.BinnieProxy; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +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 net.minecraft.world.World; + +public class ItemFieldKit + extends Item +{ + private IIcon fieldKit0; + private IIcon fieldKit1; + private IIcon fieldKit2; + private IIcon fieldKit3; + + public ItemFieldKit() + { + setUnlocalizedName("fieldKit"); + setCreativeTab(CreativeTabs.tabTools); + setMaxStackSize(1); + setMaxDamage(64); + } + + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister register) + { + this.fieldKit0 = BinnieCore.proxy.getIcon(register, "fieldKit"); + this.fieldKit1 = BinnieCore.proxy.getIcon(register, "fieldKit1"); + this.fieldKit2 = BinnieCore.proxy.getIcon(register, "fieldKit2"); + this.fieldKit3 = BinnieCore.proxy.getIcon(register, "fieldKit3"); + this.itemIcon = this.fieldKit0; + } + + public IIcon getIcon(ItemStack stack, int pass) + { + int damage = stack.getItemDamage(); + if (damage < 24) { + return this.fieldKit3; + } + if (damage < 48) { + return this.fieldKit2; + } + if (damage < 64) { + return this.fieldKit1; + } + return this.fieldKit0; + } + + public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer player) + { + if (!player.isSneaking()) { + BinnieCore.proxy.openGui(BinnieCoreGUI.FieldKit, player, (int)player.posX, (int)player.posY, (int)player.posZ); + } + return itemstack; + } + + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack p_77624_1_, EntityPlayer p_77624_2_, List p_77624_3_, boolean p_77624_4_) + { + int i = getMaxDamage() - p_77624_1_.getItemDamage(); + if (i == 0) { + p_77624_3_.add("No paper"); + } else { + p_77624_3_.add("" + i + " sheet" + (i > 1 ? "s" : "") + " of paper"); + } + super.addInformation(p_77624_1_, p_77624_2_, p_77624_3_, p_77624_4_); + } + + public String getItemStackDisplayName(ItemStack p_77653_1_) + { + return "Field Kit"; + } +} diff --git a/src/Java/binnie/core/item/ItemGenesis.java b/src/Java/binnie/core/item/ItemGenesis.java new file mode 100644 index 0000000000..1e946372be --- /dev/null +++ b/src/Java/binnie/core/item/ItemGenesis.java @@ -0,0 +1,42 @@ +package binnie.core.item; + +import binnie.core.BinnieCore; +import binnie.core.gui.BinnieCoreGUI; +import binnie.core.proxy.BinnieProxy; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import forestry.api.core.Tabs; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public class ItemGenesis + extends Item +{ + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister register) + { + this.itemIcon = BinnieCore.proxy.getIcon(register, "genesis"); + } + + public ItemGenesis() + { + setCreativeTab(Tabs.tabApiculture); + setUnlocalizedName("genesis"); + setMaxStackSize(1); + } + + public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer player) + { + BinnieCore.proxy.openGui(BinnieCoreGUI.Genesis, player, (int)player.posX, (int)player.posY, (int)player.posZ); + + return itemstack; + } + + public String getItemStackDisplayName(ItemStack i) + { + return "Genesis"; + } +} diff --git a/src/Java/binnie/core/item/ItemMisc.java b/src/Java/binnie/core/item/ItemMisc.java new file mode 100644 index 0000000000..db54b2c1dd --- /dev/null +++ b/src/Java/binnie/core/item/ItemMisc.java @@ -0,0 +1,81 @@ +package binnie.core.item; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +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; + +public class ItemMisc + extends Item +{ + private IItemMisc[] items; + + protected ItemMisc(CreativeTabs tab, IItemMisc[] items2) + { + setCreativeTab(tab); + setHasSubtypes(true); + setUnlocalizedName("misc"); + this.items = items2; + } + + @SideOnly(Side.CLIENT) + public void getSubItems(Item par1, CreativeTabs par2CreativeTabs, List par3List) + { + for (IItemMisc item : this.items) { + if (item.isActive()) { + par3List.add(getStack(item, 1)); + } + } + } + + private IItemMisc getItem(int damage) + { + return damage >= this.items.length ? this.items[0] : this.items[damage]; + } + + public ItemStack getStack(IItemMisc type, int size) + { + return new ItemStack(this, size, type.ordinal()); + } + + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) + { + super.addInformation(par1ItemStack, par2EntityPlayer, par3List, par4); + IItemMisc item = getItem(par1ItemStack.getItemDamage()); + if (item != null) { + item.addInformation(par3List); + } + } + + public String getItemStackDisplayName(ItemStack stack) + { + IItemMisc item = getItem(stack.getItemDamage()); + return item != null ? item.getName(stack) : "null"; + } + + public IIcon getIcon(ItemStack stack, int pass) + { + IItemMisc item = getItem(stack.getItemDamage()); + return item != null ? item.getIcon(stack) : null; + } + + public IIcon getIconFromDamage(int damage) + { + IItemMisc item = getItem(damage); + return item != null ? item.getIcon(null) : null; + } + + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister register) + { + for (IItemMisc item : this.items) { + item.registerIcons(register); + } + } +} diff --git a/src/Java/binnie/core/item/ManagerItem.java b/src/Java/binnie/core/item/ManagerItem.java new file mode 100644 index 0000000000..39ea70f826 --- /dev/null +++ b/src/Java/binnie/core/item/ManagerItem.java @@ -0,0 +1,11 @@ +package binnie.core.item; + +import net.minecraft.creativetab.CreativeTabs; + +public class ManagerItem +{ + public ItemMisc registerMiscItems(IItemMisc[] items, CreativeTabs tab) + { + return new ItemMisc(tab, items); + } +} diff --git a/src/Java/binnie/core/item/ModuleItems.java b/src/Java/binnie/core/item/ModuleItems.java new file mode 100644 index 0000000000..335106e040 --- /dev/null +++ b/src/Java/binnie/core/item/ModuleItems.java @@ -0,0 +1,75 @@ +package binnie.core.item; + +import binnie.botany.Botany; +import binnie.botany.api.IAlleleFlowerSpecies; +import binnie.botany.api.IFlower; +import binnie.botany.api.IFlowerColour; +import binnie.botany.api.IFlowerGenome; +import binnie.botany.flower.TileEntityFlower; +import binnie.botany.network.PacketID; +import binnie.botany.proxy.Proxy; +import binnie.core.BinnieCore; +import binnie.core.IInitializable; +import binnie.core.network.packet.MessageNBT; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.registry.GameRegistry; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.event.entity.player.PlayerInteractEvent; +import net.minecraftforge.event.entity.player.PlayerInteractEvent.Action; + +public class ModuleItems + implements IInitializable +{ + public void preInit() + { + BinnieCore.fieldKit = new ItemFieldKit(); + BinnieCore.genesis = new ItemGenesis(); + } + + public void init() {} + + public void postInit() + { + GameRegistry.addRecipe(new ItemStack(BinnieCore.fieldKit, 1, 63), new Object[] { "g ", " is", " pi", Character.valueOf('g'), Blocks.glass_pane, Character.valueOf('i'), Items.iron_ingot, Character.valueOf('p'), Items.paper, Character.valueOf('s'), new ItemStack(Items.dye, 1) }); + } + + @SubscribeEvent + public void onUseFieldKit(PlayerInteractEvent event) + { + if (!BinnieCore.isBotanyActive()) { + return; + } + if (event.action != PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK) { + return; + } + if ((event.entityPlayer != null) && (event.entityPlayer.getHeldItem() != null) && (event.entityPlayer.getHeldItem().getItem() == BinnieCore.fieldKit) && (event.entityPlayer.isSneaking())) + { + TileEntity tile = event.world.getTileEntity(event.x, event.y, event.z); + if ((tile instanceof TileEntityFlower)) + { + TileEntityFlower tileFlower = (TileEntityFlower)tile; + IFlower flower = tileFlower.getFlower(); + if (flower != null) + { + NBTTagCompound info = new NBTTagCompound(); + info.setString("Species", flower.getGenome().getPrimary().getUID()); + info.setString("Species2", flower.getGenome().getSecondary().getUID()); + info.setFloat("Age", flower.getAge() / flower.getGenome().getLifespan()); + info.setShort("Colour", (short)flower.getGenome().getPrimaryColor().getID()); + info.setShort("Colour2", (short)flower.getGenome().getSecondaryColor().getID()); + info.setBoolean("Wilting", flower.isWilted()); + info.setBoolean("Flowered", flower.hasFlowered()); + + Botany.proxy.sendToPlayer(new MessageNBT(PacketID.Encylopedia.ordinal(), info), event.entityPlayer); + event.entityPlayer.getHeldItem().damageItem(1, event.entityPlayer); + } + } + } + } +} |