diff options
author | chochem <40274384+chochem@users.noreply.github.com> | 2023-07-01 18:08:44 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-01 18:08:44 +0100 |
commit | ef80699b2848eb5ecc9e2fbfdf7911e60f778778 (patch) | |
tree | fda3ed6f6143d6e2beb2174ae377c7f31fcaa294 /src/main/java/gregtech | |
parent | 73bbd126ef1156538d30c6f6475191b41bba542a (diff) | |
download | GT5-Unofficial-ef80699b2848eb5ecc9e2fbfdf7911e60f778778.tar.gz GT5-Unofficial-ef80699b2848eb5ecc9e2fbfdf7911e60f778778.tar.bz2 GT5-Unofficial-ef80699b2848eb5ecc9e2fbfdf7911e60f778778.zip |
stretchy materials (#2097)
Diffstat (limited to 'src/main/java/gregtech')
5 files changed, 124 insertions, 107 deletions
diff --git a/src/main/java/gregtech/api/enums/Materials.java b/src/main/java/gregtech/api/enums/Materials.java index 02fe31adca..be97453a08 100644 --- a/src/main/java/gregtech/api/enums/Materials.java +++ b/src/main/java/gregtech/api/enums/Materials.java @@ -2230,10 +2230,14 @@ public class Materials implements IColorModulationContainer, ISubTagContainer { Rubber.add(SubTag.FLAMMABLE, SubTag.NO_SMASHING, SubTag.BOUNCY, SubTag.STRETCHY); StyreneButadieneRubber.add(SubTag.FLAMMABLE, SubTag.NO_SMASHING, SubTag.BOUNCY, SubTag.STRETCHY); - Plastic.add(SubTag.FLAMMABLE, SubTag.NO_SMASHING, SubTag.BOUNCY); - PolyvinylChloride.add(SubTag.FLAMMABLE, SubTag.NO_SMASHING, SubTag.BOUNCY); - Polystyrene.add(SubTag.FLAMMABLE, SubTag.NO_SMASHING, SubTag.BOUNCY); + Plastic.add(SubTag.FLAMMABLE, SubTag.NO_SMASHING, SubTag.BOUNCY, SubTag.STRETCHY); + PolyvinylChloride.add(SubTag.FLAMMABLE, SubTag.NO_SMASHING, SubTag.BOUNCY, SubTag.STRETCHY); + Polystyrene.add(SubTag.FLAMMABLE, SubTag.NO_SMASHING, SubTag.BOUNCY, SubTag.STRETCHY); Silicone.add(SubTag.FLAMMABLE, SubTag.NO_SMASHING, SubTag.BOUNCY, SubTag.STRETCHY); + Polytetrafluoroethylene.add(SubTag.FLAMMABLE, SubTag.NO_SMASHING, SubTag.STRETCHY); + Polybenzimidazole.add(SubTag.FLAMMABLE, SubTag.NO_SMASHING, SubTag.STRETCHY); + PolyphenyleneSulfide.add(SubTag.FLAMMABLE, SubTag.NO_SMASHING, SubTag.STRETCHY); + MaterialsKevlar.Kevlar.add(SubTag.FLAMMABLE, SubTag.NO_SMASHING, SubTag.STRETCHY); TNT.add(SubTag.FLAMMABLE, SubTag.EXPLOSIVE, SubTag.NO_SMELTING, SubTag.NO_SMASHING); Gunpowder.add(SubTag.FLAMMABLE, SubTag.EXPLOSIVE, SubTag.NO_SMELTING, SubTag.NO_SMASHING); diff --git a/src/main/java/gregtech/api/enums/OrePrefixes.java b/src/main/java/gregtech/api/enums/OrePrefixes.java index cfe30d97dd..3e4ad196de 100644 --- a/src/main/java/gregtech/api/enums/OrePrefixes.java +++ b/src/main/java/gregtech/api/enums/OrePrefixes.java @@ -926,17 +926,29 @@ public enum OrePrefixes { SubTag.MAGICAL, new ICondition.And<>(SubTag.TRANSPARENT, SubTag.HAS_COLOR)); - plateDouble.mCondition = new ICondition.Or<>(SubTag.PAPER, new ICondition.Not<>(SubTag.NO_SMASHING)); - plateTriple.mCondition = new ICondition.Or<>(SubTag.PAPER, new ICondition.Not<>(SubTag.NO_SMASHING)); - plateQuadruple.mCondition = new ICondition.Or<>(SubTag.PAPER, new ICondition.Not<>(SubTag.NO_SMASHING)); - plateQuintuple.mCondition = new ICondition.Or<>(SubTag.PAPER, new ICondition.Not<>(SubTag.NO_SMASHING)); + plateDouble.mCondition = new ICondition.Or<>( + SubTag.PAPER, + new ICondition.Not<>(SubTag.NO_SMASHING), + SubTag.STRETCHY); + plateTriple.mCondition = new ICondition.Or<>( + SubTag.PAPER, + new ICondition.Not<>(SubTag.NO_SMASHING), + SubTag.STRETCHY); + plateQuadruple.mCondition = new ICondition.Or<>( + SubTag.PAPER, + new ICondition.Not<>(SubTag.NO_SMASHING), + SubTag.STRETCHY); + plateQuintuple.mCondition = new ICondition.Or<>( + SubTag.PAPER, + new ICondition.Not<>(SubTag.NO_SMASHING), + SubTag.STRETCHY); - plateDense.mCondition = new ICondition.Not<>(SubTag.NO_SMASHING); + plateDense.mCondition = new ICondition.Or<>(new ICondition.Not<>(SubTag.NO_SMASHING), SubTag.STRETCHY); - ingotDouble.mCondition = new ICondition.Not<>(SubTag.NO_SMASHING); - ingotTriple.mCondition = new ICondition.Not<>(SubTag.NO_SMASHING); - ingotQuadruple.mCondition = new ICondition.Not<>(SubTag.NO_SMASHING); - ingotQuintuple.mCondition = new ICondition.Not<>(SubTag.NO_SMASHING); + ingotDouble.mCondition = new ICondition.Or<>(new ICondition.Not<>(SubTag.NO_SMASHING), SubTag.STRETCHY); + ingotTriple.mCondition = new ICondition.Or<>(new ICondition.Not<>(SubTag.NO_SMASHING), SubTag.STRETCHY); + ingotQuadruple.mCondition = new ICondition.Or<>(new ICondition.Not<>(SubTag.NO_SMASHING), SubTag.STRETCHY); + ingotQuintuple.mCondition = new ICondition.Or<>(new ICondition.Not<>(SubTag.NO_SMASHING), SubTag.STRETCHY); wireFine.mCondition = SubTag.METAL; diff --git a/src/main/java/gregtech/api/enums/SubTag.java b/src/main/java/gregtech/api/enums/SubTag.java index 337a171d57..c1ec1712cd 100644 --- a/src/main/java/gregtech/api/enums/SubTag.java +++ b/src/main/java/gregtech/api/enums/SubTag.java @@ -83,7 +83,7 @@ public final class SubTag implements ICondition<ISubTagContainer> { */ public static final SubTag NO_WORKING = getNewSubTag("NO_WORKING"); /** - * This Material cannot be used for regular Metal working techniques since it is not possible to bend it. Already + * This Material cannot be used for regular Metal working techniques. Already * listed are: Rubber, Plastic, Paper, Wood, Stone */ public static final SubTag NO_SMASHING = getNewSubTag("NO_SMASHING"); diff --git a/src/main/java/gregtech/loaders/oreprocessing/ProcessingIngot.java b/src/main/java/gregtech/loaders/oreprocessing/ProcessingIngot.java index ccb3c98b33..0fe857b077 100644 --- a/src/main/java/gregtech/loaders/oreprocessing/ProcessingIngot.java +++ b/src/main/java/gregtech/loaders/oreprocessing/ProcessingIngot.java @@ -43,6 +43,7 @@ public class ProcessingIngot implements gregtech.api.interfaces.IOreRecipeRegist public void registerOre(OrePrefixes aPrefix, Materials aMaterial, String aOreDictName, String aModName, ItemStack aStack) { boolean aNoSmashing = aMaterial.contains(SubTag.NO_SMASHING); + boolean aStretchy = aMaterial.contains(SubTag.STRETCHY); boolean aNoSmelting = aMaterial.contains(SubTag.NO_SMELTING); long aMaterialMass = aMaterial.getMass(); boolean aSpecialRecipeReq = aMaterial.mUnificatable && (aMaterial.mMaterialInto == aMaterial) @@ -105,7 +106,7 @@ public class ProcessingIngot implements gregtech.api.interfaces.IOreRecipeRegist GT_Proxy.tBits, new Object[] { ToolDictNames.craftingToolMortar, OrePrefixes.ingot.get(aMaterial) }); } - if (!aNoSmashing) { + if (!aNoSmashing || aStretchy) { // Forge hammer recipes if (aMaterial.getProcessingMaterialTierEU() < TierEU.IV) { GT_Values.RA.stdBuilder() @@ -200,7 +201,7 @@ public class ProcessingIngot implements gregtech.api.interfaces.IOreRecipeRegist } } case ingotDouble -> { - if (!aNoSmashing) { + if (!aNoSmashing || aStretchy) { // bender recipes { GT_Values.RA.stdBuilder() @@ -234,7 +235,7 @@ public class ProcessingIngot implements gregtech.api.interfaces.IOreRecipeRegist } } case ingotTriple -> { - if (!aNoSmashing) { + if (!aNoSmashing || aStretchy) { // Bender recipes { GT_Values.RA.stdBuilder() @@ -268,7 +269,7 @@ public class ProcessingIngot implements gregtech.api.interfaces.IOreRecipeRegist } } case ingotQuadruple -> { - if (!aNoSmashing) { + if (!aNoSmashing || aStretchy) { // Bender recipes { GT_Values.RA.stdBuilder() @@ -294,7 +295,7 @@ public class ProcessingIngot implements gregtech.api.interfaces.IOreRecipeRegist } } case ingotQuintuple -> { - if (!aNoSmashing) { + if (!aNoSmashing || aStretchy) { // Bender recipes { GT_Values.RA.stdBuilder() diff --git a/src/main/java/gregtech/loaders/oreprocessing/ProcessingPlate.java b/src/main/java/gregtech/loaders/oreprocessing/ProcessingPlate.java index dd4d950676..64f38d9cc7 100644 --- a/src/main/java/gregtech/loaders/oreprocessing/ProcessingPlate.java +++ b/src/main/java/gregtech/loaders/oreprocessing/ProcessingPlate.java @@ -191,7 +191,7 @@ public class ProcessingPlate implements gregtech.api.interfaces.IOreRecipeRegist GT_ModHandler.removeRecipeByOutputDelayed(aStack); - if (!aNoSmashing) { + if (!aNoSmashing || aMaterial.contains(SubTag.STRETCHY)) { // 2 double -> 1 quadruple plate if (GT_OreDictUnificator.get(OrePrefixes.plateQuadruple, aMaterial, 1L) != null) { GT_Values.RA.stdBuilder() @@ -203,24 +203,6 @@ public class ProcessingPlate implements gregtech.api.interfaces.IOreRecipeRegist .eut(calculateRecipeEU(aMaterial, 96)) .addTo(sBenderRecipes); } - - if (GregTech_API.sRecipeFile.get( - gregtech.api.enums.ConfigCategories.Tools.hammerdoubleplate, - OrePrefixes.plate.get(aMaterial) - .toString(), - true)) { - - Object aPlateStack = OrePrefixes.plate.get(aMaterial); - - if (aMaterial.getProcessingMaterialTierEU() < TierEU.IV) { - GT_ModHandler.addCraftingRecipe( - GT_Utility.copyAmount(1L, aStack), - DO_NOT_CHECK_FOR_COLLISIONS | BUFFERED, - new Object[] { "I", "B", "h", // craftingToolHardHammer - 'I', aPlateStack, 'B', aPlateStack }); - } - } - // 2 plates -> 1 double plate GT_Values.RA.stdBuilder() .itemInputs( @@ -232,7 +214,6 @@ public class ProcessingPlate implements gregtech.api.interfaces.IOreRecipeRegist .duration(Math.max(aMaterialMass * 2L, 1L)) .eut(calculateRecipeEU(aMaterial, 96)) .addTo(sBenderRecipes); - } else { GT_Values.RA.stdBuilder() .itemInputs( @@ -245,6 +226,25 @@ public class ProcessingPlate implements gregtech.api.interfaces.IOreRecipeRegist .eut(8) .addTo(sAssemblerRecipes); } + + if (!aNoSmashing) { + if (GregTech_API.sRecipeFile.get( + gregtech.api.enums.ConfigCategories.Tools.hammerdoubleplate, + OrePrefixes.plate.get(aMaterial) + .toString(), + true)) { + + Object aPlateStack = OrePrefixes.plate.get(aMaterial); + + if (aMaterial.getProcessingMaterialTierEU() < TierEU.IV) { + GT_ModHandler.addCraftingRecipe( + GT_Utility.copyAmount(1L, aStack), + DO_NOT_CHECK_FOR_COLLISIONS | BUFFERED, + new Object[] { "I", "B", "h", // craftingToolHardHammer + 'I', aPlateStack, 'B', aPlateStack }); + } + } + } } private void registerPlateTriple(final Materials aMaterial, final ItemStack aStack, final boolean aNoSmashing, @@ -254,18 +254,43 @@ public class ProcessingPlate implements gregtech.api.interfaces.IOreRecipeRegist GT_ModHandler.removeRecipeByOutputDelayed(aStack); - if (!aNoSmashing) { + if (!aNoSmashing || aMaterial.contains(SubTag.STRETCHY)) { + if (GT_OreDictUnificator.get(OrePrefixes.plateDense, aMaterial, 1L) != null) { + // 3 triple plates -> 1 dense plate + GT_Values.RA.stdBuilder() + .itemInputs(GT_Utility.copyAmount(3L, aStack), GT_Utility.getIntegratedCircuit(3)) + .itemOutputs(GT_OreDictUnificator.get(OrePrefixes.plateDense, aMaterial, 1L)) + .noFluidInputs() + .noFluidOutputs() + .duration(Math.max(aMaterialMass * 3L, 1L)) + .eut(calculateRecipeEU(aMaterial, 96)) + .addTo(sBenderRecipes); + } - // 3 triple plates -> 1 dense plate GT_Values.RA.stdBuilder() - .itemInputs(GT_Utility.copyAmount(3L, aStack), GT_Utility.getIntegratedCircuit(3)) - .itemOutputs(GT_OreDictUnificator.get(OrePrefixes.plateDense, aMaterial, 1L)) + .itemInputs( + GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 3L), + GT_Utility.getIntegratedCircuit(3)) + .itemOutputs(GT_Utility.copyAmount(1L, aStack)) .noFluidInputs() .noFluidOutputs() .duration(Math.max(aMaterialMass * 3L, 1L)) .eut(calculateRecipeEU(aMaterial, 96)) .addTo(sBenderRecipes); + } else { + GT_Values.RA.stdBuilder() + .itemInputs( + GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 3L), + GT_Utility.getIntegratedCircuit(3)) + .itemOutputs(GT_Utility.copyAmount(1L, aStack)) + .fluidInputs(Materials.Glue.getFluid(20L)) + .noFluidOutputs() + .duration(4 * SECONDS + 16 * TICKS) + .eut(8) + .addTo(sAssemblerRecipes); + } + if (!aNoSmashing) { if (GregTech_API.sRecipeFile.get( gregtech.api.enums.ConfigCategories.Tools.hammertripleplate, OrePrefixes.plate.get(aMaterial) @@ -289,29 +314,6 @@ public class ProcessingPlate implements gregtech.api.interfaces.IOreRecipeRegist aPlateStack, aPlateStack }); } } - - GT_Values.RA.stdBuilder() - .itemInputs( - GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 3L), - GT_Utility.getIntegratedCircuit(3)) - .itemOutputs(GT_Utility.copyAmount(1L, aStack)) - .noFluidInputs() - .noFluidOutputs() - .duration(Math.max(aMaterialMass * 3L, 1L)) - .eut(calculateRecipeEU(aMaterial, 96)) - .addTo(sBenderRecipes); - - } else { - GT_Values.RA.stdBuilder() - .itemInputs( - GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 3L), - GT_Utility.getIntegratedCircuit(3)) - .itemOutputs(GT_Utility.copyAmount(1L, aStack)) - .fluidInputs(Materials.Glue.getFluid(20L)) - .noFluidOutputs() - .duration(4 * SECONDS + 16 * TICKS) - .eut(8) - .addTo(sAssemblerRecipes); } if (GT_OreDictUnificator.get(OrePrefixes.compressed, aMaterial, 1L) != null) { @@ -365,31 +367,7 @@ public class ProcessingPlate implements gregtech.api.interfaces.IOreRecipeRegist GT_ModHandler.removeRecipeByOutputDelayed(aStack); - if (!aNoSmashing) { - - if (GregTech_API.sRecipeFile.get( - gregtech.api.enums.ConfigCategories.Tools.hammerquadrupleplate, - OrePrefixes.plate.get(aMaterial) - .toString(), - true)) { - - if (aMaterial.getProcessingMaterialTierEU() < TierEU.IV) { - Object aPlateStack = OrePrefixes.plate.get(aMaterial); - - GT_ModHandler.addCraftingRecipe( - GT_Utility.copyAmount(1L, aStack), - DO_NOT_CHECK_FOR_COLLISIONS | BUFFERED, - new Object[] { "I", "B", "h", // craftingToolHardHammer - 'I', OrePrefixes.plateTriple.get(aMaterial), 'B', aPlateStack }); - - GT_ModHandler.addShapelessCraftingRecipe( - GT_Utility.copyAmount(1L, aStack), - DO_NOT_CHECK_FOR_COLLISIONS | BUFFERED, - new Object[] { gregtech.api.enums.ToolDictNames.craftingToolForgeHammer, aPlateStack, - aPlateStack, aPlateStack, aPlateStack }); - } - } - + if (!aNoSmashing || aMaterial.contains(SubTag.STRETCHY)) { // Quadruple plate GT_Values.RA.stdBuilder() .itemInputs( @@ -401,7 +379,6 @@ public class ProcessingPlate implements gregtech.api.interfaces.IOreRecipeRegist .duration(Math.max(aMaterialMass * 4L, 1L)) .eut(calculateRecipeEU(aMaterial, 96)) .addTo(sBenderRecipes); - } else { GT_Values.RA.stdBuilder() .itemInputs( @@ -414,19 +391,9 @@ public class ProcessingPlate implements gregtech.api.interfaces.IOreRecipeRegist .eut(8) .addTo(sAssemblerRecipes); } - } - - private void registerPlateQuintuple(final Materials aMaterial, final ItemStack aStack, final boolean aNoSmashing, - final long aMaterialMass) { - - registerCover(aMaterial, aStack); - - GT_ModHandler.removeRecipeByOutputDelayed(aStack); - if (!aNoSmashing) { - if (GregTech_API.sRecipeFile.get( - gregtech.api.enums.ConfigCategories.Tools.hammerquintupleplate, + gregtech.api.enums.ConfigCategories.Tools.hammerquadrupleplate, OrePrefixes.plate.get(aMaterial) .toString(), true)) { @@ -438,16 +405,26 @@ public class ProcessingPlate implements gregtech.api.interfaces.IOreRecipeRegist GT_Utility.copyAmount(1L, aStack), DO_NOT_CHECK_FOR_COLLISIONS | BUFFERED, new Object[] { "I", "B", "h", // craftingToolHardHammer - 'I', OrePrefixes.plateQuadruple.get(aMaterial), 'B', aPlateStack }); + 'I', OrePrefixes.plateTriple.get(aMaterial), 'B', aPlateStack }); GT_ModHandler.addShapelessCraftingRecipe( GT_Utility.copyAmount(1L, aStack), DO_NOT_CHECK_FOR_COLLISIONS | BUFFERED, - new Object[] { ToolDictNames.craftingToolForgeHammer, aPlateStack, aPlateStack, aPlateStack, - aPlateStack, aPlateStack }); + new Object[] { gregtech.api.enums.ToolDictNames.craftingToolForgeHammer, aPlateStack, + aPlateStack, aPlateStack, aPlateStack }); } } + } + } + + private void registerPlateQuintuple(final Materials aMaterial, final ItemStack aStack, final boolean aNoSmashing, + final long aMaterialMass) { + registerCover(aMaterial, aStack); + + GT_ModHandler.removeRecipeByOutputDelayed(aStack); + + if (!aNoSmashing || aMaterial.contains(SubTag.STRETCHY)) { // quintuple plate GT_Values.RA.stdBuilder() .itemInputs( @@ -459,7 +436,6 @@ public class ProcessingPlate implements gregtech.api.interfaces.IOreRecipeRegist .duration(Math.max(aMaterialMass * 5L, 1L)) .eut(calculateRecipeEU(aMaterial, 96)) .addTo(sBenderRecipes); - } else { GT_Values.RA.stdBuilder() .itemInputs( @@ -472,6 +448,30 @@ public class ProcessingPlate implements gregtech.api.interfaces.IOreRecipeRegist .eut(8) .addTo(sAssemblerRecipes); } + if (!aNoSmashing) { + if (GregTech_API.sRecipeFile.get( + gregtech.api.enums.ConfigCategories.Tools.hammerquintupleplate, + OrePrefixes.plate.get(aMaterial) + .toString(), + true)) { + + if (aMaterial.getProcessingMaterialTierEU() < TierEU.IV) { + Object aPlateStack = OrePrefixes.plate.get(aMaterial); + + GT_ModHandler.addCraftingRecipe( + GT_Utility.copyAmount(1L, aStack), + DO_NOT_CHECK_FOR_COLLISIONS | BUFFERED, + new Object[] { "I", "B", "h", // craftingToolHardHammer + 'I', OrePrefixes.plateQuadruple.get(aMaterial), 'B', aPlateStack }); + + GT_ModHandler.addShapelessCraftingRecipe( + GT_Utility.copyAmount(1L, aStack), + DO_NOT_CHECK_FOR_COLLISIONS | BUFFERED, + new Object[] { ToolDictNames.craftingToolForgeHammer, aPlateStack, aPlateStack, aPlateStack, + aPlateStack, aPlateStack }); + } + } + } } private void registerPlateDense(final Materials aMaterial, final ItemStack aStack, final boolean aNoSmashing, @@ -481,7 +481,7 @@ public class ProcessingPlate implements gregtech.api.interfaces.IOreRecipeRegist GT_ModHandler.removeRecipeByOutputDelayed(aStack); - if (!aNoSmashing) { + if (!aNoSmashing || aMaterial.contains(SubTag.STRETCHY)) { // Dense plate GT_Values.RA.stdBuilder() .itemInputs( |