aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/loaders/preload
diff options
context:
space:
mode:
authormiozune <miozune@gmail.com>2023-12-04 05:34:27 +0900
committerGitHub <noreply@github.com>2023-12-03 21:34:27 +0100
commitf74c7cc297d1d19d38a19683cd277ad9ce605d3a (patch)
treeb2a5d66ec5a959099240fb1db239ffc0f9531839 /src/main/java/gregtech/loaders/preload
parentb08cde7de4ec93cba05fb070991ad1dffb800ce1 (diff)
downloadGT5-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')
-rw-r--r--src/main/java/gregtech/loaders/preload/GT_Loader_Item_Block_And_Fluid.java36
-rw-r--r--src/main/java/gregtech/loaders/preload/GT_Loader_MetaTileEntities.java9
-rw-r--r--src/main/java/gregtech/loaders/preload/GT_PreLoad.java53
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;
}
}