aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/gregtech/api/GregTech_API.java2
-rw-r--r--src/main/java/gregtech/api/enums/GT_Values.java1
-rw-r--r--src/main/java/gregtech/api/enums/ItemList.java11
-rw-r--r--src/main/java/gregtech/api/enums/MetaTileEntityIDs.java1
-rw-r--r--src/main/java/gregtech/api/enums/Textures.java16
-rw-r--r--src/main/java/gregtech/common/blocks/GT_Block_Casings11.java58
-rw-r--r--src/main/java/gregtech/common/blocks/GT_Item_Casings11.java14
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_MultiLathe.java357
-rw-r--r--src/main/java/gregtech/loaders/preload/GT_Loader_Item_Block_And_Fluid.java2
-rw-r--r--src/main/java/gregtech/loaders/preload/GT_Loader_MetaTileEntities.java8
-rw-r--r--src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_BLACK_PLUTONIUM.pngbin0 -> 323 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_BRASS.pngbin0 -> 417 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_ELECTRUM.pngbin0 -> 496 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_FLUXED_ELECTRUM.pngbin0 -> 499 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_OSMIUM.pngbin0 -> 428 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_PLATINUM.pngbin0 -> 501 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_QUANTIUM.pngbin0 -> 354 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_TIN.pngbin0 -> 481 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_FRONT_MULTI_LATHE.pngbin0 -> 254 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_FRONT_MULTI_LATHE_ACTIVE.pngbin0 -> 255 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_FRONT_MULTI_LATHE_ACTIVE_GLOW.pngbin0 -> 255 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_FRONT_MULTI_LATHE_GLOW.pngbin0 -> 256 bytes
22 files changed, 468 insertions, 2 deletions
diff --git a/src/main/java/gregtech/api/GregTech_API.java b/src/main/java/gregtech/api/GregTech_API.java
index 979fd3d064..9190d03bab 100644
--- a/src/main/java/gregtech/api/GregTech_API.java
+++ b/src/main/java/gregtech/api/GregTech_API.java
@@ -294,7 +294,7 @@ public class GregTech_API {
sBlockMetal9, sBlockGem1, sBlockGem2, sBlockGem3, sBlockReinforced;
public static Block sBlockGranites, sBlockConcretes, sBlockStones;
public static Block sBlockCasings1, sBlockCasings2, sBlockCasings3, sBlockCasings4, sBlockCasings5, sBlockCasings6,
- sBlockCasings8, sBlockCasings9, sBlockCasings10, sSolenoidCoilCasings;
+ sBlockCasings8, sBlockCasings9, sBlockCasings10, sBlockCasings11, sSolenoidCoilCasings;
public static Block sBlockLongDistancePipes;
public static Block sDroneRender;
/**
diff --git a/src/main/java/gregtech/api/enums/GT_Values.java b/src/main/java/gregtech/api/enums/GT_Values.java
index 4d7f380656..bda681dc75 100644
--- a/src/main/java/gregtech/api/enums/GT_Values.java
+++ b/src/main/java/gregtech/api/enums/GT_Values.java
@@ -665,6 +665,7 @@ public class GT_Values {
+ EnumChatFormatting.GOLD
+ EnumChatFormatting.BOLD
+ "Gold";
+ public static final String AuthorVolence = "Author: " + EnumChatFormatting.AQUA + "Volence";
// 7.5F comes from GT_Tool_Turbine_Large#getBaseDamage() given huge turbines are the most efficient now.
public static double getMaxPlasmaTurbineEfficiencyFromMaterial(Materials material) {
diff --git a/src/main/java/gregtech/api/enums/ItemList.java b/src/main/java/gregtech/api/enums/ItemList.java
index ca1cf5e2a9..f024361c19 100644
--- a/src/main/java/gregtech/api/enums/ItemList.java
+++ b/src/main/java/gregtech/api/enums/ItemList.java
@@ -1463,6 +1463,8 @@ public enum ItemList implements IItemContainer {
Machine_Multi_Canner,
+ Machine_Multi_Lathe,
+
Machine_LV_Miner,
Machine_MV_Miner,
Machine_HV_Miner,
@@ -1669,6 +1671,15 @@ public enum ItemList implements IItemContainer {
Casing_Tank_15,
Casing_Tank_0,
+ Casing_Item_Pipe_Tin,
+ Casing_Item_Pipe_Brass,
+ Casing_Item_Pipe_Electrum,
+ Casing_Item_Pipe_Platinum,
+ Casing_Item_Pipe_Osmium,
+ Casing_Item_Pipe_Quantium,
+ Casing_Item_Pipe_Fluxed_Electrum,
+ Casing_Item_Pipe_Black_Plutonium,
+
MobRep_LV,
MobRep_MV,
MobRep_HV,
diff --git a/src/main/java/gregtech/api/enums/MetaTileEntityIDs.java b/src/main/java/gregtech/api/enums/MetaTileEntityIDs.java
index 0222df057b..8abf07e1b1 100644
--- a/src/main/java/gregtech/api/enums/MetaTileEntityIDs.java
+++ b/src/main/java/gregtech/api/enums/MetaTileEntityIDs.java
@@ -482,6 +482,7 @@ public enum MetaTileEntityIDs {
MINER_LV(679),
MINER_MV(680),
MINER_HV(681),
+ MULTI_LATHE_CONTROLLER(686),
BATTERY_CHARGER_4_BY_4_ULV(690),
BATTERY_CHARGER_4_BY_4_LV(691),
BATTERY_CHARGER_4_BY_4_MV(692),
diff --git a/src/main/java/gregtech/api/enums/Textures.java b/src/main/java/gregtech/api/enums/Textures.java
index 33b8483a2d..ba13de2552 100644
--- a/src/main/java/gregtech/api/enums/Textures.java
+++ b/src/main/java/gregtech/api/enums/Textures.java
@@ -87,6 +87,15 @@ public class Textures {
MACHINE_CASING_TANK_14,
MACHINE_CASING_TANK_0,
+ MACHINE_CASING_ITEM_PIPE_TIN,
+ MACHINE_CASING_ITEM_PIPE_BRASS,
+ MACHINE_CASING_ITEM_PIPE_ELECTRUM,
+ MACHINE_CASING_ITEM_PIPE_PLATINUM,
+ MACHINE_CASING_ITEM_PIPE_OSMIUM,
+ MACHINE_CASING_ITEM_PIPE_QUANTIUM,
+ MACHINE_CASING_ITEM_PIPE_FLUXED_ELECTRUM,
+ MACHINE_CASING_ITEM_PIPE_BLACK_PLUTONIUM,
+
BLOCK_STEELEAF,
BLOCK_ICHORIUM,
BLOCK_FIRESTONE,
@@ -327,6 +336,11 @@ public class Textures {
OVERLAY_FRONT_MULTI_CANNER_ACTIVE_GLOW,
OVERLAY_FRONT_MULTI_CANNER_GLOW,
+ OVERLAY_FRONT_MULTI_LATHE,
+ OVERLAY_FRONT_MULTI_LATHE_ACTIVE,
+ OVERLAY_FRONT_MULTI_LATHE_ACTIVE_GLOW,
+ OVERLAY_FRONT_MULTI_LATHE_GLOW,
+
MACHINE_CASING_RADIATIONPROOF,
MACHINE_CASING_ADVANCEDRADIATIONPROOF,
MACHINE_CASING_FIREBOX_BRONZE,
@@ -1697,7 +1711,7 @@ public class Textures {
* page 1: 0-15 GT casing 5, 22-26 GS dyson swarm, 48-57 GT casing 8, 63 EMT, 80-95 GT reinforced blocks, 96 casing 2 meta 6, 97 error casing
* page 8: 0-111 TecTech, 112-127 GT casing 6
* page 12: 0-127 GlodBlock
- * page 16: 0-15 GT glass 1, 16-31 GT casing 9, 32-47 GT glass 2, 48-63 GT casing 10
+ * page 16: 0-15 GT glass 1, 16-31 GT casing 9, 32-47 GT glass 2, 48-63 GT casing 10, 64-79 GT casing 11
* page 42: 0-126 glee8e, 127 KekzTech LSC base
*/
// spotless:on
diff --git a/src/main/java/gregtech/common/blocks/GT_Block_Casings11.java b/src/main/java/gregtech/common/blocks/GT_Block_Casings11.java
new file mode 100644
index 0000000000..b4ec07ab70
--- /dev/null
+++ b/src/main/java/gregtech/common/blocks/GT_Block_Casings11.java
@@ -0,0 +1,58 @@
+package gregtech.common.blocks;
+
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.IIcon;
+
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import gregtech.api.enums.ItemList;
+import gregtech.api.enums.Textures;
+import gregtech.api.util.GT_LanguageManager;
+
+/**
+ * The casings are split into separate files because they are registered as regular blocks, and a regular block can have
+ * 16 subtypes at most.
+ */
+public class GT_Block_Casings11 extends GT_Block_Casings_Abstract {
+
+ public GT_Block_Casings11() {
+ super(GT_Item_Casings11.class, "gt.blockcasings11", GT_Material_Casings.INSTANCE, 16);
+ GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".0.name", "Tin Item Pipe Casing");
+ GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".1.name", "Brass Item Pipe Casing");
+ GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".2.name", "Electrum Item Pipe Casing");
+ GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".3.name", "Platinum Item Pipe Casing");
+ GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".4.name", "Osmium Item Pipe Casing");
+ GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".5.name", "Quantium Item Pipe Casing");
+ GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".6.name", "Fluxed Electrum Item Pipe Casing");
+ GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".7.name", "Black Plutonium Item Pipe Casing");
+
+ ItemList.Casing_Item_Pipe_Tin.set(new ItemStack(this, 1, 0));
+ ItemList.Casing_Item_Pipe_Brass.set(new ItemStack(this, 1, 1));
+ ItemList.Casing_Item_Pipe_Electrum.set(new ItemStack(this, 1, 2));
+ ItemList.Casing_Item_Pipe_Platinum.set(new ItemStack(this, 1, 3));
+ ItemList.Casing_Item_Pipe_Osmium.set(new ItemStack(this, 1, 4));
+ ItemList.Casing_Item_Pipe_Quantium.set(new ItemStack(this, 1, 5));
+ ItemList.Casing_Item_Pipe_Fluxed_Electrum.set(new ItemStack(this, 1, 6));
+ ItemList.Casing_Item_Pipe_Black_Plutonium.set(new ItemStack(this, 1, 7));
+ }
+
+ @Override
+ public int getTextureIndex(int aMeta) {
+ return (16 << 7) | (aMeta + 64);
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public IIcon getIcon(int ordinalSide, int aMeta) {
+ return switch (aMeta) {
+ case 1 -> Textures.BlockIcons.MACHINE_CASING_ITEM_PIPE_BRASS.getIcon();
+ case 2 -> Textures.BlockIcons.MACHINE_CASING_ITEM_PIPE_ELECTRUM.getIcon();
+ case 3 -> Textures.BlockIcons.MACHINE_CASING_ITEM_PIPE_PLATINUM.getIcon();
+ case 4 -> Textures.BlockIcons.MACHINE_CASING_ITEM_PIPE_OSMIUM.getIcon();
+ case 5 -> Textures.BlockIcons.MACHINE_CASING_ITEM_PIPE_QUANTIUM.getIcon();
+ case 6 -> Textures.BlockIcons.MACHINE_CASING_ITEM_PIPE_FLUXED_ELECTRUM.getIcon();
+ case 7 -> Textures.BlockIcons.MACHINE_CASING_ITEM_PIPE_BLACK_PLUTONIUM.getIcon();
+ default -> Textures.BlockIcons.MACHINE_CASING_ITEM_PIPE_TIN.getIcon();
+ };
+ }
+}
diff --git a/src/main/java/gregtech/common/blocks/GT_Item_Casings11.java b/src/main/java/gregtech/common/blocks/GT_Item_Casings11.java
new file mode 100644
index 0000000000..2941022b9c
--- /dev/null
+++ b/src/main/java/gregtech/common/blocks/GT_Item_Casings11.java
@@ -0,0 +1,14 @@
+package gregtech.common.blocks;
+
+import net.minecraft.block.Block;
+
+/**
+ * The casings are split into separate files because they are registered as regular blocks, and a regular block can have
+ * 16 subtypes at most.
+ */
+public class GT_Item_Casings11 extends GT_Item_Casings_Abstract {
+
+ public GT_Item_Casings11(Block block) {
+ super(block);
+ }
+}
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_MultiLathe.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_MultiLathe.java
new file mode 100644
index 0000000000..077ea56463
--- /dev/null
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_MultiLathe.java
@@ -0,0 +1,357 @@
+package gregtech.common.tileentities.machines.multi;
+
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlocksTiered;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.onElementPass;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.transpose;
+import static gregtech.api.enums.GT_HatchElement.Energy;
+import static gregtech.api.enums.GT_HatchElement.InputBus;
+import static gregtech.api.enums.GT_HatchElement.Maintenance;
+import static gregtech.api.enums.GT_HatchElement.Muffler;
+import static gregtech.api.enums.GT_HatchElement.OutputBus;
+import static gregtech.api.enums.GT_Values.AuthorVolence;
+import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_MULTI_LATHE;
+import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_MULTI_LATHE_ACTIVE;
+import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_MULTI_LATHE_ACTIVE_GLOW;
+import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_MULTI_LATHE_GLOW;
+import static gregtech.api.util.GT_StructureUtility.buildHatchAdder;
+
+import java.util.List;
+
+import net.minecraft.block.Block;
+import net.minecraft.entity.player.EntityPlayerMP;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.StatCollector;
+import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
+
+import org.apache.commons.lang3.tuple.Pair;
+
+import com.google.common.collect.ImmutableList;
+import com.gtnewhorizon.structurelib.alignment.constructable.ISurvivalConstructable;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.ISurvivalBuildEnvironment;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
+
+import gregtech.api.GregTech_API;
+import gregtech.api.enums.Textures;
+import gregtech.api.interfaces.ITexture;
+import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
+import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.api.logic.ProcessingLogic;
+import gregtech.api.metatileentity.GregTechTileClientEvents;
+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_EnhancedMultiBlockBase;
+import gregtech.api.multitileentity.multiblock.casing.Glasses;
+import gregtech.api.recipe.RecipeMap;
+import gregtech.api.recipe.RecipeMaps;
+import gregtech.api.render.TextureFactory;
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
+import gregtech.api.util.GT_Utility;
+import gregtech.common.blocks.GT_Block_Casings2;
+import mcp.mobius.waila.api.IWailaConfigHandler;
+import mcp.mobius.waila.api.IWailaDataAccessor;
+
+public class GT_MetaTileEntity_MultiLathe extends GT_MetaTileEntity_EnhancedMultiBlockBase<GT_MetaTileEntity_MultiLathe>
+ implements ISurvivalConstructable {
+
+ public GT_MetaTileEntity_MultiLathe(final int aID, final String aName, final String aNameRegional) {
+ super(aID, aName, aNameRegional);
+ }
+
+ public GT_MetaTileEntity_MultiLathe(String aName) {
+ super(aName);
+ }
+
+ private static final String STRUCTURE_PIECE_MAIN = "main";
+ private static final String STRUCTURE_PIECE_BODY = "body";
+ private static final String STRUCTURE_PIECE_BODY_ALT = "body_alt";
+
+ protected int pipeTier = 0;
+
+ public enum PipeTiers {
+
+ Platinum(4, 1F),
+ Osmium(8, 1.25F),
+ Quantium(12, 1.5F),
+ FluxedElectrum(16, 2F),
+ BlackPlutonium(32, 2.5F);
+
+ final int maxParallel;
+ final float speedBoost;
+
+ PipeTiers(int maxParallel, float speedBoost) {
+ this.maxParallel = maxParallel;
+ this.speedBoost = speedBoost;
+ }
+ }
+
+ private PipeTiers getPipeData() {
+ pipeTier = getPipeTier();
+ return switch (pipeTier) {
+ case 2 -> PipeTiers.Osmium;
+ case 3 -> PipeTiers.Quantium;
+ case 4 -> PipeTiers.FluxedElectrum;
+ case 5 -> PipeTiers.BlackPlutonium;
+ default -> PipeTiers.Platinum;
+ };
+ }
+
+ // get tier from block meta
+ private static Integer getTierFromMeta(Block block, Integer metaID) {
+ if (block != GregTech_API.sBlockCasings11) return -1;
+ if (metaID < 3 || metaID > 7) return -1;
+ return (metaID - 2);
+ }
+
+ private void setPipeTier(int tier) {
+ pipeTier = tier;
+ }
+
+ private int getPipeTier() {
+ return pipeTier;
+ }
+
+ private static final IStructureDefinition<GT_MetaTileEntity_MultiLathe> STRUCTURE_DEFINITION = StructureDefinition
+ .<GT_MetaTileEntity_MultiLathe>builder()
+ .addShape(
+ STRUCTURE_PIECE_MAIN,
+ transpose(new String[][] { { " " }, { " " }, { " " }, { " " }, { "AAA~AAA" } }))
+ .addShape(
+ STRUCTURE_PIECE_BODY,
+ (transpose(
+ new String[][] { { " ", "AAAAAAA", " ", " " },
+ { "DBCCCCD", "DBCCCCD", "DBCCCCD", " " }, { "DBCCCCD", "DBFFFFD", "DBCCCCD", " " },
+ { "DBCCCCD", "DBCCCCD", "DBCCCCD", " " }, { "AAAAAAA", "AAAAAAA", "AAAAAAA", "AAAAAAA" } })))
+ .addShape(
+ STRUCTURE_PIECE_BODY_ALT,
+ (transpose(
+ new String[][] { { " ", "AAAAAAA", " ", " " },
+ { "DCCCCBD", "DCCCCBD", "DCCCCBD", " " }, { "DCCCCBD", "DFFFFBD", "DCCCCBD", " " },
+ { "DCCCCBD", "DCCCCBD", "DCCCCBD", " " }, { "AAAAAAA", "AAAAAAA", "AAAAAAA", "AAAAAAA" } })))
+ .addElement(
+ 'A',
+ buildHatchAdder(GT_MetaTileEntity_MultiLathe.class).atLeast(Maintenance, Muffler, Energy)
+ .casingIndex(((GT_Block_Casings2) GregTech_API.sBlockCasings2).getTextureIndex(0))
+ .dot(1)
+ .buildAndChain(
+ onElementPass(
+ GT_MetaTileEntity_MultiLathe::onCasingAdded,
+ ofBlock(GregTech_API.sBlockCasings2, 0))))
+ .addElement('B', ofBlock(GregTech_API.sBlockCasings3, 10)) // Steel Casings
+ .addElement('C', Glasses.chainAllGlasses()) // Glass
+ .addElement(
+ 'D',
+ buildHatchAdder(GT_MetaTileEntity_MultiLathe.class)
+ .atLeast(InputBus, OutputBus, Maintenance, Muffler, Energy)
+ .casingIndex(((GT_Block_Casings2) GregTech_API.sBlockCasings2).getTextureIndex(0))
+ .dot(1)
+ .buildAndChain(
+ onElementPass(
+ GT_MetaTileEntity_MultiLathe::onCasingAdded,
+ ofBlock(GregTech_API.sBlockCasings2, 0))))
+ .addElement(
+ 'F',
+ ofBlocksTiered(
+ GT_MetaTileEntity_MultiLathe::getTierFromMeta,
+ ImmutableList.of(
+ Pair.of(GregTech_API.sBlockCasings11, 3),
+ Pair.of(GregTech_API.sBlockCasings11, 4),
+ Pair.of(GregTech_API.sBlockCasings11, 5),
+ Pair.of(GregTech_API.sBlockCasings11, 6),
+ Pair.of(GregTech_API.sBlockCasings11, 7)),
+ -2,
+ GT_MetaTileEntity_MultiLathe::setPipeTier,
+ GT_MetaTileEntity_MultiLathe::getPipeTier))
+ .build();
+
+ @Override
+ public IStructureDefinition<GT_MetaTileEntity_MultiLathe> getStructureDefinition() {
+ return STRUCTURE_DEFINITION;
+ }
+
+ @Override
+ public boolean isCorrectMachinePart(ItemStack aStack) {
+ return true;
+ }
+
+ @Override
+ public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
+ return new GT_MetaTileEntity_MultiLathe(this.mName);
+ }
+
+ @Override
+ public ITexture[] getTexture(IGregTechTileEntity baseMetaTileEntity, ForgeDirection side, ForgeDirection aFacing,
+ int colorIndex, boolean aActive, boolean redstoneLevel) {
+ ITexture[] rTexture;
+ if (side == aFacing) {
+ if (aActive) {
+ rTexture = new ITexture[] {
+ Textures.BlockIcons
+ .getCasingTextureForId(GT_Utility.getCasingTextureIndex(GregTech_API.sBlockCasings2, 0)),
+ TextureFactory.builder()
+ .addIcon(OVERLAY_FRONT_MULTI_LATHE_ACTIVE)
+ .extFacing()
+ .build(),
+ TextureFactory.builder()
+ .addIcon(OVERLAY_FRONT_MULTI_LATHE_ACTIVE_GLOW)
+ .extFacing()
+ .glow()
+ .build() };
+ } else {
+ rTexture = new ITexture[] {
+ Textures.BlockIcons
+ .getCasingTextureForId(GT_Utility.getCasingTextureIndex(GregTech_API.sBlockCasings2, 0)),
+ TextureFactory.builder()
+ .addIcon(OVERLAY_FRONT_MULTI_LATHE)
+ .extFacing()
+ .build(),
+ TextureFactory.builder()
+ .addIcon(OVERLAY_FRONT_MULTI_LATHE_GLOW)
+ .extFacing()
+ .glow()
+ .build() };
+ }
+ } else {
+ rTexture = new ITexture[] { Textures.BlockIcons
+ .getCasingTextureForId(GT_Utility.getCasingTextureIndex(GregTech_API.sBlockCasings2, 0)) };
+ }
+ return rTexture;
+ }
+
+ @Override
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType("Lathe")
+ .addInfo("Controller Block for the Industrial Precision Lathe")
+ .addInfo("Gains 2 parallels per voltage tier,")
+ .addInfo("and 4 parallels per pipe casing tier (16 for Black Plutonium)")
+ .addInfo("Better pipe casings increase speed")
+ .addInfo(AuthorVolence)
+ .addSeparator()
+ .beginStructureBlock(7, 5, 5, true)
+ .addController("Front Center")
+ .addCasingInfoMin("Solid Steel Machine Casing", 36, false)
+ .addCasingInfoExactly("Steel Pipe Casing", 8, false)
+ .addInputBus("Any of the 9 Solid Steel Casing at Each End", 1)
+ .addOutputBus("Any of the 9 Solid Steel Casing at Each End", 1)
+ .addEnergyHatch("Any Solid Steel Casing", 1)
+ .addMaintenanceHatch("Any Solid Steel Casing", 1)
+ .addMufflerHatch("Any Solid Steel Casing", 1)
+ .addOtherStructurePart("4 Item Pipe Casings", "Center of the glass", 4)
+ .toolTipFinisher("GregTech");
+ return tt;
+ }
+
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ buildPiece(STRUCTURE_PIECE_MAIN, stackSize, hintsOnly, 3, 4, 0);
+ buildPiece(STRUCTURE_PIECE_BODY, stackSize, hintsOnly, 3, 4, -1);
+ }
+
+ @Override
+ public int survivalConstruct(ItemStack stackSize, int elementBudget, ISurvivalBuildEnvironment env) {
+ if (mMachine) return -1;
+ int build = survivialBuildPiece(STRUCTURE_PIECE_MAIN, stackSize, 3, 4, 0, elementBudget, env, false, true);
+ if (build >= 0) return build;
+ build = survivialBuildPiece(STRUCTURE_PIECE_BODY, stackSize, 3, 4, -1, elementBudget, env, false, true);
+ if (build >= 0) return build;
+ build = survivialBuildPiece(STRUCTURE_PIECE_BODY_ALT, stackSize, 3, 4, -1, elementBudget, env, false, true);
+ return build;
+ }
+
+ private int mCasingAmount;
+
+ private void onCasingAdded() {
+ mCasingAmount++;
+ }
+
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCasingAmount = 0;
+ pipeTier = -2;
+ mEnergyHatches.clear();
+ if (!checkPiece(STRUCTURE_PIECE_MAIN, 3, 4, 0)) return false;
+ // if (mCasingAmount < 8) return false;
+ getBaseMetaTileEntity().sendBlockEvent(GregTechTileClientEvents.CHANGE_CUSTOM_DATA, getUpdateData());
+ if (!checkPiece(STRUCTURE_PIECE_BODY, 3, 4, -1) && !checkPiece(STRUCTURE_PIECE_BODY_ALT, 3, 4, -1))
+ return false;
+ return this.mMaintenanceHatches.size() == 1 && pipeTier >= -1
+ && mEnergyHatches.size() >= 1
+ && mInputBusses.size() >= 1
+ && mMufflerHatches.size() == 1;
+ }
+
+ @Override
+ protected ProcessingLogic createProcessingLogic() {
+ return new ProcessingLogic()
+ .setSpeedBonus(1F / (getPipeData().speedBoost + GT_Utility.getTier(this.getMaxInputVoltage()) / 4F))
+ .setEuModifier(0.8F)
+ .setMaxParallelSupplier(this::getMaxParallelRecipes);
+ }
+
+ public int getMaxParallelRecipes() {
+ return getPipeData().maxParallel + (GT_Utility.getTier(this.getMaxInputVoltage()) * 2);
+ }
+
+ @Override
+ public RecipeMap<?> getRecipeMap() {
+ return RecipeMaps.latheRecipes;
+ }
+
+ @Override
+ public int getMaxEfficiency(ItemStack aStack) {
+ return 10000;
+ }
+
+ @Override
+ public void getWailaNBTData(EntityPlayerMP player, TileEntity tile, NBTTagCompound tag, World world, int x, int y,
+ int z) {
+ super.getWailaNBTData(player, tile, tag, world, x, y, z);
+ tag.setInteger("mode", getPipeTier() > 1 ? 1 : 0);
+ }
+
+ @Override
+ public void getWailaBody(ItemStack itemStack, List<String> currentTip, IWailaDataAccessor accessor,
+ IWailaConfigHandler config) {
+ super.getWailaBody(itemStack, currentTip, accessor, config);
+ final NBTTagCompound tag = accessor.getNBTData();
+ currentTip.add(
+ StatCollector.translateToLocal("GT5U.machines.oreprocessor1") + " "
+ + EnumChatFormatting.WHITE
+ + StatCollector.translateToLocal("GT5U.MULTI_LATHE.mode." + tag.getInteger("mode"))
+ + EnumChatFormatting.RESET);
+ }
+
+ @Override
+ public int getDamageToComponent(ItemStack aStack) {
+ return 0;
+ }
+
+ @Override
+ public boolean explodesOnComponentBreak(ItemStack aStack) {
+ return false;
+ }
+
+ @Override
+ public boolean supportsVoidProtection() {
+ return true;
+ }
+
+ @Override
+ public boolean supportsBatchMode() {
+ return true;
+ }
+
+ @Override
+ public boolean supportsInputSeparation() {
+ return true;
+ }
+
+ @Override
+ public boolean supportsSingleRecipeLocking() {
+ return true;
+ }
+}
diff --git a/src/main/java/gregtech/loaders/preload/GT_Loader_Item_Block_And_Fluid.java b/src/main/java/gregtech/loaders/preload/GT_Loader_Item_Block_And_Fluid.java
index 04412da4c7..f54f78f915 100644
--- a/src/main/java/gregtech/loaders/preload/GT_Loader_Item_Block_And_Fluid.java
+++ b/src/main/java/gregtech/loaders/preload/GT_Loader_Item_Block_And_Fluid.java
@@ -53,6 +53,7 @@ import gregtech.api.util.GT_OreDictUnificator;
import gregtech.api.util.GT_Utility;
import gregtech.common.blocks.GT_Block_Casings1;
import gregtech.common.blocks.GT_Block_Casings10;
+import gregtech.common.blocks.GT_Block_Casings11;
import gregtech.common.blocks.GT_Block_Casings2;
import gregtech.common.blocks.GT_Block_Casings3;
import gregtech.common.blocks.GT_Block_Casings4;
@@ -538,6 +539,7 @@ public class GT_Loader_Item_Block_And_Fluid implements Runnable {
GregTech_API.sBlockCasings8 = new GT_Block_Casings8();
GregTech_API.sBlockCasings9 = new GT_Block_Casings9();
GregTech_API.sBlockCasings10 = new GT_Block_Casings10();
+ GregTech_API.sBlockCasings11 = new GT_Block_Casings11();
GregTech_API.sBlockGranites = new GT_Block_Granites();
GregTech_API.sBlockLongDistancePipes = new GT_Block_LongDistancePipe();
GregTech_API.sBlockConcretes = new GT_Block_Concretes();
diff --git a/src/main/java/gregtech/loaders/preload/GT_Loader_MetaTileEntities.java b/src/main/java/gregtech/loaders/preload/GT_Loader_MetaTileEntities.java
index 5bd342cc48..2a7c39d3e0 100644
--- a/src/main/java/gregtech/loaders/preload/GT_Loader_MetaTileEntities.java
+++ b/src/main/java/gregtech/loaders/preload/GT_Loader_MetaTileEntities.java
@@ -264,6 +264,7 @@ import static gregtech.api.enums.MetaTileEntityIDs.MULTILOCK_PUMP_MKIII_CONTROLL
import static gregtech.api.enums.MetaTileEntityIDs.MULTILOCK_PUMP_MKII_CONTROLLER;
import static gregtech.api.enums.MetaTileEntityIDs.MULTILOCK_PUMP_MKIV_CONTROLLER;
import static gregtech.api.enums.MetaTileEntityIDs.MULTI_CANNER_CONTROLLER;
+import static gregtech.api.enums.MetaTileEntityIDs.MULTI_LATHE_CONTROLLER;
import static gregtech.api.enums.MetaTileEntityIDs.MULTI_SMELTER_CONTROLLER;
import static gregtech.api.enums.MetaTileEntityIDs.NANO_FORGE_CONTROLLER;
import static gregtech.api.enums.MetaTileEntityIDs.NAQUADAH_REACTOR_EV;
@@ -568,6 +569,7 @@ import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_LargeTurbin
import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_LargeTurbine_Steam;
import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_MultiCanner;
import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_MultiFurnace;
+import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_MultiLathe;
import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_NanoForge;
import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_OilCracker;
import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_OilDrill1;
@@ -1049,6 +1051,12 @@ public class GT_Loader_MetaTileEntities implements Runnable { // TODO CHECK CIRC
ItemList.Machine_Multi_Canner.set(
new GT_MetaTileEntity_MultiCanner(MULTI_CANNER_CONTROLLER.ID, "multimachine.canner", "TurboCan Pro")
.getStackForm(1));
+
+ ItemList.Machine_Multi_Lathe.set(
+ new GT_MetaTileEntity_MultiLathe(
+ MULTI_LATHE_CONTROLLER.ID,
+ "multimachine.lathe",
+ "Industrial Precision Lathe").getStackForm(1));
}
private static void registerSteamMachines() {
diff --git a/src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_BLACK_PLUTONIUM.png b/src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_BLACK_PLUTONIUM.png
new file mode 100644
index 0000000000..f2645904be
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_BLACK_PLUTONIUM.png
Binary files differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_BRASS.png b/src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_BRASS.png
new file mode 100644
index 0000000000..3b349b165f
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_BRASS.png
Binary files differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_ELECTRUM.png b/src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_ELECTRUM.png
new file mode 100644
index 0000000000..acf145a264
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_ELECTRUM.png
Binary files differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_FLUXED_ELECTRUM.png b/src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_FLUXED_ELECTRUM.png
new file mode 100644
index 0000000000..a4a566dafb
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_FLUXED_ELECTRUM.png
Binary files differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_OSMIUM.png b/src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_OSMIUM.png
new file mode 100644
index 0000000000..ebd0b8f7d7
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_OSMIUM.png
Binary files differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_PLATINUM.png b/src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_PLATINUM.png
new file mode 100644
index 0000000000..36342a9fc6
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_PLATINUM.png
Binary files differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_QUANTIUM.png b/src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_QUANTIUM.png
new file mode 100644
index 0000000000..ab65da1de2
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_QUANTIUM.png
Binary files differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_TIN.png b/src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_TIN.png
new file mode 100644
index 0000000000..4ff37605e8
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_TIN.png
Binary files differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_FRONT_MULTI_LATHE.png b/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_FRONT_MULTI_LATHE.png
new file mode 100644
index 0000000000..6092ec4c18
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_FRONT_MULTI_LATHE.png
Binary files differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_FRONT_MULTI_LATHE_ACTIVE.png b/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_FRONT_MULTI_LATHE_ACTIVE.png
new file mode 100644
index 0000000000..ffd43d8dc2
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_FRONT_MULTI_LATHE_ACTIVE.png
Binary files differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_FRONT_MULTI_LATHE_ACTIVE_GLOW.png b/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_FRONT_MULTI_LATHE_ACTIVE_GLOW.png
new file mode 100644
index 0000000000..3bb29bbda6
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_FRONT_MULTI_LATHE_ACTIVE_GLOW.png
Binary files differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_FRONT_MULTI_LATHE_GLOW.png b/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_FRONT_MULTI_LATHE_GLOW.png
new file mode 100644
index 0000000000..b7955d63ab
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_FRONT_MULTI_LATHE_GLOW.png
Binary files differ