From 8a3c6b95b4cd377bf1744bbfbd0de5d952fd7dca Mon Sep 17 00:00:00 2001 From: DianeXD Date: Sun, 23 Oct 2022 19:21:26 +0800 Subject: Autoplace support --- src/main/java/common/tileentities/GTMTE_TFFT.java | 85 +++++++++++++++++------ 1 file changed, 65 insertions(+), 20 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/common/tileentities/GTMTE_TFFT.java b/src/main/java/common/tileentities/GTMTE_TFFT.java index 6f1af4bd80..84581ca290 100644 --- a/src/main/java/common/tileentities/GTMTE_TFFT.java +++ b/src/main/java/common/tileentities/GTMTE_TFFT.java @@ -8,8 +8,9 @@ import static java.lang.Math.min; import com.github.bartimaeusnek.bartworks.API.BorosilicateGlass; import com.gtnewhorizon.structurelib.StructureLibAPI; import com.gtnewhorizon.structurelib.alignment.constructable.ChannelDataAccessor; -import com.gtnewhorizon.structurelib.structure.IStructureDefinition; -import com.gtnewhorizon.structurelib.structure.IStructureElement; +import com.gtnewhorizon.structurelib.alignment.constructable.ISurvivalConstructable; +import com.gtnewhorizon.structurelib.structure.*; +import com.gtnewhorizon.structurelib.util.ItemStackPredicate; import common.Blocks; import gregtech.api.enums.Textures; import gregtech.api.fluid.FluidTankGT; @@ -30,7 +31,6 @@ import java.text.MessageFormat; import java.text.NumberFormat; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.List; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; @@ -43,7 +43,7 @@ import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTankInfo; -public class GTMTE_TFFT extends GT_MetaTileEntity_EnhancedMultiBlockBase { +public class GTMTE_TFFT extends GT_MetaTileEntity_EnhancedMultiBlockBase implements ISurvivalConstructable { public enum Field { T1(1_000_000L, 1), // LV @@ -55,7 +55,7 @@ public class GTMTE_TFFT extends GT_MetaTileEntity_EnhancedMultiBlockBase { INSTANCE; + private final List> mteClasses; + + @SafeVarargs + TFFTMultiHatch(Class... mteClasses) { + this.mteClasses = Arrays.asList(mteClasses); + } + @Override public List> mteClasses() { - return Collections.singletonList(GTMTE_TFFT.class); + return mteClasses; } @Override @@ -117,6 +124,9 @@ public class GTMTE_TFFT extends GT_MetaTileEntity_EnhancedMultiBlockBase STRUCTURE_DEFINITION = IStructureDefinition.builder() .addShape( @@ -191,6 +201,41 @@ public class GTMTE_TFFT extends GT_MetaTileEntity_EnhancedMultiBlockBase s != null + && s.stackSize >= 0 + && s.getItem() == TFFT_FIELD_ITEM + && s.getItemDamage() != CASING_META + && s.getItemDamage() <= fieldTier, + true); + if (result == null) return PlaceResult.REJECT; + + return StructureUtility.survivalPlaceBlock( + result, + ItemStackPredicate.NBTMode.EXACT, + null, + true, + world, + x, + y, + z, + env.getSource(), + env.getActor(), + env.getChatter()); + } })) .build(); @@ -291,6 +336,8 @@ public class GTMTE_TFFT extends GT_MetaTileEntity_EnhancedMultiBlockBase= 0) return build; - // int layer = min(stackSize.stackSize + DEFAULT_LAYER_AMOUNT, MAX_LAYER_AMOUNT + 1); - // for (int i = -1; i >= 1 - layer; i--) { - // survivialBuildPiece(STRUCTURE_PIECE_MID, stackSize, 2, 2, i, elementBudget, env, false, true); - // if (build >= 0) return build; - // } - // return survivialBuildPiece(STRUCTURE_PIECE_BOTTOM, stackSize, 2, 2, -layer, elementBudget, env, false, - // true); - // } + @Override + public int survivalConstruct(ItemStack stackSize, int elementBudget, ISurvivalBuildEnvironment env) { + if (mMachine) return -1; + int build = survivialBuildPiece(STRUCTURE_PIECE_TOP, stackSize, 2, 2, 0, elementBudget, env, false, true); + if (build >= 0) return build; + int layer = min(stackSize.stackSize + DEFAULT_LAYER_AMOUNT, MAX_LAYER_AMOUNT + 1); + for (int i = -1; i >= 1 - layer; i--) { + build = survivialBuildPiece(STRUCTURE_PIECE_MID, stackSize, 2, 2, i, elementBudget, env, false, true); + if (build >= 0) return build; + } + return survivialBuildPiece(STRUCTURE_PIECE_BOTTOM, stackSize, 2, 2, -layer, elementBudget, env, false, true); + } @Override public boolean isCorrectMachinePart(ItemStack aStack) { @@ -549,7 +595,6 @@ public class GTMTE_TFFT extends GT_MetaTileEntity_EnhancedMultiBlockBase