aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGlease <4586901+Glease@users.noreply.github.com>2023-07-24 20:47:07 +0800
committerGitHub <noreply@github.com>2023-07-24 14:47:07 +0200
commitc8ab8e2ba4442f75ad192c33e61b73650bd1592b (patch)
treebcf0b47918487bcb7a31fa6d9491f0137cd56ab0 /src
parent1d7e1b39f20378c0a84d9740b6f314f99c713f98 (diff)
downloadGT5-Unofficial-c8ab8e2ba4442f75ad192c33e61b73650bd1592b.tar.gz
GT5-Unofficial-c8ab8e2ba4442f75ad192c33e61b73650bd1592b.tar.bz2
GT5-Unofficial-c8ab8e2ba4442f75ad192c33e61b73650bd1592b.zip
fix implosion compressor requiring wrong amount of output (#2168)
Diffstat (limited to 'src')
-rw-r--r--src/main/java/gregtech/api/util/GT_Recipe.java2
-rw-r--r--src/main/java/gregtech/api/util/GT_RecipeBuilder.java22
-rw-r--r--src/main/java/gregtech/loaders/postload/recipes/ImplosionCompressorRecipes.java106
3 files changed, 70 insertions, 60 deletions
diff --git a/src/main/java/gregtech/api/util/GT_Recipe.java b/src/main/java/gregtech/api/util/GT_Recipe.java
index 37a0dcd3c9..e2975c3e8a 100644
--- a/src/main/java/gregtech/api/util/GT_Recipe.java
+++ b/src/main/java/gregtech/api/util/GT_Recipe.java
@@ -2268,7 +2268,7 @@ public class GT_Recipe implements Comparable<GT_Recipe> {
.duration(20)
.eut(30)
.validateInputCount(1, 1)
- .validateOutputCount(1, 1)
+ .validateOutputCount(1, 2)
.build();
if (!t.isPresent()) return Collections.emptyList();
ItemStack input = b.getItemInputBasic(0);
diff --git a/src/main/java/gregtech/api/util/GT_RecipeBuilder.java b/src/main/java/gregtech/api/util/GT_RecipeBuilder.java
index 4366109fce..db01347f10 100644
--- a/src/main/java/gregtech/api/util/GT_RecipeBuilder.java
+++ b/src/main/java/gregtech/api/util/GT_RecipeBuilder.java
@@ -137,6 +137,18 @@ public class GT_RecipeBuilder {
}
}
+ private static void handleInvalidRecipe() {
+ if (!PANIC_MODE && !DEBUG_MODE) {
+ return;
+ }
+ // place a breakpoint here to catch all these issues
+ GT_Log.err.print("invalid recipe");
+ new IllegalArgumentException().printStackTrace(GT_Log.err);
+ if (PANIC_MODE) {
+ throw new IllegalArgumentException("invalid recipe");
+ }
+ }
+
public static void handleRecipeCollision(String details) {
if (!PANIC_MODE && !DEBUG_MODE) {
return;
@@ -608,7 +620,10 @@ public class GT_RecipeBuilder {
}
public Optional<GT_Recipe> build() {
- if (!valid) return Optional.empty();
+ if (!valid) {
+ if (DEBUG_MODE) handleInvalidRecipe();
+ return Optional.empty();
+ }
preBuildChecks();
optimize();
return Optional.of(
@@ -640,7 +655,10 @@ public class GT_RecipeBuilder {
if (inputsOreDict == null) {
throw new UnsupportedOperationException();
}
- if (!valid) return Optional.empty();
+ if (!valid) {
+ if (DEBUG_MODE) handleInvalidRecipe();
+ return Optional.empty();
+ }
preBuildChecks();
// no optimize.
return Optional.of(
diff --git a/src/main/java/gregtech/loaders/postload/recipes/ImplosionCompressorRecipes.java b/src/main/java/gregtech/loaders/postload/recipes/ImplosionCompressorRecipes.java
index 600e067711..7c080973c3 100644
--- a/src/main/java/gregtech/loaders/postload/recipes/ImplosionCompressorRecipes.java
+++ b/src/main/java/gregtech/loaders/postload/recipes/ImplosionCompressorRecipes.java
@@ -6,7 +6,6 @@ import static gregtech.api.util.GT_ModHandler.getModItem;
import static gregtech.api.util.GT_Recipe.GT_Recipe_Map.sImplosionRecipes;
import static gregtech.api.util.GT_RecipeBuilder.SECONDS;
-import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import gregtech.api.enums.GT_Values;
@@ -14,92 +13,85 @@ import gregtech.api.enums.ItemList;
import gregtech.api.enums.Materials;
import gregtech.api.enums.OrePrefixes;
import gregtech.api.enums.TierEU;
-import gregtech.api.util.GT_ModHandler;
import gregtech.api.util.GT_OreDictUnificator;
+import gregtech.api.util.GT_RecipeConstants;
public class ImplosionCompressorRecipes implements Runnable {
@Override
public void run() {
- addImplosionRecipe(
- ItemList.IC2_Compressed_Coal_Chunk.get(1L),
- 8,
- new ItemStack[] { ItemList.IC2_Industrial_Diamond.get(1L),
- GT_OreDictUnificator.get(OrePrefixes.dustTiny, Materials.DarkAsh, 4L) });
+ GT_Values.RA.stdBuilder()
+ .itemInputs(ItemList.IC2_Compressed_Coal_Chunk.get(1L))
+ .itemOutputs(
+ ItemList.IC2_Industrial_Diamond.get(1L),
+ GT_OreDictUnificator.get(OrePrefixes.dustTiny, Materials.DarkAsh, 4L))
+ .noFluidInputs()
+ .noFluidOutputs()
+ .metadata(GT_RecipeConstants.ADDITIVE_AMOUNT, 8)
+ .duration(1 * SECONDS)
+ .eut(TierEU.RECIPE_LV)
+ .addTo(sImplosionRecipes);
- addImplosionRecipe(
- ItemList.Ingot_IridiumAlloy.get(1L),
- 8,
- new ItemStack[] { GT_OreDictUnificator.get(OrePrefixes.plateAlloy, Materials.Iridium, 1L),
- GT_OreDictUnificator.get(OrePrefixes.dustTiny, Materials.DarkAsh, 4L) });
+ GT_Values.RA.stdBuilder()
+ .itemInputs(ItemList.Ingot_IridiumAlloy.get(1L))
+ .itemOutputs(
+ GT_OreDictUnificator.get(OrePrefixes.plateAlloy, Materials.Iridium, 1L),
+ GT_OreDictUnificator.get(OrePrefixes.dustTiny, Materials.DarkAsh, 4L))
+ .noFluidInputs()
+ .noFluidOutputs()
+ .metadata(GT_RecipeConstants.ADDITIVE_AMOUNT, 8)
+ .duration(1 * SECONDS)
+ .eut(TierEU.RECIPE_LV)
+ .addTo(sImplosionRecipes);
if (GalacticraftMars.isModLoaded()) {
- addImplosionRecipe(
- ItemList.Ingot_Heavy1.get(1L),
- 8,
- new ItemStack[] { getModItem(GalacticraftCore.ID, "item.heavyPlating", 1L),
- GT_OreDictUnificator.get(OrePrefixes.dustTiny, Materials.StainlessSteel, 1L) });
-
- addImplosionRecipe(
- ItemList.Ingot_Heavy2.get(1L),
- 16,
- new ItemStack[] { getModItem(GalacticraftMars.ID, "item.null", 1L, 3),
- GT_OreDictUnificator.get(OrePrefixes.dustTiny, Materials.TungstenSteel, 2L) });
-
- addImplosionRecipe(
- ItemList.Ingot_Heavy3.get(1L),
- 24,
- new ItemStack[] { getModItem(GalacticraftMars.ID, "item.itemBasicAsteroids", 1L),
- GT_OreDictUnificator.get(OrePrefixes.dustTiny, Materials.Platinum, 3L) });
- }
- }
-
- public void addImplosionRecipe(ItemStack input, int explosiveAmount, ItemStack[] outputs) {
-
- int tExplosives = Math.min(explosiveAmount, 64);
- int tGunpowder = tExplosives << 1; // Worst
- int tDynamite = Math.max(1, tExplosives >> 1); // good
- @SuppressWarnings("UnnecessaryLocalVariable")
- int tTNT = tExplosives; // Slightly better
- int tITNT = Math.max(1, tExplosives >> 2); // the best
+ GT_Values.RA.stdBuilder()
+ .itemInputs(ItemList.Ingot_Heavy1.get(1L))
+ .itemOutputs(
+ getModItem(GalacticraftCore.ID, "item.heavyPlating", 1L),
+ GT_OreDictUnificator.get(OrePrefixes.dustTiny, Materials.StainlessSteel, 1L))
+ .noFluidInputs()
+ .noFluidOutputs()
+ .metadata(GT_RecipeConstants.ADDITIVE_AMOUNT, 8)
+ .duration(1 * SECONDS)
+ .eut(TierEU.RECIPE_LV)
+ .addTo(sImplosionRecipes);
- if (tGunpowder < 65) {
GT_Values.RA.stdBuilder()
- .itemInputs(input, ItemList.Block_Powderbarrel.get(tGunpowder))
- .itemOutputs(outputs)
+ .itemInputs(ItemList.Ingot_Heavy2.get(1L))
+ .itemOutputs(
+ getModItem(GalacticraftMars.ID, "item.null", 1L, 3),
+ GT_OreDictUnificator.get(OrePrefixes.dustTiny, Materials.TungstenSteel, 2L))
.noFluidInputs()
.noFluidOutputs()
+ .metadata(GT_RecipeConstants.ADDITIVE_AMOUNT, 16)
.duration(1 * SECONDS)
.eut(TierEU.RECIPE_LV)
.addTo(sImplosionRecipes);
- }
- if (tDynamite < 17) {
GT_Values.RA.stdBuilder()
- .itemInputs(input, GT_ModHandler.getIC2Item("dynamite", tDynamite, null))
- .itemOutputs(outputs)
+ .itemInputs(ItemList.Ingot_Heavy3.get(1L))
+ .itemOutputs(
+ getModItem(GalacticraftMars.ID, "item.itemBasicAsteroids", 1L),
+ GT_OreDictUnificator.get(OrePrefixes.dustTiny, Materials.Platinum, 3L))
.noFluidInputs()
.noFluidOutputs()
+ .metadata(GT_RecipeConstants.ADDITIVE_AMOUNT, 24)
.duration(1 * SECONDS)
.eut(TierEU.RECIPE_LV)
.addTo(sImplosionRecipes);
}
+ }
+ @Deprecated
+ public void addImplosionRecipe(ItemStack input, int explosiveAmount, ItemStack[] outputs) {
GT_Values.RA.stdBuilder()
- .itemInputs(input, new ItemStack(Blocks.tnt, tTNT))
- .itemOutputs(outputs)
- .noFluidInputs()
- .noFluidOutputs()
- .duration(1 * SECONDS)
- .eut(TierEU.RECIPE_LV)
- .addTo(sImplosionRecipes);
-
- GT_Values.RA.stdBuilder()
- .itemInputs(input, GT_ModHandler.getIC2Item("industrialTnt", tITNT))
+ .itemInputs(input)
.itemOutputs(outputs)
.noFluidInputs()
.noFluidOutputs()
+ .metadata(GT_RecipeConstants.ADDITIVE_AMOUNT, explosiveAmount)
.duration(1 * SECONDS)
.eut(TierEU.RECIPE_LV)
.addTo(sImplosionRecipes);