diff options
author | miozune <miozune@gmail.com> | 2023-12-04 05:34:27 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-03 21:34:27 +0100 |
commit | f74c7cc297d1d19d38a19683cd277ad9ce605d3a (patch) | |
tree | b2a5d66ec5a959099240fb1db239ffc0f9531839 /src/main/java/gregtech/loaders/preload | |
parent | b08cde7de4ec93cba05fb070991ad1dffb800ce1 (diff) | |
download | GT5-Unofficial-f74c7cc297d1d19d38a19683cd277ad9ce605d3a.tar.gz GT5-Unofficial-f74c7cc297d1d19d38a19683cd277ad9ce605d3a.tar.bz2 GT5-Unofficial-f74c7cc297d1d19d38a19683cd277ad9ce605d3a.zip |
Refactor RecipeMap (#2345)
* Remove deprecated and unused things
* Move recipemap subclasses
* Move GT_Recipe_Map to outside and rename to RecipeMap
* Move recipemap instances to separated class & remove prepending s
* Remove useless GT_Recipe constructors
* Always use ModularUI
* Rename IGT_RecipeMap -> IRecipeMap
* Add RecipeMapBuilder
* Remove more deprecated and unused things
* Fix RecipeMap type parameters
* Use multimap for recipe index
* Fix bending recipe error in dev env
* Remove mUniqueIdentifier
* Update AE2FC
* Less edgy texture for NEI recipe background
* Add replicator fluid output slot for NEI and machine GUI
* Fix fluid fuels not having fuel value in large boilers
* Remove GT_RectHandler and NEI_TransferRectHost
* Remove RecipeMapHandler
* Move NEI energy description from RecipeMapFrontend to Power
* Refactor the way to filter fusion recipes
* Check restriction for some properties
* Remove showVoltageAmperage
* Make Power accept GT_Recipe
* Fix NPE
* Move NEI duration description to Power from Frontend
* Directly implement IRecipeProcessingAwareHatch for GT_MetaTileEntity_Hatch_InputBus_ME
* Make Power integrated with GT_OverclockCalculator
* Rename Power -> OverclockDescriber
* Don't modify recipe find logic until postload finishes
* Reformat reserved MTE ids
* Fix check for too few inputs on recipe addition
* Move replicator logic to backend
* Stop un-hiding assline recipes
* Allow setting custom recipe comparator & implement for fusion
* Update AE2FC
* Rename getRecipeList and getRecipes -> getRecipeMap
* Automatically register recipe catalysts
* Cleanup the way to detect recipe collision
* Make use of BasicUIProperties for basic machines
* Make use of BasicUIProperties for UIHelper
* Rename specialHandler -> recipeTransformer
* Add way to automatically register handler info
* Add recipe category
* Add some APIs for addons
* Rename blastRecipes ->
blastFurnaceRecipes
* Remove GT_MetaTileEntity_BasicMachine_GT_Recipe#mSharedTank and #mRequiresFluidForFiltering
* Don't require setting duration and EU/t for fuel recipes
* Don't require setting EU/t for primitive blast furnace recipes
* Revert change to addMultiblockChemicalRecipe
* Fix large boiler general desc recipe not being added
* Hide duration and EU/t from large boiler
* Cleanup recipe stacktrace draw
* Extend metadata usage of recipe builder to recipe itself
* Implement metadata handling & NEI comparator for PCB factory
* Some rename around NEIRecipeInfo
* Some toString implementations
* Add more APIs for addons & some rename
* Infer handler icon from recipe catalyst if one is not set
* Also shrink recipe title when OC is not used
* Remove rare earth centrifuge recipe
* Use metadata for replicator backend
* Adjust geothermal generator output slot
* Allow having multiple transferrects
* Store recipemap reference in backend
* Rename vacuumRecipes -> vacuumFreezerRecipes
* Add config to tweak visibility of recipe categories
* Remove mHideRecyclingRecipes in favor of recipe category config
* Fix typo fluidSolidfierRecipes -> fluidSolidifierRecipes
* Refactor findRecipe and ProcessingLogic to use Stream
* Fix BBF handler icon & remove bronze blast furnace
* Add fluent API for findRecipe
* Add way to stop adding progressbar
* Change arg order for special texture
* Avoid overwriting interesting failure with NO_RECIPE
* Some changes for FuelBackend
* Set space project icon
* Remove localization from TT
* Remove CNC recipe adder
* Move recipe extractor from AE2FC
* Minor internal change for ProcessingLogic#applyRecipe
* More javadoc on #getAvailableRecipeMaps
* Better implementation of #ofSupplier
* Move replicator exponent config to GT_Proxy
* Remove RC & IC2 macerator handling
* Rename StreamUtil -> GT_StreamUtil
* Refactor code around RecipeMetadataStorage
* Revise #compileRecipe javadoc
* Switch extreme diesel recipe loader to downstream recipe map
* Optimize #reMap
* Rename reload -> reloadNEICache
* Minor tweak for drawEnergyInfo
* a bit more doc
* Adjust recipe catalysts
* Add toString implementation for GT_Fluid for debug
* Minor revision for OilCrackerBackend
* Index replicator recipes by material
---------
Co-authored-by: Glease <4586901+Glease@users.noreply.github.com>
Diffstat (limited to 'src/main/java/gregtech/loaders/preload')
3 files changed, 69 insertions, 29 deletions
diff --git a/src/main/java/gregtech/loaders/preload/GT_Loader_Item_Block_And_Fluid.java b/src/main/java/gregtech/loaders/preload/GT_Loader_Item_Block_And_Fluid.java index 20b0b46098..0d1257350d 100644 --- a/src/main/java/gregtech/loaders/preload/GT_Loader_Item_Block_And_Fluid.java +++ b/src/main/java/gregtech/loaders/preload/GT_Loader_Item_Block_And_Fluid.java @@ -9,10 +9,10 @@ import static gregtech.api.enums.Mods.PamsHarvestCraft; import static gregtech.api.enums.Mods.Railcraft; import static gregtech.api.enums.Mods.Thaumcraft; import static gregtech.api.enums.Mods.TwilightForest; -import static gregtech.api.util.GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes; -import static gregtech.api.util.GT_Recipe.GT_Recipe_Map.sFluidCannerRecipes; -import static gregtech.api.util.GT_Recipe.GT_Recipe_Map.sMaceratorRecipes; -import static gregtech.api.util.GT_Recipe.GT_Recipe_Map.sThermalCentrifugeRecipes; +import static gregtech.api.recipe.RecipeMaps.centrifugeRecipes; +import static gregtech.api.recipe.RecipeMaps.fluidCannerRecipes; +import static gregtech.api.recipe.RecipeMaps.maceratorRecipes; +import static gregtech.api.recipe.RecipeMaps.thermalCentrifugeRecipes; import static gregtech.api.util.GT_RecipeBuilder.SECONDS; import static gregtech.api.util.GT_RecipeBuilder.TICKS; import static gregtech.api.util.GT_RecipeBuilder.WILDCARD; @@ -275,7 +275,7 @@ public class GT_Loader_Item_Block_And_Fluid implements Runnable { GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Iron, 1L)) .duration(25 * SECONDS) .eut(48) - .addTo(sThermalCentrifugeRecipes); + .addTo(thermalCentrifugeRecipes); GT_Values.RA.stdBuilder() .itemInputs(ItemList.Depleted_Thorium_2.get(1)) @@ -285,7 +285,7 @@ public class GT_Loader_Item_Block_And_Fluid implements Runnable { GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Iron, 3L)) .duration(25 * SECONDS) .eut(48) - .addTo(sThermalCentrifugeRecipes); + .addTo(thermalCentrifugeRecipes); GT_Values.RA.stdBuilder() .itemInputs(ItemList.Depleted_Thorium_4.get(1)) @@ -295,7 +295,7 @@ public class GT_Loader_Item_Block_And_Fluid implements Runnable { GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Iron, 6L)) .duration(25 * SECONDS) .eut(48) - .addTo(sThermalCentrifugeRecipes); + .addTo(thermalCentrifugeRecipes); ItemList.Depleted_Naquadah_1 .set(new GT_DepletetCell_Item("NaquadahcellDep", "Fuel Rod (Depleted Naquadah)", 1)); @@ -349,7 +349,7 @@ public class GT_Loader_Item_Block_And_Fluid implements Runnable { .outputChances(10_000, 5_000, 5_000, 2_500, 10_000, 10_000) .duration(25 * SECONDS) .eut(2000) - .addTo(sCentrifugeRecipes); + .addTo(centrifugeRecipes); GT_Values.RA.stdBuilder() .itemInputs(ItemList.Depleted_Naquadah_2.get(1)) @@ -363,7 +363,7 @@ public class GT_Loader_Item_Block_And_Fluid implements Runnable { .outputChances(10_000, 5_000, 5_000, 2_500, 10_000, 10_000) .duration(50 * SECONDS) .eut(2000) - .addTo(sCentrifugeRecipes); + .addTo(centrifugeRecipes); GT_Values.RA.stdBuilder() .itemInputs(ItemList.Depleted_Naquadah_4.get(1)) @@ -377,7 +377,7 @@ public class GT_Loader_Item_Block_And_Fluid implements Runnable { .outputChances(10_000, 5_000, 5_000, 2_500, 10_000, 10_000) .duration(100 * SECONDS) .eut(2000) - .addTo(sCentrifugeRecipes); + .addTo(centrifugeRecipes); ItemList.Depleted_MNq_1.set(new GT_DepletetCell_Item("MNqCellDep", "Fuel Rod (Depleted Nq*)", 1)); ItemList.Depleted_MNq_2.set(new GT_DepletetCell_Item("Double_MNqCellDep", "Dual Fuel Rod (Depleted Nq*)", 1)); @@ -428,7 +428,7 @@ public class GT_Loader_Item_Block_And_Fluid implements Runnable { .outputChances(10_000, 5_000, 5_000, 2_500, 10_000, 10_000) .duration(25 * SECONDS) .eut(2000) - .addTo(sCentrifugeRecipes); + .addTo(centrifugeRecipes); GT_Values.RA.stdBuilder() .itemInputs(ItemList.Depleted_MNq_2.get(1)) @@ -442,7 +442,7 @@ public class GT_Loader_Item_Block_And_Fluid implements Runnable { .outputChances(10_000, 5_000, 5_000, 2_500, 10_000, 10_000) .duration(50 * SECONDS) .eut(2000) - .addTo(sCentrifugeRecipes); + .addTo(centrifugeRecipes); GT_Values.RA.stdBuilder() .itemInputs(ItemList.Depleted_MNq_4.get(1)) @@ -456,7 +456,7 @@ public class GT_Loader_Item_Block_And_Fluid implements Runnable { .outputChances(10_000, 5_000, 5_000, 2_500, 10_000, 10_000) .duration(100 * SECONDS) .eut(2000) - .addTo(sCentrifugeRecipes); + .addTo(centrifugeRecipes); ItemList.Uraniumcell_1.set( new GT_RadioactiveCellIC_Item( @@ -827,7 +827,7 @@ public class GT_Loader_Item_Block_And_Fluid implements Runnable { .fluidInputs(GT_ModHandler.getSteam(1000)) .duration(16 * TICKS) .eut(1) - .addTo(sFluidCannerRecipes); + .addTo(fluidCannerRecipes); Materials.Ice.mGas = Materials.Water.mGas; Materials.Water.mGas.setTemperature(375) @@ -2072,7 +2072,7 @@ public class GT_Loader_Item_Block_And_Fluid implements Runnable { .itemOutputs(GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Stone, 1L)) .duration(20 * SECONDS) .eut(2) - .addTo(sMaceratorRecipes); + .addTo(maceratorRecipes); GT_Values.RA.stdBuilder() .itemInputs(new ItemStack(Blocks.gravel, 1, WILDCARD)) @@ -2080,21 +2080,21 @@ public class GT_Loader_Item_Block_And_Fluid implements Runnable { .outputChances(10000, 1000) .duration(20 * SECONDS) .eut(2) - .addTo(sMaceratorRecipes); + .addTo(maceratorRecipes); GT_Values.RA.stdBuilder() .itemInputs(new ItemStack(Blocks.furnace, 1, WILDCARD)) .itemOutputs(GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Stone, 8L)) .duration(20 * SECONDS) .eut(2) - .addTo(sMaceratorRecipes); + .addTo(maceratorRecipes); GT_Values.RA.stdBuilder() .itemInputs(new ItemStack(Blocks.lit_furnace, 1, WILDCARD)) .itemOutputs(GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Stone, 8L)) .duration(20 * SECONDS) .eut(2) - .addTo(sMaceratorRecipes); + .addTo(maceratorRecipes); GT_OreDictUnificator.set( OrePrefixes.ingot, diff --git a/src/main/java/gregtech/loaders/preload/GT_Loader_MetaTileEntities.java b/src/main/java/gregtech/loaders/preload/GT_Loader_MetaTileEntities.java index 8ab21db198..9977af29f8 100644 --- a/src/main/java/gregtech/loaders/preload/GT_Loader_MetaTileEntities.java +++ b/src/main/java/gregtech/loaders/preload/GT_Loader_MetaTileEntities.java @@ -65,7 +65,6 @@ import static gregtech.api.enums.MetaTileEntityIDs.BREWERY_IV; import static gregtech.api.enums.MetaTileEntityIDs.BREWERY_LV; import static gregtech.api.enums.MetaTileEntityIDs.BREWERY_MV; import static gregtech.api.enums.MetaTileEntityIDs.BRICKED_BLAST_FURNACE_CONTROLLER; -import static gregtech.api.enums.MetaTileEntityIDs.BRONZE_BLAST_FURNACE_CONTROLLER; import static gregtech.api.enums.MetaTileEntityIDs.CHARCOAL_PILE_IGNITER_CONTROLLER; import static gregtech.api.enums.MetaTileEntityIDs.CHEST_BUFFER_EV; import static gregtech.api.enums.MetaTileEntityIDs.CHEST_BUFFER_HV; @@ -536,7 +535,6 @@ import gregtech.common.tileentities.machines.long_distance.GT_MetaTileEntity_Lon import gregtech.common.tileentities.machines.long_distance.GT_MetaTileEntity_LongDistancePipelineItem; import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_AssemblyLine; import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_BrickedBlastFurnace; -import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_BronzeBlastFurnace; import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_Charcoal_Pit; import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_Cleanroom; import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_ConcreteBackfiller1; @@ -815,13 +813,6 @@ public class GT_Loader_MetaTileEntities implements Runnable { // TODO CHECK CIRC "multimachine.brickedblastfurnace", "Bricked Blast Furnace").getStackForm(1L)); - // deprecated since ages, maybe time to remove it from the game? - ItemList.Machine_Bronze_BlastFurnace.set( - new GT_MetaTileEntity_BronzeBlastFurnace( - BRONZE_BLAST_FURNACE_CONTROLLER.ID, - "bronzemachine.blastfurnace", - "Bronze Plated Blast Furnace").getStackForm(1L)); - ItemList.Machine_Multi_BlastFurnace.set( new GT_MetaTileEntity_ElectricBlastFurnace( EBF_CONTROLLER.ID, diff --git a/src/main/java/gregtech/loaders/preload/GT_PreLoad.java b/src/main/java/gregtech/loaders/preload/GT_PreLoad.java index 2f7ed5ca16..412eb3bba9 100644 --- a/src/main/java/gregtech/loaders/preload/GT_PreLoad.java +++ b/src/main/java/gregtech/loaders/preload/GT_PreLoad.java @@ -17,6 +17,7 @@ import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.PrintStream; +import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; @@ -33,6 +34,8 @@ import org.apache.commons.lang3.StringUtils; import cpw.mods.fml.common.LoadController; import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.ModContainer; +import cpw.mods.fml.common.discovery.ASMDataTable; +import cpw.mods.fml.common.discovery.ModDiscoverer; import gregtech.GT_Mod; import gregtech.api.GregTech_API; import gregtech.api.enums.ConfigCategories; @@ -40,6 +43,9 @@ import gregtech.api.enums.Dyes; import gregtech.api.enums.GT_Values; import gregtech.api.enums.Materials; import gregtech.api.enums.OrePrefixes; +import gregtech.api.recipe.RecipeCategory; +import gregtech.api.recipe.RecipeCategoryHolder; +import gregtech.api.recipe.RecipeCategorySetting; import gregtech.api.util.GT_Config; import gregtech.api.util.GT_LanguageManager; import gregtech.api.util.GT_Log; @@ -516,8 +522,6 @@ public class GT_PreLoad { .getBoolean(true); GT_Mod.gregtechproxy.mHideUnusedOres = tMainConfig.get(GT_Mod.aTextGeneral, "HideUnusedOres", true) .getBoolean(true); - GT_Mod.gregtechproxy.mHideRecyclingRecipes = tMainConfig.get(GT_Mod.aTextGeneral, "HideRecyclingRecipes", true) - .getBoolean(true); GT_Mod.gregtechproxy.mArcSmeltIntoAnnealed = tMainConfig .get(GT_Mod.aTextGeneral, "ArcSmeltIntoAnnealedWrought", true) .getBoolean(true); @@ -853,6 +857,18 @@ public class GT_PreLoad { .get("nei", "RecipeOwnerStackTrace", false); GT_Mod.gregtechproxy.mNEIOriginalVoltage = GregTech_API.sClientDataFile.get("nei", "OriginalVoltage", false); + GT_Mod.gregtechproxy.recipeCategorySettings.clear(); + for (RecipeCategory recipeCategory : findRecipeCategories()) { + RecipeCategorySetting setting = RecipeCategorySetting.find( + GregTech_API.sClientDataFile.getWithValidValues( + "nei.recipe_categories", + recipeCategory.unlocalizedName, + RecipeCategorySetting.NAMES, + RecipeCategorySetting.getDefault() + .toName())); + GT_Mod.gregtechproxy.recipeCategorySettings.put(recipeCategory, setting); + } + GT_Mod.gregtechproxy.mWailaTransformerVoltageTier = GregTech_API.sClientDataFile .get("waila", "WailaTransformerVoltageTier", true); GT_Mod.gregtechproxy.wailaAverageNS = GregTech_API.sClientDataFile.get("waila", "WailaAverageNS", false); @@ -862,5 +878,38 @@ public class GT_PreLoad { for (int i = 0; i < Circuits.length; i++) { GT_Mod.gregtechproxy.mCircuitsOrder.putIfAbsent(Circuits[i], i); } + + GT_Mod.gregtechproxy.reloadNEICache(); + } + + private static List<RecipeCategory> findRecipeCategories() { + List<RecipeCategory> ret = new ArrayList<>(); + try { + Field discovererField = Loader.class.getDeclaredField("discoverer"); + discovererField.setAccessible(true); + ModDiscoverer discoverer = (ModDiscoverer) discovererField.get(Loader.instance()); + for (ASMDataTable.ASMData asmData : discoverer.getASMTable() + .getAll(RecipeCategoryHolder.class.getName())) { + try { + Object obj = Class.forName(asmData.getClassName()) + .getDeclaredField(asmData.getObjectName()) + .get(null); + if (obj instanceof RecipeCategory recipeCategory) { + ret.add(recipeCategory); + } else { + GT_FML_LOGGER.error( + "{}#{} is not an instance of RecipeCategory", + asmData.getClassName(), + asmData.getObjectName()); + } + } catch (ClassNotFoundException | NoSuchFieldException | IllegalAccessException e) { + GT_FML_LOGGER.error("Failed to find RecipeCategory"); + GT_FML_LOGGER.catching(e); + } + } + } catch (NoSuchFieldException | IllegalAccessException e) { + throw new RuntimeException(e); + } + return ret; } } |