diff --git a/build.gradle b/build.gradle index e59189c8..8507c7df 100644 --- a/build.gradle +++ b/build.gradle @@ -1,4 +1,4 @@ -//version: 1697697256 +//version: 1701530445 /* DO NOT CHANGE THIS FILE! Also, you may replace this file at any time if there is an update available. @@ -28,27 +28,12 @@ import java.util.concurrent.TimeUnit buildscript { repositories { - mavenCentral() - - maven { - name 'forge' - url 'https://maven.minecraftforge.net' - } maven { // GTNH RetroFuturaGradle and ASM Fork name "GTNH Maven" url "http://jenkins.usrv.eu:8081/nexus/content/groups/public/" allowInsecureProtocol = true } - maven { - name 'sonatype' - url 'https://oss.sonatype.org/content/repositories/snapshots/' - } - maven { - name 'Scala CI dependencies' - url 'https://repo1.maven.org/maven2/' - } - mavenLocal() } } @@ -302,7 +287,7 @@ if (apiPackage) { } if (accessTransformersFile) { - for (atFile in accessTransformersFile.split(",")) { + for (atFile in accessTransformersFile.split(" ")) { String targetFile = "src/main/resources/META-INF/" + atFile.trim() if (!getFile(targetFile).exists()) { throw new GradleException("Could not resolve \"accessTransformersFile\"! Could not find " + targetFile) @@ -646,7 +631,7 @@ repositories { def mixinProviderGroup = "io.github.legacymoddingmc" def mixinProviderModule = "unimixins" -def mixinProviderVersion = "0.1.7.1" +def mixinProviderVersion = "0.1.13" def mixinProviderSpecNoClassifer = "${mixinProviderGroup}:${mixinProviderModule}:${mixinProviderVersion}" def mixinProviderSpec = "${mixinProviderSpecNoClassifer}:dev" ext.mixinProviderSpec = mixinProviderSpec @@ -793,12 +778,12 @@ ext.java17PatchDependenciesCfg = configurations.create("java17PatchDependencies" } dependencies { - def lwjgl3ifyVersion = '1.5.1' + def lwjgl3ifyVersion = '1.5.7' if (modId != 'lwjgl3ify') { java17Dependencies("com.github.GTNewHorizons:lwjgl3ify:${lwjgl3ifyVersion}") } if (modId != 'hodgepodge') { - java17Dependencies('com.github.GTNewHorizons:Hodgepodge:2.3.17') + java17Dependencies('com.github.GTNewHorizons:Hodgepodge:2.3.35') } java17PatchDependencies("com.github.GTNewHorizons:lwjgl3ify:${lwjgl3ifyVersion}:forgePatches") {transitive = false} @@ -1187,9 +1172,8 @@ publishing { version = System.getenv("RELEASE_VERSION") ?: identifiedVersion } } - repositories { - if (usesMavenPublishing.toBoolean()) { + if (usesMavenPublishing.toBoolean() && System.getenv("MAVEN_USER") != null) { maven { url = mavenPublishUrl allowInsecureProtocol = mavenPublishUrl.startsWith("http://") // Mostly for the GTNH maven @@ -1311,7 +1295,7 @@ def addCurseForgeRelation(String type, String name) { // Updating -def buildscriptGradleVersion = "8.2.1" +def buildscriptGradleVersion = "8.5" tasks.named('wrapper', Wrapper).configure { gradleVersion = buildscriptGradleVersion diff --git a/dependencies.gradle b/dependencies.gradle index 9914c18a..55799956 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -1,13 +1,12 @@ // Add your dependencies here dependencies { - api('com.github.GTNewHorizons:GT5-Unofficial:5.09.44.73:dev') - api('com.github.GTNewHorizons:bartworks:0.8.9:dev') + api('com.github.GTNewHorizons:GT5-Unofficial:5.09.44.96:dev') + api('com.github.GTNewHorizons:bartworks:0.8.19:dev') implementation('thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev') - implementation('com.github.GTNewHorizons:GTplusplus:1.10.24:dev') + implementation('com.github.GTNewHorizons:GTplusplus:1.10.37:dev') - compileOnly('com.github.GTNewHorizons:ThaumicEnergistics:1.4.13-GTNH:dev') {transitive = false} + compileOnly('com.github.GTNewHorizons:ThaumicEnergistics:1.5.3-GTNH:dev') {transitive = false} - runtimeOnly('com.github.GTNewHorizons:NewHorizonsCoreMod:2.2.32:dev') - runtimeOnly('com.github.GTNewHorizons:Baubles:1.0.1.16:dev') + runtimeOnly('com.github.GTNewHorizons:Baubles:1.0.3:dev') } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index c1962a79..033e24c4 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 17a8ddce..1af9e093 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.2.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index aeb74cbb..fcb6fca1 100755 --- a/gradlew +++ b/gradlew @@ -130,10 +130,13 @@ location of your Java installation." fi else JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. diff --git a/src/main/java/goodgenerator/api/recipe/ComponentAssemblyLineFrontend.java b/src/main/java/goodgenerator/api/recipe/ComponentAssemblyLineFrontend.java new file mode 100644 index 00000000..eae7fdc3 --- /dev/null +++ b/src/main/java/goodgenerator/api/recipe/ComponentAssemblyLineFrontend.java @@ -0,0 +1,44 @@ +package goodgenerator.api.recipe; + +import java.util.Collections; +import java.util.List; + +import javax.annotation.ParametersAreNonnullByDefault; + +import com.gtnewhorizons.modularui.api.math.Pos2d; +import com.gtnewhorizons.modularui.api.screen.ModularWindow; + +import gregtech.api.recipe.BasicUIPropertiesBuilder; +import gregtech.api.recipe.NEIRecipePropertiesBuilder; +import gregtech.api.recipe.RecipeMapFrontend; +import gregtech.api.util.MethodsReturnNonnullByDefault; +import gregtech.common.gui.modularui.UIHelper; + +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +public class ComponentAssemblyLineFrontend extends RecipeMapFrontend { + + public ComponentAssemblyLineFrontend(BasicUIPropertiesBuilder uiPropertiesBuilder, + NEIRecipePropertiesBuilder neiPropertiesBuilder) { + super(uiPropertiesBuilder, neiPropertiesBuilder); + } + + @Override + public List getItemInputPositions(int itemInputCount) { + return UIHelper.getGridPositions(itemInputCount, 16, 8, 3); + } + + @Override + public List getItemOutputPositions(int itemOutputCount) { + return Collections.singletonList(new Pos2d(142, 8)); + } + + @Override + public List getFluidInputPositions(int fluidInputCount) { + + return UIHelper.getGridPositions(fluidInputCount, 88, 26, 4); + } + + @Override + public void addGregTechLogo(ModularWindow.Builder builder, Pos2d windowOffset) {} +} diff --git a/src/main/java/goodgenerator/api/recipe/ExtremeHeatExchangerBackend.java b/src/main/java/goodgenerator/api/recipe/ExtremeHeatExchangerBackend.java new file mode 100644 index 00000000..cdd3a4d5 --- /dev/null +++ b/src/main/java/goodgenerator/api/recipe/ExtremeHeatExchangerBackend.java @@ -0,0 +1,25 @@ +package goodgenerator.api.recipe; + +import javax.annotation.ParametersAreNonnullByDefault; + +import gregtech.api.recipe.RecipeMapBackendPropertiesBuilder; +import gregtech.api.recipe.maps.FuelBackend; +import gregtech.api.util.GT_Recipe; +import gregtech.api.util.MethodsReturnNonnullByDefault; + +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +public class ExtremeHeatExchangerBackend extends FuelBackend { + + public ExtremeHeatExchangerBackend(RecipeMapBackendPropertiesBuilder propertiesBuilder) { + super(propertiesBuilder); + } + + @Override + public GT_Recipe compileRecipe(GT_Recipe recipe) { + if (!(recipe instanceof ExtremeHeatExchangerRecipe)) { + throw new RuntimeException("Recipe must be instance of ExtremeHeatExchangerRecipe"); + } + return super.compileRecipe(recipe); + } +} diff --git a/src/main/java/goodgenerator/api/recipe/ExtremeHeatExchangerFrontend.java b/src/main/java/goodgenerator/api/recipe/ExtremeHeatExchangerFrontend.java new file mode 100644 index 00000000..51078a3a --- /dev/null +++ b/src/main/java/goodgenerator/api/recipe/ExtremeHeatExchangerFrontend.java @@ -0,0 +1,58 @@ +package goodgenerator.api.recipe; + +import java.util.Arrays; +import java.util.List; + +import javax.annotation.ParametersAreNonnullByDefault; + +import net.minecraft.util.StatCollector; +import net.minecraftforge.fluids.FluidStack; + +import com.gtnewhorizons.modularui.api.math.Pos2d; + +import gregtech.api.recipe.BasicUIPropertiesBuilder; +import gregtech.api.recipe.NEIRecipePropertiesBuilder; +import gregtech.api.recipe.RecipeMapFrontend; +import gregtech.api.util.GT_Utility; +import gregtech.api.util.MethodsReturnNonnullByDefault; +import gregtech.nei.RecipeDisplayInfo; +import gregtech.nei.formatter.INEISpecialInfoFormatter; + +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +public class ExtremeHeatExchangerFrontend extends RecipeMapFrontend { + + public ExtremeHeatExchangerFrontend(BasicUIPropertiesBuilder uiPropertiesBuilder, + NEIRecipePropertiesBuilder neiPropertiesBuilder) { + super(uiPropertiesBuilder, neiPropertiesBuilder.neiSpecialInfoFormatter(new EHESpecialValueFormatter())); + } + + @Override + public List getFluidInputPositions(int fluidInputCount) { + return Arrays.asList(new Pos2d(26, 13), new Pos2d(26, 37)); + } + + @Override + public List getFluidOutputPositions(int fluidOutputCount) { + return Arrays.asList(new Pos2d(128, 13), new Pos2d(128, 31), new Pos2d(128, 54)); + } + + private static class EHESpecialValueFormatter implements INEISpecialInfoFormatter { + + @Override + public List format(RecipeDisplayInfo recipeInfo) { + FluidStack[] Inputs = recipeInfo.recipe.mFluidInputs; + FluidStack[] Outputs = recipeInfo.recipe.mFluidOutputs; + int threshold = recipeInfo.recipe.mSpecialValue; + return Arrays.asList( + StatCollector.translateToLocal("value.extreme_heat_exchanger.0") + " " + + GT_Utility.formatNumbers(Inputs[0].amount) + + " L/s", + StatCollector.translateToLocal("value.extreme_heat_exchanger.1"), + GT_Utility.formatNumbers(Outputs[0].amount / 160) + " L/s", + StatCollector.translateToLocal("value.extreme_heat_exchanger.2"), + GT_Utility.formatNumbers(Outputs[1].amount / 160) + " L/s", + StatCollector.translateToLocal("value.extreme_heat_exchanger.4") + " " + threshold + " L/s"); + } + } +} diff --git a/src/main/java/goodgenerator/api/recipe/ExtremeHeatExchangerRecipe.java b/src/main/java/goodgenerator/api/recipe/ExtremeHeatExchangerRecipe.java new file mode 100644 index 00000000..4a32e882 --- /dev/null +++ b/src/main/java/goodgenerator/api/recipe/ExtremeHeatExchangerRecipe.java @@ -0,0 +1,66 @@ +package goodgenerator.api.recipe; + +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidStack; + +import gregtech.api.util.GT_Recipe; + +public class ExtremeHeatExchangerRecipe extends GT_Recipe { + + public ExtremeHeatExchangerRecipe(FluidStack[] input, FluidStack[] output, int special) { + super(false, null, null, null, null, input, output, 0, 0, special); + } + + public int getMaxHotFluidConsume() { + if (this.mFluidInputs != null) { + return this.mFluidInputs[0].amount; + } + return 0; + } + + public Fluid getNormalSteam() { + if (this.mFluidOutputs != null) { + return this.mFluidOutputs[0].getFluid(); + } + return null; + } + + public Fluid getHeatedSteam() { + if (this.mFluidOutputs != null) { + return this.mFluidOutputs[1].getFluid(); + } + return null; + } + + public Fluid getCooledFluid() { + if (this.mFluidOutputs != null) { + return this.mFluidOutputs[2].getFluid(); + } + return null; + } + + public int getEUt() { + if (getNormalSteam() != null) { + switch (getNormalSteam().getName()) { + case "steam": { + int tVal = this.mFluidInputs[1].amount * 4; + if (tVal < 0) tVal = -tVal; + return tVal; + } + case "ic2superheatedsteam": { + int tVal = this.mFluidInputs[1].amount * 8; + if (tVal < 0) tVal = -tVal; + return tVal; + } + case "supercriticalsteam": { + int tVal = this.mFluidInputs[1].amount * 800; + if (tVal < 0) tVal = -tVal; + return tVal; + } + default: + return 0; + } + } + return 0; + } +} diff --git a/src/main/java/goodgenerator/api/recipe/GoodGeneratorRecipeMaps.java b/src/main/java/goodgenerator/api/recipe/GoodGeneratorRecipeMaps.java new file mode 100644 index 00000000..d65b8df6 --- /dev/null +++ b/src/main/java/goodgenerator/api/recipe/GoodGeneratorRecipeMaps.java @@ -0,0 +1,58 @@ +package goodgenerator.api.recipe; + +import java.util.Arrays; +import java.util.Collections; +import java.util.Comparator; + +import net.minecraft.util.StatCollector; + +import goodgenerator.client.GUI.GG_UITextures; +import gregtech.api.enums.GT_Values; +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.util.GT_Utility; +import gregtech.nei.formatter.SimpleSpecialValueFormatter; + +public class GoodGeneratorRecipeMaps { + + public static final RecipeMap naquadahReactorFuels = RecipeMapBuilder + .of("gg.recipe.naquadah_reactor").maxIO(0, 0, 1, 1).minInputs(0, 1) + .neiSpecialInfoFormatter(new SimpleSpecialValueFormatter("value.naquadah_reactor")) + .neiRecipeComparator(Comparator.comparing(recipe -> recipe.mSpecialValue)).dontUseProgressBar() + .addSpecialTexture(59, 20, 58, 42, GG_UITextures.PICTURE_NAQUADAH_REACTOR).build(); + public static final RecipeMap naquadahFuelRefineFactoryRecipes = RecipeMapBuilder + .of("gg.recipe.naquadah_fuel_refine_factory").maxIO(6, 0, 2, 1).minInputs(0, 1) + .neiSpecialInfoFormatter(new SimpleSpecialValueFormatter("value.naquadah_fuel_refine_factory")).build(); + public static final RecipeMap neutronActivatorRecipes = RecipeMapBuilder.of("gg.recipe.neutron_activator") + .maxIO(9, 9, 1, 1).dontUseProgressBar() + .addSpecialTexture(73, 22, 31, 21, GG_UITextures.PICTURE_NEUTRON_ACTIVATOR) + .neiSpecialInfoFormatter(recipeInfo -> { + int minNKE = recipeInfo.recipe.mSpecialValue % 10000; + int maxNKE = recipeInfo.recipe.mSpecialValue / 10000; + return Arrays.asList( + StatCollector.translateToLocal("value.neutron_activator.0"), + GT_Utility.formatNumbers(minNKE) + StatCollector.translateToLocal("value.neutron_activator.2"), + StatCollector.translateToLocal("value.neutron_activator.1"), + GT_Utility.formatNumbers(maxNKE) + StatCollector.translateToLocal("value.neutron_activator.2")); + }).build(); + public static final RecipeMap extremeHeatExchangerFuels = RecipeMapBuilder + .of("gg.recipe.extreme_heat_exchanger", ExtremeHeatExchangerBackend::new).maxIO(0, 0, 2, 3) + .dontUseProgressBar().addSpecialTexture(47, 13, 78, 59, GG_UITextures.PICTURE_EXTREME_HEAT_EXCHANGER) + .frontend(ExtremeHeatExchangerFrontend::new).build(); + public static final RecipeMap preciseAssemblerRecipes = RecipeMapBuilder + .of("gg.recipe.precise_assembler").maxIO(4, 1, 4, 0).progressBar(GT_UITextures.PROGRESSBAR_ARROW_MULTIPLE) + .progressBarPos(85, 30).neiTransferRect(80, 30, 35, 18) + .neiSpecialInfoFormatter(new SimpleSpecialValueFormatter("value.precise_assembler")) + .frontend(PreciseAssemblerFrontend::new).build(); + public static final RecipeMap componentAssemblyLineRecipes = RecipeMapBuilder + .of("gg.recipe.componentassemblyline").maxIO(12, 1, 12, 0).neiTransferRect(70, 15, 18, 54) + .neiSpecialInfoFormatter( + recipeInfo -> Collections.singletonList( + StatCollector.translateToLocalFormatted( + "value.component_assembly_line", + GT_Values.VN[recipeInfo.recipe.mSpecialValue]))) + .dontUseProgressBar().addSpecialTexture(70, 11, 72, 40, GG_UITextures.PICTURE_COMPONENT_ASSLINE) + .frontend(ComponentAssemblyLineFrontend::new).build(); +} diff --git a/src/main/java/goodgenerator/api/recipe/PreciseAssemblerFrontend.java b/src/main/java/goodgenerator/api/recipe/PreciseAssemblerFrontend.java new file mode 100644 index 00000000..83b13abc --- /dev/null +++ b/src/main/java/goodgenerator/api/recipe/PreciseAssemblerFrontend.java @@ -0,0 +1,39 @@ +package goodgenerator.api.recipe; + +import java.util.Collections; +import java.util.List; + +import javax.annotation.ParametersAreNonnullByDefault; + +import com.gtnewhorizons.modularui.api.math.Pos2d; + +import gregtech.api.recipe.BasicUIPropertiesBuilder; +import gregtech.api.recipe.NEIRecipePropertiesBuilder; +import gregtech.api.recipe.RecipeMapFrontend; +import gregtech.api.util.MethodsReturnNonnullByDefault; +import gregtech.common.gui.modularui.UIHelper; + +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +public class PreciseAssemblerFrontend extends RecipeMapFrontend { + + public PreciseAssemblerFrontend(BasicUIPropertiesBuilder uiPropertiesBuilder, + NEIRecipePropertiesBuilder neiPropertiesBuilder) { + super(uiPropertiesBuilder, neiPropertiesBuilder); + } + + @Override + public List getItemInputPositions(int itemInputCount) { + return UIHelper.getGridPositions(itemInputCount, 8, 13, itemInputCount); + } + + @Override + public List getItemOutputPositions(int itemOutputCount) { + return Collections.singletonList(new Pos2d(115, 30)); + } + + @Override + public List getFluidInputPositions(int fluidInputCount) { + return UIHelper.getGridPositions(fluidInputCount, 8, 48, fluidInputCount); + } +} diff --git a/src/main/java/goodgenerator/blocks/tileEntity/ComponentAssemblyLine.java b/src/main/java/goodgenerator/blocks/tileEntity/ComponentAssemblyLine.java index f50729f5..36a8da28 100644 --- a/src/main/java/goodgenerator/blocks/tileEntity/ComponentAssemblyLine.java +++ b/src/main/java/goodgenerator/blocks/tileEntity/ComponentAssemblyLine.java @@ -23,8 +23,8 @@ import com.gtnewhorizon.structurelib.structure.ISurvivalBuildEnvironment; import com.gtnewhorizon.structurelib.structure.StructureDefinition; +import goodgenerator.api.recipe.GoodGeneratorRecipeMaps; import goodgenerator.loader.Loaders; -import goodgenerator.util.MyRecipeAdder; import gregtech.api.GregTech_API; import gregtech.api.enums.GT_Values; import gregtech.api.enums.Materials; @@ -34,6 +34,7 @@ import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.logic.ProcessingLogic; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_ExtendedPowerMultiBlockBase; +import gregtech.api.recipe.RecipeMap; import gregtech.api.recipe.check.CheckRecipeResult; import gregtech.api.recipe.check.CheckRecipeResultRegistry; import gregtech.api.render.TextureFactory; @@ -324,8 +325,8 @@ public boolean explodesOnComponentBreak(ItemStack aStack) { } @Override - public GT_Recipe.GT_Recipe_Map getRecipeMap() { - return MyRecipeAdder.instance.COMPASSLINE_RECIPES; + public RecipeMap getRecipeMap() { + return GoodGeneratorRecipeMaps.componentAssemblyLineRecipes; } @Override diff --git a/src/main/java/goodgenerator/blocks/tileEntity/ExtremeHeatExchanger.java b/src/main/java/goodgenerator/blocks/tileEntity/ExtremeHeatExchanger.java index b88bc0ef..472579d6 100644 --- a/src/main/java/goodgenerator/blocks/tileEntity/ExtremeHeatExchanger.java +++ b/src/main/java/goodgenerator/blocks/tileEntity/ExtremeHeatExchanger.java @@ -17,6 +17,7 @@ import net.minecraftforge.common.util.Constants; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; import org.jetbrains.annotations.NotNull; @@ -27,10 +28,11 @@ import com.gtnewhorizon.structurelib.structure.ISurvivalBuildEnvironment; import com.gtnewhorizon.structurelib.structure.StructureDefinition; +import goodgenerator.api.recipe.ExtremeHeatExchangerRecipe; +import goodgenerator.api.recipe.GoodGeneratorRecipeMaps; import goodgenerator.blocks.tileEntity.base.GT_MetaTileEntity_TooltipMultiBlockBase_EM; import goodgenerator.loader.Loaders; import goodgenerator.util.DescTextLocalization; -import goodgenerator.util.MyRecipeAdder; import gregtech.api.GregTech_API; import gregtech.api.enums.GT_HatchElement; import gregtech.api.interfaces.IHatchElement; @@ -41,6 +43,7 @@ import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Input; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Output; import gregtech.api.multitileentity.multiblock.casing.Glasses; +import gregtech.api.recipe.RecipeMap; import gregtech.api.recipe.check.CheckRecipeResult; import gregtech.api.recipe.check.CheckRecipeResultRegistry; import gregtech.api.render.TextureFactory; @@ -61,7 +64,7 @@ public class ExtremeHeatExchanger extends GT_MetaTileEntity_TooltipMultiBlockBas protected GT_MetaTileEntity_Hatch_Output mCooledFluidHatch; private boolean transformed = false; private String hotName; - private MyRecipeAdder.ExtremeHeatExchangerRecipe tRunningRecipe; + private ExtremeHeatExchangerRecipe tRunningRecipe; public ExtremeHeatExchanger(String name) { super(name); @@ -145,8 +148,13 @@ public boolean addColdFluidOutputToMachineList(IGregTechTileEntity aTileEntity, public void loadNBTData(NBTTagCompound aNBT) { transformed = aNBT.getBoolean("transformed"); if (aNBT.hasKey("hotName", Constants.NBT.TAG_STRING)) { - hotName = aNBT.getString("hotName"); - tRunningRecipe = MyRecipeAdder.mXHeatExchangerFuelMap.get(new Fluid(hotName)); + String loadedHotName = aNBT.getString("hotName"); + Fluid hotFluid = FluidRegistry.getFluid(loadedHotName); + if (hotFluid != null) { + hotName = loadedHotName; + tRunningRecipe = (ExtremeHeatExchangerRecipe) GoodGeneratorRecipeMaps.extremeHeatExchangerFuels + .getBackend().findFuel(hotFluid); + } } else { hotName = null; tRunningRecipe = null; @@ -161,6 +169,11 @@ public void saveNBTData(NBTTagCompound aNBT) { super.saveNBTData(aNBT); } + @Override + public RecipeMap getRecipeMap() { + return GoodGeneratorRecipeMaps.extremeHeatExchangerFuels; + } + @Override protected void clearHatches_EM() { super.clearHatches_EM(); @@ -193,8 +206,8 @@ protected GT_Multiblock_Tooltip_Builder createTooltip() { public @NotNull CheckRecipeResult checkProcessing_EM() { tRunningRecipe = null; if (mHotFluidHatch.getFluid() == null) return CheckRecipeResultRegistry.SUCCESSFUL; - MyRecipeAdder.ExtremeHeatExchangerRecipe tRecipe = MyRecipeAdder.mXHeatExchangerFuelMap - .get(mHotFluidHatch.getFluid().getFluid()); + ExtremeHeatExchangerRecipe tRecipe = (ExtremeHeatExchangerRecipe) GoodGeneratorRecipeMaps.extremeHeatExchangerFuels + .getBackend().findFuel(mHotFluidHatch.getFluid()); if (tRecipe == null) return CheckRecipeResultRegistry.NO_RECIPE; tRunningRecipe = tRecipe; this.hotName = mHotFluidHatch.getFluid().getFluid().getName(); diff --git a/src/main/java/goodgenerator/blocks/tileEntity/FuelRefineFactory.java b/src/main/java/goodgenerator/blocks/tileEntity/FuelRefineFactory.java index 7917e789..59928f98 100644 --- a/src/main/java/goodgenerator/blocks/tileEntity/FuelRefineFactory.java +++ b/src/main/java/goodgenerator/blocks/tileEntity/FuelRefineFactory.java @@ -22,10 +22,10 @@ import com.gtnewhorizon.structurelib.structure.ISurvivalBuildEnvironment; import com.gtnewhorizon.structurelib.structure.StructureDefinition; +import goodgenerator.api.recipe.GoodGeneratorRecipeMaps; import goodgenerator.blocks.tileEntity.base.GT_MetaTileEntity_TooltipMultiBlockBase_EM; import goodgenerator.loader.Loaders; import goodgenerator.util.DescTextLocalization; -import goodgenerator.util.MyRecipeAdder; import gregtech.api.enums.GT_HatchElement; import gregtech.api.enums.Textures; import gregtech.api.interfaces.ITexture; @@ -38,6 +38,7 @@ import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_InputBus; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Output; import gregtech.api.objects.GT_RenderedTexture; +import gregtech.api.recipe.RecipeMap; import gregtech.api.recipe.check.CheckRecipeResult; import gregtech.api.recipe.check.CheckRecipeResultRegistry; import gregtech.api.render.TextureFactory; @@ -206,8 +207,8 @@ public int getTier() { } @Override - public GT_Recipe.GT_Recipe_Map getRecipeMap() { - return MyRecipeAdder.instance.FRF; + public RecipeMap getRecipeMap() { + return GoodGeneratorRecipeMaps.naquadahFuelRefineFactoryRecipes; } @Override diff --git a/src/main/java/goodgenerator/blocks/tileEntity/GTMetaTileEntity/DieselGenerator.java b/src/main/java/goodgenerator/blocks/tileEntity/GTMetaTileEntity/DieselGenerator.java index 0a4a92f9..117b35f5 100644 --- a/src/main/java/goodgenerator/blocks/tileEntity/GTMetaTileEntity/DieselGenerator.java +++ b/src/main/java/goodgenerator/blocks/tileEntity/GTMetaTileEntity/DieselGenerator.java @@ -13,10 +13,11 @@ import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.metatileentity.MetaTileEntity; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicGenerator; +import gregtech.api.recipe.RecipeMap; +import gregtech.api.recipe.RecipeMaps; import gregtech.api.render.TextureFactory; import gregtech.api.util.GT_Log; import gregtech.api.util.GT_ModHandler; -import gregtech.api.util.GT_Recipe; import gregtech.api.util.GT_Utility; public class DieselGenerator extends GT_MetaTileEntity_BasicGenerator { @@ -51,8 +52,8 @@ public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) { } @Override - public GT_Recipe.GT_Recipe_Map getRecipes() { - return GT_Recipe.GT_Recipe_Map.sDieselFuels; + public RecipeMap getRecipeMap() { + return RecipeMaps.dieselFuels; } @Override @@ -67,7 +68,7 @@ public int getEfficiency() { @Override public int getFuelValue(ItemStack aStack) { - if (GT_Utility.isStackInvalid(aStack) || getRecipes() == null) return 0; + if (GT_Utility.isStackInvalid(aStack) || getRecipeMap() == null) return 0; long rValue = Math.max(GT_ModHandler.getFuelCanValue(aStack) * 6 / 5, super.getFuelValue(aStack)); if (ItemList.Fuel_Can_Plastic_Filled.isStackEqual(aStack, false, true)) { rValue = Math.max(rValue, GameRegistry.getFuelValue(aStack) * 3L); diff --git a/src/main/java/goodgenerator/blocks/tileEntity/LargeFusionComputer1.java b/src/main/java/goodgenerator/blocks/tileEntity/LargeFusionComputer1.java index 22fb7fc6..1b18445f 100644 --- a/src/main/java/goodgenerator/blocks/tileEntity/LargeFusionComputer1.java +++ b/src/main/java/goodgenerator/blocks/tileEntity/LargeFusionComputer1.java @@ -21,7 +21,6 @@ import gregtech.api.render.TextureFactory; import gregtech.api.util.GT_Multiblock_Tooltip_Builder; import gregtech.api.util.GT_Utility; -import gregtech.common.power.FusionPower; public class LargeFusionComputer1 extends LargeFusionComputer { @@ -31,12 +30,10 @@ public class LargeFusionComputer1 extends LargeFusionComputer { public LargeFusionComputer1(int id, String name, String nameRegional) { super(id, name, nameRegional); - power = new FusionPower((byte) 6, 160_000_000); } public LargeFusionComputer1(String name) { super(name); - power = new FusionPower((byte) 6, 160_000_000); } @Override @@ -70,11 +67,21 @@ protected GT_Multiblock_Tooltip_Builder createTooltip() { return tt; } + @Override + public int tier() { + return 6; + } + @Override public long maxEUStore() { return 160008000L * (Math.min(32, this.mEnergyHatches.size() + this.eEnergyMulti.size())) / 32L; } + @Override + public long capableStartupCanonical() { + return 160_000_000; + } + @Override public Block getCasingBlock() { return GregTech_API.sBlockCasings1; diff --git a/src/main/java/goodgenerator/blocks/tileEntity/LargeFusionComputer2.java b/src/main/java/goodgenerator/blocks/tileEntity/LargeFusionComputer2.java index 770a14ff..381afb33 100644 --- a/src/main/java/goodgenerator/blocks/tileEntity/LargeFusionComputer2.java +++ b/src/main/java/goodgenerator/blocks/tileEntity/LargeFusionComputer2.java @@ -21,7 +21,6 @@ import gregtech.api.render.TextureFactory; import gregtech.api.util.GT_Multiblock_Tooltip_Builder; import gregtech.api.util.GT_Utility; -import gregtech.common.power.FusionPower; public class LargeFusionComputer2 extends LargeFusionComputer { @@ -31,12 +30,10 @@ public class LargeFusionComputer2 extends LargeFusionComputer { public LargeFusionComputer2(int id, String name, String nameRegional) { super(id, name, nameRegional); - power = new FusionPower((byte) 7, 320_000_000); } public LargeFusionComputer2(String name) { super(name); - power = new FusionPower((byte) 7, 320_000_000); } @Override @@ -71,11 +68,21 @@ protected GT_Multiblock_Tooltip_Builder createTooltip() { return tt; } + @Override + public int tier() { + return 7; + } + @Override public long maxEUStore() { return 320006000L * (Math.min(32, this.mEnergyHatches.size() + this.eEnergyMulti.size())) / 32L; } + @Override + public long capableStartupCanonical() { + return 320_000_000; + } + @Override public Block getCasingBlock() { return GregTech_API.sBlockCasings4; diff --git a/src/main/java/goodgenerator/blocks/tileEntity/LargeFusionComputer3.java b/src/main/java/goodgenerator/blocks/tileEntity/LargeFusionComputer3.java index 50688ee6..334456e5 100644 --- a/src/main/java/goodgenerator/blocks/tileEntity/LargeFusionComputer3.java +++ b/src/main/java/goodgenerator/blocks/tileEntity/LargeFusionComputer3.java @@ -21,7 +21,6 @@ import gregtech.api.render.TextureFactory; import gregtech.api.util.GT_Multiblock_Tooltip_Builder; import gregtech.api.util.GT_Utility; -import gregtech.common.power.FusionPower; public class LargeFusionComputer3 extends LargeFusionComputer { @@ -31,12 +30,10 @@ public class LargeFusionComputer3 extends LargeFusionComputer { public LargeFusionComputer3(int id, String name, String nameRegional) { super(id, name, nameRegional); - power = new FusionPower((byte) 8, 640_000_000); } public LargeFusionComputer3(String name) { super(name); - power = new FusionPower((byte) 8, 640_000_000); } @Override @@ -72,11 +69,21 @@ protected GT_Multiblock_Tooltip_Builder createTooltip() { return tt; } + @Override + public int tier() { + return 8; + } + @Override public long maxEUStore() { return 640060000L * (Math.min(32, this.mEnergyHatches.size() + this.eEnergyMulti.size())) / 32L; } + @Override + public long capableStartupCanonical() { + return 640_000_000; + } + @Override public Block getCasingBlock() { return GregTech_API.sBlockCasings4; diff --git a/src/main/java/goodgenerator/blocks/tileEntity/LargeFusionComputer4.java b/src/main/java/goodgenerator/blocks/tileEntity/LargeFusionComputer4.java index b25d5851..7930beb0 100644 --- a/src/main/java/goodgenerator/blocks/tileEntity/LargeFusionComputer4.java +++ b/src/main/java/goodgenerator/blocks/tileEntity/LargeFusionComputer4.java @@ -24,7 +24,6 @@ import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Input; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Output; import gregtech.api.render.TextureFactory; -import gregtech.api.util.AdvFusionPower; import gregtech.api.util.GT_Multiblock_Tooltip_Builder; import gregtech.api.util.GT_Utility; import gtPlusPlus.core.block.ModBlocks; @@ -34,13 +33,10 @@ public class LargeFusionComputer4 extends LargeFusionComputerPP { public LargeFusionComputer4(int id, String name, String nameRegional) { super(id, name, nameRegional); - // Theoretically the reactor has a higher startup value but special recipe value is limited to int - power = new AdvFusionPower((byte) 9, Integer.MAX_VALUE); } public LargeFusionComputer4(String name) { super(name); - power = new AdvFusionPower((byte) 9, Integer.MAX_VALUE); } @Override @@ -77,11 +73,21 @@ protected GT_Multiblock_Tooltip_Builder createTooltip() { return tt; } + @Override + public int tier() { + return 9; + } + @Override public long maxEUStore() { return 2560060000L * (Math.min(32, this.mEnergyHatches.size() + this.eEnergyMulti.size())) / 32L; } + @Override + public long capableStartupCanonical() { + return 2_560_060_000L; + } + @Override public Block getCasingBlock() { return ModBlocks.blockCasings3Misc; diff --git a/src/main/java/goodgenerator/blocks/tileEntity/LargeFusionComputer5.java b/src/main/java/goodgenerator/blocks/tileEntity/LargeFusionComputer5.java index 21ea21f5..8ab7a83b 100644 --- a/src/main/java/goodgenerator/blocks/tileEntity/LargeFusionComputer5.java +++ b/src/main/java/goodgenerator/blocks/tileEntity/LargeFusionComputer5.java @@ -24,7 +24,6 @@ import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Input; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Output; import gregtech.api.render.TextureFactory; -import gregtech.api.util.AdvFusionPower; import gregtech.api.util.GT_Multiblock_Tooltip_Builder; import gregtech.api.util.GT_Utility; import gtPlusPlus.core.block.ModBlocks; @@ -34,13 +33,10 @@ public class LargeFusionComputer5 extends LargeFusionComputerPP { public LargeFusionComputer5(int id, String name, String nameRegional) { super(id, name, nameRegional); - // Theoretically the reactor has a higher startup value but special recipe value is limited to int - power = new AdvFusionPower((byte) 10, Integer.MAX_VALUE); } public LargeFusionComputer5(String name) { super(name); - power = new AdvFusionPower((byte) 10, Integer.MAX_VALUE); } @Override @@ -77,11 +73,21 @@ protected GT_Multiblock_Tooltip_Builder createTooltip() { return tt; } + @Override + public int tier() { + return 10; + } + @Override public long maxEUStore() { return 10240800000L * (Math.min(32, this.mEnergyHatches.size() + this.eEnergyMulti.size())) / 32L; } + @Override + public long capableStartupCanonical() { + return 10_240_800_000L; + } + @Override public Block getCasingBlock() { return ModBlocks.blockCasings6Misc; diff --git a/src/main/java/goodgenerator/blocks/tileEntity/MultiNqGenerator.java b/src/main/java/goodgenerator/blocks/tileEntity/MultiNqGenerator.java index 2885ad1f..2e7e5e0d 100644 --- a/src/main/java/goodgenerator/blocks/tileEntity/MultiNqGenerator.java +++ b/src/main/java/goodgenerator/blocks/tileEntity/MultiNqGenerator.java @@ -26,12 +26,12 @@ import com.gtnewhorizon.structurelib.structure.ISurvivalBuildEnvironment; import com.gtnewhorizon.structurelib.structure.StructureDefinition; +import goodgenerator.api.recipe.GoodGeneratorRecipeMaps; import goodgenerator.blocks.tileEntity.base.GT_MetaTileEntity_TooltipMultiBlockBase_EM; import goodgenerator.items.MyMaterial; import goodgenerator.loader.Loaders; import goodgenerator.util.CrackRecipeAdder; import goodgenerator.util.DescTextLocalization; -import goodgenerator.util.MyRecipeAdder; import gregtech.api.GregTech_API; import gregtech.api.enums.GT_HatchElement; import gregtech.api.enums.Materials; @@ -46,6 +46,7 @@ import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Maintenance; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Output; import gregtech.api.objects.GT_RenderedTexture; +import gregtech.api.recipe.RecipeMap; import gregtech.api.recipe.check.CheckRecipeResult; import gregtech.api.recipe.check.CheckRecipeResultRegistry; import gregtech.api.render.TextureFactory; @@ -190,6 +191,11 @@ public void saveNBTData(NBTTagCompound aNBT) { super.saveNBTData(aNBT); } + @Override + public RecipeMap getRecipeMap() { + return GoodGeneratorRecipeMaps.naquadahReactorFuels; + } + @Override public @NotNull CheckRecipeResult checkProcessing_EM() { @@ -207,7 +213,7 @@ public void saveNBTData(NBTTagCompound aNBT) { } } - GT_Recipe tRecipe = MyRecipeAdder.instance.NqGFuels + GT_Recipe tRecipe = GoodGeneratorRecipeMaps.naquadahReactorFuels .findRecipe(this.getBaseMetaTileEntity(), true, 1 << 30, tFluids.toArray(new FluidStack[0])); if (tRecipe != null) { Pair excitedInfo = getExcited(tFluids.toArray(new FluidStack[0]), false); diff --git a/src/main/java/goodgenerator/blocks/tileEntity/NeutronActivator.java b/src/main/java/goodgenerator/blocks/tileEntity/NeutronActivator.java index e1317c11..21b1ec38 100644 --- a/src/main/java/goodgenerator/blocks/tileEntity/NeutronActivator.java +++ b/src/main/java/goodgenerator/blocks/tileEntity/NeutronActivator.java @@ -29,6 +29,7 @@ import com.gtnewhorizons.modularui.common.widget.SlotWidget; import com.gtnewhorizons.modularui.common.widget.TextWidget; +import goodgenerator.api.recipe.GoodGeneratorRecipeMaps; import goodgenerator.blocks.tileEntity.GTMetaTileEntity.NeutronAccelerator; import goodgenerator.blocks.tileEntity.GTMetaTileEntity.NeutronSensor; import goodgenerator.blocks.tileEntity.base.GT_MetaTileEntity_TooltipMultiBlockBase_EM; @@ -36,7 +37,6 @@ import goodgenerator.util.CharExchanger; import goodgenerator.util.DescTextLocalization; import goodgenerator.util.ItemRefer; -import goodgenerator.util.MyRecipeAdder; import gregtech.api.GregTech_API; import gregtech.api.enums.GT_HatchElement; import gregtech.api.enums.Materials; @@ -50,6 +50,7 @@ import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch; import gregtech.api.multitileentity.multiblock.casing.Glasses; import gregtech.api.objects.XSTR; +import gregtech.api.recipe.RecipeMap; import gregtech.api.recipe.check.CheckRecipeResult; import gregtech.api.render.TextureFactory; import gregtech.api.util.GT_Multiblock_Tooltip_Builder; @@ -170,8 +171,8 @@ public void saveNBTData(NBTTagCompound aNBT) { } @Override - public GT_Recipe.GT_Recipe_Map getRecipeMap() { - return MyRecipeAdder.instance.NA; + public RecipeMap getRecipeMap() { + return GoodGeneratorRecipeMaps.neutronActivatorRecipes; } protected GT_Multiblock_Tooltip_Builder createTooltip() { diff --git a/src/main/java/goodgenerator/blocks/tileEntity/PreciseAssembler.java b/src/main/java/goodgenerator/blocks/tileEntity/PreciseAssembler.java index 3242ff87..5793b622 100644 --- a/src/main/java/goodgenerator/blocks/tileEntity/PreciseAssembler.java +++ b/src/main/java/goodgenerator/blocks/tileEntity/PreciseAssembler.java @@ -8,11 +8,13 @@ import static gregtech.api.util.GT_StructureUtility.ofFrame; import static gregtech.api.util.GT_Utility.filterValidMTEs; +import java.util.Arrays; +import java.util.Collection; import java.util.Collections; import java.util.stream.Collectors; import java.util.stream.IntStream; -import javax.annotation.Nullable; +import javax.annotation.Nonnull; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -20,8 +22,6 @@ import net.minecraft.util.StatCollector; import net.minecraftforge.common.util.ForgeDirection; -import org.jetbrains.annotations.NotNull; - import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_EnergyMulti; import com.gtnewhorizon.structurelib.alignment.constructable.IConstructable; import com.gtnewhorizon.structurelib.alignment.constructable.ISurvivalConstructable; @@ -33,10 +33,10 @@ import com.gtnewhorizons.modularui.api.screen.UIBuildContext; import com.gtnewhorizons.modularui.common.widget.CycleButtonWidget; +import goodgenerator.api.recipe.GoodGeneratorRecipeMaps; import goodgenerator.client.GUI.GG_UITextures; import goodgenerator.loader.Loaders; import goodgenerator.util.DescTextLocalization; -import goodgenerator.util.MyRecipeAdder; import gregtech.api.GregTech_API; import gregtech.api.enums.GT_Values; import gregtech.api.enums.Materials; @@ -58,15 +58,15 @@ import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Muffler; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Output; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_OutputBus; +import gregtech.api.recipe.RecipeMap; +import gregtech.api.recipe.RecipeMaps; import gregtech.api.recipe.check.CheckRecipeResult; import gregtech.api.recipe.check.CheckRecipeResultRegistry; -import gregtech.api.recipe.check.FindRecipeResult; import gregtech.api.render.TextureFactory; import gregtech.api.util.GT_HatchElementBuilder; import gregtech.api.util.GT_Multiblock_Tooltip_Builder; import gregtech.api.util.GT_OverclockCalculator; import gregtech.api.util.GT_Recipe; -import gregtech.api.util.GT_Recipe.GT_Recipe_Map; import gregtech.api.util.GT_Utility; import gregtech.common.tileentities.machines.IDualInputHatch; @@ -221,34 +221,23 @@ public final void onScrewdriverRightClick(ForgeDirection side, EntityPlayer aPla protected ProcessingLogic createProcessingLogic() { return new ProcessingLogic() { - @NotNull + @Nonnull @Override - protected CheckRecipeResult validateRecipe(@NotNull GT_Recipe recipe) { + protected CheckRecipeResult validateRecipe(@Nonnull GT_Recipe recipe) { if (mode == 0) { if (recipe.mSpecialValue > (casingTier + 1)) { return CheckRecipeResultRegistry.insufficientMachineTier(recipe.mSpecialValue); } } + if (availableVoltage < recipe.mEUt) { + return CheckRecipeResultRegistry.insufficientPower(recipe.mEUt); + } return CheckRecipeResultRegistry.SUCCESSFUL; } - @NotNull - @Override - protected FindRecipeResult findRecipe(@Nullable GT_Recipe_Map map) { - if (map == null) return FindRecipeResult.NOT_FOUND; - return map.findRecipeWithResult( - lastRecipe, - false, - false, - availableVoltage, - inputFluids, - specialSlotItem, - inputItems); - } - - @NotNull + @Nonnull @Override - protected GT_OverclockCalculator createOverclockCalculator(@NotNull GT_Recipe recipe) { + protected GT_OverclockCalculator createOverclockCalculator(@Nonnull GT_Recipe recipe) { return super.createOverclockCalculator(recipe).setSpeedBoost(mode == 0 ? 1 : 0.5F); } }.setMaxParallelSupplier(() -> mode == 0 ? 1 : (int) Math.pow(2, 4 + (casingTier + 1))); @@ -256,7 +245,7 @@ protected GT_OverclockCalculator createOverclockCalculator(@NotNull GT_Recipe re @Override protected void setProcessingLogicPower(ProcessingLogic logic) { - boolean useSingleAmp = mEnergyHatches.size() == 1 && mExoticEnergyHatches.size() == 0; + boolean useSingleAmp = mEnergyHatches.size() == 1 && mExoticEnergyHatches.isEmpty(); logic.setAvailableVoltage(getMachineVoltageLimit()); logic.setAvailableAmperage(useSingleAmp ? 1 : getMaxInputAmps()); logic.setAmperageOC(true); @@ -274,9 +263,15 @@ public long getMachineVoltageLimit() { } @Override - public GT_Recipe.GT_Recipe_Map getRecipeMap() { - if (this.mode == 0) return MyRecipeAdder.instance.PA; - else return GT_Recipe.GT_Recipe_Map.sAssemblerRecipes; + public RecipeMap getRecipeMap() { + if (this.mode == 0) return GoodGeneratorRecipeMaps.preciseAssemblerRecipes; + else return RecipeMaps.assemblerRecipes; + } + + @Nonnull + @Override + public Collection> getAvailableRecipeMaps() { + return Arrays.asList(GoodGeneratorRecipeMaps.preciseAssemblerRecipes, RecipeMaps.assemblerRecipes); } @Override diff --git a/src/main/java/goodgenerator/blocks/tileEntity/UniversalChemicalFuelEngine.java b/src/main/java/goodgenerator/blocks/tileEntity/UniversalChemicalFuelEngine.java index c89342aa..112185ef 100644 --- a/src/main/java/goodgenerator/blocks/tileEntity/UniversalChemicalFuelEngine.java +++ b/src/main/java/goodgenerator/blocks/tileEntity/UniversalChemicalFuelEngine.java @@ -7,7 +7,6 @@ import static gregtech.api.util.GT_Utility.filterValidMTEs; import java.util.ArrayList; -import java.util.Collection; import java.util.List; import net.minecraft.item.ItemStack; @@ -39,13 +38,14 @@ import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Input; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Maintenance; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Muffler; +import gregtech.api.recipe.RecipeMaps; import gregtech.api.recipe.check.CheckRecipeResult; import gregtech.api.recipe.check.CheckRecipeResultRegistry; import gregtech.api.render.TextureFactory; -import gregtech.api.util.GTPP_Recipe; import gregtech.api.util.GT_Multiblock_Tooltip_Builder; import gregtech.api.util.GT_Recipe; import gregtech.api.util.GT_Utility; +import gtPlusPlus.api.recipe.GTPPRecipeMaps; public class UniversalChemicalFuelEngine extends GT_MetaTileEntity_TooltipMultiBlockBase_EM implements IConstructable, ISurvivalConstructable { @@ -205,12 +205,9 @@ protected GT_Multiblock_Tooltip_Builder createTooltip() { ArrayList tFluids = getStoredFluids(); - Collection tDieselFuels = GT_Recipe.GT_Recipe_Map.sDieselFuels.mRecipeList; - Collection tGasFuels = GT_Recipe.GT_Recipe_Map.sTurbineFuels.mRecipeList; - int PromoterAmount = findLiquidAmount(getPromoter(), tFluids); - for (GT_Recipe recipe : tDieselFuels) { + for (GT_Recipe recipe : RecipeMaps.dieselFuels.getAllRecipes()) { FluidStack tFuel = findFuel(recipe); if (tFuel == null) continue; int FuelAmount = findLiquidAmount(tFuel, tFluids); @@ -226,7 +223,7 @@ protected GT_Multiblock_Tooltip_Builder createTooltip() { return CheckRecipeResultRegistry.GENERATING; } - for (GT_Recipe recipe : tGasFuels) { + for (GT_Recipe recipe : RecipeMaps.gasTurbineFuels.getAllRecipes()) { FluidStack tFuel = findFuel(recipe); if (tFuel == null) continue; int FuelAmount = findLiquidAmount(tFuel, tFluids); @@ -243,8 +240,7 @@ protected GT_Multiblock_Tooltip_Builder createTooltip() { } if (LoadedList.GTPP) { - Collection tRocketFuels = GTPP_Recipe.GTPP_Recipe_Map.sRocketFuels.mRecipeList; - for (GT_Recipe recipe : tRocketFuels) { + for (GT_Recipe recipe : GTPPRecipeMaps.rocketFuels.getAllRecipes()) { FluidStack tFuel = findFuel(recipe); if (tFuel == null) continue; int FuelAmount = findLiquidAmount(tFuel, tFluids); diff --git a/src/main/java/goodgenerator/blocks/tileEntity/base/LargeFusionComputer.java b/src/main/java/goodgenerator/blocks/tileEntity/base/LargeFusionComputer.java index ec6c40a2..ef850237 100644 --- a/src/main/java/goodgenerator/blocks/tileEntity/base/LargeFusionComputer.java +++ b/src/main/java/goodgenerator/blocks/tileEntity/base/LargeFusionComputer.java @@ -5,6 +5,8 @@ import static gregtech.api.util.GT_StructureUtility.ofFrame; import static gregtech.api.util.GT_Utility.filterValidMTEs; +import javax.annotation.Nullable; + import net.minecraft.block.Block; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -37,6 +39,7 @@ import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import gregtech.api.interfaces.tileentity.IOverclockDescriptionProvider; import gregtech.api.logic.ProcessingLogic; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Energy; @@ -44,6 +47,10 @@ import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Output; import gregtech.api.objects.GT_ChunkManager; import gregtech.api.objects.GT_ItemStack; +import gregtech.api.objects.overclockdescriber.FusionOverclockDescriber; +import gregtech.api.objects.overclockdescriber.OverclockDescriber; +import gregtech.api.recipe.RecipeMap; +import gregtech.api.recipe.RecipeMaps; import gregtech.api.recipe.check.CheckRecipeResult; import gregtech.api.recipe.check.CheckRecipeResultRegistry; import gregtech.api.render.TextureFactory; @@ -52,16 +59,15 @@ import gregtech.api.util.GT_ParallelHelper; import gregtech.api.util.GT_Recipe; import gregtech.api.util.GT_Utility; -import gregtech.common.power.FusionPower; public abstract class LargeFusionComputer extends GT_MetaTileEntity_TooltipMultiBlockBase_EM - implements IConstructable, ISurvivalConstructable { + implements IConstructable, ISurvivalConstructable, IOverclockDescriptionProvider { public static final String MAIN_NAME = "largeFusion"; private boolean isLoadedChunk; public GT_Recipe mLastRecipe; public int para; - protected FusionPower power; + protected OverclockDescriber overclockDescriber; private static final ClassValue> STRUCTURE_DEFINITION = new ClassValue>() { @Override @@ -101,21 +107,36 @@ protected IStructureDefinition computeValue(Class type) public LargeFusionComputer(String name) { super(name); useLongPower = true; + this.overclockDescriber = createOverclockDescriber(); } public LargeFusionComputer(int id, String name, String nameRegional) { super(id, name, nameRegional); useLongPower = true; + this.overclockDescriber = createOverclockDescriber(); + } + + protected OverclockDescriber createOverclockDescriber() { + return new FusionOverclockDescriber((byte) tier(), capableStartupCanonical()); } + @Nullable @Override - public FusionPower getPower() { - return power; + public OverclockDescriber getOverclockDescriber() { + return overclockDescriber; } + public abstract int tier(); + @Override public abstract long maxEUStore(); + /** + * Unlike {@link #maxEUStore()}, this provides theoretical limit of startup EU, without considering the amount of + * hatches nor the room for extra energy. Intended for simulation. + */ + public abstract long capableStartupCanonical(); + public abstract Block getCasingBlock(); public abstract int getCasingMeta(); @@ -406,8 +427,14 @@ public int overclock(int mStartEnergy) { : ((mStartEnergy <= 640000000) ? 2 : (mStartEnergy <= 1280000000) ? 1 : 0)); } - public GT_Recipe.GT_Recipe_Map getRecipeMap() { - return GT_Recipe.GT_Recipe_Map.sFusionRecipes; + @Override + public RecipeMap getRecipeMap() { + return RecipeMaps.fusionRecipes; + } + + @Override + public int getRecipeCatalystPriority() { + return -2; } @Override diff --git a/src/main/java/goodgenerator/crossmod/nei/IMCForNEI.java b/src/main/java/goodgenerator/crossmod/nei/IMCForNEI.java deleted file mode 100644 index 863e18fe..00000000 --- a/src/main/java/goodgenerator/crossmod/nei/IMCForNEI.java +++ /dev/null @@ -1,62 +0,0 @@ -package goodgenerator.crossmod.nei; - -import net.minecraft.nbt.NBTTagCompound; - -import cpw.mods.fml.common.event.FMLInterModComms; -import goodgenerator.crossmod.LoadedList; - -public class IMCForNEI { - - public static void IMCSender() { - sendHandler("gg.recipe.neutron_activator", "gregtech:gt.blockmachines:32013"); - sendCatalyst("gg.recipe.neutron_activator", "gregtech:gt.blockmachines:32013"); - - sendHandler("gg.recipe.extreme_heat_exchanger", "gregtech:gt.blockmachines:32017"); - sendCatalyst("gg.recipe.extreme_heat_exchanger", "gregtech:gt.blockmachines:32017"); - - sendHandler("gg.recipe.precise_assembler", "gregtech:gt.blockmachines:32018"); - sendCatalyst("gg.recipe.precise_assembler", "gregtech:gt.blockmachines:32018"); - sendCatalyst("gt.recipe.assembler", "gregtech:gt.blockmachines:32018"); - - sendCatalyst("gt.recipe.fusionreactor", "gregtech:gt.blockmachines:32019", -10); - sendCatalyst("gt.recipe.fusionreactor", "gregtech:gt.blockmachines:32020", -10); - sendCatalyst("gt.recipe.fusionreactor", "gregtech:gt.blockmachines:32021", -10); - if (LoadedList.GTPP) { - sendCatalyst("gt.recipe.fusionreactor", "gregtech:gt.blockmachines:32022", -10); - sendCatalyst("gt.recipe.fusionreactor", "gregtech:gt.blockmachines:32023", -10); - } - - sendHandler("gg.recipe.componentassemblyline", "gregtech:gt.blockmachines:32026", 2); - sendCatalyst("gg.recipe.componentassemblyline", "gregtech:gt.blockmachines:32026"); - } - - private static void sendHandler(String aName, String aBlock) { - sendHandler(aName, aBlock, 1); - } - - private static void sendHandler(String aName, String aBlock, int maxRecipesPerPage) { - NBTTagCompound aNBT = new NBTTagCompound(); - aNBT.setString("handler", aName); - aNBT.setString("modName", "Good Generator"); - aNBT.setString("modId", "GoodGenerator"); - aNBT.setBoolean("modRequired", true); - aNBT.setString("itemName", aBlock); - aNBT.setInteger("handlerHeight", 135); - aNBT.setInteger("handlerWidth", 166); - aNBT.setInteger("maxRecipesPerPage", maxRecipesPerPage); - aNBT.setInteger("yShift", 6); - FMLInterModComms.sendMessage("NotEnoughItems", "registerHandlerInfo", aNBT); - } - - private static void sendCatalyst(String aName, String aStack, int aPriority) { - NBTTagCompound aNBT = new NBTTagCompound(); - aNBT.setString("handlerID", aName); - aNBT.setString("itemName", aStack); - aNBT.setInteger("priority", aPriority); - FMLInterModComms.sendMessage("NotEnoughItems", "registerCatalystInfo", aNBT); - } - - private static void sendCatalyst(String aName, String aStack) { - sendCatalyst(aName, aStack, 0); - } -} diff --git a/src/main/java/goodgenerator/loader/ComponentAssemblyLineRecipeLoader.java b/src/main/java/goodgenerator/loader/ComponentAssemblyLineRecipeLoader.java index a13fc94a..18fda2f1 100644 --- a/src/main/java/goodgenerator/loader/ComponentAssemblyLineRecipeLoader.java +++ b/src/main/java/goodgenerator/loader/ComponentAssemblyLineRecipeLoader.java @@ -27,6 +27,7 @@ import gregtech.api.enums.MaterialsUEVplus; import gregtech.api.enums.OrePrefixes; import gregtech.api.objects.ItemData; +import gregtech.api.recipe.RecipeMaps; import gregtech.api.util.GT_OreDictUnificator; import gregtech.api.util.GT_Recipe; import gregtech.api.util.GT_Utility; @@ -371,7 +372,7 @@ private static void findAllRecipes() { if (currentComponent.hasBeenSet()) { if (t < 6) { ArrayList foundRecipes = new ArrayList<>(); - for (GT_Recipe recipe : GT_Recipe.GT_Recipe_Map.sAssemblerRecipes.mRecipeList) { + for (GT_Recipe recipe : RecipeMaps.assemblerRecipes.getAllRecipes()) { if (GT_Utility.areStacksEqual(currentComponent.get(1), recipe.mOutputs[0])) { foundRecipes.add(recipe); } diff --git a/src/main/java/goodgenerator/loader/Loaders.java b/src/main/java/goodgenerator/loader/Loaders.java index b9f2e26a..1d2afe9d 100644 --- a/src/main/java/goodgenerator/loader/Loaders.java +++ b/src/main/java/goodgenerator/loader/Loaders.java @@ -43,7 +43,6 @@ import goodgenerator.client.render.BlockRenderHandler; import goodgenerator.crossmod.LoadedList; import goodgenerator.crossmod.ic2.CropsLoader; -import goodgenerator.crossmod.nei.IMCForNEI; import goodgenerator.crossmod.nei.NEI_Config; import goodgenerator.crossmod.thaumcraft.LargeEssentiaEnergyData; import goodgenerator.items.MyItemBlocks; @@ -468,7 +467,6 @@ public static void initLoad() { } GTMetaTileRegister(); initLoadRecipes(); - IMCForNEI.IMCSender(); CropsLoader.registerCrops(); } diff --git a/src/main/java/goodgenerator/loader/NaquadahReworkRecipeLoader.java b/src/main/java/goodgenerator/loader/NaquadahReworkRecipeLoader.java index 285fd801..a733b87f 100644 --- a/src/main/java/goodgenerator/loader/NaquadahReworkRecipeLoader.java +++ b/src/main/java/goodgenerator/loader/NaquadahReworkRecipeLoader.java @@ -67,13 +67,14 @@ import gregtech.api.enums.ItemList; import gregtech.api.enums.Materials; import gregtech.api.enums.OrePrefixes; -import gregtech.api.util.GTPP_Recipe; +import gregtech.api.recipe.RecipeMaps; import gregtech.api.util.GT_Log; import gregtech.api.util.GT_OreDictUnificator; import gregtech.api.util.GT_Recipe; import gregtech.api.util.GT_Utility; import gregtech.common.items.CombType; import gregtech.loaders.misc.GT_Bees; +import gtPlusPlus.api.recipe.GTPPRecipeMaps; import gtPlusPlus.core.item.chemistry.GenericChem; import gtPlusPlus.core.lib.CORE; @@ -567,7 +568,7 @@ public static void SmallRecipeChange() { GT_Recipe tRecipe; - tRecipe = GT_Recipe.GT_Recipe_Map.sChemicalRecipes.findRecipe( + tRecipe = RecipeMaps.chemicalReactorRecipes.findRecipe( null, false, 1 << 30, @@ -575,15 +576,15 @@ public static void SmallRecipeChange() { GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Platinum, 16), ItemList.Empty_Board_Elite.get(2)); if (tRecipe != null) { - GT_Recipe.GT_Recipe_Map.sChemicalRecipes.mRecipeList.remove(tRecipe); + RecipeMaps.chemicalReactorRecipes.getBackend().removeRecipe(tRecipe); GT_Recipe tRecipe2 = tRecipe.copy(); tRecipe2.mInputs = new ItemStack[] { GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Naquadah, 8), ItemList.Empty_Board_Elite.get(2) }; - GT_Recipe.GT_Recipe_Map.sChemicalRecipes.mRecipeList.add(tRecipe2); - GT_Recipe.GT_Recipe_Map.sChemicalRecipes.reInit(); + RecipeMaps.chemicalReactorRecipes.add(tRecipe2); + RecipeMaps.chemicalReactorRecipes.getBackend().reInit(); } - tRecipe = GT_Recipe.GT_Recipe_Map.sMultiblockChemicalRecipes.findRecipe( + tRecipe = RecipeMaps.multiblockChemicalReactorRecipes.findRecipe( null, false, 1 << 30, @@ -591,15 +592,15 @@ public static void SmallRecipeChange() { GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Platinum, 16), ItemList.Empty_Board_Elite.get(2)); if (tRecipe != null) { - GT_Recipe.GT_Recipe_Map.sMultiblockChemicalRecipes.mRecipeList.remove(tRecipe); + RecipeMaps.multiblockChemicalReactorRecipes.getBackend().removeRecipe(tRecipe); GT_Recipe tRecipe2 = tRecipe.copy(); tRecipe2.mInputs = new ItemStack[] { GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Naquadah, 8), ItemList.Empty_Board_Elite.get(2) }; - GT_Recipe.GT_Recipe_Map.sMultiblockChemicalRecipes.mRecipeList.add(tRecipe2); - GT_Recipe.GT_Recipe_Map.sMultiblockChemicalRecipes.reInit(); + RecipeMaps.multiblockChemicalReactorRecipes.add(tRecipe2); + RecipeMaps.multiblockChemicalReactorRecipes.getBackend().reInit(); } - tRecipe = GT_Recipe.GT_Recipe_Map.sAssemblerRecipes.findRecipe( + tRecipe = RecipeMaps.assemblerRecipes.findRecipe( null, false, 1 << 30, @@ -608,13 +609,13 @@ public static void SmallRecipeChange() { GT_OreDictUnificator.get(OrePrefixes.foil, Materials.HSSS, 1), GT_Utility.getIntegratedCircuit(1)); if (tRecipe != null) { - GT_Recipe.GT_Recipe_Map.sAssemblerRecipes.mRecipeList.remove(tRecipe); + RecipeMaps.assemblerRecipes.getBackend().removeRecipe(tRecipe); GT_Recipe tRecipe2 = tRecipe.copy(); tRecipe2.mInputs = new ItemStack[] { GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Polybenzimidazole, 2), GT_OreDictUnificator.get(OrePrefixes.foil, Materials.NaquadahEnriched, 1) }; - GT_Recipe.GT_Recipe_Map.sAssemblerRecipes.mRecipeList.add(tRecipe2); - GT_Recipe.GT_Recipe_Map.sAssemblerRecipes.reInit(); + RecipeMaps.assemblerRecipes.add(tRecipe2); + RecipeMaps.assemblerRecipes.getBackend().reInit(); } } @@ -628,7 +629,7 @@ public static void Remover() { HashSet reAdd = new HashSet<>(5000); // For Crusher - for (GT_Recipe recipe : GT_Recipe.GT_Recipe_Map.sMaceratorRecipes.mRecipeList) { + for (GT_Recipe recipe : RecipeMaps.maceratorRecipes.getAllRecipes()) { ItemStack input = recipe.mInputs[0]; if (GT_Utility.isStackValid(input)) { int[] oreDict = OreDictionary.getOreIDs(input); @@ -666,9 +667,9 @@ public static void Remover() { } } } - GT_Recipe.GT_Recipe_Map.sMaceratorRecipes.mRecipeList.removeAll(remove); - GT_Recipe.GT_Recipe_Map.sMaceratorRecipes.mRecipeList.addAll(reAdd); - GT_Recipe.GT_Recipe_Map.sMaceratorRecipes.reInit(); + RecipeMaps.maceratorRecipes.getBackend().removeRecipes(remove); + reAdd.forEach(RecipeMaps.maceratorRecipes::add); + RecipeMaps.maceratorRecipes.getBackend().reInit(); GT_Log.out.print(GoodGenerator.MOD_ID + ": Replace " + remove.size() + "! "); @@ -678,7 +679,7 @@ public static void Remover() { GT_Log.out.print("Crusher done!\n"); // For Washer - for (GT_Recipe recipe : GT_Recipe.GT_Recipe_Map.sOreWasherRecipes.mRecipeList) { + for (GT_Recipe recipe : RecipeMaps.oreWasherRecipes.getAllRecipes()) { ItemStack input = recipe.mInputs[0]; if (GT_Utility.isStackValid(input)) { int[] oreDict = OreDictionary.getOreIDs(input); @@ -715,9 +716,9 @@ public static void Remover() { } } } - GT_Recipe.GT_Recipe_Map.sOreWasherRecipes.mRecipeList.removeAll(remove); - GT_Recipe.GT_Recipe_Map.sOreWasherRecipes.mRecipeList.addAll(reAdd); - GT_Recipe.GT_Recipe_Map.sOreWasherRecipes.reInit(); + RecipeMaps.oreWasherRecipes.getBackend().removeRecipes(remove); + reAdd.forEach(RecipeMaps.oreWasherRecipes::add); + RecipeMaps.oreWasherRecipes.getBackend().reInit(); GT_Log.out.print(GoodGenerator.MOD_ID + ": Replace " + remove.size() + "! "); @@ -727,7 +728,7 @@ public static void Remover() { GT_Log.out.print("Washer done!\n"); // For Thermal Centrifuge - for (GT_Recipe recipe : GT_Recipe.GT_Recipe_Map.sThermalCentrifugeRecipes.mRecipeList) { + for (GT_Recipe recipe : RecipeMaps.thermalCentrifugeRecipes.getAllRecipes()) { ItemStack input = recipe.mInputs[0]; if (GT_Utility.isStackValid(input)) { int[] oreDict = OreDictionary.getOreIDs(input); @@ -764,9 +765,9 @@ public static void Remover() { } } } - GT_Recipe.GT_Recipe_Map.sThermalCentrifugeRecipes.mRecipeList.removeAll(remove); - GT_Recipe.GT_Recipe_Map.sThermalCentrifugeRecipes.mRecipeList.addAll(reAdd); - GT_Recipe.GT_Recipe_Map.sThermalCentrifugeRecipes.reInit(); + RecipeMaps.thermalCentrifugeRecipes.getBackend().removeRecipes(remove); + reAdd.forEach(RecipeMaps.thermalCentrifugeRecipes::add); + RecipeMaps.thermalCentrifugeRecipes.getBackend().reInit(); GT_Log.out.print(GoodGenerator.MOD_ID + ": Replace " + remove.size() + "! "); @@ -776,7 +777,7 @@ public static void Remover() { GT_Log.out.print("Thermal Centrifuge done!\n"); // For Centrifuge - for (GT_Recipe recipe : GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes.mRecipeList) { + for (GT_Recipe recipe : RecipeMaps.centrifugeRecipes.getAllRecipes()) { ItemStack input = null; if (recipe.mInputs.length > 0) input = recipe.mInputs[0]; if (GT_Utility.isStackValid(input)) { @@ -862,9 +863,9 @@ public static void Remover() { } } } - GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes.mRecipeList.removeAll(remove); - GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes.mRecipeList.addAll(reAdd); - GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes.reInit(); + RecipeMaps.centrifugeRecipes.getBackend().removeRecipes(remove); + reAdd.forEach(RecipeMaps.centrifugeRecipes::add); + RecipeMaps.centrifugeRecipes.getBackend().reInit(); GT_Log.out.print(GoodGenerator.MOD_ID + ": Replace " + remove.size() + "! "); @@ -874,7 +875,7 @@ public static void Remover() { GT_Log.out.print("Centrifuge done!\n"); // For Centrifuge (PA) - for (GT_Recipe recipe : GT_Recipe.GT_Recipe_Map.sMultiblockCentrifugeRecipes.mRecipeList) { + for (GT_Recipe recipe : RecipeMaps.centrifugeNonCellRecipes.getAllRecipes()) { ItemStack input = null; if (recipe.mInputs.length > 0) input = recipe.mInputs[0]; if (GT_Utility.isStackValid(input)) { @@ -960,9 +961,9 @@ public static void Remover() { } } } - GT_Recipe.GT_Recipe_Map.sMultiblockCentrifugeRecipes.mRecipeList.removeAll(remove); - GT_Recipe.GT_Recipe_Map.sMultiblockCentrifugeRecipes.mRecipeList.addAll(reAdd); - GT_Recipe.GT_Recipe_Map.sMultiblockCentrifugeRecipes.reInit(); + RecipeMaps.centrifugeNonCellRecipes.getBackend().removeRecipes(remove); + reAdd.forEach(RecipeMaps.centrifugeNonCellRecipes::add); + RecipeMaps.centrifugeNonCellRecipes.getBackend().reInit(); GT_Log.out.print(GoodGenerator.MOD_ID + ": Replace " + remove.size() + "! "); @@ -972,7 +973,7 @@ public static void Remover() { GT_Log.out.print("Centrifuge (PA) done!\n"); // For Hammer - for (GT_Recipe recipe : GT_Recipe.GT_Recipe_Map.sHammerRecipes.mRecipeList) { + for (GT_Recipe recipe : RecipeMaps.hammerRecipes.getAllRecipes()) { ItemStack input = recipe.mInputs[0]; if (GT_Utility.isStackValid(input)) { int[] oreDict = OreDictionary.getOreIDs(input); @@ -1009,9 +1010,9 @@ public static void Remover() { } } } - GT_Recipe.GT_Recipe_Map.sHammerRecipes.mRecipeList.removeAll(remove); - GT_Recipe.GT_Recipe_Map.sHammerRecipes.mRecipeList.addAll(reAdd); - GT_Recipe.GT_Recipe_Map.sHammerRecipes.reInit(); + RecipeMaps.hammerRecipes.getBackend().removeRecipes(remove); + reAdd.forEach(RecipeMaps.hammerRecipes::add); + RecipeMaps.hammerRecipes.getBackend().reInit(); GT_Log.out.print(GoodGenerator.MOD_ID + ": Replace " + remove.size() + "! "); @@ -1021,7 +1022,7 @@ public static void Remover() { GT_Log.out.print("Hammer done!\n"); // For Chemical Reactor - for (GT_Recipe recipe : GT_Recipe.GT_Recipe_Map.sChemicalRecipes.mRecipeList) { + for (GT_Recipe recipe : RecipeMaps.chemicalReactorRecipes.getAllRecipes()) { if (recipe.mFluidOutputs == null) continue; boolean isAny = false; for (int i = 0; i < recipe.mFluidOutputs.length; i++) { @@ -1054,9 +1055,9 @@ public static void Remover() { remove.add(recipe); } } - GT_Recipe.GT_Recipe_Map.sChemicalRecipes.mRecipeList.removeAll(remove); - GT_Recipe.GT_Recipe_Map.sChemicalRecipes.mRecipeList.addAll(reAdd); - GT_Recipe.GT_Recipe_Map.sChemicalRecipes.reInit(); + RecipeMaps.chemicalReactorRecipes.getBackend().removeRecipes(remove); + reAdd.forEach(RecipeMaps.chemicalReactorRecipes::add); + RecipeMaps.chemicalReactorRecipes.getBackend().reInit(); GT_Log.out.print(GoodGenerator.MOD_ID + ": Replace " + remove.size() + "! "); @@ -1066,7 +1067,7 @@ public static void Remover() { GT_Log.out.print("Chemical Reactor done!\n"); // For Multi Chemical Reactor - for (GT_Recipe recipe : GT_Recipe.GT_Recipe_Map.sMultiblockChemicalRecipes.mRecipeList) { + for (GT_Recipe recipe : RecipeMaps.multiblockChemicalReactorRecipes.getAllRecipes()) { if (recipe.mFluidOutputs == null) continue; boolean isAny = false; for (int i = 0; i < recipe.mFluidOutputs.length; i++) { @@ -1099,9 +1100,9 @@ public static void Remover() { remove.add(recipe); } } - GT_Recipe.GT_Recipe_Map.sMultiblockChemicalRecipes.mRecipeList.removeAll(remove); - GT_Recipe.GT_Recipe_Map.sMultiblockChemicalRecipes.mRecipeList.addAll(reAdd); - GT_Recipe.GT_Recipe_Map.sMultiblockChemicalRecipes.reInit(); + RecipeMaps.multiblockChemicalReactorRecipes.getBackend().removeRecipes(remove); + reAdd.forEach(RecipeMaps.multiblockChemicalReactorRecipes::add); + RecipeMaps.multiblockChemicalReactorRecipes.getBackend().reInit(); GT_Log.out.print(GoodGenerator.MOD_ID + ": Replace " + remove.size() + "! "); @@ -1115,12 +1116,12 @@ public static void Remover() { // Apparently NEI will break down if one modifies the hash list directly. // GTPP_Recipe.GTPP_Recipe_Map.sMultiblockCentrifugeRecipes_GT.mRecipeList.clear(); // RecipeGen_MultisUsingFluidInsteadOfCells.generateRecipesNotUsingCells( - // GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes, + // RecipeMaps.centrifugeRecipes, // GTPP_Recipe.GTPP_Recipe_Map.sMultiblockCentrifugeRecipes_GT); // GTPP_Recipe.GTPP_Recipe_Map.sMultiblockCentrifugeRecipes_GT.reInit(); // For Simple Washer - for (GT_Recipe recipe : GTPP_Recipe.GTPP_Recipe_Map.sSimpleWasherRecipes.mRecipeList) { + for (GT_Recipe recipe : GTPPRecipeMaps.simpleWasherRecipes.getAllRecipes()) { ItemStack input = recipe.mInputs[0]; if (GT_Utility.isStackValid(input)) { int[] oreDict = OreDictionary.getOreIDs(input); @@ -1156,9 +1157,9 @@ public static void Remover() { } } } - GTPP_Recipe.GTPP_Recipe_Map.sSimpleWasherRecipes.mRecipeList.removeAll(remove); - GTPP_Recipe.GTPP_Recipe_Map.sSimpleWasherRecipes.mRecipeList.addAll(reAdd); - GTPP_Recipe.GTPP_Recipe_Map.sSimpleWasherRecipes.reInit(); + GTPPRecipeMaps.simpleWasherRecipes.getBackend().removeRecipes(remove); + reAdd.forEach(GTPPRecipeMaps.simpleWasherRecipes::add); + GTPPRecipeMaps.simpleWasherRecipes.getBackend().reInit(); GT_Log.out.print(GoodGenerator.MOD_ID + ": Replace " + remove.size() + "! "); diff --git a/src/main/java/goodgenerator/loader/RecipeLoader_02.java b/src/main/java/goodgenerator/loader/RecipeLoader_02.java index 71ba3df2..f1aed79f 100644 --- a/src/main/java/goodgenerator/loader/RecipeLoader_02.java +++ b/src/main/java/goodgenerator/loader/RecipeLoader_02.java @@ -1,6 +1,6 @@ package goodgenerator.loader; -import static gregtech.api.util.GT_Recipe.GT_Recipe_Map.sAutoclaveRecipes; +import static gregtech.api.recipe.RecipeMaps.autoclaveRecipes; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.Fluid; @@ -22,6 +22,7 @@ import gregtech.api.enums.MaterialsUEVplus; 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_OreDictUnificator; import gregtech.api.util.GT_Recipe; @@ -33,7 +34,6 @@ import gtPlusPlus.xmod.gregtech.api.enums.GregtechItemList; import ic2.core.Ic2Items; -@SuppressWarnings("deprecation") public class RecipeLoader_02 { public static void RecipeLoad() { @@ -678,7 +678,7 @@ public static void RecipeLoad() { WerkstoffLoader.Tiberium.get(OrePrefixes.gem, 1), WerkstoffLoader.Tiberium.get(OrePrefixes.gem, 1)) .outputChances(10000, 2000).fluidInputs(MyMaterial.naquadahGas.getFluidOrGas(250)).duration(400) - .eut(TierEU.RECIPE_HV).addTo(sAutoclaveRecipes); + .eut(TierEU.RECIPE_HV).addTo(autoclaveRecipes); GT_Values.RA.addChemicalBathRecipe( Materials.Firestone.getGems(1), @@ -1608,7 +1608,7 @@ public static void InitLoadRecipe() { } public static void FinishLoadRecipe() { - for (GT_Recipe plasmaFuel : GT_Recipe.GT_Recipe_Map.sPlasmaFuels.mRecipeList) { + for (GT_Recipe plasmaFuel : RecipeMaps.plasmaFuels.getAllRecipes()) { FluidStack tPlasma = GT_Utility.getFluidForFilledItem(plasmaFuel.mInputs[0], true); if (tPlasma == null) { continue; diff --git a/src/main/java/goodgenerator/util/MyRecipeAdder.java b/src/main/java/goodgenerator/util/MyRecipeAdder.java index 7914fa58..2d755091 100644 --- a/src/main/java/goodgenerator/util/MyRecipeAdder.java +++ b/src/main/java/goodgenerator/util/MyRecipeAdder.java @@ -1,267 +1,32 @@ package goodgenerator.util; -import java.awt.Rectangle; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.function.Supplier; - import net.minecraft.item.ItemStack; -import net.minecraft.util.StatCollector; -import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; -import com.gtnewhorizons.modularui.api.math.Pos2d; -import com.gtnewhorizons.modularui.api.screen.ModularWindow; -import com.gtnewhorizons.modularui.common.widget.DrawableWidget; - -import goodgenerator.client.GUI.GG_UITextures; -import gregtech.api.enums.GT_Values; -import gregtech.api.gui.modularui.GT_UITextures; -import gregtech.api.util.GT_Recipe; -import gregtech.api.util.GT_Utility; -import gregtech.common.gui.modularui.UIHelper; +import goodgenerator.api.recipe.ExtremeHeatExchangerRecipe; +import goodgenerator.api.recipe.GoodGeneratorRecipeMaps; public class MyRecipeAdder { public static final MyRecipeAdder instance = new MyRecipeAdder(); - public final liquidMentalFuelMapper NqGFuels = (liquidMentalFuelMapper) new liquidMentalFuelMapper( - new HashSet<>(50), - "gg.recipe.naquadah_reactor", - StatCollector.translateToLocal("tile.recipe.naquadah_reactor"), - null, - "goodgenerator:textures/gui/naquadah_reactor", - 0, - 0, - 0, - 1, - 1, - StatCollector.translateToLocal("value.naquadah_reactor") + " ", - 1, - " EU/t", - false, - true) { - - @Override - public void addProgressBarUI(ModularWindow.Builder builder, Supplier progressSupplier, - Pos2d windowOffset) { - builder.widget( - new DrawableWidget().setDrawable(GG_UITextures.PICTURE_NAQUADAH_REACTOR) - .setPos(new Pos2d(59, 20).add(windowOffset)).setSize(58, 42)); - } - }.useModularUI(true); - - public final NaqFuelRefineMapper FRF = new NaqFuelRefineMapper( - new HashSet<>(50), - "gg.recipe.naquadah_fuel_refine_factory", - StatCollector.translateToLocal("tile.naquadah_fuel_refine_factory"), - null, - "gregtech:textures/gui/basicmachines/FusionReactor", - 6, - 0, - 0, - 1, - 1, - StatCollector.translateToLocal("value.naquadah_fuel_refine_factory.0") + " ", - 1, - StatCollector.translateToLocal("value.naquadah_fuel_refine_factory.1"), - true, - true); - - public final NeutronActivatorMapper NA = (NeutronActivatorMapper) new NeutronActivatorMapper( - new HashSet<>(150), - "gg.recipe.neutron_activator", - StatCollector.translateToLocal("tile.neutron_activator"), - null, - "goodgenerator:textures/gui/neutron_activator", - 9, - 9, - 0, - 0, - 0, - null, - 0, - null, - false, - true).setNEISpecialInfoFormatter((recipeInfo, applyPrefixAndSuffix) -> { - int minNKE = recipeInfo.recipe.mSpecialValue % 10000; - int maxNKE = recipeInfo.recipe.mSpecialValue / 10000; - return Arrays.asList( - StatCollector.translateToLocal("value.neutron_activator.0"), - GT_Utility.formatNumbers(minNKE) + StatCollector.translateToLocal("value.neutron_activator.2"), - StatCollector.translateToLocal("value.neutron_activator.1"), - GT_Utility.formatNumbers(maxNKE) + StatCollector.translateToLocal("value.neutron_activator.2")); - }); - - public final ExtremeHeatExchangerMapper XHE = (ExtremeHeatExchangerMapper) new ExtremeHeatExchangerMapper( - new HashSet<>(50), - "gg.recipe.extreme_heat_exchanger", - StatCollector.translateToLocal("tile.extreme_heat_exchanger"), - null, - "goodgenerator:textures/gui/extreme_heat_exchanger", - 0, - 0, - 0, - 0, - 0, - null, - 0, - null, - false, - true).setNEISpecialInfoFormatter((recipeInfo, applyPrefixAndSuffix) -> { - FluidStack[] Inputs = recipeInfo.recipe.mFluidInputs; - FluidStack[] Outputs = recipeInfo.recipe.mFluidOutputs; - int threshold = recipeInfo.recipe.mSpecialValue; - return Arrays.asList( - StatCollector.translateToLocal("value.extreme_heat_exchanger.0") + " " - + GT_Utility.formatNumbers(Inputs[0].amount) - + " L/s", - StatCollector.translateToLocal("value.extreme_heat_exchanger.1"), - GT_Utility.formatNumbers(Outputs[0].amount / 160) + " L/s", - StatCollector.translateToLocal("value.extreme_heat_exchanger.2"), - GT_Utility.formatNumbers(Outputs[1].amount / 160) + " L/s", - StatCollector.translateToLocal("value.extreme_heat_exchanger.4") + " " + threshold + " L/s"); - }); - - public final PreciseAssemblerMapper PA = new PreciseAssemblerMapper( - new HashSet<>(120), - "gg.recipe.precise_assembler", - StatCollector.translateToLocal("tile.precise_assembler"), - null, - "goodgenerator:textures/gui/precise_assembler", - 4, - 1, - 1, - 0, - 1, - StatCollector.translateToLocal("value.precise_assembler.0"), - 1, - StatCollector.translateToLocal("value.precise_assembler.1"), - true, - true); - - public static class liquidMentalFuelMapper extends GT_Recipe.GT_Recipe_Map_Fuel { - - public liquidMentalFuelMapper(Collection aRecipeList, String aUnlocalizedName, String aLocalName, - String aNEIName, String aNEIGUIPath, int aUsualInputCount, int aUsualOutputCount, - int aMinimalInputItems, int aMinimalInputFluids, int aAmperage, String aNEISpecialValuePre, - int aNEISpecialValueMultiplier, String aNEISpecialValuePost, boolean aShowVoltageAmperageInNEI, - boolean aNEIAllowed) { - super( - aRecipeList, - aUnlocalizedName, - aLocalName, - aNEIName, - aNEIGUIPath, - aUsualInputCount, - aUsualOutputCount, - aMinimalInputItems, - aMinimalInputFluids, - aAmperage, - aNEISpecialValuePre, - aNEISpecialValueMultiplier, - aNEISpecialValuePost, - aShowVoltageAmperageInNEI, - aNEIAllowed); - } - - public void addFuel(FluidStack input, FluidStack output, int EUt, int ticks) { - super.addRecipe( - true, - null, - null, - null, - new FluidStack[] { input }, - new FluidStack[] { output }, - ticks, - 0, - EUt); - } - } - public void addLiquidMentalFuel(FluidStack input, FluidStack output, int EUt, int ticks) { - NqGFuels.addFuel(input, output, EUt, ticks); - } - - public static class NaqFuelRefineMapper extends GT_Recipe.GT_Recipe_Map { - - public NaqFuelRefineMapper(Collection aRecipeList, String aUnlocalizedName, String aLocalName, - String aNEIName, String aNEIGUIPath, int aUsualInputCount, int aUsualOutputCount, - int aMinimalInputItems, int aMinimalInputFluids, int aAmperage, String aNEISpecialValuePre, - int aNEISpecialValueMultiplier, String aNEISpecialValuePost, boolean aShowVoltageAmperageInNEI, - boolean aNEIAllowed) { - super( - aRecipeList, - aUnlocalizedName, - aLocalName, - aNEIName, - aNEIGUIPath, - aUsualInputCount, - aUsualOutputCount, - aMinimalInputItems, - aMinimalInputFluids, - aAmperage, - aNEISpecialValuePre, - aNEISpecialValueMultiplier, - aNEISpecialValuePost, - aShowVoltageAmperageInNEI, - aNEIAllowed); - setUsualFluidInputCount(2); - } - - public void addNaqFuelRefineRecipe(FluidStack[] input1, ItemStack[] input2, FluidStack output, int EUt, - int ticks, int tier) { - super.addRecipe(false, input2, null, null, input1, new FluidStack[] { output }, ticks, EUt, tier); - } + GoodGeneratorRecipeMaps.naquadahReactorFuels.addRecipe( + true, + null, + null, + null, + new FluidStack[] { input }, + new FluidStack[] { output }, + ticks, + 0, + EUt); } public void addNaquadahFuelRefineRecipe(FluidStack[] input1, ItemStack[] input2, FluidStack output, int EUt, int ticks, int tier) { - FRF.addNaqFuelRefineRecipe(input1, input2, output, EUt, ticks, tier); - } - - public static class NeutronActivatorMapper extends GT_Recipe.GT_Recipe_Map { - - public NeutronActivatorMapper(Collection aRecipeList, String aUnlocalizedName, String aLocalName, - String aNEIName, String aNEIGUIPath, int aUsualInputCount, int aUsualOutputCount, - int aMinimalInputItems, int aMinimalInputFluids, int aAmperage, String aNEISpecialValuePre, - int aNEISpecialValueMultiplier, String aNEISpecialValuePost, boolean aShowVoltageAmperageInNEI, - boolean aNEIAllowed) { - super( - aRecipeList, - aUnlocalizedName, - aLocalName, - aNEIName, - aNEIGUIPath, - aUsualInputCount, - aUsualOutputCount, - aMinimalInputItems, - aMinimalInputFluids, - aAmperage, - aNEISpecialValuePre, - aNEISpecialValueMultiplier, - aNEISpecialValuePost, - aShowVoltageAmperageInNEI, - aNEIAllowed); - useModularUI(true); - } - - public void addNARecipe(FluidStack[] input1, ItemStack[] input2, FluidStack[] output1, ItemStack[] output2, - int ticks, int special) { - super.addRecipe(false, input2, output2, null, input1, output1, ticks, 0, special); - } - - @Override - public void addProgressBarUI(ModularWindow.Builder builder, Supplier progressSupplier, - Pos2d windowOffset) { - builder.widget( - new DrawableWidget().setDrawable(GG_UITextures.PICTURE_NEUTRON_ACTIVATOR) - .setPos(new Pos2d(73, 22).add(windowOffset)).setSize(31, 21)); - } + GoodGeneratorRecipeMaps.naquadahFuelRefineFactoryRecipes + .addRecipe(false, input2, null, null, input1, new FluidStack[] { output }, ticks, EUt, tier); } public void addNeutronActivatorRecipe(FluidStack[] input1, ItemStack[] input2, FluidStack[] output1, @@ -270,215 +35,23 @@ public void addNeutronActivatorRecipe(FluidStack[] input1, ItemStack[] input2, F if (maxNKE >= 1100) maxNKE = 1100; if (minNKE < 0) minNKE = 0; if (minNKE >= maxNKE) minNKE = maxNKE - 1; - NA.addNARecipe(input1, input2, output1, output2, ticks, maxNKE * 10000 + minNKE); - } - - public static HashMap mXHeatExchangerFuelMap = new HashMap<>(); - - public static class ExtremeHeatExchangerMapper extends GT_Recipe.GT_Recipe_Map { - - public ExtremeHeatExchangerMapper(Collection aRecipeList, String aUnlocalizedName, String aLocalName, - String aNEIName, String aNEIGUIPath, int aUsualInputCount, int aUsualOutputCount, - int aMinimalInputItems, int aMinimalInputFluids, int aAmperage, String aNEISpecialValuePre, - int aNEISpecialValueMultiplier, String aNEISpecialValuePost, boolean aShowVoltageAmperageInNEI, - boolean aNEIAllowed) { - super( - aRecipeList, - aUnlocalizedName, - aLocalName, - aNEIName, - aNEIGUIPath, - aUsualInputCount, - aUsualOutputCount, - aMinimalInputItems, - aMinimalInputFluids, - aAmperage, - aNEISpecialValuePre, - aNEISpecialValueMultiplier, - aNEISpecialValuePost, - aShowVoltageAmperageInNEI, - aNEIAllowed); - setUsualFluidInputCount(2); - setUsualFluidOutputCount(3); - } - - @Override - public GT_Recipe addRecipe(boolean aOptimize, ItemStack[] aInputs, ItemStack[] aOutputs, Object aSpecial, - int[] aOutputChances, FluidStack[] aFluidInputs, FluidStack[] aFluidOutputs, int aDuration, int aEUt, - int aSpecialValue) { - ExtremeHeatExchangerRecipe tRecipe = new ExtremeHeatExchangerRecipe( - aFluidInputs, - aFluidOutputs, - aSpecialValue); - mXHeatExchangerFuelMap.put(aFluidInputs[0].getFluid(), tRecipe); - return addRecipe(tRecipe); - } - - @Override - public List getFluidInputPositions(int fluidInputCount) { - return Arrays.asList(new Pos2d(26, 13), new Pos2d(26, 37)); - } - - @Override - public List getFluidOutputPositions(int fluidOutputCount) { - return Arrays.asList(new Pos2d(128, 13), new Pos2d(128, 31), new Pos2d(128, 54)); - } - - @Override - public void addProgressBarUI(ModularWindow.Builder builder, Supplier progressSupplier, - Pos2d windowOffset) { - builder.widget( - new DrawableWidget().setDrawable(GG_UITextures.PICTURE_EXTREME_HEAT_EXCHANGER) - .setPos(new Pos2d(47, 13).add(windowOffset)).setSize(78, 59)); - } - } - - public static class ExtremeHeatExchangerRecipe extends GT_Recipe { - - public ExtremeHeatExchangerRecipe(FluidStack[] input, FluidStack[] output, int special) { - super(false, null, null, null, null, input, output, 0, 0, special); - } - - public int getMaxHotFluidConsume() { - if (this.mFluidInputs != null) { - return this.mFluidInputs[0].amount; - } - return 0; - } - - public Fluid getNormalSteam() { - if (this.mFluidOutputs != null) { - return this.mFluidOutputs[0].getFluid(); - } - return null; - } - - public Fluid getHeatedSteam() { - if (this.mFluidOutputs != null) { - return this.mFluidOutputs[1].getFluid(); - } - return null; - } - - public Fluid getCooledFluid() { - if (this.mFluidOutputs != null) { - return this.mFluidOutputs[2].getFluid(); - } - return null; - } - - public int getEUt() { - if (getNormalSteam() != null) { - switch (getNormalSteam().getName()) { - case "steam": { - int tVal = this.mFluidInputs[1].amount * 4; - if (tVal < 0) tVal = -tVal; - return tVal; - } - case "ic2superheatedsteam": { - int tVal = this.mFluidInputs[1].amount * 8; - if (tVal < 0) tVal = -tVal; - return tVal; - } - case "supercriticalsteam": { - int tVal = this.mFluidInputs[1].amount * 800; - if (tVal < 0) tVal = -tVal; - return tVal; - } - default: - return 0; - } - } - return 0; - } + GoodGeneratorRecipeMaps.neutronActivatorRecipes + .addRecipe(false, input2, output2, null, input1, output1, ticks, 0, maxNKE * 10000 + minNKE); } public void addExtremeHeatExchangerRecipe(FluidStack HotFluid, FluidStack ColdFluid, FluidStack WorkFluid, FluidStack HeatedWorkFluid, FluidStack OverHeatedWorkFluid, int Threshold) { - XHE.addRecipe( - false, - null, - null, - null, - null, - new FluidStack[] { HotFluid, WorkFluid }, - new FluidStack[] { HeatedWorkFluid, OverHeatedWorkFluid, ColdFluid }, - 0, - 0, - Threshold); - } - - public static class PreciseAssemblerMapper extends GT_Recipe.GT_Recipe_Map { - - public PreciseAssemblerMapper(Collection aRecipeList, String aUnlocalizedName, String aLocalName, - String aNEIName, String aNEIGUIPath, int aUsualInputCount, int aUsualOutputCount, - int aMinimalInputItems, int aMinimalInputFluids, int aAmperage, String aNEISpecialValuePre, - int aNEISpecialValueMultiplier, String aNEISpecialValuePost, boolean aShowVoltageAmperageInNEI, - boolean aNEIAllowed) { - super( - aRecipeList, - aUnlocalizedName, - aLocalName, - aNEIName, - aNEIGUIPath, - aUsualInputCount, - aUsualOutputCount, - aMinimalInputItems, - aMinimalInputFluids, - aAmperage, - aNEISpecialValuePre, - aNEISpecialValueMultiplier, - aNEISpecialValuePost, - aShowVoltageAmperageInNEI, - aNEIAllowed); - setUsualFluidInputCount(4); - setProgressBar(GT_UITextures.PROGRESSBAR_ARROW_MULTIPLE); - setProgressBarPos(85, 30); - setNEITransferRect(new Rectangle(80, 30, 35, 18)); - } - - @Override - public GT_Recipe addRecipe(boolean aOptimize, ItemStack[] aInputs, ItemStack[] aOutputs, Object aSpecial, - int[] aOutputChances, FluidStack[] aFluidInputs, FluidStack[] aFluidOutputs, int aDuration, int aEUt, - int aSpecialValue) { - PreciseAssemblerRecipe tRecipe = new PreciseAssemblerRecipe( - aInputs, - aFluidInputs, - aOutputs[0], - aEUt, - aDuration, - aSpecialValue); - return addRecipe(tRecipe); - } - - @Override - public List getItemInputPositions(int itemInputCount) { - return UIHelper.getGridPositions(itemInputCount, 8, 13, itemInputCount); - } - - @Override - public List getItemOutputPositions(int itemOutputCount) { - return Collections.singletonList(new Pos2d(115, 30)); - } - - @Override - public List getFluidInputPositions(int fluidInputCount) { - return UIHelper.getGridPositions(fluidInputCount, 8, 48, fluidInputCount); - } - } - - public static class PreciseAssemblerRecipe extends GT_Recipe { - - public PreciseAssemblerRecipe(ItemStack[] input1, FluidStack[] input2, ItemStack output, int EUt, int ticks, - int tier) { - super(false, input1, new ItemStack[] { output }, null, null, input2, null, ticks, EUt, tier); - } + GoodGeneratorRecipeMaps.extremeHeatExchangerFuels.addRecipe( + new ExtremeHeatExchangerRecipe( + new FluidStack[] { HotFluid, WorkFluid }, + new FluidStack[] { HeatedWorkFluid, OverHeatedWorkFluid, ColdFluid }, + Threshold)); } public void addPreciseAssemblerRecipe(ItemStack[] aItemInputs, FluidStack[] aFluidInputs, ItemStack aOutput, int aEUt, int aDuration, int aTier) { if (aOutput == null) return; - PA.addRecipe( + GoodGeneratorRecipeMaps.preciseAssemblerRecipes.addRecipe( false, aItemInputs, new ItemStack[] { aOutput }, @@ -491,85 +64,9 @@ public void addPreciseAssemblerRecipe(ItemStack[] aItemInputs, FluidStack[] aFlu aTier); } - public static class ComponentAssemblyLineMapper extends GT_Recipe.GT_Recipe_Map { - - public ComponentAssemblyLineMapper(Collection aRecipeList, String aUnlocalizedName, - String aLocalName, String aNEIName, String aNEIGUIPath, int aUsualInputCount, int aUsualOutputCount, - int aMinimalInputItems, int aMinimalInputFluids, int aAmperage, String aNEISpecialValuePre, - int aNEISpecialValueMultiplier, String aNEISpecialValuePost, boolean aShowVoltageAmperageInNEI, - boolean aNEIAllowed) { - - super( - aRecipeList, - aUnlocalizedName, - aLocalName, - aNEIName, - aNEIGUIPath, - aUsualInputCount, - aUsualOutputCount, - aMinimalInputItems, - aMinimalInputFluids, - aAmperage, - aNEISpecialValuePre, - aNEISpecialValueMultiplier, - aNEISpecialValuePost, - aShowVoltageAmperageInNEI, - aNEIAllowed); - setUsualFluidInputCount(12); - setNEITransferRect(new Rectangle(70, 15, 18, 54)); - setNEISpecialInfoFormatter( - (recipeInfo, applyPrefixAndSuffix) -> Collections.singletonList( - recipeInfo.recipeMap.mNEISpecialValuePre + GT_Values.VN[recipeInfo.recipe.mSpecialValue])); - } - - @Override - public List getItemInputPositions(int itemInputCount) { - return UIHelper.getGridPositions(itemInputCount, 16, 8, 3); - } - - @Override - public List getItemOutputPositions(int itemOutputCount) { - return Collections.singletonList(new Pos2d(142, 8)); - } - - @Override - public List getFluidInputPositions(int fluidInputCount) { - - return UIHelper.getGridPositions(fluidInputCount, 88, 26, 4); - } - - @Override - public void addGregTechLogoUI(ModularWindow.Builder builder, Pos2d windowOffset) {} - - @Override - public void addProgressBarUI(ModularWindow.Builder builder, Supplier progressSupplier, - Pos2d windowOffset) { - builder.widget( - new DrawableWidget().setDrawable(GG_UITextures.PICTURE_COMPONENT_ASSLINE) - .setPos(new Pos2d(70, 11).add(windowOffset)).setSize(72, 40)); - } - } - - public final ComponentAssemblyLineMapper COMPASSLINE_RECIPES = new ComponentAssemblyLineMapper( - new HashSet<>(110), - "gg.recipe.componentassemblyline", - "Component Assembly Line", - null, - "goodgenerator:textures/gui/ComponentAssline", - 12, - 1, - 0, - 0, - 1, - "Casing Tier: ", - 1, - "", - false, - true); - - public GT_Recipe addComponentAssemblyLineRecipe(ItemStack[] ItemInputArray, FluidStack[] FluidInputArray, + public void addComponentAssemblyLineRecipe(ItemStack[] ItemInputArray, FluidStack[] FluidInputArray, ItemStack OutputItem, int aDuration, int aEUt, int casingLevel) { - return COMPASSLINE_RECIPES.addRecipe( + GoodGeneratorRecipeMaps.componentAssemblyLineRecipes.addRecipe( false, ItemInputArray, new ItemStack[] { OutputItem }, diff --git a/src/main/resources/assets/goodgenerator/lang/en_US.lang b/src/main/resources/assets/goodgenerator/lang/en_US.lang index 40024312..57ca4fe5 100644 --- a/src/main/resources/assets/goodgenerator/lang/en_US.lang +++ b/src/main/resources/assets/goodgenerator/lang/en_US.lang @@ -57,7 +57,6 @@ componentAssemblyLineCasing.11.name=Component Assembly Line Casing (UMV) componentAssemblyLineCasing.12.name=Component Assembly Line Casing (UXV) componentAssemblyLineCasing.13.name=Component Assembly Line Casing (MAX) - #Items item.radiationProtectionPlate.name=Radiation Proof Plate item.wrappedUraniumIngot.name=Wrapped Uranium Ingot @@ -312,15 +311,17 @@ gui.YOTTank.button.locking=Fluid locking gui.LargeFusion.0=Energy Capacity: gui.LargeFusion.1=Stored Energy: +# RecipeMaps +gg.recipe.naquadah_reactor=Large Naquadah Reactor +gg.recipe.naquadah_fuel_refine_factory=Naquadah Fuel Refine Factory +gg.recipe.neutron_activator=Neutron Activator +gg.recipe.extreme_heat_exchanger=Extreme Heat Exchanger +gg.recipe.precise_assembler=Precise Assembler +gg.recipe.componentassemblyline=Component Assembly Line + #NEI Info -tile.recipe.naquadah_reactor=Large Naquadah Reactor -tile.naquadah_fuel_refine_factory=Naquadah Fuel Refine Factory -tile.neutron_activator=Neutron Activator -tile.extreme_heat_exchanger=Extreme Heat Exchanger -tile.precise_assembler=Precise Assembler -value.naquadah_reactor=Basic Output Voltage: -value.naquadah_fuel_refine_factory.0=Need Tier -value.naquadah_fuel_refine_factory.1= Coil +value.naquadah_reactor=Basic Output Voltage: %s EU/t +value.naquadah_fuel_refine_factory=Need Tier %s Coil value.neutron_activator.0=Minimum Neutron Kinetic Energy: value.neutron_activator.1=Maximum Neutron Kinetic Energy: value.neutron_activator.2= MeV @@ -328,8 +329,8 @@ value.extreme_heat_exchanger.0=Max Hot Fluid Input: value.extreme_heat_exchanger.1=Max Distilled Water Input(Normal): value.extreme_heat_exchanger.2=Max Distilled Water Input(OverHeated): value.extreme_heat_exchanger.4=Threshold: -value.precise_assembler.0=Need MK- -value.precise_assembler.1= Casing +value.precise_assembler=Need MK-%s Casing +value.component_assembly_line=Casing Tier: %s #TecTech Structure Info FuelRefineFactory.hint.0=8x Field Restriction Glasses diff --git a/src/main/resources/assets/goodgenerator/lang/zh_CN.lang b/src/main/resources/assets/goodgenerator/lang/zh_CN.lang index 45be636b..1572a2f5 100644 --- a/src/main/resources/assets/goodgenerator/lang/zh_CN.lang +++ b/src/main/resources/assets/goodgenerator/lang/zh_CN.lang @@ -266,25 +266,24 @@ gui.YOTTank.2=已存储: gui.LargeFusion.0=能量容量: gui.LargeFusion.1=储存能量: +# RecipeMaps +gg.recipe.naquadah_reactor=大型硅岩反应堆 +gg.recipe.naquadah_fuel_refine_factory=硅岩燃料精炼厂 +gg.recipe.neutron_activator=中子活化器 +gg.recipe.extreme_heat_exchanger=超级热交换机 +gg.recipe.precise_assembler=精密组装机 + #NEI Info -tile.recipe.naquadah_reactor=大型硅岩反应堆 -tile.naquadah_fuel_refine_factory=硅岩燃料精炼厂 -tile.neutron_activator=中子活化器 -tile.extreme_heat_exchanger=超级热交换机 -tile.precise_assembler=精密组装机 -value.naquadah_reactor=基础输出电压: -value.naquadah_fuel_refine_factory.0=要求等级 -value.naquadah_fuel_refine_factory.1=线圈 +value.naquadah_reactor=基础输出电压: %s EU/t +value.naquadah_fuel_refine_factory=要求等级 %s 线圈 value.neutron_activator.0=最低中子动能: value.neutron_activator.1=最高中子动能: value.neutron_activator.2= MeV value.extreme_heat_exchanger.0=最大热流体输入: value.extreme_heat_exchanger.1=最大工质输入: value.extreme_heat_exchanger.2=最大热工质输出: -value.extreme_heat_exchanger.3=最大过热工质输出: value.extreme_heat_exchanger.4=阈值: -value.precise_assembler.0=要求 MK- -value.precise_assembler.1= 机械方块 +value.precise_assembler=要求 MK-%s 机械方块 #TecTech Structure Info FuelRefineFactory.hint.0=8x力场约束玻璃