From 54ace7e45a23591ec714ac263e83af2b73abfa7a Mon Sep 17 00:00:00 2001 From: GlodBlock <1356392126@qq.com> Date: Wed, 9 Feb 2022 18:39:02 +0800 Subject: fix essentia dupe --- .../blocks/tileEntity/EssentiaHatch.java | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'src/main/java/goodgenerator') diff --git a/src/main/java/goodgenerator/blocks/tileEntity/EssentiaHatch.java b/src/main/java/goodgenerator/blocks/tileEntity/EssentiaHatch.java index c8a4b1c713..ecd4f87ed8 100644 --- a/src/main/java/goodgenerator/blocks/tileEntity/EssentiaHatch.java +++ b/src/main/java/goodgenerator/blocks/tileEntity/EssentiaHatch.java @@ -122,14 +122,23 @@ public class EssentiaHatch extends TileEntity implements IAspectContainer, IEsse @Override public boolean doesContainerAccept(Aspect aspect) { - return mLocked == null || mLocked.equals(aspect); + int type = LargeEssentiaEnergyData.getAspectTypeIndex(aspect); + if (type != -1 && (mState & (1 << type)) == 0) return false; + return (mLocked == null || mLocked.equals(aspect)) && getEssentiaAmount(null) <= 1000; } @Override public int addToContainer(Aspect aspect, int i) { - current.add(aspect, i); + int type = LargeEssentiaEnergyData.getAspectTypeIndex(aspect); + if (type != -1 && (mState & (1 << type)) == 0) return i; + int ready = Math.min(1000 - getEssentiaAmount(null), i); + if ((mLocked == null || mLocked.equals(aspect)) && ready > 0) { + current.add(aspect, ready); + this.markDirty(); + return i - ready; + } this.markDirty(); - return 0; + return i; } @Override @@ -195,12 +204,12 @@ public class EssentiaHatch extends TileEntity implements IAspectContainer, IEsse @Override public int addEssentia(Aspect aspect, int i, ForgeDirection forgeDirection) { - current.add(aspect, i); - return 0; + return i - addToContainer(aspect, i); } @Override public Aspect getEssentiaType(ForgeDirection forgeDirection) { + if (current == null || current.size() < 1) return null; return current.getAspects()[0]; } -- cgit