diff options
author | SKProCH <29896317+SKProCH@users.noreply.github.com> | 2024-08-17 18:08:34 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-17 17:08:34 +0200 |
commit | 18a04c9b247da83b5b69aead40bfda056dd7a327 (patch) | |
tree | 1acf2102a474d920da16c21028089ff699c8223b /src/main/java/goodgenerator | |
parent | 3e951d1c0c45dfeef0a99eb8040e2c3724925c0d (diff) | |
download | GT5-Unofficial-18a04c9b247da83b5b69aead40bfda056dd7a327.tar.gz GT5-Unofficial-18a04c9b247da83b5b69aead40bfda056dd7a327.tar.bz2 GT5-Unofficial-18a04c9b247da83b5b69aead40bfda056dd7a327.zip |
Fix/adds fluids processing logic to LES (#2895)
Add input hatch support and fluids processing logic to LES
Co-authored-by: Martin Robertz <dream-master@gmx.net>
Diffstat (limited to 'src/main/java/goodgenerator')
-rw-r--r-- | src/main/java/goodgenerator/blocks/tileEntity/LargeEssentiaSmeltery.java | 47 |
1 files changed, 42 insertions, 5 deletions
diff --git a/src/main/java/goodgenerator/blocks/tileEntity/LargeEssentiaSmeltery.java b/src/main/java/goodgenerator/blocks/tileEntity/LargeEssentiaSmeltery.java index d5572e0b16..82838322ce 100644 --- a/src/main/java/goodgenerator/blocks/tileEntity/LargeEssentiaSmeltery.java +++ b/src/main/java/goodgenerator/blocks/tileEntity/LargeEssentiaSmeltery.java @@ -15,6 +15,7 @@ import net.minecraft.nbt.NBTTagList; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.fluids.FluidStack; import org.jetbrains.annotations.NotNull; @@ -168,7 +169,11 @@ public class LargeEssentiaSmeltery extends GT_MetaTileEntity_TooltipMultiBlockBa 'A', ofChain( buildHatchAdder(LargeEssentiaSmeltery.class) - .atLeast(GT_HatchElement.Maintenance, GT_HatchElement.Energy, GT_HatchElement.InputBus) + .atLeast( + GT_HatchElement.Maintenance, + GT_HatchElement.Energy, + GT_HatchElement.InputBus, + GT_HatchElement.InputHatch) .casingIndex(CASING_INDEX) .dot(1) .build(), @@ -298,13 +303,14 @@ public class LargeEssentiaSmeltery extends GT_MetaTileEntity_TooltipMultiBlockBa public @NotNull CheckRecipeResult checkProcessing_EM() { if (!isFullPower()) return SimpleCheckRecipeResult.ofFailure("node_too_small"); - ArrayList<ItemStack> tInputList = getStoredInputs(); + ArrayList<ItemStack> tItemsList = getStoredInputs(); + ArrayList<FluidStack> tFluidsList = getStoredFluids(); - if (tInputList.size() == 0) return CheckRecipeResultRegistry.NO_RECIPE; + if (tItemsList.isEmpty() && tFluidsList.isEmpty()) return CheckRecipeResultRegistry.NO_RECIPE; int p = (int) this.mParallel; - for (int i = tInputList.size() - 1; i >= 0; i--) { - ItemStack itemStack = tInputList.get(i); + for (int i = tItemsList.size() - 1; i >= 0; i--) { + ItemStack itemStack = tItemsList.get(i); int stackSize = itemStack.stackSize; int sur = p - stackSize; @@ -323,6 +329,26 @@ public class LargeEssentiaSmeltery extends GT_MetaTileEntity_TooltipMultiBlockBa } } + for (int i = tFluidsList.size() - 1; i >= 0; i--) { + FluidStack fluidStack = tFluidsList.get(i); + int stackSize = fluidStack.amount / 1000; + int sur = p - stackSize; + + if (sur > 0) { + p -= stackSize; + this.mOutputAspects.add(getEssentia(fluidStack, stackSize)); + if (!depleteInput(fluidStack)) fluidStack.amount = 0; + } else if (sur == 0) { + this.mOutputAspects.add(getEssentia(fluidStack, stackSize)); + if (!depleteInput(fluidStack)) fluidStack.amount = 0; + break; + } else { + this.mOutputAspects.add(getEssentia(fluidStack, p)); + fluidStack.amount -= p; + break; + } + } + this.mEfficiency = 10000 - (this.getIdealStatus() - this.getRepairStatus()) * 1000; this.mEfficiencyIncrease = 10000; @@ -351,6 +377,9 @@ public class LargeEssentiaSmeltery extends GT_MetaTileEntity_TooltipMultiBlockBa private AspectList getEssentia(ItemStack itemStack, int amount) { AspectList aspectList = new AspectList(); + if (amount == 0) { + return aspectList; + } AspectList aspects = ThaumcraftCraftingManager.getObjectTags(itemStack); aspects = ThaumcraftCraftingManager.getBonusTags(itemStack, aspects); if (aspects != null && aspects.size() != 0 && aspects.getAspects()[0] != null) { @@ -359,6 +388,14 @@ public class LargeEssentiaSmeltery extends GT_MetaTileEntity_TooltipMultiBlockBa return aspectList; } + private AspectList getEssentia(FluidStack fluidStack, int amountBuckets) { + Block fluidBlock = fluidStack.getFluid() + .getBlock(); + if (fluidBlock == null) return new AspectList(); + ItemStack block = new ItemStack(fluidBlock); + return getEssentia(block, amountBuckets); + } + private void fillEssentiaOutputHatch() { for (EssentiaOutputHatch outputHatch : this.mEssentiaOutputHatches) { for (Map.Entry<Aspect, Integer> entry : this.mOutputAspects.copy().aspects.entrySet()) { |