aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSKProCH <29896317+SKProCH@users.noreply.github.com>2024-08-17 18:08:34 +0300
committerGitHub <noreply@github.com>2024-08-17 17:08:34 +0200
commit18a04c9b247da83b5b69aead40bfda056dd7a327 (patch)
tree1acf2102a474d920da16c21028089ff699c8223b
parent3e951d1c0c45dfeef0a99eb8040e2c3724925c0d (diff)
downloadGT5-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>
-rw-r--r--src/main/java/goodgenerator/blocks/tileEntity/LargeEssentiaSmeltery.java47
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()) {