diff options
Diffstat (limited to 'src')
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 Binary files differnew file mode 100644 index 0000000000..f2645904be --- /dev/null +++ b/src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_BLACK_PLUTONIUM.png 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 Binary files differnew file mode 100644 index 0000000000..3b349b165f --- /dev/null +++ b/src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_BRASS.png 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 Binary files differnew file mode 100644 index 0000000000..acf145a264 --- /dev/null +++ b/src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_ELECTRUM.png 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 Binary files differnew file mode 100644 index 0000000000..a4a566dafb --- /dev/null +++ b/src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_FLUXED_ELECTRUM.png 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 Binary files differnew file mode 100644 index 0000000000..ebd0b8f7d7 --- /dev/null +++ b/src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_OSMIUM.png 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 Binary files differnew file mode 100644 index 0000000000..36342a9fc6 --- /dev/null +++ b/src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_PLATINUM.png 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 Binary files differnew file mode 100644 index 0000000000..ab65da1de2 --- /dev/null +++ b/src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_QUANTIUM.png 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 Binary files differnew file mode 100644 index 0000000000..4ff37605e8 --- /dev/null +++ b/src/main/resources/assets/gregtech/textures/blocks/iconsets/MACHINE_CASING_ITEM_PIPE_TIN.png 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 Binary files differnew file mode 100644 index 0000000000..6092ec4c18 --- /dev/null +++ b/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_FRONT_MULTI_LATHE.png 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 Binary files differnew file mode 100644 index 0000000000..ffd43d8dc2 --- /dev/null +++ b/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_FRONT_MULTI_LATHE_ACTIVE.png 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 Binary files differnew file mode 100644 index 0000000000..3bb29bbda6 --- /dev/null +++ b/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_FRONT_MULTI_LATHE_ACTIVE_GLOW.png 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 Binary files differnew file mode 100644 index 0000000000..b7955d63ab --- /dev/null +++ b/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_FRONT_MULTI_LATHE_GLOW.png |