aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/common')
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multiblock/MultiBlock_Macerator.java131
1 files changed, 131 insertions, 0 deletions
diff --git a/src/main/java/gregtech/common/tileentities/machines/multiblock/MultiBlock_Macerator.java b/src/main/java/gregtech/common/tileentities/machines/multiblock/MultiBlock_Macerator.java
new file mode 100644
index 0000000000..d470518842
--- /dev/null
+++ b/src/main/java/gregtech/common/tileentities/machines/multiblock/MultiBlock_Macerator.java
@@ -0,0 +1,131 @@
+package gregtech.common.tileentities.machines.multiblock;
+
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
+import com.gtnewhorizon.structurelib.util.Vec3Impl;
+import gregtech.api.interfaces.ITexture;
+import gregtech.api.multitileentity.multiblock.base.MultiBlockPart;
+import gregtech.api.multitileentity.multiblock.base.MultiBlock_Stackable;
+import gregtech.api.render.TextureFactory;
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
+import net.minecraft.block.Block;
+import net.minecraft.item.ItemStack;
+
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofChain;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.transpose;
+import static gregtech.api.enums.Textures.BlockIcons.MACHINE_CASINGS;
+import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_ELECTRIC_BLAST_FURNACE_ACTIVE;
+import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_ELECTRIC_BLAST_FURNACE_ACTIVE_GLOW;
+import static gregtech.api.multitileentity.multiblock.base.MultiBlockPart.ENERGY_IN;
+import static gregtech.api.multitileentity.multiblock.base.MultiBlockPart.FLUID_IN;
+import static gregtech.api.multitileentity.multiblock.base.MultiBlockPart.FLUID_OUT;
+import static gregtech.api.multitileentity.multiblock.base.MultiBlockPart.ITEM_IN;
+import static gregtech.api.multitileentity.multiblock.base.MultiBlockPart.ITEM_OUT;
+import static gregtech.api.multitileentity.multiblock.base.MultiBlockPart.NOTHING;
+
+public class MultiBlock_Macerator extends MultiBlock_Stackable<MultiBlock_Macerator> {
+ private IStructureDefinition<MultiBlock_Macerator> STRUCTURE_DEFINITION = null;
+
+ @Override
+ public String getTileEntityName() {
+ return "gt.multitileentity.multiblock.macerator";
+ }
+
+ @Override
+ public IStructureDefinition<MultiBlock_Macerator> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<MultiBlock_Macerator>builder()
+ .addShape(STACKABLE_TOP, transpose(new String[][] {
+ {" CCC ", "CCCCC", "CCCCC", "CCCCC", " CCC "},
+ }))
+ .addShape(STACKABLE_MIDDLE, transpose(new String[][] {
+ {" BBB ", " B---B ", "DC---CD", " B---B ", " BBB "},
+ }))
+ .addShape(STACKABLE_BOTTOM, transpose(new String[][] {
+ {" A~A ", "AAAAA", "AAAAA", "AAAAA", " AAA "},
+ }))
+ .addElement('A', ofChain(addMultiTileCasing(getCasingRegistryID(), getCasingMeta(), ENERGY_IN)))
+ .addElement('B', ofChain(addMultiTileCasing(getCasingRegistryID(), getCasingMeta(), FLUID_IN | ITEM_IN | FLUID_OUT | ITEM_OUT)))
+ .addElement('C', addMultiTileCasing(getCasingRegistryID(), getCasingMeta(), NOTHING))
+ .addElement('D', addMultiTileCasing(getCasingRegistryID(), getCasingMeta(), NOTHING))
+ .build();
+ }
+ return STRUCTURE_DEFINITION;
+ }
+
+ @Override public short getCasingRegistryID() {
+ return getMultiTileEntityRegistryID();
+ }
+
+ @Override public short getCasingMeta() {
+ return 18000;
+ }
+
+ @Override
+ public boolean hasTop() { return true; }
+
+
+ @Override
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
+ final GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType("Macerator")
+ .addInfo("Controller for the Macerator")
+ .addSeparator()
+ .beginVariableStructureBlock(7, 9, 2 + getMinStacks(), 2+getMaxStacks(), 7, 9, true)
+ .addController("Bottom Front Center")
+ .addCasingInfo("Test Casing", 60)
+ .addEnergyHatch("Any bottom layer casing")
+ .addInputHatch("Any non-optional external facing casing on the stacks")
+ .addInputBus("Any non-optional external facing casing on the stacks")
+ .addOutputHatch("Any non-optional external facing casing on the stacks")
+ .addOutputBus("Any non-optional external facing casing on the stacks")
+ .addStructureInfo(String.format("Stackable middle stacks between %d-%d time(s).", getMinStacks(), getMaxStacks()))
+ .toolTipFinisher("Wildcard");
+ return tt;
+ }
+
+ @Override
+ public int getMinStacks() {
+ return 1;
+ }
+
+ @Override
+ public int getMaxStacks() {
+ return 10;
+ }
+
+
+ @Override
+ public Vec3Impl getStartingStructureOffset() {
+ return new Vec3Impl(2, 0, 0);
+ }
+
+ @Override
+ public Vec3Impl getStartingStackOffset() {
+ return new Vec3Impl(1, 1, 0);
+ }
+
+ @Override
+ public Vec3Impl getPerStackOffset() {
+ return new Vec3Impl(0, 1, 0);
+ }
+
+ @Override
+ public Vec3Impl getAfterLastStackOffset() {
+ return new Vec3Impl(-1, 0, 0);
+ }
+
+ @Override
+ public ITexture[] getTexture(Block aBlock, byte aSide, boolean isActive, int aRenderPass) {
+ if(mFacing == aSide) {
+ return new ITexture[]{
+ MACHINE_CASINGS[1][0],
+ TextureFactory.builder().addIcon(OVERLAY_FRONT_ELECTRIC_BLAST_FURNACE_ACTIVE).extFacing().build(),
+ TextureFactory.builder().addIcon(OVERLAY_FRONT_ELECTRIC_BLAST_FURNACE_ACTIVE_GLOW).extFacing().glow().build()
+ };
+ }
+ return new ITexture[]{ MACHINE_CASINGS[1][0]};
+ }
+
+
+}