aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech
diff options
context:
space:
mode:
authorchochem <40274384+chochem@users.noreply.github.com>2023-07-01 18:08:44 +0100
committerGitHub <noreply@github.com>2023-07-01 18:08:44 +0100
commitef80699b2848eb5ecc9e2fbfdf7911e60f778778 (patch)
treefda3ed6f6143d6e2beb2174ae377c7f31fcaa294 /src/main/java/gregtech
parent73bbd126ef1156538d30c6f6475191b41bba542a (diff)
downloadGT5-Unofficial-ef80699b2848eb5ecc9e2fbfdf7911e60f778778.tar.gz
GT5-Unofficial-ef80699b2848eb5ecc9e2fbfdf7911e60f778778.tar.bz2
GT5-Unofficial-ef80699b2848eb5ecc9e2fbfdf7911e60f778778.zip
stretchy materials (#2097)
Diffstat (limited to 'src/main/java/gregtech')
-rw-r--r--src/main/java/gregtech/api/enums/Materials.java10
-rw-r--r--src/main/java/gregtech/api/enums/OrePrefixes.java30
-rw-r--r--src/main/java/gregtech/api/enums/SubTag.java2
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingIngot.java11
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingPlate.java178
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(