From 3a9e389bc61952498b235eae72f5f7b96db243c7 Mon Sep 17 00:00:00 2001 From: Alkalus <3060479+draknyte1@users.noreply.github.com> Date: Fri, 13 Dec 2019 17:53:13 +0000 Subject: [PATCH 1/4] Added a better way for the Processing Array to handle recipes. Now addons can register their machines for PA support. --- .../api/util/GT_ProcessingArray_Manager.java | 164 ++++++++++++++++++ ...etaTileEntity_AdvancedProcessingArray.java | 97 +---------- .../GT_MetaTileEntity_ProcessingArray.java | 97 +---------- 3 files changed, 182 insertions(+), 176 deletions(-) create mode 100644 src/main/java/gregtech/api/util/GT_ProcessingArray_Manager.java diff --git a/src/main/java/gregtech/api/util/GT_ProcessingArray_Manager.java b/src/main/java/gregtech/api/util/GT_ProcessingArray_Manager.java new file mode 100644 index 00000000..b45793a6 --- /dev/null +++ b/src/main/java/gregtech/api/util/GT_ProcessingArray_Manager.java @@ -0,0 +1,164 @@ +package gregtech.api.util; + +import java.util.HashMap; + +import gregtech.api.util.GT_Recipe.GT_Recipe_Map; + +public class GT_ProcessingArray_Manager { + + private static final HashMap mMetaKeyMap = new HashMap(); + private static final HashMap mRecipeCache = new HashMap(); + + public static boolean registerRecipeMapForMeta(int aMeta, GT_Recipe_Map aMap) { + if (aMeta < 0 || aMeta > Short.MAX_VALUE || aMap == null) { + return false; + } + if (mMetaKeyMap.containsKey(aMeta)) { + return false; + } + String aMapNameKey = aMap.mUnlocalizedName; + mMetaKeyMap.put(aMeta, aMapNameKey); + mRecipeCache.put(aMapNameKey, aMap); + return true; + } + + public static GT_Recipe_Map getRecipeMapForMeta(int aMeta) { + return mRecipeCache.get(mMetaKeyMap.get(aMeta)); + } + + public static void registerDefaultGregtechMaps() { + + // Centrifuge + registerMapBetweenRange(361, 368, GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes); + + // Electrolyzer + registerMapBetweenRange(371, 378, GT_Recipe.GT_Recipe_Map.sElectrolyzerRecipes); + + // Assembler + registerMapBetweenRange(211, 218, GT_Recipe.GT_Recipe_Map.sAssemblerRecipes); + + // Compressor + registerMapBetweenRange(241, 248, GT_Recipe.GT_Recipe_Map.sCompressorRecipes); + + //Extractor + registerMapBetweenRange(271, 278, GT_Recipe.GT_Recipe_Map.sExtractorRecipes); + + //Macerator + registerMapBetweenRange(301, 308, GT_Recipe.GT_Recipe_Map.sMaceratorRecipes); + + // Microwave (New) + registerMapBetweenRange(311, 318, GT_Recipe.GT_Recipe_Map.sMicrowaveRecipes); + + //Recycler + registerMapBetweenRange(331, 338, GT_Recipe.GT_Recipe_Map.sRecyclerRecipes); + + //Thermal Centrifuge + registerMapBetweenRange(381, 388, GT_Recipe.GT_Recipe_Map.sThermalCentrifugeRecipes); + + // Ore Washer + registerMapBetweenRange(391, 398, GT_Recipe.GT_Recipe_Map.sOreWasherRecipes); + + // Chemical Reactor + registerMapBetweenRange(421, 428, GT_Recipe.GT_Recipe_Map.sChemicalRecipes); + + // Chemical Bath + registerMapBetweenRange(541, 548, GT_Recipe.GT_Recipe_Map.sChemicalBathRecipes); + + // Magnetic Seperator + registerMapBetweenRange(561, 568, GT_Recipe.GT_Recipe_Map.sElectroMagneticSeparatorRecipes); + + // Autoclave + registerMapBetweenRange(571, 578, GT_Recipe.GT_Recipe_Map.sAutoclaveRecipes); + + // Mixer + registerMapBetweenRange(581, 588, GT_Recipe.GT_Recipe_Map.sMixerRecipes); + + // Forge Hammer + registerMapBetweenRange(611, 618, GT_Recipe.GT_Recipe_Map.sHammerRecipes); + + // Sifter + registerMapBetweenRange(641, 648, GT_Recipe.GT_Recipe_Map.sSifterRecipes); + + // Extruder + registerMapBetweenRange(281, 288, GT_Recipe.GT_Recipe_Map.sExtruderRecipes); + + // Laser Engraver + registerMapBetweenRange(591, 598, GT_Recipe.GT_Recipe_Map.sLaserEngraverRecipes); + + // Bender + registerMapBetweenRange(221, 228, GT_Recipe.GT_Recipe_Map.sBenderRecipes); + + // Wiremill + registerMapBetweenRange(351, 358, GT_Recipe.GT_Recipe_Map.sWiremillRecipes); + + // Arc Furnace + registerMapBetweenRange(651, 658, GT_Recipe.GT_Recipe_Map.sArcFurnaceRecipes); + + // Plasma Arc Furnace + registerMapBetweenRange(661, 668, GT_Recipe.GT_Recipe_Map.sPlasmaArcFurnaceRecipes); + + // Brewery + registerMapBetweenRange(491, 498, GT_Recipe.GT_Recipe_Map.sBrewingRecipes); + + // Canner + registerMapBetweenRange(231, 238, GT_Recipe.GT_Recipe_Map.sCannerRecipes); + + // Cutter + registerMapBetweenRange(251, 258, GT_Recipe.GT_Recipe_Map.sCutterRecipes); + + // Fermenter + registerMapBetweenRange(501, 508, GT_Recipe.GT_Recipe_Map.sFermentingRecipes); + + // Fluid Extractor + registerMapBetweenRange(511, 518, GT_Recipe.GT_Recipe_Map.sFluidExtractionRecipes); + + // Fluid Solidifier + registerMapBetweenRange(521, 528, GT_Recipe.GT_Recipe_Map.sFluidSolidficationRecipes); + + // Lathe + registerMapBetweenRange(291, 298, GT_Recipe.GT_Recipe_Map.sLatheRecipes); + + // Boxinator + registerMapBetweenRange(401, 408, GT_Recipe.GT_Recipe_Map.sBoxinatorRecipes); + + // Unboxinator + registerMapBetweenRange(411, 408, GT_Recipe.GT_Recipe_Map.sUnboxinatorRecipes); + + // Polarizer + registerMapBetweenRange(551, 558, GT_Recipe.GT_Recipe_Map.sPolarizerRecipes); + + // Printer + registerMapBetweenRange(321, 328, GT_Recipe.GT_Recipe_Map.sPrinterRecipes); + + // Fluid Canner + registerMapBetweenRange(431, 438, GT_Recipe.GT_Recipe_Map.sFluidCannerRecipes); + + // Fluid Heater + registerMapBetweenRange(621, 628, GT_Recipe.GT_Recipe_Map.sFluidHeaterRecipes); + + // Distillery + registerMapBetweenRange(531, 538, GT_Recipe.GT_Recipe_Map.sDistilleryRecipes); + + // Slicer + registerMapBetweenRange(631, 638, GT_Recipe.GT_Recipe_Map.sSlicerRecipes); + + // Matter Amplifier + registerMapBetweenRange(471, 478, GT_Recipe.GT_Recipe_Map.sAmplifiers); + + // Circuit Assembler + registerMapBetweenRange(1180, 1187, GT_Recipe.GT_Recipe_Map.sCircuitAssemblerRecipes); + + // Alloy Smelter + registerMapBetweenRange(201, 208, GT_Recipe.GT_Recipe_Map.sAlloySmelterRecipes); + + // Forming Press + registerMapBetweenRange(601, 608, GT_Recipe.GT_Recipe_Map.sPressRecipes); + + } + + private static final void registerMapBetweenRange(int aMin, int aMax, GT_Recipe_Map aMap) { + for (int i=aMin; i Date: Fri, 13 Dec 2019 17:57:00 +0000 Subject: [PATCH 2/4] Tidied PR up a little bit. --- .../api/util/GT_ProcessingArray_Manager.java | 135 ---------------- .../GT_ProcessingArrayRecipeLoader.java | 144 ++++++++++++++++++ .../preload/GT_Loader_MetaTileEntities.java | 5 +- 3 files changed, 148 insertions(+), 136 deletions(-) create mode 100644 src/main/java/gregtech/loaders/postload/GT_ProcessingArrayRecipeLoader.java diff --git a/src/main/java/gregtech/api/util/GT_ProcessingArray_Manager.java b/src/main/java/gregtech/api/util/GT_ProcessingArray_Manager.java index b45793a6..0d2c407e 100644 --- a/src/main/java/gregtech/api/util/GT_ProcessingArray_Manager.java +++ b/src/main/java/gregtech/api/util/GT_ProcessingArray_Manager.java @@ -26,139 +26,4 @@ public class GT_ProcessingArray_Manager { return mRecipeCache.get(mMetaKeyMap.get(aMeta)); } - public static void registerDefaultGregtechMaps() { - - // Centrifuge - registerMapBetweenRange(361, 368, GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes); - - // Electrolyzer - registerMapBetweenRange(371, 378, GT_Recipe.GT_Recipe_Map.sElectrolyzerRecipes); - - // Assembler - registerMapBetweenRange(211, 218, GT_Recipe.GT_Recipe_Map.sAssemblerRecipes); - - // Compressor - registerMapBetweenRange(241, 248, GT_Recipe.GT_Recipe_Map.sCompressorRecipes); - - //Extractor - registerMapBetweenRange(271, 278, GT_Recipe.GT_Recipe_Map.sExtractorRecipes); - - //Macerator - registerMapBetweenRange(301, 308, GT_Recipe.GT_Recipe_Map.sMaceratorRecipes); - - // Microwave (New) - registerMapBetweenRange(311, 318, GT_Recipe.GT_Recipe_Map.sMicrowaveRecipes); - - //Recycler - registerMapBetweenRange(331, 338, GT_Recipe.GT_Recipe_Map.sRecyclerRecipes); - - //Thermal Centrifuge - registerMapBetweenRange(381, 388, GT_Recipe.GT_Recipe_Map.sThermalCentrifugeRecipes); - - // Ore Washer - registerMapBetweenRange(391, 398, GT_Recipe.GT_Recipe_Map.sOreWasherRecipes); - - // Chemical Reactor - registerMapBetweenRange(421, 428, GT_Recipe.GT_Recipe_Map.sChemicalRecipes); - - // Chemical Bath - registerMapBetweenRange(541, 548, GT_Recipe.GT_Recipe_Map.sChemicalBathRecipes); - - // Magnetic Seperator - registerMapBetweenRange(561, 568, GT_Recipe.GT_Recipe_Map.sElectroMagneticSeparatorRecipes); - - // Autoclave - registerMapBetweenRange(571, 578, GT_Recipe.GT_Recipe_Map.sAutoclaveRecipes); - - // Mixer - registerMapBetweenRange(581, 588, GT_Recipe.GT_Recipe_Map.sMixerRecipes); - - // Forge Hammer - registerMapBetweenRange(611, 618, GT_Recipe.GT_Recipe_Map.sHammerRecipes); - - // Sifter - registerMapBetweenRange(641, 648, GT_Recipe.GT_Recipe_Map.sSifterRecipes); - - // Extruder - registerMapBetweenRange(281, 288, GT_Recipe.GT_Recipe_Map.sExtruderRecipes); - - // Laser Engraver - registerMapBetweenRange(591, 598, GT_Recipe.GT_Recipe_Map.sLaserEngraverRecipes); - - // Bender - registerMapBetweenRange(221, 228, GT_Recipe.GT_Recipe_Map.sBenderRecipes); - - // Wiremill - registerMapBetweenRange(351, 358, GT_Recipe.GT_Recipe_Map.sWiremillRecipes); - - // Arc Furnace - registerMapBetweenRange(651, 658, GT_Recipe.GT_Recipe_Map.sArcFurnaceRecipes); - - // Plasma Arc Furnace - registerMapBetweenRange(661, 668, GT_Recipe.GT_Recipe_Map.sPlasmaArcFurnaceRecipes); - - // Brewery - registerMapBetweenRange(491, 498, GT_Recipe.GT_Recipe_Map.sBrewingRecipes); - - // Canner - registerMapBetweenRange(231, 238, GT_Recipe.GT_Recipe_Map.sCannerRecipes); - - // Cutter - registerMapBetweenRange(251, 258, GT_Recipe.GT_Recipe_Map.sCutterRecipes); - - // Fermenter - registerMapBetweenRange(501, 508, GT_Recipe.GT_Recipe_Map.sFermentingRecipes); - - // Fluid Extractor - registerMapBetweenRange(511, 518, GT_Recipe.GT_Recipe_Map.sFluidExtractionRecipes); - - // Fluid Solidifier - registerMapBetweenRange(521, 528, GT_Recipe.GT_Recipe_Map.sFluidSolidficationRecipes); - - // Lathe - registerMapBetweenRange(291, 298, GT_Recipe.GT_Recipe_Map.sLatheRecipes); - - // Boxinator - registerMapBetweenRange(401, 408, GT_Recipe.GT_Recipe_Map.sBoxinatorRecipes); - - // Unboxinator - registerMapBetweenRange(411, 408, GT_Recipe.GT_Recipe_Map.sUnboxinatorRecipes); - - // Polarizer - registerMapBetweenRange(551, 558, GT_Recipe.GT_Recipe_Map.sPolarizerRecipes); - - // Printer - registerMapBetweenRange(321, 328, GT_Recipe.GT_Recipe_Map.sPrinterRecipes); - - // Fluid Canner - registerMapBetweenRange(431, 438, GT_Recipe.GT_Recipe_Map.sFluidCannerRecipes); - - // Fluid Heater - registerMapBetweenRange(621, 628, GT_Recipe.GT_Recipe_Map.sFluidHeaterRecipes); - - // Distillery - registerMapBetweenRange(531, 538, GT_Recipe.GT_Recipe_Map.sDistilleryRecipes); - - // Slicer - registerMapBetweenRange(631, 638, GT_Recipe.GT_Recipe_Map.sSlicerRecipes); - - // Matter Amplifier - registerMapBetweenRange(471, 478, GT_Recipe.GT_Recipe_Map.sAmplifiers); - - // Circuit Assembler - registerMapBetweenRange(1180, 1187, GT_Recipe.GT_Recipe_Map.sCircuitAssemblerRecipes); - - // Alloy Smelter - registerMapBetweenRange(201, 208, GT_Recipe.GT_Recipe_Map.sAlloySmelterRecipes); - - // Forming Press - registerMapBetweenRange(601, 608, GT_Recipe.GT_Recipe_Map.sPressRecipes); - - } - - private static final void registerMapBetweenRange(int aMin, int aMax, GT_Recipe_Map aMap) { - for (int i=aMin; i Date: Fri, 13 Dec 2019 18:07:38 +0000 Subject: [PATCH 3/4] Fixed minor oversight in range check. --- .../loaders/postload/GT_ProcessingArrayRecipeLoader.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/gregtech/loaders/postload/GT_ProcessingArrayRecipeLoader.java b/src/main/java/gregtech/loaders/postload/GT_ProcessingArrayRecipeLoader.java index c3624426..8ce9a82f 100644 --- a/src/main/java/gregtech/loaders/postload/GT_ProcessingArrayRecipeLoader.java +++ b/src/main/java/gregtech/loaders/postload/GT_ProcessingArrayRecipeLoader.java @@ -137,7 +137,7 @@ public class GT_ProcessingArrayRecipeLoader { } private static final void registerMapBetweenRange(int aMin, int aMax, GT_Recipe_Map aMap) { - for (int i=aMin; i Date: Mon, 6 Apr 2020 21:49:53 +0100 Subject: [PATCH 4/4] Avoid caching the same recipe map more than once. --- .../java/gregtech/api/util/GT_ProcessingArray_Manager.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/gregtech/api/util/GT_ProcessingArray_Manager.java b/src/main/java/gregtech/api/util/GT_ProcessingArray_Manager.java index 0d2c407e..d048f1f8 100644 --- a/src/main/java/gregtech/api/util/GT_ProcessingArray_Manager.java +++ b/src/main/java/gregtech/api/util/GT_ProcessingArray_Manager.java @@ -18,7 +18,9 @@ public class GT_ProcessingArray_Manager { } String aMapNameKey = aMap.mUnlocalizedName; mMetaKeyMap.put(aMeta, aMapNameKey); - mRecipeCache.put(aMapNameKey, aMap); + if (!mRecipeCache.containsKey(aMapNameKey)) { + mRecipeCache.put(aMapNameKey, aMap); + } return true; }