From ef4efd5ce052ebb52e7be63a9afb3095bd14f4fd Mon Sep 17 00:00:00 2001 From: AlgorithmX2 Date: Sun, 5 Jan 2014 02:45:29 -0600 Subject: [PATCH] isFluid/isItem --- util/item/AEFluidStack.java | 19 ++++++++++++++ util/item/AEItemStack.java | 52 +++++++++++++++++++++++++++++++++---- util/item/OreHelper.java | 2 +- 3 files changed, 67 insertions(+), 6 deletions(-) diff --git a/util/item/AEFluidStack.java b/util/item/AEFluidStack.java index 56818126..effe5125 100644 --- a/util/item/AEFluidStack.java +++ b/util/item/AEFluidStack.java @@ -16,6 +16,7 @@ import net.minecraft.nbt.NBTTagString; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; import appeng.api.config.FuzzyMode; +import appeng.api.storage.StorageChannel; import appeng.api.storage.data.IAEFluidStack; import appeng.api.storage.data.IAETagCompound; import appeng.util.Platform; @@ -316,4 +317,22 @@ public final class AEFluidStack extends AEStack implements IAEFlu return false; } + @Override + public boolean isItem() + { + return false; + } + + @Override + public boolean isFluid() + { + return true; + } + + @Override + public StorageChannel getChannel() + { + return StorageChannel.FLUIDS; + } + } diff --git a/util/item/AEItemStack.java b/util/item/AEItemStack.java index 50a6d7a6..8a8f85d8 100644 --- a/util/item/AEItemStack.java +++ b/util/item/AEItemStack.java @@ -16,6 +16,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagLong; import net.minecraft.nbt.NBTTagShort; import appeng.api.config.FuzzyMode; +import appeng.api.storage.StorageChannel; import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IAETagCompound; import appeng.util.Platform; @@ -108,7 +109,7 @@ public final class AEItemStack extends AEStack implements IAEItemS { if ( ia instanceof AEItemStack ) { - return ((AEItemStack) ia).def == def && def.tagCompound == ((AEItemStack) ia).def.tagCompound; + return ((AEItemStack) ia).def.equals( def ) && def.tagCompound == ((AEItemStack) ia).def.tagCompound; } else if ( ia instanceof ItemStack ) { @@ -242,6 +243,9 @@ public final class AEItemStack extends AEStack implements IAEItemS int dv = def.damageValue - b.def.damageValue; int dspv = def.dspDamage - b.def.dspDamage; + int dif = id == 0 ? (dv == 0 ? (dspv == 0 ? ((def.tagCompound == null ? 0 : def.tagCompound.hashCode()) - (b.def.tagCompound == null ? 0 + : b.def.tagCompound.hashCode())) : dspv) : dv) : id; + return id == 0 ? (dv == 0 ? (dspv == 0 ? ((def.tagCompound == null ? 0 : def.tagCompound.hashCode()) - (b.def.tagCompound == null ? 0 : b.def.tagCompound.hashCode())) : dspv) : dv) : id; } @@ -474,8 +478,18 @@ public final class AEItemStack extends AEStack implements IAEItemS AEItemStack bottom = new AEItemStack( this ); bottom.def = bottom.def.copy(); - int low = fuzzy.calculateBreakPoint( def.maxDamage ); - bottom.def.dspDamage = low < def.dspDamage ? low : 0; + if ( fuzzy == FuzzyMode.IGNORE_ALL ) + { + bottom.def.dspDamage = 0; + } + else + { + int low = fuzzy.calculateBreakPoint( def.maxDamage ); + bottom.def.dspDamage = low < def.dspDamage ? low : 0; + } + + if ( bottom.def.item.isDamageable() ) + bottom.def.damageValue = bottom.def.dspDamage; return bottom; } @@ -485,8 +499,18 @@ public final class AEItemStack extends AEStack implements IAEItemS AEItemStack top = new AEItemStack( this ); top.def = top.def.copy(); - int high = fuzzy.calculateBreakPoint( def.maxDamage ); - top.def.dspDamage = high > def.dspDamage ? high : def.maxDamage; + if ( fuzzy == FuzzyMode.IGNORE_ALL ) + { + top.def.dspDamage = def.maxDamage + 1; + } + else + { + int high = fuzzy.calculateBreakPoint( def.maxDamage ) + 1; + top.def.dspDamage = high > def.dspDamage ? high : def.maxDamage + 1; + } + + if ( top.def.item.isDamageable() ) + top.def.damageValue = top.def.dspDamage; return top; } @@ -514,4 +538,22 @@ public final class AEItemStack extends AEStack implements IAEItemS return def.isItem( otherStack ); } + + @Override + public boolean isItem() + { + return true; + } + + @Override + public boolean isFluid() + { + return false; + } + + @Override + public StorageChannel getChannel() + { + return StorageChannel.ITEMS; + } } diff --git a/util/item/OreHelper.java b/util/item/OreHelper.java index 72f2bf3c..2969afc1 100644 --- a/util/item/OreHelper.java +++ b/util/item/OreHelper.java @@ -6,7 +6,7 @@ import appeng.api.storage.data.IAEItemStack; public class OreHelper { - public static OreHelper instance; + public static OreHelper instance = new OreHelper(); public boolean isOre(IAEItemStack is) {