From ef2e3bc7cbe50e1f63f6cb54ba21810148505fe2 Mon Sep 17 00:00:00 2001 From: AlgorithmX2 Date: Wed, 11 Jun 2014 00:21:03 -0500 Subject: [PATCH] Seeds now make sense with item automation. --- items/misc/ItemCrystalSeed.java | 75 ++++++++++++++++++++++----------- 1 file changed, 50 insertions(+), 25 deletions(-) diff --git a/items/misc/ItemCrystalSeed.java b/items/misc/ItemCrystalSeed.java index 54dd22f9c..bd0f67cdf 100644 --- a/items/misc/ItemCrystalSeed.java +++ b/items/misc/ItemCrystalSeed.java @@ -13,6 +13,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.IIcon; import net.minecraft.world.World; import appeng.api.AEApi; @@ -22,6 +23,7 @@ import appeng.core.features.AEFeature; import appeng.entity.EntityGrowingCrystal; import appeng.entity.EntityIds; import appeng.items.AEBaseItem; +import appeng.util.Platform; import cpw.mods.fml.common.registry.EntityRegistry; public class ItemCrystalSeed extends AEBaseItem implements IGrowableCrystal @@ -39,6 +41,29 @@ public class ItemCrystalSeed extends AEBaseItem implements IGrowableCrystal IIcon fluix[] = new IIcon[3]; IIcon nether[] = new IIcon[3]; + private int getProgress(ItemStack is) + { + if ( is.hasTagCompound() ) + { + return is.getTagCompound().getInteger( "progress" ); + } + else + { + int progress; + NBTTagCompound comp = Platform.openNbtData( is ); + comp.setInteger( "progress", progress = is.getItemDamage() ); + is.setItemDamage( (is.getItemDamage() / SINGLE_OFFSET) * SINGLE_OFFSET ); + return progress; + } + } + + private void setProgress(ItemStack is, int newDamage) + { + NBTTagCompound comp = Platform.openNbtData( is ); + comp.setInteger( "progress", newDamage ); + is.setItemDamage( (is.getItemDamage() / SINGLE_OFFSET) * SINGLE_OFFSET ); + } + public ItemCrystalSeed() { super( ItemCrystalSeed.class ); setHasSubtypes( true ); @@ -52,7 +77,7 @@ public class ItemCrystalSeed extends AEBaseItem implements IGrowableCrystal @Override public String getUnlocalizedName(ItemStack is) { - int damage = is.getItemDamage(); + int damage = getProgress( is ); if ( damage < Certus + SINGLE_OFFSET ) return getUnlocalizedName() + ".Certus"; @@ -69,7 +94,7 @@ public class ItemCrystalSeed extends AEBaseItem implements IGrowableCrystal @Override public ItemStack triggerGrowth(ItemStack is) { - int newDamage = is.getItemDamage() + 1; + int newDamage = getProgress( is ) + 1; if ( newDamage == Certus + SINGLE_OFFSET ) return AEApi.instance().materials().materialPureifiedCertusQuartzCrystal.stack( is.stackSize ); @@ -80,49 +105,43 @@ public class ItemCrystalSeed extends AEBaseItem implements IGrowableCrystal if ( newDamage > END ) return null; - is.setItemDamage( newDamage ); + setProgress( is, newDamage ); return is; } @Override public boolean isDamageable() { - return true; + return false; } @Override public void addInformation(ItemStack stack, EntityPlayer p, List l, boolean b) { - int progress = stack.getItemDamage() % 200; - l.add( Math.floor( (float) progress / 2.0f ) + "%" ); + int progress = getProgress( stack ) % SINGLE_OFFSET; + l.add( Math.floor( (float) progress / (float) (SINGLE_OFFSET / 100) ) + "%" ); super.addInformation( stack, p, l, b ); } @Override public boolean isDamaged(ItemStack stack) { - // if ( stack.getItemDamage() % 200 == 0 ) - // return false; return false; } - @Override - public int getDisplayDamage(ItemStack stack) - { - return stack.getItemDamage() % 200; - } - @Override public int getMaxDamage(ItemStack stack) { - return 200; + return END; } @Override - public IIcon getIconFromDamage(int damage) + public IIcon getIconIndex(ItemStack stack) { IIcon list[] = null; + int damage = getProgress( stack ); + if ( damage < Certus + SINGLE_OFFSET ) list = certus; @@ -198,19 +217,25 @@ public class ItemCrystalSeed extends AEBaseItem implements IGrowableCrystal public void getSubItems(Item i, CreativeTabs t, List l) { // lvl 0 - l.add( new ItemStack( this, 1, Certus ) ); - l.add( new ItemStack( this, 1, Nether ) ); - l.add( new ItemStack( this, 1, Fluix ) ); + l.add( newStyle( new ItemStack( this, 1, Certus ) ) ); + l.add( newStyle( new ItemStack( this, 1, Nether ) ) ); + l.add( newStyle( new ItemStack( this, 1, Fluix ) ) ); // lvl 1 - l.add( new ItemStack( this, 1, LEVEL_OFFSET + Certus ) ); - l.add( new ItemStack( this, 1, LEVEL_OFFSET + Nether ) ); - l.add( new ItemStack( this, 1, LEVEL_OFFSET + Fluix ) ); + l.add( newStyle( new ItemStack( this, 1, LEVEL_OFFSET + Certus ) ) ); + l.add( newStyle( new ItemStack( this, 1, LEVEL_OFFSET + Nether ) ) ); + l.add( newStyle( new ItemStack( this, 1, LEVEL_OFFSET + Fluix ) ) ); // lvl 2 - l.add( new ItemStack( this, 1, LEVEL_OFFSET * 2 + Certus ) ); - l.add( new ItemStack( this, 1, LEVEL_OFFSET * 2 + Nether ) ); - l.add( new ItemStack( this, 1, LEVEL_OFFSET * 2 + Fluix ) ); + l.add( newStyle( new ItemStack( this, 1, LEVEL_OFFSET * 2 + Certus ) ) ); + l.add( newStyle( new ItemStack( this, 1, LEVEL_OFFSET * 2 + Nether ) ) ); + l.add( newStyle( new ItemStack( this, 1, LEVEL_OFFSET * 2 + Fluix ) ) ); + } + + private ItemStack newStyle(ItemStack itemStack) + { + getProgress( itemStack ); + return itemStack; } }