From c9c905d0547b9d6f8b7b2836f1b6dbaa8517b33d Mon Sep 17 00:00:00 2001 From: miozune Date: Mon, 4 Dec 2023 06:12:47 +0900 Subject: Migrate to new RecipeMap (#375) * Convert manual LCR recipe addition to RA2 * Remove outdated recipe addition for replicator * Remove DynamicGTRecipe constructor that is identical to super * Remove duplicated replicator recipe generation * Migrate BW recipemaps * Migrate recipe loaders * Remove enforceNobleGas No material succeeds in this method in the modpack * Apply recipe categories * Fix recipe removal code * Adjust recipe catalysts * update bs+deps+gradle * fix * fix * change back to gtnh tag --------- Co-authored-by: Martin Robertz Former-commit-id: 03486c93813e2b430ddf8eb1b33191068452db74 --- .../bartworks/API/AcidGenFuelAdder.java | 36 - .../bartworks/API/BioObjectAdder.java | 4 +- .../bartworks/API/BioRecipeAdder.java | 42 -- .../API/recipe/BWNBTDependantCraftingRecipe.java | 76 ++ .../bartworks/API/recipe/BacterialVatFrontend.java | 92 +++ .../bartworks/API/recipe/BartWorksRecipeMaps.java | 64 ++ .../bartworks/API/recipe/DynamicGTRecipe.java | 34 + .../bartworks/API/recipe/RadioHatchFrontend.java | 45 ++ .../github/bartimaeusnek/bartworks/MainMod.java | 6 +- .../common/loaders/ArtificialMicaLine.java | 27 +- .../bartworks/common/loaders/BioRecipeLoader.java | 4 +- .../ElectricImplosionCompressorRecipes.java | 4 +- .../bartworks/common/loaders/FluidLoader.java | 4 +- .../common/loaders/StaticRecipeChangeLoaders.java | 122 +--- .../common/loaders/recipes/Assembler.java | 39 +- .../common/loaders/recipes/Autoclave.java | 6 +- .../common/loaders/recipes/Centrifuge.java | 22 +- .../common/loaders/recipes/ChemicalBath.java | 16 +- .../common/loaders/recipes/Electrolyzer.java | 27 +- .../common/loaders/recipes/Extractor.java | 6 +- .../common/loaders/recipes/FluidHeater.java | 4 +- .../common/loaders/recipes/FluidSolidifier.java | 22 +- .../common/loaders/recipes/FormingPress.java | 14 +- .../common/loaders/recipes/LaserEngraver.java | 4 +- .../bartworks/common/loaders/recipes/Mixer.java | 8 +- .../common/loaders/recipes/Pulverizer.java | 22 +- .../tileentities/multis/GT_TileEntity_BioVat.java | 7 +- .../multis/GT_TileEntity_CircuitAssemblyLine.java | 21 +- .../GT_TileEntity_ElectricImplosionCompressor.java | 7 +- .../tileentities/multis/GT_TileEntity_HTGR.java | 28 +- .../multis/GT_TileEntity_Windmill.java | 5 +- .../mega/GT_TileEntity_MegaBlastFurnace.java | 13 +- .../mega/GT_TileEntity_MegaChemicalReactor.java | 7 +- .../mega/GT_TileEntity_MegaDistillTower.java | 12 +- .../multis/mega/GT_TileEntity_MegaOilCracker.java | 15 +- .../mega/GT_TileEntity_MegaVacuumFreezer.java | 7 +- .../tiered/GT_MetaTileEntity_AcidGenerator.java | 8 +- .../tiered/GT_MetaTileEntity_BioLab.java | 8 +- .../tiered/GT_MetaTileEntity_RadioHatch.java | 22 +- .../bartworks/neiHandler/BW_NEI_BioLabHandler.java | 8 +- .../bartworks/neiHandler/BW_NEI_BioVatHandler.java | 8 +- .../bartworks/neiHandler/IMCForNEI.java | 59 -- .../bartworks/neiHandler/NEI_BW_Config.java | 7 +- .../system/material/BW_MetaGeneratedFrames.java | 4 +- .../material/CircuitGeneration/BW_Meta_Items.java | 10 +- .../CircuitGeneration/CircuitImprintLoader.java | 29 +- .../CircuitGeneration/CircuitPartLoader.java | 4 +- .../GT_Enhancement/GTMetaItemEnhancer.java | 10 +- .../GT_Enhancement/PlatinumSludgeOverHaul.java | 79 ++- .../material/processingLoaders/AddSomeRecipes.java | 10 +- .../processingLoaders/AdditionalRecipes.java | 258 +++---- .../material/processingLoaders/DownTierLoader.java | 13 +- .../werkstoff_loaders/recipe/BlockLoader.java | 13 +- .../werkstoff_loaders/recipe/CasingLoader.java | 6 +- .../werkstoff_loaders/recipe/CellLoader.java | 31 +- .../recipe/CraftingMaterialLoader.java | 50 +- .../werkstoff_loaders/recipe/CrushedLoader.java | 38 +- .../werkstoff_loaders/recipe/DustLoader.java | 91 +-- .../werkstoff_loaders/recipe/GemLoader.java | 64 +- .../werkstoff_loaders/recipe/MetalLoader.java | 22 +- .../werkstoff_loaders/recipe/MoltenCellLoader.java | 61 +- .../recipe/MultipleMetalLoader.java | 10 +- .../werkstoff_loaders/recipe/OreLoader.java | 4 +- .../recipe/SimpleMetalLoader.java | 44 +- .../werkstoff_loaders/recipe/ToolLoader.java | 22 +- .../registration/BridgeMaterialsLoader.java | 28 +- .../bartimaeusnek/bartworks/util/BWRecipes.java | 767 +-------------------- .../bartimaeusnek/bartworks/util/StreamUtils.java | 11 +- 68 files changed, 987 insertions(+), 1684 deletions(-) delete mode 100644 src/main/java/com/github/bartimaeusnek/bartworks/API/AcidGenFuelAdder.java create mode 100644 src/main/java/com/github/bartimaeusnek/bartworks/API/recipe/BWNBTDependantCraftingRecipe.java create mode 100644 src/main/java/com/github/bartimaeusnek/bartworks/API/recipe/BacterialVatFrontend.java create mode 100644 src/main/java/com/github/bartimaeusnek/bartworks/API/recipe/BartWorksRecipeMaps.java create mode 100644 src/main/java/com/github/bartimaeusnek/bartworks/API/recipe/DynamicGTRecipe.java create mode 100644 src/main/java/com/github/bartimaeusnek/bartworks/API/recipe/RadioHatchFrontend.java delete mode 100644 src/main/java/com/github/bartimaeusnek/bartworks/neiHandler/IMCForNEI.java (limited to 'src/main/java/com') diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/API/AcidGenFuelAdder.java b/src/main/java/com/github/bartimaeusnek/bartworks/API/AcidGenFuelAdder.java deleted file mode 100644 index 1e254993d4..0000000000 --- a/src/main/java/com/github/bartimaeusnek/bartworks/API/AcidGenFuelAdder.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2018-2020 bartimaeusnek Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in the Software without restriction, - * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following - * conditions: The above copyright notice and this permission notice shall be included in all copies or substantial - * portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ - -package com.github.bartimaeusnek.bartworks.API; - -import net.minecraftforge.fluids.FluidStack; - -import com.github.bartimaeusnek.bartworks.util.BWRecipes; - -import gregtech.api.enums.Materials; - -public final class AcidGenFuelAdder { - - public static void addLiquidFuel(Materials M, int burn) { - ((BWRecipes.BW_Recipe_Map_LiquidFuel) BWRecipes.instance.getMappingsFor((byte) 2)).addLiquidFuel(M, burn); - } - - public static void addLiquidFuel(FluidStack fluidStack, int burn) { - ((BWRecipes.BW_Recipe_Map_LiquidFuel) BWRecipes.instance.getMappingsFor((byte) 2)) - .addLiquidFuel(fluidStack, burn); - } - - public static void addMoltenFuel(Materials M, int burn) { - ((BWRecipes.BW_Recipe_Map_LiquidFuel) BWRecipes.instance.getMappingsFor((byte) 2)).addMoltenFuel(M, burn); - } -} diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/API/BioObjectAdder.java b/src/main/java/com/github/bartimaeusnek/bartworks/API/BioObjectAdder.java index fc09d943bc..4d28c5fb46 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/API/BioObjectAdder.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/API/BioObjectAdder.java @@ -14,7 +14,7 @@ package com.github.bartimaeusnek.bartworks.API; import static gregtech.api.enums.Mods.Gendustry; -import static gregtech.api.util.GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes; +import static gregtech.api.recipe.RecipeMaps.centrifugeRecipes; import static gregtech.api.util.GT_RecipeBuilder.SECONDS; import java.awt.Color; @@ -177,7 +177,7 @@ public final class BioObjectAdder { GT_Values.RA.stdBuilder().itemInputs(GT_Utility.getIntegratedCircuit(10)) .fluidInputs(new FluidStack(B.getFluid(), 1000)).fluidOutputs(dnaFluid).duration(25 * SECONDS) - .eut(TierEU.RECIPE_MV).addTo(sCentrifugeRecipes); + .eut(TierEU.RECIPE_MV).addTo(centrifugeRecipes); } } } diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/API/BioRecipeAdder.java b/src/main/java/com/github/bartimaeusnek/bartworks/API/BioRecipeAdder.java index 527b62bae3..b1e3fb25df 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/API/BioRecipeAdder.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/API/BioRecipeAdder.java @@ -123,46 +123,4 @@ public final class BioRecipeAdder { aSpecialValue, exactSv); } - - // public static boolean addBacterialVatRecipe(ItemStack[] aInputs, ItemStack[] aOutputs, FluidStack[] - // aFluidInputs, FluidStack[] aFluidOutputs, int aDuration, int aEUt, int aSievert) { - // return BWRecipes.instance.addBacterialVatRecipe(aInputs, aOutputs, aFluidInputs, aFluidOutputs, aDuration, - // aEUt, aSievert); - // } - - // @Deprecated - // public static boolean addBioLabRecipeDNAExtraction(ItemStack[] aInputs, ItemStack aOutput, int[] aChances, - // FluidStack[] aFluidInputs, FluidStack[] aFluidOutputs, int aDuration, int aEUt, int aSpecialValue){ - // return BWRecipes.instance.addBioLabRecipeDNAExtraction(aInputs, aOutput, aChances, aFluidInputs, - // aFluidOutputs, aDuration, aEUt, aSpecialValue); - // } - // - // @Deprecated - // public static boolean addBioLabRecipePCRThermoclycling(ItemStack[] aInputs, ItemStack aOutput, int[] aChances, - // FluidStack[] aFluidInputs, FluidStack[] aFluidOutputs, int aDuration, int aEUt, int aSpecialValue){ - // return BWRecipes.instance.addBioLabRecipePCRThermoclycling(aInputs, aOutput, aChances, aFluidInputs, - // aFluidOutputs, aDuration, aEUt, aSpecialValue); - // } - // - // @Deprecated - // public static boolean addBioLabRecipePlasmidSynthesis(ItemStack[] aInputs, ItemStack aOutput, int[] aChances, - // FluidStack[] aFluidInputs, FluidStack[] aFluidOutputs, int aDuration, int aEUt, int aSpecialValue){ - // return BWRecipes.instance.addBioLabRecipePlasmidSynthesis(aInputs, aOutput, aChances, aFluidInputs, - // aFluidOutputs, aDuration, aEUt, aSpecialValue); - // } - // - // @Deprecated - // public static boolean addBioLabRecipeTransformation(ItemStack[] aInputs, ItemStack aOutput, int[] aChances, - // FluidStack[] aFluidInputs, FluidStack[] aFluidOutputs, int aDuration, int aEUt, int aSpecialValue){ - // return BWRecipes.instance.addBioLabRecipeTransformation(aInputs, aOutput, aChances, aFluidInputs, - // aFluidOutputs, aDuration, aEUt, aSpecialValue); - // } - // - // @Deprecated - // public static boolean addBioLabRecipeClonalCellularSynthesis(ItemStack[] aInputs, ItemStack aOutput, int[] - // aChances, FluidStack[] aFluidInputs, FluidStack[] aFluidOutputs, int aDuration, int aEUt, int aSpecialValue){ - // return BWRecipes.instance.addBioLabRecipeClonalCellularSynthesis(aInputs, aOutput, aChances, aFluidInputs, - // aFluidOutputs, aDuration, aEUt, aSpecialValue); - // } - } diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/API/recipe/BWNBTDependantCraftingRecipe.java b/src/main/java/com/github/bartimaeusnek/bartworks/API/recipe/BWNBTDependantCraftingRecipe.java new file mode 100644 index 0000000000..dfcf94115a --- /dev/null +++ b/src/main/java/com/github/bartimaeusnek/bartworks/API/recipe/BWNBTDependantCraftingRecipe.java @@ -0,0 +1,76 @@ +package com.github.bartimaeusnek.bartworks.API.recipe; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +import net.minecraft.inventory.InventoryCrafting; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.IRecipe; +import net.minecraft.world.World; + +import com.github.bartimaeusnek.bartworks.util.BW_Util; + +public class BWNBTDependantCraftingRecipe implements IRecipe { + + ItemStack result; + Map charToStackMap = new HashMap<>(9, 1); + String[] shape; + + @SuppressWarnings({ "SuspiciousSystemArraycopy" }) + public BWNBTDependantCraftingRecipe(ItemStack result, Object... recipe) { + this.result = result; + this.shape = new String[3]; + System.arraycopy(recipe, 0, this.shape, 0, 3); + this.charToStackMap.put(' ', null); + for (int i = 3; i < recipe.length; i += 2) { + this.charToStackMap.put((char) recipe[i], ((ItemStack) recipe[i + 1]).copy()); + } + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof BWNBTDependantCraftingRecipe that)) return false; + + if (!Objects.equals(this.result, that.result) || !Objects.equals(this.charToStackMap, that.charToStackMap)) + return false; + // Probably incorrect - comparing Object[] arrays with Arrays.equals + return Arrays.equals(this.shape, that.shape); + } + + @Override + public int hashCode() { + int result1 = this.result != null ? this.result.hashCode() : 0; + result1 = 31 * result1 + (this.charToStackMap != null ? this.charToStackMap.hashCode() : 0); + return 31 * result1 + Arrays.hashCode(this.shape); + } + + @Override + public boolean matches(InventoryCrafting p_77569_1_, World p_77569_2_) { + for (int x = 0; x < 3; x++) { + for (int y = 0; y < 3; y++) { + ItemStack toCheck = p_77569_1_.getStackInRowAndColumn(y, x); + ItemStack ref = this.charToStackMap.get(this.shape[x].toCharArray()[y]); + if (!BW_Util.areStacksEqualOrNull(toCheck, ref)) return false; + } + } + return true; + } + + @Override + public ItemStack getCraftingResult(InventoryCrafting p_77572_1_) { + return this.result.copy(); + } + + @Override + public int getRecipeSize() { + return 10; + } + + @Override + public ItemStack getRecipeOutput() { + return this.result; + } +} diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/API/recipe/BacterialVatFrontend.java b/src/main/java/com/github/bartimaeusnek/bartworks/API/recipe/BacterialVatFrontend.java new file mode 100644 index 0000000000..6ed4113017 --- /dev/null +++ b/src/main/java/com/github/bartimaeusnek/bartworks/API/recipe/BacterialVatFrontend.java @@ -0,0 +1,92 @@ +package com.github.bartimaeusnek.bartworks.API.recipe; + +import java.util.Arrays; +import java.util.List; + +import javax.annotation.ParametersAreNonnullByDefault; + +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.StatCollector; + +import com.github.bartimaeusnek.bartworks.common.tileentities.multis.GT_TileEntity_BioVat; +import com.gtnewhorizons.modularui.api.math.Alignment; + +import gregtech.api.recipe.BasicUIPropertiesBuilder; +import gregtech.api.recipe.NEIRecipePropertiesBuilder; +import gregtech.api.recipe.RecipeMapFrontend; +import gregtech.api.util.MethodsReturnNonnullByDefault; +import gregtech.nei.GT_NEI_DefaultHandler; +import gregtech.nei.RecipeDisplayInfo; +import gregtech.nei.formatter.INEISpecialInfoFormatter; + +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +public class BacterialVatFrontend extends RecipeMapFrontend { + + public BacterialVatFrontend(BasicUIPropertiesBuilder uiPropertiesBuilder, + NEIRecipePropertiesBuilder neiPropertiesBuilder) { + super( + uiPropertiesBuilder, + neiPropertiesBuilder.neiSpecialInfoFormatter(new BacterialVatSpecialValueFormatter())); + } + + @Override + protected List handleNEIItemInputTooltip(List currentTip, + GT_NEI_DefaultHandler.FixedPositionedStack pStack) { + if (pStack.isFluid()) { + currentTip.add(EnumChatFormatting.GRAY + StatCollector.translateToLocal("nei.biovat.input.tooltip")); + return currentTip; + } + return super.handleNEIItemInputTooltip(currentTip, pStack); + } + + @Override + protected List handleNEIItemOutputTooltip(List currentTip, + GT_NEI_DefaultHandler.FixedPositionedStack pStack) { + if (pStack.isFluid()) { + currentTip.add(EnumChatFormatting.GRAY + StatCollector.translateToLocal("nei.biovat.output.tooltip")); + return currentTip; + } + return super.handleNEIItemOutputTooltip(currentTip, pStack); + } + + @Override + protected void drawNEIOverlayForInput(GT_NEI_DefaultHandler.FixedPositionedStack stack) { + drawFluidOverlay(stack); + } + + @Override + protected void drawNEIOverlayForOutput(GT_NEI_DefaultHandler.FixedPositionedStack stack) { + drawFluidOverlay(stack); + } + + private void drawFluidOverlay(GT_NEI_DefaultHandler.FixedPositionedStack stack) { + if (stack.isFluid()) { + drawNEIOverlayText( + "+", + stack, + colorOverride.getTextColorOrDefault("nei_overlay_yellow", 0xFDD835), + 0.5f, + true, + Alignment.TopRight); + return; + } + super.drawNEIOverlayForOutput(stack); + } + + private static class BacterialVatSpecialValueFormatter implements INEISpecialInfoFormatter { + + @Override + public List format(RecipeDisplayInfo recipeInfo) { + int[] tSpecialA = GT_TileEntity_BioVat.specialValueUnpack(recipeInfo.recipe.mSpecialValue); + String glassTier = StatCollector.translateToLocalFormatted("nei.biovat.0.name", tSpecialA[0]); + String sievert; + if (tSpecialA[2] == 1) { + sievert = StatCollector.translateToLocalFormatted("nei.biovat.1.name", tSpecialA[3]); + } else { + sievert = StatCollector.translateToLocalFormatted("nei.biovat.2.name", tSpecialA[3]); + } + return Arrays.asList(glassTier, sievert); + } + } +} diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/API/recipe/BartWorksRecipeMaps.java b/src/main/java/com/github/bartimaeusnek/bartworks/API/recipe/BartWorksRecipeMaps.java new file mode 100644 index 0000000000..97fa74bf85 --- /dev/null +++ b/src/main/java/com/github/bartimaeusnek/bartworks/API/recipe/BartWorksRecipeMaps.java @@ -0,0 +1,64 @@ +package com.github.bartimaeusnek.bartworks.API.recipe; + +import com.github.bartimaeusnek.bartworks.API.modularUI.BW_UITextures; + +import gregtech.api.gui.modularui.GT_UITextures; +import gregtech.api.recipe.RecipeMap; +import gregtech.api.recipe.RecipeMapBackend; +import gregtech.api.recipe.RecipeMapBuilder; +import gregtech.api.recipe.maps.FuelBackend; +import gregtech.nei.formatter.FuelSpecialValueFormatter; + +public class BartWorksRecipeMaps { + + public static final RecipeMap bioLabRecipes = RecipeMapBuilder.of("bw.recipe.biolab") + .maxIO(6, 2, 1, 0).minInputs(1, 1).useSpecialSlot().slotOverlays((index, isFluid, isOutput, isSpecial) -> { + if (isSpecial) { + return BW_UITextures.OVERLAY_SLOT_MODULE; + } + if (isFluid) { + return GT_UITextures.OVERLAY_SLOT_VIAL_2; + } + if (!isOutput) { + switch (index) { + case 0: + return BW_UITextures.OVERLAY_SLOT_DISH; + case 1: + return BW_UITextures.OVERLAY_SLOT_DNA_FLASK; + case 2: + return GT_UITextures.OVERLAY_SLOT_CIRCUIT; + case 3: + return GT_UITextures.OVERLAY_SLOT_MOLECULAR_1; + case 4: + return GT_UITextures.OVERLAY_SLOT_MOLECULAR_2; + case 5: + return GT_UITextures.OVERLAY_SLOT_DATA_ORB; + } + } + return null; + }).progressBar(GT_UITextures.PROGRESSBAR_ARROW_MULTIPLE).logo(BW_UITextures.PICTURE_BW_LOGO_47X21) + .logoSize(47, 21).logoPos(125, 3).disableRegisterNEI().build(); + public static final RecipeMap bacterialVatRecipes = RecipeMapBuilder.of("bw.recipe.BacteriaVat") + .maxIO(6, 2, 1, 1).minInputs(0, 1).useSpecialSlot().specialSlotSensitive() + .progressBar(GT_UITextures.PROGRESSBAR_ARROW_MULTIPLE).frontend(BacterialVatFrontend::new) + .disableRegisterNEI().build(); + public static final RecipeMap acidGenFuels = RecipeMapBuilder.of("bw.fuels.acidgens", FuelBackend::new) + .maxIO(1, 1, 0, 0).neiSpecialInfoFormatter(FuelSpecialValueFormatter.INSTANCE).build(); + public static final RecipeMap circuitAssemblyLineRecipes = RecipeMapBuilder.of("bw.recipe.cal") + .maxIO(6, 1, 1, 0).minInputs(1, 1).useSpecialSlot().specialSlotSensitive() + .progressBar(GT_UITextures.PROGRESSBAR_CIRCUIT_ASSEMBLER).build(); + public static final RecipeMap radioHatchRecipes = RecipeMapBuilder.of("bw.recipe.radhatch") + .maxIO(1, 0, 0, 0).minInputs(1, 0) + .slotOverlays((index, isFluid, isOutput, isSpecial) -> BW_UITextures.OVERLAY_SLOT_ROD) + .logo(BW_UITextures.PICTURE_BW_LOGO_47X21).logoSize(47, 21).logoPos(118, 55).dontUseProgressBar() + .addSpecialTexture(74, 20, 29, 27, BW_UITextures.PICTURE_RADIATION).frontend(RadioHatchFrontend::new) + .build(); + public static final RecipeMap electricImplosionCompressorRecipes = RecipeMapBuilder + .of("gt.recipe.electricimplosioncompressor").maxIO(6, 2, 1, 1) + .slotOverlays( + (index, isFluid, isOutput, + isSpecial) -> !isFluid && !isOutput ? GT_UITextures.OVERLAY_SLOT_IMPLOSION : null) + .progressBar(GT_UITextures.PROGRESSBAR_COMPRESS).build(); + public static final RecipeMap htgrFakeRecipes = RecipeMapBuilder.of("bw.recipe.htgr") + .maxIO(1, 1, 0, 0).build(); +} diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/API/recipe/DynamicGTRecipe.java b/src/main/java/com/github/bartimaeusnek/bartworks/API/recipe/DynamicGTRecipe.java new file mode 100644 index 0000000000..3087255e51 --- /dev/null +++ b/src/main/java/com/github/bartimaeusnek/bartworks/API/recipe/DynamicGTRecipe.java @@ -0,0 +1,34 @@ +package com.github.bartimaeusnek.bartworks.API.recipe; + +import java.util.ArrayList; + +import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.FluidStack; + +import com.github.bartimaeusnek.bartworks.MainMod; + +import gregtech.api.util.GT_Recipe; + +public class DynamicGTRecipe extends GT_Recipe { + + public DynamicGTRecipe(boolean aOptimize, ItemStack[] aInputs, ItemStack[] aOutputs, Object aSpecialItems, + int[] aChances, FluidStack[] aFluidInputs, FluidStack[] aFluidOutputs, int aDuration, int aEUt, + int aSpecialValue, GT_Recipe originalRecipe) { + super( + aOptimize, + aInputs, + aOutputs, + aSpecialItems, + aChances, + aFluidInputs, + aFluidOutputs, + aDuration, + aEUt, + aSpecialValue); + if (originalRecipe != null) { + this.owners = new ArrayList<>(originalRecipe.owners); + this.stackTraces = new ArrayList<>(originalRecipe.stackTraces); + this.setOwner(MainMod.MOD_ID); + } + } +} diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/API/recipe/RadioHatchFrontend.java b/src/main/java/com/github/bartimaeusnek/bartworks/API/recipe/RadioHatchFrontend.java new file mode 100644 index 0000000000..0309a676d9 --- /dev/null +++ b/src/main/java/com/github/bartimaeusnek/bartworks/API/recipe/RadioHatchFrontend.java @@ -0,0 +1,45 @@ +package com.github.bartimaeusnek.bartworks.API.recipe; + +import java.util.Arrays; +import java.util.List; + +import javax.annotation.ParametersAreNonnullByDefault; + +import net.minecraft.util.StatCollector; + +import gregtech.api.recipe.BasicUIPropertiesBuilder; +import gregtech.api.recipe.NEIRecipePropertiesBuilder; +import gregtech.api.recipe.RecipeMapFrontend; +import gregtech.api.util.MethodsReturnNonnullByDefault; +import gregtech.nei.RecipeDisplayInfo; +import gregtech.nei.formatter.INEISpecialInfoFormatter; + +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +public class RadioHatchFrontend extends RecipeMapFrontend { + + public RadioHatchFrontend(BasicUIPropertiesBuilder uiPropertiesBuilder, + NEIRecipePropertiesBuilder neiPropertiesBuilder) { + super(uiPropertiesBuilder, neiPropertiesBuilder.neiSpecialInfoFormatter(new RadioHatchSpecialInfoFormatter())); + } + + @Override + protected void drawEnergyInfo(RecipeDisplayInfo recipeInfo) {} + + @Override + protected void drawDurationInfo(RecipeDisplayInfo recipeInfo) {} + + private static class RadioHatchSpecialInfoFormatter implements INEISpecialInfoFormatter { + + @Override + public List format(RecipeDisplayInfo recipeInfo) { + int radioLevel = recipeInfo.recipe.mEUt; + int amount = recipeInfo.recipe.mDuration; + long time = recipeInfo.recipe.mSpecialValue; + return Arrays.asList( + StatCollector.translateToLocalFormatted("BW.NEI.display.radhatch.0", radioLevel), + StatCollector.translateToLocalFormatted("BW.NEI.display.radhatch.1", amount), + StatCollector.translateToLocalFormatted("BW.NEI.display.radhatch.2", time * amount / 20.0)); + } + } +} diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/MainMod.java b/src/main/java/com/github/bartimaeusnek/bartworks/MainMod.java index e4a73d1996..86f33d91ef 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/MainMod.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/MainMod.java @@ -52,7 +52,6 @@ import com.github.bartimaeusnek.bartworks.common.loaders.RecipeLoader; import com.github.bartimaeusnek.bartworks.common.loaders.RegisterServerCommands; import com.github.bartimaeusnek.bartworks.common.loaders.StaticRecipeChangeLoaders; import com.github.bartimaeusnek.bartworks.common.net.BW_Network; -import com.github.bartimaeusnek.bartworks.neiHandler.IMCForNEI; import com.github.bartimaeusnek.bartworks.server.EventHandler.ServerEventHandler; import com.github.bartimaeusnek.bartworks.system.material.CircuitGeneration.CircuitImprintLoader; import com.github.bartimaeusnek.bartworks.system.material.CircuitGeneration.CircuitPartLoader; @@ -76,9 +75,9 @@ import cpw.mods.fml.common.network.IGuiHandler; import cpw.mods.fml.common.network.NetworkRegistry; import gregtech.api.GregTech_API; import gregtech.api.enums.Mods; +import gregtech.api.recipe.RecipeMap; import gregtech.api.recipe.check.CheckRecipeResultRegistry; import gregtech.api.util.GT_OreDictUnificator; -import gregtech.api.util.GT_Recipe; @Mod(modid = MainMod.MOD_ID, name = MainMod.NAME, version = API_REFERENCE.VERSION, dependencies = """ required-after:IC2;\ @@ -155,7 +154,6 @@ public final class MainMod { WerkstoffLoader.runInit(); ItemRegistry.run(); - IMCForNEI.IMCSender(); } @Mod.EventHandler @@ -224,6 +222,6 @@ public final class MainMod { // StaticRecipeChangeLoaders.synchroniseCircuitUseMulti(); // Accept recipe map changes into Buffers - GT_Recipe.GT_Recipe_Map.sMappings.forEach(GT_Recipe.GT_Recipe_Map::reInit); + RecipeMap.ALL_RECIPE_MAPS.values().forEach(map -> map.getBackend().reInit()); } } diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/ArtificialMicaLine.java b/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/ArtificialMicaLine.java index ea533e4b4b..32b366440b 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/ArtificialMicaLine.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/ArtificialMicaLine.java @@ -1,10 +1,10 @@ package com.github.bartimaeusnek.bartworks.common.loaders; import static gregtech.api.enums.Mods.NewHorizonsCoreMod; -import static gregtech.api.util.GT_Recipe.GT_Recipe_Map.sBenderRecipes; -import static gregtech.api.util.GT_Recipe.GT_Recipe_Map.sBlastRecipes; -import static gregtech.api.util.GT_Recipe.GT_Recipe_Map.sFluidExtractionRecipes; -import static gregtech.api.util.GT_Recipe.GT_Recipe_Map.sMixerRecipes; +import static gregtech.api.recipe.RecipeMaps.benderRecipes; +import static gregtech.api.recipe.RecipeMaps.blastFurnaceRecipes; +import static gregtech.api.recipe.RecipeMaps.fluidExtractionRecipes; +import static gregtech.api.recipe.RecipeMaps.mixerRecipes; import static gregtech.api.util.GT_RecipeBuilder.SECONDS; import static gregtech.api.util.GT_RecipeBuilder.TICKS; import static gregtech.api.util.GT_RecipeConstants.COIL_HEAT; @@ -21,6 +21,7 @@ import gregtech.api.enums.ItemList; import gregtech.api.enums.Materials; import gregtech.api.enums.OrePrefixes; import gregtech.api.enums.TierEU; +import gregtech.api.recipe.RecipeMaps; import gregtech.api.util.GT_ModHandler; import gregtech.api.util.GT_Recipe; import gregtech.api.util.GT_Utility; @@ -49,7 +50,7 @@ public class ArtificialMicaLine { .itemOutputs(WerkstoffLoader.Potassiumfluorosilicate.get(OrePrefixes.dust, 9)) .fluidInputs(WerkstoffLoader.HexafluorosilicicAcid.getFluidOrGas(1000)) .fluidOutputs(Materials.HydrochloricAcid.getFluid(2000)).duration(1 * SECONDS).eut(8) - .addTo(sMixerRecipes); + .addTo(mixerRecipes); // 2K + CO2 + O = K2CO3 @@ -73,7 +74,7 @@ public class ArtificialMicaLine { .itemOutputs( WerkstoffLoader.RawFluorophlogopite.get(OrePrefixes.dust, 64), WerkstoffLoader.RawFluorophlogopite.get(OrePrefixes.dust, 27)) - .duration(20 * SECONDS).eut(TierEU.RECIPE_MV).addTo(sMixerRecipes); + .duration(20 * SECONDS).eut(TierEU.RECIPE_MV).addTo(mixerRecipes); // 55Quartzite/Nether Quartz Dust + 20K2SiF6 + 57Al2O3 + 4K2CO3 = 136Raw Fluorophlogopite Dust GT_Values.RA.stdBuilder() @@ -87,7 +88,7 @@ public class ArtificialMicaLine { WerkstoffLoader.RawFluorophlogopite.get(OrePrefixes.dust, 64), WerkstoffLoader.RawFluorophlogopite.get(OrePrefixes.dust, 64), WerkstoffLoader.RawFluorophlogopite.get(OrePrefixes.dust, 8)) - .fluidInputs().fluidOutputs().duration(30 * SECONDS).eut(TierEU.RECIPE_MV).addTo(sMixerRecipes); + .fluidInputs().fluidOutputs().duration(30 * SECONDS).eut(TierEU.RECIPE_MV).addTo(mixerRecipes); GT_Values.RA.stdBuilder() .itemInputs( @@ -100,7 +101,7 @@ public class ArtificialMicaLine { WerkstoffLoader.RawFluorophlogopite.get(OrePrefixes.dust, 64), WerkstoffLoader.RawFluorophlogopite.get(OrePrefixes.dust, 64), WerkstoffLoader.RawFluorophlogopite.get(OrePrefixes.dust, 8)) - .duration(30 * SECONDS).eut(TierEU.RECIPE_MV).addTo(sMixerRecipes); + .duration(30 * SECONDS).eut(TierEU.RECIPE_MV).addTo(mixerRecipes); // 62Certus Quartz Dust + 10K2SiF6 + 12Al2O3 + 7K2CO3 = 91Raw Fluorophlogopite Dust GT_Values.RA.stdBuilder() @@ -113,22 +114,22 @@ public class ArtificialMicaLine { .itemOutputs( WerkstoffLoader.RawFluorophlogopite.get(OrePrefixes.dust, 64), WerkstoffLoader.RawFluorophlogopite.get(OrePrefixes.dust, 27)) - .duration(30 * SECONDS).eut(TierEU.RECIPE_MV).addTo(sMixerRecipes); + .duration(30 * SECONDS).eut(TierEU.RECIPE_MV).addTo(mixerRecipes); // MgO(s) = MgO(l) GT_Values.RA.stdBuilder().itemInputs(Materials.Magnesia.getDust(1)) .fluidOutputs(Materials.Magnesia.getMolten(144)).duration(20 * TICKS).eut(TierEU.RECIPE_MV) - .addTo(sFluidExtractionRecipes); + .addTo(fluidExtractionRecipes); // 27Raw Fluorophlogopite Dust + 720MgO(l) = 4608Fluorophlogopite(l) GT_Values.RA.stdBuilder().itemInputs(WerkstoffLoader.RawFluorophlogopite.get(OrePrefixes.dust, 27)) .itemOutputs(Materials.Glass.getDust(1)).fluidInputs(BW_GT_MaterialReference.Magnesia.getMolten(720)) .fluidOutputs(WerkstoffLoader.HotFluorophlogopite.getFluidOrGas(4608)).duration(30 * SECONDS) - .eut(TierEU.RECIPE_HV).metadata(COIL_HEAT, 1700).addTo(sBlastRecipes); + .eut(TierEU.RECIPE_HV).metadata(COIL_HEAT, 1700).addTo(blastFurnaceRecipes); // 144Fluorophlogopite(l) = Fluorophlogopite - GT_Recipe.GT_Recipe_Map.sVacuumRecipes.addRecipe( + RecipeMaps.vacuumFreezerRecipes.addRecipe( new GT_Recipe( false, new ItemStack[] { ItemList.Shape_Mold_Plate.get(0) }, @@ -148,7 +149,7 @@ public class ArtificialMicaLine { WerkstoffLoader.Fluorophlogopite.get(OrePrefixes.plate, 1), GT_Utility.getIntegratedCircuit(1)) .itemOutputs(GT_ModHandler.getModItem(NewHorizonsCoreMod.ID, "item.MicaInsulatorFoil", 4)) - .duration(10 * TICKS).eut(600).addTo(sBenderRecipes); + .duration(10 * TICKS).eut(600).addTo(benderRecipes); } } diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/BioRecipeLoader.java b/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/BioRecipeLoader.java index c4589c3a3f..e4f2c73e32 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/BioRecipeLoader.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/BioRecipeLoader.java @@ -28,8 +28,8 @@ import gregtech.api.enums.ItemList; import gregtech.api.enums.Materials; import gregtech.api.enums.OrePrefixes; import gregtech.api.enums.TierEU; +import gregtech.api.recipe.RecipeMaps; import gregtech.api.util.GT_OreDictUnificator; -import gregtech.api.util.GT_Recipe; import gregtech.api.util.GT_Utility; public class BioRecipeLoader { @@ -180,7 +180,7 @@ public class BioRecipeLoader { } public static void runOnServerStarted() { - GT_Recipe.GT_Recipe_Map.sFermentingRecipes.mRecipeList.forEach( + RecipeMaps.fermentingRecipes.getAllRecipes().forEach( recipe -> BWRecipes.instance.addBacterialVatRecipe( new ItemStack[] { null }, BioCultureLoader.generalPurposeFermentingBacteria, diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/ElectricImplosionCompressorRecipes.java b/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/ElectricImplosionCompressorRecipes.java index c38e9cd7c0..500dfb6faf 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/ElectricImplosionCompressorRecipes.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/ElectricImplosionCompressorRecipes.java @@ -11,7 +11,7 @@ import static gregtech.api.util.GT_ModHandler.getModItem; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; -import com.github.bartimaeusnek.bartworks.util.BWRecipes; +import com.github.bartimaeusnek.bartworks.API.recipe.BartWorksRecipeMaps; import gregtech.api.enums.GT_Values; import gregtech.api.enums.ItemList; @@ -26,7 +26,7 @@ public class ElectricImplosionCompressorRecipes implements Runnable { private static void addElectricImplosionRecipe(final ItemStack[] inputItems, final FluidStack[] inputFluids, final ItemStack[] outputItems, final FluidStack[] outputFluids, final int durationInTicks, final int EUPerTick) { - BWRecipes.instance.eicMap.addRecipe( + BartWorksRecipeMaps.electricImplosionCompressorRecipes.addRecipe( false, inputItems, outputItems, diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/FluidLoader.java b/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/FluidLoader.java index 6f4b237473..0c92005f6f 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/FluidLoader.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/FluidLoader.java @@ -15,7 +15,7 @@ package com.github.bartimaeusnek.bartworks.common.loaders; import static gregtech.api.enums.Mods.Gendustry; import static gregtech.api.enums.Mods.GregTech; -import static gregtech.api.util.GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes; +import static gregtech.api.recipe.RecipeMaps.centrifugeRecipes; import static gregtech.api.util.GT_RecipeBuilder.SECONDS; import java.awt.Color; @@ -96,7 +96,7 @@ public class FluidLoader { GT_Values.RA.stdBuilder().itemInputs(GT_Utility.getIntegratedCircuit(10)) .fluidInputs(new FluidStack(B.getFluid(), 1000)).fluidOutputs(dnaFluid).duration(25 * SECONDS) - .eut(TierEU.RECIPE_MV).addTo(sCentrifugeRecipes); + .eut(TierEU.RECIPE_MV).addTo(centrifugeRecipes); } } diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/StaticRecipeChangeLoaders.java b/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/StaticRecipeChangeLoaders.java index 0cba765189..a44bcf57e8 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/StaticRecipeChangeLoaders.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/StaticRecipeChangeLoaders.java @@ -15,7 +15,6 @@ package com.github.bartimaeusnek.bartworks.common.loaders; import static com.github.bartimaeusnek.bartworks.system.material.WerkstoffLoader.ANAEROBE_GAS; import static com.github.bartimaeusnek.bartworks.system.material.WerkstoffLoader.NOBLE_GAS; -import static com.github.bartimaeusnek.bartworks.system.material.WerkstoffLoader.Oganesson; import static com.github.bartimaeusnek.bartworks.system.material.WerkstoffLoader.fluids; import static com.github.bartimaeusnek.bartworks.system.material.WerkstoffLoader.molten; import static gregtech.api.enums.GT_Values.VN; @@ -24,9 +23,7 @@ import static gregtech.api.enums.Mods.TinkerConstruct; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collection; import java.util.HashSet; -import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Objects; @@ -35,15 +32,15 @@ import java.util.Set; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidContainerRegistry; -import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.oredict.OreDictionary; import org.apache.commons.lang3.StringUtils; +import com.github.bartimaeusnek.bartworks.API.recipe.BartWorksRecipeMaps; +import com.github.bartimaeusnek.bartworks.API.recipe.DynamicGTRecipe; import com.github.bartimaeusnek.bartworks.MainMod; import com.github.bartimaeusnek.bartworks.system.material.Werkstoff; -import com.github.bartimaeusnek.bartworks.util.BWRecipes; import com.github.bartimaeusnek.bartworks.util.BW_Util; import com.github.bartimaeusnek.bartworks.util.StreamUtils; import com.github.bartimaeusnek.bartworks.util.log.DebugLog; @@ -59,10 +56,11 @@ import gregtech.api.enums.OrePrefixes; import gregtech.api.enums.SubTag; import gregtech.api.enums.TierEU; import gregtech.api.objects.GT_ItemStack; +import gregtech.api.recipe.RecipeMap; +import gregtech.api.recipe.RecipeMaps; import gregtech.api.util.GT_ModHandler; import gregtech.api.util.GT_OreDictUnificator; import gregtech.api.util.GT_Recipe; -import gregtech.api.util.GT_Recipe.GT_Recipe_Map; import gregtech.api.util.GT_Utility; public class StaticRecipeChangeLoaders { @@ -106,8 +104,8 @@ public class StaticRecipeChangeLoaders { } public static void fixEnergyRequirements() { - GT_Recipe.GT_Recipe_Map.sMappings.stream().filter(StreamUtils::filterVisualMaps) - .forEach(gt_recipe_map -> gt_recipe_map.mRecipeList.parallelStream().forEach(gt_recipe -> { + RecipeMap.ALL_RECIPE_MAPS.values().stream().filter(StreamUtils::filterVisualMaps) + .forEach(recipeMap -> recipeMap.getAllRecipes().parallelStream().forEach(gt_recipe -> { for (int i = 0; i < VN.length - 1; i++) { if (gt_recipe.mEUt > BW_Util.getMachineVoltageFromTier(i) && gt_recipe.mEUt <= BW_Util.getTierVoltage(i)) { @@ -117,66 +115,10 @@ public class StaticRecipeChangeLoaders { })); } - private static void replaceWrongFluidOutput(Werkstoff werkstoff, GT_Recipe recipe, FluidStack wrongNamedFluid) { - for (int i = 0; i < recipe.mFluidOutputs.length; i++) { - if (GT_Utility.areFluidsEqual(recipe.mFluidOutputs[i], wrongNamedFluid)) { - recipe.mFluidOutputs[i] = werkstoff.getFluidOrGas(recipe.mFluidOutputs[i].amount); - } - } - } - - private static void replaceWrongFluidInput(Werkstoff werkstoff, GT_Recipe.GT_Recipe_Map map, GT_Recipe recipe, - FluidStack wrongNamedFluid) { - for (int i = 0; i < recipe.mFluidInputs.length; i++) { - if (GT_Utility.areFluidsEqual(recipe.mFluidInputs[i], wrongNamedFluid)) { - Collection col = map.mRecipeFluidMap.get(wrongNamedFluid.getFluid().getName()); - map.mRecipeFluidMap.remove(wrongNamedFluid.getFluid().getName()); - map.mRecipeFluidMap.put(werkstoff.getFluidOrGas(1).getFluid().getName(), col); - recipe.mFluidInputs[i] = werkstoff.getFluidOrGas(recipe.mFluidInputs[i].amount); - map.mRecipeFluidNameMap.add(werkstoff.getFluidOrGas(1).getFluid().getName()); - } - } - } - - private static void addConversionRecipe(Werkstoff werkstoff, FluidStack wrongNamedFluid) { - GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes.add( - new BWRecipes.DynamicGTRecipe( - false, - null, - null, - null, - null, - new FluidStack[] { wrongNamedFluid }, - new FluidStack[] { werkstoff.getFluidOrGas(1) }, - 1, - 1, - 0)); - } - - private static FluidStack getWrongNameFluid(Werkstoff werkstoff) { - String name = werkstoff.getFluidOrGas(1).getFluid().getName(); - String wrongname = "molten." + name; - return FluidRegistry.getFluidStack(wrongname, 1); - } - - private static void enforceNobleGas(Werkstoff werkstoff) { - FluidStack wrongNamedFluid = getWrongNameFluid(werkstoff); - if (wrongNamedFluid != null) { - GT_Recipe.GT_Recipe_Map.sMappings.forEach(map -> map.mRecipeList.forEach(recipe -> { - replaceWrongFluidInput(werkstoff, map, recipe, wrongNamedFluid); - replaceWrongFluidOutput(werkstoff, recipe, wrongNamedFluid); - })); - addConversionRecipe(werkstoff, wrongNamedFluid); - } - } - public static void unificationRecipeEnforcer() { for (Werkstoff werkstoff : Werkstoff.werkstoffHashSet) { StaticRecipeChangeLoaders.runMaterialLinker(werkstoff); if (werkstoff.getGenerationFeatures().enforceUnification) { - - if (werkstoff.contains(NOBLE_GAS)) enforceNobleGas(werkstoff); - HashSet oreDictNames = new HashSet<>(werkstoff.getADDITIONAL_OREDICT()); oreDictNames.add(werkstoff.getVarName()); StaticRecipeChangeLoaders.runMoltenUnificationEnfocement(werkstoff); @@ -193,16 +135,15 @@ public class StaticRecipeChangeLoaders { || replacement == null || replacement.getItem() == null) continue; - for (GT_Recipe.GT_Recipe_Map map : GT_Recipe.GT_Recipe_Map.sMappings) { - nextRecipe: for (Iterator iterator = map.mRecipeList.iterator(); iterator - .hasNext();) { - GT_Recipe recipe = iterator.next(); - boolean removal = map.equals(GT_Recipe_Map.sFluidExtractionRecipes) - || map.equals(GT_Recipe_Map.sFluidSolidficationRecipes); + for (RecipeMap map : RecipeMap.ALL_RECIPE_MAPS.values()) { + List toRemove = new ArrayList<>(); + nextRecipe: for (GT_Recipe recipe : map.getAllRecipes()) { + boolean removal = map.equals(RecipeMaps.fluidExtractionRecipes) + || map.equals(RecipeMaps.fluidSolidifierRecipes); for (int i = 0; i < recipe.mInputs.length; i++) { if (!GT_Utility.areStacksEqual(recipe.mInputs[i], toReplace)) continue; if (removal) { - iterator.remove(); + toRemove.add(recipe); continue nextRecipe; } recipe.mInputs[i] = GT_Utility.copyAmount(recipe.mInputs[i].stackSize, replacement); @@ -210,7 +151,7 @@ public class StaticRecipeChangeLoaders { for (int i = 0; i < recipe.mOutputs.length; i++) { if (!GT_Utility.areStacksEqual(recipe.mOutputs[i], toReplace)) continue; if (removal) { - iterator.remove(); + toRemove.add(recipe); continue nextRecipe; } recipe.mOutputs[i] = GT_Utility @@ -219,13 +160,14 @@ public class StaticRecipeChangeLoaders { if (recipe.mSpecialItems instanceof ItemStack specialItemStack) { if (!GT_Utility.areStacksEqual(specialItemStack, toReplace)) continue; if (removal) { - iterator.remove(); + toRemove.add(recipe); continue nextRecipe; } recipe.mSpecialItems = GT_Utility .copyAmount(specialItemStack.stackSize, replacement); } } + map.getBackend().removeRecipes(toRemove); } } } @@ -260,9 +202,9 @@ public class StaticRecipeChangeLoaders { sFilledContainerToData.entrySet().removeAll(toremFilledContainerToData); Set toremRecipeList = new HashSet<>(); if (toReplace != null) { - for (GT_Recipe.GT_Recipe_Map map : GT_Recipe.GT_Recipe_Map.sMappings) { + for (RecipeMap map : RecipeMap.ALL_RECIPE_MAPS.values()) { toremRecipeList.clear(); - for (GT_Recipe recipe : map.mRecipeList) { + for (GT_Recipe recipe : map.getAllRecipes()) { for (ItemStack mInput : recipe.mInputs) { if (GT_Utility.areStacksEqual(mInput, toReplace)) { toremRecipeList.add(recipe); @@ -273,7 +215,7 @@ public class StaticRecipeChangeLoaders { if (GT_Utility.areStacksEqual(mOutput, toReplace)) { toremRecipeList.add(recipe); // recipe.mOutputs[i] = data.filledContainer; - if (map == GT_Recipe.GT_Recipe_Map.sFluidCannerRecipes + if (map == RecipeMaps.fluidCannerRecipes && GT_Utility.areStacksEqual(mOutput, data.filledContainer) && !recipe.mFluidInputs[0].equals(data.fluid)) { toremRecipeList.add(recipe); @@ -287,7 +229,7 @@ public class StaticRecipeChangeLoaders { // recipe.mSpecialItems = data.filledContainer; } } - map.mRecipeList.removeAll(toremRecipeList); + map.getBackend().removeRecipes(toremRecipeList); } } GT_Utility.addFluidContainerData(data); @@ -339,7 +281,7 @@ public class StaticRecipeChangeLoaders { */ private static ArrayListMultimap getRecipesToChange(SubTag... GasTags) { ArrayListMultimap toAdd = ArrayListMultimap.create(); - for (GT_Recipe recipe : GT_Recipe.GT_Recipe_Map.sBlastRecipes.mRecipeList) { + for (GT_Recipe recipe : RecipeMaps.blastFurnaceRecipes.getAllRecipes()) { if (recipe.mFluidInputs != null && recipe.mFluidInputs.length > 0) { Materials mat = getMaterialFromInputFluid(recipe); if (mat != Materials._NULL) { @@ -366,7 +308,7 @@ public class StaticRecipeChangeLoaders { private static HashSet getNoGasItems(ArrayListMultimap base) { HashSet toAdd = new HashSet<>(); ArrayListMultimap repToAdd = ArrayListMultimap.create(); - for (GT_Recipe recipe : GT_Recipe.GT_Recipe_Map.sBlastRecipes.mRecipeList) { + for (GT_Recipe recipe : RecipeMaps.blastFurnaceRecipes.getAllRecipes()) { for (SubTag tag : base.keySet()) recipeLoop: for (GT_Recipe baseRe : base.get(tag)) { if (recipe.mInputs.length == baseRe.mInputs.length && recipe.mOutputs.length == baseRe.mOutputs.length) for (int i = 0; i < recipe.mInputs.length; i++) { @@ -435,7 +377,7 @@ public class StaticRecipeChangeLoaders { && recipe.mFluidInputs[0].isFluidEqual(newGas.getGas(0))) { // preserve original recipe owner toAdd.add( - new BWRecipes.DynamicGTRecipe( + new DynamicGTRecipe( false, recipe.mInputs, recipe.mOutputs, @@ -450,7 +392,7 @@ public class StaticRecipeChangeLoaders { } else { // new recipe toAdd.add( - new BWRecipes.DynamicGTRecipe( + new GT_Recipe( false, recipe.mInputs, recipe.mOutputs, @@ -481,7 +423,7 @@ public class StaticRecipeChangeLoaders { .isFluidEqual(new FluidStack(Objects.requireNonNull(fluids.get(newGas)), 0))) { // preserve original recipe owner toAdd.add( - new BWRecipes.DynamicGTRecipe( + new DynamicGTRecipe( false, recipe.mInputs, recipe.mOutputs, @@ -497,7 +439,7 @@ public class StaticRecipeChangeLoaders { } else { // new recipe toAdd.add( - new BWRecipes.DynamicGTRecipe( + new GT_Recipe( false, recipe.mInputs, recipe.mOutputs, @@ -535,7 +477,7 @@ public class StaticRecipeChangeLoaders { } inputs.add(GT_Utility.getIntegratedCircuit(circuitConfiguration)); toAdd.add( - new BWRecipes.DynamicGTRecipe( + new DynamicGTRecipe( false, inputs.toArray(new ItemStack[0]), recipe.mOutputs, @@ -584,10 +526,6 @@ public class StaticRecipeChangeLoaders { } private static void editRecipes(ArrayListMultimap base, HashSet noGas) { - if (GT_Recipe.GT_Recipe_Map.sBlastRecipes.mRecipeFluidNameMap - .contains(Objects.requireNonNull(fluids.get(Oganesson)).getName())) - return; - HashSet toAdd = new HashSet<>(); for (SubTag gasTag : base.keySet()) { @@ -601,16 +539,16 @@ public class StaticRecipeChangeLoaders { } } } - GT_Recipe.GT_Recipe_Map.sBlastRecipes.mRecipeList.removeAll(base.get(gasTag)); + RecipeMaps.blastFurnaceRecipes.getBackend().removeRecipes(base.get(gasTag)); } removeDuplicateGasRecipes(toAdd); - toAdd.forEach(GT_Recipe.GT_Recipe_Map.sBlastRecipes::add); + toAdd.forEach(RecipeMaps.blastFurnaceRecipes::add); } public static void addElectricImplosionCompressorRecipes() { - GT_Recipe.GT_Recipe_Map.sImplosionRecipes.mRecipeList.stream().filter(e -> e.mInputs != null).forEach( - recipe -> BWRecipes.instance.eicMap.addRecipe( + RecipeMaps.implosionRecipes.getAllRecipes().stream().filter(e -> e.mInputs != null).forEach( + recipe -> BartWorksRecipeMaps.electricImplosionCompressorRecipes.addRecipe( true, Arrays.stream(recipe.mInputs).filter(e -> !StaticRecipeChangeLoaders.checkForExplosives(e)) .distinct().toArray(ItemStack[]::new), diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/recipes/Assembler.java b/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/recipes/Assembler.java index 4b676367cf..7a738c722c 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/recipes/Assembler.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/recipes/Assembler.java @@ -1,7 +1,7 @@ package com.github.bartimaeusnek.bartworks.common.loaders.recipes; import static gregtech.api.enums.Mods.GregTech; -import static gregtech.api.util.GT_Recipe.GT_Recipe_Map.sAssemblerRecipes; +import static gregtech.api.recipe.RecipeMaps.assemblerRecipes; import static gregtech.api.util.GT_RecipeBuilder.HOURS; import static gregtech.api.util.GT_RecipeBuilder.SECONDS; import static gregtech.api.util.GT_RecipeBuilder.TICKS; @@ -47,7 +47,7 @@ public class Assembler implements Runnable { GT_Utility.getIntegratedCircuit(17)) .itemOutputs(new ItemStack(ItemRegistry.BW_BLOCKS[0], 1, 1)) .fluidInputs(FluidRegistry.getFluidStack("ic2coolant", 1000)).duration(5 * SECONDS) - .eut(TierEU.RECIPE_HV).addTo(sAssemblerRecipes); + .eut(TierEU.RECIPE_HV).addTo(assemblerRecipes); GT_Values.RA.stdBuilder() .itemInputs( @@ -55,42 +55,42 @@ public class Assembler implements Runnable { Materials.Lapis.getBlocks(8), GT_Utility.getIntegratedCircuit(17)) .itemOutputs(new ItemStack(ItemRegistry.BW_BLOCKS[1])).duration(5 * SECONDS).eut(TierEU.RECIPE_HV) - .addTo(sAssemblerRecipes); + .addTo(assemblerRecipes); GT_Values.RA.stdBuilder() .itemInputs( GT_ModHandler.getModItem(GregTech.ID, "gt.blockmachines", 64, 1000), GT_Utility.getIntegratedCircuit(17)) .itemOutputs(ItemRegistry.megaMachines[0]).fluidInputs(Materials.SolderingAlloy.getMolten(9216)) - .duration(1 * HOURS).eut(TierEU.RECIPE_HV).addTo(sAssemblerRecipes); + .duration(1 * HOURS).eut(TierEU.RECIPE_HV).addTo(assemblerRecipes); GT_Values.RA.stdBuilder() .itemInputs( GT_ModHandler.getModItem(GregTech.ID, "gt.blockmachines", 64, 1002), GT_Utility.getIntegratedCircuit(17)) .itemOutputs(ItemRegistry.megaMachines[1]).fluidInputs(Materials.SolderingAlloy.getMolten(9216)) - .duration(1 * HOURS).eut(TierEU.RECIPE_HV).addTo(sAssemblerRecipes); + .duration(1 * HOURS).eut(TierEU.RECIPE_HV).addTo(assemblerRecipes); GT_Values.RA.stdBuilder() .itemInputs( GT_ModHandler.getModItem(GregTech.ID, "gt.blockmachines", 64, 1126), GT_Utility.getIntegratedCircuit(17)) .itemOutputs(ItemRegistry.megaMachines[2]).fluidInputs(Materials.SolderingAlloy.getMolten(9216)) - .duration(1 * HOURS).eut(TierEU.RECIPE_HV).addTo(sAssemblerRecipes); + .duration(1 * HOURS).eut(TierEU.RECIPE_HV).addTo(assemblerRecipes); GT_Values.RA.stdBuilder() .itemInputs( GT_ModHandler.getModItem(GregTech.ID, "gt.blockmachines", 64, 1169), GT_Utility.getIntegratedCircuit(17)) .itemOutputs(ItemRegistry.megaMachines[3]).fluidInputs(Materials.SolderingAlloy.getMolten(9216)) - .duration(1 * HOURS).eut(TierEU.RECIPE_HV).addTo(sAssemblerRecipes); + .duration(1 * HOURS).eut(TierEU.RECIPE_HV).addTo(assemblerRecipes); GT_Values.RA.stdBuilder() .itemInputs( GT_ModHandler.getModItem(GregTech.ID, "gt.blockmachines", 64, 1160), GT_Utility.getIntegratedCircuit(17)) .itemOutputs(ItemRegistry.megaMachines[4]).fluidInputs(Materials.SolderingAlloy.getMolten(9216)) - .duration(1 * HOURS).eut(TierEU.RECIPE_HV).addTo(sAssemblerRecipes); + .duration(1 * HOURS).eut(TierEU.RECIPE_HV).addTo(assemblerRecipes); GT_Values.RA.stdBuilder() .itemInputs( @@ -98,7 +98,7 @@ public class Assembler implements Runnable { GT_Utility.getIntegratedCircuit(17)) .itemOutputs(new ItemStack(ItemRegistry.BW_BLOCKS[2], 1, 1)) .fluidInputs(Materials.Plastic.getMolten(1152L)).duration(1 * TICKS).eut(TierEU.RECIPE_HV) - .addTo(sAssemblerRecipes); + .addTo(assemblerRecipes); GT_Values.RA.stdBuilder() .itemInputs( @@ -108,7 +108,7 @@ public class Assembler implements Runnable { ItemList.Battery_RE_LV_Lithium.get(1L)) .itemOutputs(new ItemStack(ItemRegistry.CIRCUIT_PROGRAMMER)) .fluidInputs(Materials.SolderingAlloy.getMolten(288L)).duration(30 * SECONDS).eut(TierEU.RECIPE_MV) - .addTo(sAssemblerRecipes); + .addTo(assemblerRecipes); GT_Values.RA.stdBuilder() .itemInputs( @@ -121,7 +121,7 @@ public class Assembler implements Runnable { 1, ItemRegistry.TecTechPipeEnergyLowPower.getItemDamage())) .fluidInputs(Materials.Polytetrafluoroethylene.getMolten(72)).duration(10 * SECONDS) - .eut(TierEU.RECIPE_EV).addTo(sAssemblerRecipes); + .eut(TierEU.RECIPE_EV).addTo(assemblerRecipes); ItemStack[][] converters = ItemRegistry.TecTechLaserAdditions[0]; ItemStack[][] input = ItemRegistry.TecTechLaserAdditions[1]; @@ -172,7 +172,7 @@ public class Assembler implements Runnable { sensors[i].get(2 * (j + 1)), ItemList.TRANSFORMERS[4 + i].get(2 * (j + 1))).itemOutputs(converter) .fluidInputs(Materials.SolderingAlloy.getMolten(solderingAmount)) - .duration((10 * (j + 1)) * SECONDS).eut(recipeConsumption).addTo(sAssemblerRecipes); + .duration((10 * (j + 1)) * SECONDS).eut(recipeConsumption).addTo(assemblerRecipes); GT_Values.RA.stdBuilder() .itemInputs( new ItemStack( @@ -185,8 +185,7 @@ public class Assembler implements Runnable { sensors[i].get(2 * (j + 1)), ItemList.TRANSFORMERS[4 + i].get(2 * (j + 1))) .itemOutputs(converter).fluidInputs(Materials.SolderingAlloy.getMolten(solderingAmount)) - .noFluidOutputs().duration((10 * (j + 1)) * SECONDS).eut(recipeConsumption) - .addTo(sAssemblerRecipes); + .duration((10 * (j + 1)) * SECONDS).eut(recipeConsumption).addTo(assemblerRecipes); GT_Values.RA.stdBuilder() .itemInputs( @@ -199,7 +198,7 @@ public class Assembler implements Runnable { sensors[i].get(2 * (j + 1)), ItemList.HATCHES_ENERGY[4 + i].get(2 * (j + 1))) .itemOutputs(eInput).fluidInputs(Materials.SolderingAlloy.getMolten(solderingAmount)) - .duration((10 * (j + 1)) * SECONDS).eut(recipeConsumption).addTo(sAssemblerRecipes); + .duration((10 * (j + 1)) * SECONDS).eut(recipeConsumption).addTo(assemblerRecipes); GT_Values.RA.stdBuilder() .itemInputs( @@ -212,7 +211,7 @@ public class Assembler implements Runnable { emitters[i].get(2 * (j + 1)), ItemList.HATCHES_DYNAMO[4 + i].get(2 * (j + 1))) .itemOutputs(eDynamo).fluidInputs(Materials.SolderingAlloy.getMolten(solderingAmount)) - .duration((10 * (j + 1) * SECONDS)).eut(recipeConsumption).addTo(sAssemblerRecipes); + .duration((10 * (j + 1) * SECONDS)).eut(recipeConsumption).addTo(assemblerRecipes); } } @@ -222,11 +221,11 @@ public class Assembler implements Runnable { Materials.LiquidAir.getCells(1), GT_Utility.getIntegratedCircuit(17)) .itemOutputs(ItemRegistry.compressedHatch.copy()).duration(15 * SECONDS).eut(TierEU.RECIPE_HV) - .addTo(sAssemblerRecipes); + .addTo(assemblerRecipes); GT_Values.RA.stdBuilder().itemInputs(ItemList.Hatch_Output_HV.get(64), GT_Utility.getIntegratedCircuit(17)) .itemO