diff options
Diffstat (limited to 'src')
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); |