From 3201e54dc325023921e44f8ea38c5afbc0af848e Mon Sep 17 00:00:00 2001 From: GlodBlock <1356392126@qq.com> Date: Tue, 17 May 2022 20:25:58 +0800 Subject: [PATCH] pattern transfer in termial --- build.gradle | 4 +- .../common/part/PartFluidPatternTerminal.java | 39 +++++++++++++++++++ .../common/tile/TileFluidDiscretizer.java | 5 +-- 3 files changed, 43 insertions(+), 5 deletions(-) diff --git a/build.gradle b/build.gradle index 2fb944d4..75dd6d3c 100644 --- a/build.gradle +++ b/build.gradle @@ -29,7 +29,7 @@ buildscript { apply plugin: 'net.minecraftforge.gradle.forge' apply plugin: 'idea' -version = "1.0.0" +version = "2.0.0-r" group = "ae2fc" archivesBaseName = "Fluid Craft for AE2" @@ -52,7 +52,7 @@ dependencies { deobfCompile "curse.maven:packagedauto-308380:2977147" // 1.0.3.14 deobfCompile "curse.maven:modular-machinery-270790:2761302" // 1.11.1 deobfCompile "curse.maven:codechicken-lib-1-8-242818:2779848" //ccl - deobfCompile "gregtechce:gregtech:1.12.2:1.15.1.735" // gt + deobfCompile "curse.maven:gregtech-ce-unofficial-557242:3784798" // gt } minecraft { diff --git a/src/main/java/com/glodblock/github/common/part/PartFluidPatternTerminal.java b/src/main/java/com/glodblock/github/common/part/PartFluidPatternTerminal.java index 6a0413bf..0428ac8d 100644 --- a/src/main/java/com/glodblock/github/common/part/PartFluidPatternTerminal.java +++ b/src/main/java/com/glodblock/github/common/part/PartFluidPatternTerminal.java @@ -1,5 +1,6 @@ package com.glodblock.github.common.part; +import appeng.api.networking.crafting.ICraftingPatternDetails; import appeng.api.parts.IPartModel; import appeng.api.storage.data.IAEItemStack; import appeng.core.sync.GuiBridge; @@ -10,7 +11,9 @@ import appeng.tile.inventory.AppEngInternalInventory; import appeng.util.Platform; import appeng.util.inv.InvOperation; import com.glodblock.github.FluidCraft; +import com.glodblock.github.common.item.ItemFluidDrop; import com.glodblock.github.common.item.ItemFluidEncodedPattern; +import com.glodblock.github.common.item.ItemFluidPacket; import com.glodblock.github.inventory.GuiType; import com.glodblock.github.inventory.InventoryHandler; import net.minecraft.entity.player.EntityPlayer; @@ -69,6 +72,42 @@ public class PartFluidPatternTerminal extends PartPatternTerminal { if (slot == 1) { final ItemStack is = inv.getStackInSlot(1); if (!is.isEmpty() && is.getItem() instanceof ItemFluidEncodedPattern) { + final ItemFluidEncodedPattern pattern = (ItemFluidEncodedPattern) is.getItem(); + final ICraftingPatternDetails details = pattern.getPatternForItem( is, this.getHost().getTile().getWorld() ); + if( details != null ) + { + this.setCraftingRecipe( details.isCraftable() ); + this.setSubstitution( details.canSubstitute() ); + + for( int x = 0; x < this.getInventoryByName("crafting").getSlots(); x ++ ) { + ((AppEngInternalInventory) this.getInventoryByName("crafting")).setStackInSlot(x, ItemStack.EMPTY); + } + + for( int x = 0; x < this.getInventoryByName("output").getSlots(); x ++ ) { + ((AppEngInternalInventory) this.getInventoryByName("output")).setStackInSlot(x, ItemStack.EMPTY); + } + + for( int x = 0; x < this.getInventoryByName("crafting").getSlots() && x < details.getInputs().length; x++ ) + { + final IAEItemStack item = details.getInputs()[x]; + if (item != null && item.getItem() instanceof ItemFluidDrop) { + ItemStack packet = ItemFluidPacket.newStack(ItemFluidDrop.getFluidStack(item.createItemStack())); + ((AppEngInternalInventory) this.getInventoryByName("crafting")).setStackInSlot(x, packet); + } + else ((AppEngInternalInventory) this.getInventoryByName("crafting")).setStackInSlot( x, item == null ? ItemStack.EMPTY : item.createItemStack() ); + } + + for( int x = 0; x < this.getInventoryByName("output").getSlots() && x < details.getOutputs().length; x++ ) + { + final IAEItemStack item = details.getOutputs()[x]; + if (item != null && item.getItem() instanceof ItemFluidDrop) { + ItemStack packet = ItemFluidPacket.newStack(ItemFluidDrop.getFluidStack(item.createItemStack())); + ((AppEngInternalInventory) this.getInventoryByName("output")).setStackInSlot(x, packet); + } + else ((AppEngInternalInventory) this.getInventoryByName("output")).setStackInSlot( x, item == null ? ItemStack.EMPTY : item.createItemStack() ); + } + } + this.getHost().markForSave(); return; } } diff --git a/src/main/java/com/glodblock/github/common/tile/TileFluidDiscretizer.java b/src/main/java/com/glodblock/github/common/tile/TileFluidDiscretizer.java index b1712e92..138d6fd6 100644 --- a/src/main/java/com/glodblock/github/common/tile/TileFluidDiscretizer.java +++ b/src/main/java/com/glodblock/github/common/tile/TileFluidDiscretizer.java @@ -210,14 +210,13 @@ public class TileFluidDiscretizer extends AENetworkTile implements ICellContaine List mappedChanges = new ArrayList<>(); for (IAEFluidStack fluidStack : change) { boolean isNg = false; - System.out.print(fluidStack + "\n"); if (fluidStack.getStackSize() < 0) { isNg = true; - fluidStack.setStackSize( - fluidStack.getStackSize()); + fluidStack.setStackSize( - fluidStack.getStackSize() ); } IAEItemStack itemStack = ItemFluidDrop.newAeStack(fluidStack); if (itemStack != null) { - if (isNg) itemStack.setStackSize( - itemStack.getStackSize()); + if (isNg) itemStack.setStackSize( - itemStack.getStackSize() ); mappedChanges.add(itemStack); } }