From 1010ea68f10e406b662d13c4dbe91fab09df2693 Mon Sep 17 00:00:00 2001 From: Matt Date: Sun, 31 Oct 2021 07:17:15 -0700 Subject: Circuit Assembly Line now uses StructureLib Former-commit-id: 1400ffc3bdcb4018129c8998701c4c53688b4a0a --- .../multis/GT_TileEntity_CircuitAssemblyLine.java | 233 ++++++++++----------- .../resources/assets/bartworks/lang/en_US.lang | 5 + 2 files changed, 115 insertions(+), 123 deletions(-) (limited to 'src/main') diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_CircuitAssemblyLine.java b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_CircuitAssemblyLine.java index 8db536319a..afaef2d36a 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_CircuitAssemblyLine.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_CircuitAssemblyLine.java @@ -22,10 +22,16 @@ package com.github.bartimaeusnek.bartworks.common.tileentities.multis; +import appeng.integration.modules.GT; import com.github.bartimaeusnek.bartworks.system.material.CircuitGeneration.BW_Meta_Items; import com.github.bartimaeusnek.bartworks.system.material.CircuitGeneration.CircuitImprintLoader; import com.github.bartimaeusnek.bartworks.util.BWRecipes; import com.github.bartimaeusnek.bartworks.util.BW_Util; +import com.gtnewhorizon.structurelib.alignment.IAlignment; +import com.gtnewhorizon.structurelib.alignment.constructable.IConstructable; +import com.gtnewhorizon.structurelib.structure.IStructureDefinition; +import com.gtnewhorizon.structurelib.structure.StructureDefinition; +import cpw.mods.fml.common.registry.GameRegistry; import gregtech.api.GregTech_API; import gregtech.api.enums.Textures; import gregtech.api.interfaces.ITexture; @@ -34,19 +40,60 @@ import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.metatileentity.implementations.*; import gregtech.api.render.TextureFactory; import gregtech.api.util.GT_LanguageManager; +import gregtech.api.util.GT_Multiblock_Tooltip_Builder; import gregtech.api.util.GT_Recipe; import gregtech.api.util.GT_Utility; import net.minecraft.block.Block; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; import net.minecraftforge.common.util.ForgeDirection; import java.util.Collection; import java.util.HashSet; import static com.github.bartimaeusnek.bartworks.util.BW_Tooltip_Reference.ADDED_BY_BARTIMAEUSNEK_VIA_BARTWORKS; +import static com.gtnewhorizon.structurelib.structure.StructureUtility.*; +import static gregtech.api.util.GT_StructureUtility.ofHatchAdder; +import static gregtech.api.util.GT_StructureUtility.ofHatchAdderOptional; +import static net.minecraft.util.StatCollector.translateToLocal; + +public class GT_TileEntity_CircuitAssemblyLine extends GT_MetaTileEntity_EnhancedMultiBlockBase { + + private static final IStructureDefinition STRUCTURE_DEFINITION = StructureDefinition.builder() + .addShape("first", transpose(new String[][] { + {"~", "G", "G"}, + {"g", "l", "g"}, + {"b", "i", "b"}, + })) + .addShape("next", transpose(new String[][] { + {"G", "G", "G"}, + {"g", "l", "g"}, + {"b", "I", "b"}, + })) + .addElement('G', ofHatchAdderOptional(GT_TileEntity_CircuitAssemblyLine::addEnergyInputToMachineList, 16, 1, GregTech_API.sBlockCasings3, 10)) //grate machine casings + .addElement('g', ofBlockAnyMeta(GameRegistry.findBlock("IC2", "blockAlloyGlass"))) + .addElement('l', ofBlock(GregTech_API.sBlockCasings2, 5)) //assembling line casings + .addElement('b', ofChain( + ofHatchAdder(GT_TileEntity_CircuitAssemblyLine::addMaintenanceToMachineList, 16, 2), + ofHatchAdder(GT_TileEntity_CircuitAssemblyLine::addInputHatchToMachineList, 16, 2), + ofBlock(GregTech_API.sBlockCasings2, 0) + )) + .addElement('i', ofHatchAdder(GT_TileEntity_CircuitAssemblyLine::addInputToMachineList, 16, 3)) + .addElement('I', ofChain( + ofHatchAdder(GT_TileEntity_CircuitAssemblyLine::addInputToMachineList, 16, 4), + ofHatchAdder(GT_TileEntity_CircuitAssemblyLine::addOutputToMachineList, 16, 4) + )) + .build(); -public class GT_TileEntity_CircuitAssemblyLine extends GT_MetaTileEntity_MultiBlockBase { + @Override + public IStructureDefinition getStructureDefinition() { return STRUCTURE_DEFINITION; } + + //I can't get this to work properly... + protected GT_Multiblock_Tooltip_Builder createTooltip() { + return new GT_Multiblock_Tooltip_Builder(); + } public String getTypeForDisplay() { if (this.type.equals(new NBTTagCompound())) @@ -163,128 +210,6 @@ public class GT_TileEntity_CircuitAssemblyLine extends GT_MetaTileEntity_MultiBl this.updateSlots(); } - @Override - public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) { - int xDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX; - int zDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ; - - int xBase = aBaseMetaTileEntity.getXCoord() + xDir; - int yBase = aBaseMetaTileEntity.getYCoord(); - int zBase = aBaseMetaTileEntity.getZCoord() + zDir; - - boolean sided = xDir == 0; - - if (sided) - ++zBase; - else - ++xBase; - - int length = 0; - boolean backwards = false; - - - while (true) { - IGregTechTileEntity igtte = aBaseMetaTileEntity.getIGregTechTileEntity(sided ? xBase + length : xBase - 1, yBase - 2, sided ? zBase - 1 : zBase + length); - if (igtte == null){ - backwards = true; - length = 0; - break; - } - - if (igtte.getMetaTileEntity() instanceof GT_MetaTileEntity_Hatch_OutputBus) - break; - - ++length; - - if (length > 7){ - backwards = true; - length = 0; - break; - } - - } - if (backwards) - while (true) { - IGregTechTileEntity igtte = aBaseMetaTileEntity.getIGregTechTileEntity(sided ? xBase + length : xBase - 1, yBase - 2, sided ? zBase - 1 : zBase + length); - if (igtte == null) - return false; - - if (igtte.getMetaTileEntity() instanceof GT_MetaTileEntity_Hatch_OutputBus) - break; - - --length; - - if (length < -7) - return false; - - } - - if (sided) - zBase -= 2; - else - xBase -= 2; - - for (int x = (backwards && sided ? length : 0); x <= (backwards && sided ? 0 : (sided ? length : 2)); x++) { - for (int y = -2; y <= 0; y++) { - for (int z = (backwards && !sided ? length : 0); z <= (backwards && !sided ? 0 : (sided ? 2 : length)); z++) { - if (xBase + x == this.getBaseMetaTileEntity().getXCoord() && yBase + y == this.getBaseMetaTileEntity().getYCoord() && zBase + z == this.getBaseMetaTileEntity().getZCoord()) - continue; - - IGregTechTileEntity tTileEntity = aBaseMetaTileEntity.getIGregTechTileEntity(xBase + x, yBase + y, zBase + z); - Block block = aBaseMetaTileEntity.getBlock(xBase + x, yBase + y, zBase + z); - byte meta = aBaseMetaTileEntity.getMetaID(xBase + x, yBase + y, zBase + z); - - switch (y) { - case -2: { - switch (sided ? z : x) { - case 0: - case 2: { - if (!this.addMaintenanceToMachineList(tTileEntity, 16) && !this.addInputToMachineList(tTileEntity, 16)) - if (block != GregTech_API.sBlockCasings2 || meta != 0) - return false; - break; - } - case 1: { - if (!this.addInputToMachineList(tTileEntity, 16) && !((sided ? x : z) == length && this.addOutputToMachineList(tTileEntity, 16))) - return false; - break; - } - default: - break; - } - break; - } - case -1: { - switch (sided ? z : x) { - case 0: - case 2: { - if (BW_Util.calculateGlassTier(block, meta) < 4) - return false; - break; - } - case 1: { - if (block != GregTech_API.sBlockCasings2 || meta != 5) - return false; - break; - } - default: - break; - } - break; - } - case 0: { - if (!this.addEnergyInputToMachineList(tTileEntity, 16)) - if (block != GregTech_API.sBlockCasings3 || meta != 10) - return false; - break; - } - } - } - } - } - return this.mEnergyHatches.size() == 1 && this.mMaintenanceHatches.size() == 1; - } - @Override public boolean addInputToMachineList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) { if (aTileEntity == null) { @@ -305,6 +230,23 @@ public class GT_TileEntity_CircuitAssemblyLine extends GT_MetaTileEntity_MultiBl } } + private boolean addInputHatchToMachineList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) { + if (aTileEntity == null) { + return false; + } else { + IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity(); + if (aMetaTileEntity == null) { + return false; + } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input) { + ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex); + ((GT_MetaTileEntity_Hatch_Input)aMetaTileEntity).mRecipeMap = this.getRecipeMap(); + return this.mInputHatches.add((GT_MetaTileEntity_Hatch_Input)aMetaTileEntity); + } else { + return false; + } + } + } + @Override public int getMaxEfficiency(ItemStack itemStack) { return 10000; @@ -370,4 +312,49 @@ public class GT_TileEntity_CircuitAssemblyLine extends GT_MetaTileEntity_MultiBl public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aFacing, byte aColorIndex, boolean aActive, boolean aRedstone) { return aSide == aFacing ? new ITexture[]{Textures.BlockIcons.getCasingTextureForId(16), TextureFactory.of(aActive ? TextureFactory.of(TextureFactory.of(Textures.BlockIcons.OVERLAY_FRONT_ASSEMBLY_LINE_ACTIVE), TextureFactory.builder().addIcon(Textures.BlockIcons.OVERLAY_FRONT_ASSEMBLY_LINE_ACTIVE_GLOW).glow().build()) : TextureFactory.of(TextureFactory.of(Textures.BlockIcons.OVERLAY_FRONT_ASSEMBLY_LINE), TextureFactory.builder().addIcon(Textures.BlockIcons.OVERLAY_FRONT_ASSEMBLY_LINE_GLOW).glow().build()))} : new ITexture[]{Textures.BlockIcons.getCasingTextureForId(16)}; } + + private static final String[] description = new String[] { + translateToLocal("BW.keyphrase.Hint_Details") + ":", + translateToLocal("BW.tile.CircuitAssemblyLine.hint.0"), //1 - Energy Input Hatch + translateToLocal("BW.tile.CircuitAssemblyLine.hint.1"), //2 - Maintenance Hatch, Input Hatch + translateToLocal("BW.tile.CircuitAssemblyLine.hint.2"), //3 - Input Bus + translateToLocal("BW.tile.CircuitAssemblyLine.hint.3"), //4 - Input Bus, Output Bus + }; + + @Override + public String[] getStructureDescription(ItemStack stackSize) { + return description; + } + + public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) { + if (!this.checkPiece("first", 0, 0, 0)) { + return false; + } else { + return this.checkMachine(true) || this.checkMachine(false); + } + } + + private boolean checkMachine(boolean leftToRight) { + for(int i = 1; i < 7; ++i) { + if (!this.checkPiece("next", leftToRight ? -i : i, 0, 0)) { + return false; + } + + if (!this.mOutputBusses.isEmpty()) { + return !this.mEnergyHatches.isEmpty() && this.mMaintenanceHatches.size() == 1; + } + } + + return false; + } + + public void construct(ItemStack stackSize, boolean hintsOnly) { + this.buildPiece("first", stackSize, hintsOnly, 0, 0, 0); + int tLength = Math.min(stackSize.stackSize + 1, 7); + + for(int i = 1; i < tLength; ++i) { + this.buildPiece("next", stackSize, hintsOnly, -i, 0, 0); + } + + } } diff --git a/src/main/resources/assets/bartworks/lang/en_US.lang b/src/main/resources/assets/bartworks/lang/en_US.lang index be66d04b55..8644e693a8 100644 --- a/src/main/resources/assets/bartworks/lang/en_US.lang +++ b/src/main/resources/assets/bartworks/lang/en_US.lang @@ -156,6 +156,11 @@ itemGroup.bartworksMetaMaterials=BartWorks' Meta Materials tooltip.tile.eic.0.name=Controller Block for the Electric Implosion Compressor;Size(WxHxD): 3x9x3;Uses Electricity instead of Explosives;Controller: Layer 3, front, center;Layer 1 and Layer 9: Solid Steel Machine Casings, each: 1 Energy Hatch in the middle;Layer 2,3,7,8: Middle: Nickel-Zinc-Ferrit Blocks, Outer: Transformer-Winding Blocks;Layer 4,5,6: Neutronium Blocks;1+ Input Bus, 1+ Output Bus, 1 Maintenance Hatch at any Solid Steel Machine Casing;Do NOT Obstruct or mine the Moving parts while in Operation, will explode if you do so! +BW.keyphrase.Hint_Details=Hint Details +BW.tile.CircuitAssemblyLine.hint.0=1 - Energy Input Hatch +BW.tile.CircuitAssemblyLine.hint.1=2 - Maintenance Hatch, Input Hatch +BW.tile.CircuitAssemblyLine.hint.2=3 - Input Bus +BW.tile.CircuitAssemblyLine.hint.3=4 - Input Bus, Output Bus planet.Ross128b=Ross128b moon.Ross128ba=Ross128ba -- cgit From 90429312a21dff7a77ca752c34b3d34db9027e47 Mon Sep 17 00:00:00 2001 From: Matt Date: Sun, 31 Oct 2021 07:25:16 -0700 Subject: Removed unused imports Former-commit-id: 48eab7a9c815b51d0285b94b7119f33dfcd79ddb --- .../tileentities/multis/GT_TileEntity_CircuitAssemblyLine.java | 7 ------- 1 file changed, 7 deletions(-) (limited to 'src/main') diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_CircuitAssemblyLine.java b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_CircuitAssemblyLine.java index afaef2d36a..4865004032 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_CircuitAssemblyLine.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_CircuitAssemblyLine.java @@ -22,13 +22,10 @@ package com.github.bartimaeusnek.bartworks.common.tileentities.multis; -import appeng.integration.modules.GT; import com.github.bartimaeusnek.bartworks.system.material.CircuitGeneration.BW_Meta_Items; import com.github.bartimaeusnek.bartworks.system.material.CircuitGeneration.CircuitImprintLoader; import com.github.bartimaeusnek.bartworks.util.BWRecipes; import com.github.bartimaeusnek.bartworks.util.BW_Util; -import com.gtnewhorizon.structurelib.alignment.IAlignment; -import com.gtnewhorizon.structurelib.alignment.constructable.IConstructable; import com.gtnewhorizon.structurelib.structure.IStructureDefinition; import com.gtnewhorizon.structurelib.structure.StructureDefinition; import cpw.mods.fml.common.registry.GameRegistry; @@ -43,12 +40,8 @@ import gregtech.api.util.GT_LanguageManager; import gregtech.api.util.GT_Multiblock_Tooltip_Builder; import gregtech.api.util.GT_Recipe; import gregtech.api.util.GT_Utility; -import net.minecraft.block.Block; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.EnumChatFormatting; -import net.minecraftforge.common.util.ForgeDirection; import java.util.Collection; import java.util.HashSet; -- cgit From ec4c31321ebb35b6f919fdc4ae1090a8ecbb1c06 Mon Sep 17 00:00:00 2001 From: Matt Date: Sun, 31 Oct 2021 09:27:00 -0700 Subject: Forms correctly Former-commit-id: 2e762465855383b42927fa10318c2dee29de1c69 --- .../tileentities/multis/GT_TileEntity_CircuitAssemblyLine.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/main') diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_CircuitAssemblyLine.java b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_CircuitAssemblyLine.java index 4865004032..d891a12529 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_CircuitAssemblyLine.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_CircuitAssemblyLine.java @@ -65,7 +65,9 @@ public class GT_TileEntity_CircuitAssemblyLine extends GT_MetaTileEntity_Enhance {"g", "l", "g"}, {"b", "I", "b"}, })) - .addElement('G', ofHatchAdderOptional(GT_TileEntity_CircuitAssemblyLine::addEnergyInputToMachineList, 16, 1, GregTech_API.sBlockCasings3, 10)) //grate machine casings + .addElement('G', ofChain( + ofHatchAdder(GT_TileEntity_CircuitAssemblyLine::addEnergyInputToMachineList, 16, 1), //grate machine casings + ofBlock(GregTech_API.sBlockCasings3, 10))) .addElement('g', ofBlockAnyMeta(GameRegistry.findBlock("IC2", "blockAlloyGlass"))) .addElement('l', ofBlock(GregTech_API.sBlockCasings2, 5)) //assembling line casings .addElement('b', ofChain( @@ -334,7 +336,7 @@ public class GT_TileEntity_CircuitAssemblyLine extends GT_MetaTileEntity_Enhance } if (!this.mOutputBusses.isEmpty()) { - return !this.mEnergyHatches.isEmpty() && this.mMaintenanceHatches.size() == 1; + return this.mEnergyHatches.size() == 1 && this.mMaintenanceHatches.size() == 1; } } -- cgit From b0cbcc5d488589cead315729b13a6385418c5e8e Mon Sep 17 00:00:00 2001 From: Matt Date: Sun, 31 Oct 2021 21:11:49 -0700 Subject: BW EV+ glasses can be part of the structure Former-commit-id: 246a550228602d296e52599110ef80f66ff6142b --- .../multis/GT_TileEntity_CircuitAssemblyLine.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'src/main') diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_CircuitAssemblyLine.java b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_CircuitAssemblyLine.java index d891a12529..4f0c6bae2c 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_CircuitAssemblyLine.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_CircuitAssemblyLine.java @@ -22,6 +22,7 @@ package com.github.bartimaeusnek.bartworks.common.tileentities.multis; +import com.github.bartimaeusnek.bartworks.common.loaders.ItemRegistry; import com.github.bartimaeusnek.bartworks.system.material.CircuitGeneration.BW_Meta_Items; import com.github.bartimaeusnek.bartworks.system.material.CircuitGeneration.CircuitImprintLoader; import com.github.bartimaeusnek.bartworks.util.BWRecipes; @@ -40,6 +41,7 @@ import gregtech.api.util.GT_LanguageManager; import gregtech.api.util.GT_Multiblock_Tooltip_Builder; import gregtech.api.util.GT_Recipe; import gregtech.api.util.GT_Utility; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -68,7 +70,16 @@ public class GT_TileEntity_CircuitAssemblyLine extends GT_MetaTileEntity_Enhance .addElement('G', ofChain( ofHatchAdder(GT_TileEntity_CircuitAssemblyLine::addEnergyInputToMachineList, 16, 1), //grate machine casings ofBlock(GregTech_API.sBlockCasings3, 10))) - .addElement('g', ofBlockAnyMeta(GameRegistry.findBlock("IC2", "blockAlloyGlass"))) + .addElement('g', ofChain( + ofBlockAnyMeta(GameRegistry.findBlock("IC2", "blockAlloyGlass")), + //Forgive me for I have sinned. But it works... + ofBlock(ItemRegistry.bw_realglas, 1), + ofBlock(ItemRegistry.bw_realglas, 2), + ofBlock(ItemRegistry.bw_realglas, 3), + ofBlock(ItemRegistry.bw_realglas, 4), + ofBlock(ItemRegistry.bw_realglas, 5), + ofBlock(ItemRegistry.bw_realglas, 12) + )) .addElement('l', ofBlock(GregTech_API.sBlockCasings2, 5)) //assembling line casings .addElement('b', ofChain( ofHatchAdder(GT_TileEntity_CircuitAssemblyLine::addMaintenanceToMachineList, 16, 2), -- cgit