From 981df39ed10c780e38d91503de42dcd46c2e47e4 Mon Sep 17 00:00:00 2001 From: miozune Date: Mon, 4 Dec 2023 08:11:34 +0900 Subject: Migrate to new RecipeMap (#219) * Migrate GG recipemaps * Migrate the rest * Split classes, renames, more adapt to GT changes * Update GT to adapt to MaceratorBackend removal * update gradle+deps+bs --------- Co-authored-by: Martin Robertz Co-authored-by: BlueWeabo --- build.gradle | 30 +- dependencies.gradle | 11 +- gradle/wrapper/gradle-wrapper.jar | Bin 62076 -> 63375 bytes gradle/wrapper/gradle-wrapper.properties | 3 +- gradlew | 5 +- .../api/recipe/ComponentAssemblyLineFrontend.java | 44 ++ .../api/recipe/ExtremeHeatExchangerBackend.java | 25 + .../api/recipe/ExtremeHeatExchangerFrontend.java | 58 +++ .../api/recipe/ExtremeHeatExchangerRecipe.java | 66 +++ .../api/recipe/GoodGeneratorRecipeMaps.java | 58 +++ .../api/recipe/PreciseAssemblerFrontend.java | 39 ++ .../blocks/tileEntity/ComponentAssemblyLine.java | 7 +- .../blocks/tileEntity/ExtremeHeatExchanger.java | 25 +- .../blocks/tileEntity/FuelRefineFactory.java | 7 +- .../GTMetaTileEntity/DieselGenerator.java | 9 +- .../blocks/tileEntity/LargeFusionComputer1.java | 13 +- .../blocks/tileEntity/LargeFusionComputer2.java | 13 +- .../blocks/tileEntity/LargeFusionComputer3.java | 13 +- .../blocks/tileEntity/LargeFusionComputer4.java | 14 +- .../blocks/tileEntity/LargeFusionComputer5.java | 14 +- .../blocks/tileEntity/MultiNqGenerator.java | 10 +- .../blocks/tileEntity/NeutronActivator.java | 7 +- .../blocks/tileEntity/PreciseAssembler.java | 51 +- .../tileEntity/UniversalChemicalFuelEngine.java | 14 +- .../tileEntity/base/LargeFusionComputer.java | 41 +- .../java/goodgenerator/crossmod/nei/IMCForNEI.java | 62 --- .../loader/ComponentAssemblyLineRecipeLoader.java | 3 +- src/main/java/goodgenerator/loader/Loaders.java | 2 - .../loader/NaquadahReworkRecipeLoader.java | 101 ++-- .../java/goodgenerator/loader/RecipeLoader_02.java | 8 +- .../java/goodgenerator/util/MyRecipeAdder.java | 551 +-------------------- .../resources/assets/goodgenerator/lang/en_US.lang | 23 +- .../resources/assets/goodgenerator/lang/zh_CN.lang | 21 +- 33 files changed, 567 insertions(+), 781 deletions(-) create mode 100644 src/main/java/goodgenerator/api/recipe/ComponentAssemblyLineFrontend.java create mode 100644 src/main/java/goodgenerator/api/recipe/ExtremeHeatExchangerBackend.java create mode 100644 src/main/java/goodgenerator/api/recipe/ExtremeHeatExchangerFrontend.java create mode 100644 src/main/java/goodgenerator/api/recipe/ExtremeHeatExchangerRecipe.java create mode 100644 src/main/java/goodgenerator/api/recipe/GoodGeneratorRecipeMaps.java create mode 100644 src/main/java/goodgenerator/api/recipe/PreciseAssemblerFrontend.java delete mode 100644 src/main/java/goodgenerator/crossmod/nei/IMCForNEI.java diff --git a/build.gradle b/build.gradle index e59189c895..8507c7dfbd 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 9914c18a6e..5579995672 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 c1962a79e2..033e24c4cd 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 17a8ddce2d..1af9e0930b 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 aeb74cbb43..fcb6fca147 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 0000000000..eae7fdc3e9 --- /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 0000000000..cdd3a4d57f --- /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 0000000000..51078a3a95 --- /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 0000000000..4a32e882f8 --- /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 0000000000..d65b8df611 --- /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 0000000000..83b13abcfe --- /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 f50729f565..36a8da28c8 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.IStructureDefinition; 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.metatileentity.IMetaTileEntity; 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 class ComponentAssemblyLine extends GT_MetaTileEntity_ExtendedPowerMultiB } @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 b88bc0efbf..472579d6ac 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.minecraft.util.StatCollector; 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.IStructureDefinition; 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; 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 class ExtremeHeatExchanger extends GT_MetaTileEntity_TooltipMultiBlockBas 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 class ExtremeHeatExchanger extends GT_MetaTileEntity_TooltipMultiBlockBas super.saveNBTData(aNBT); } + @Override + public RecipeMap getRecipeMap() { + return GoodGeneratorRecipeMaps.extremeHeatExchangerFuels; + } + @Override protected void clearHatches_EM() { super.clearHatches_EM(); @@ -193,8 +206,8 @@ public class ExtremeHeatExchanger extends GT_MetaTileEntity_TooltipMultiBlockBas 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 7917e7890a..59928f984d 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.IStructureElement; 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_Input 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 class FuelRefineFactory extends GT_MetaTileEntity_TooltipMultiBlockBase_E } @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 0a4a92f975..117b35f5aa 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.ITexture; 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 class DieselGenerator extends GT_MetaTileEntity_BasicGenerator { } @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 class DieselGenerator extends GT_MetaTileEntity_BasicGenerator { @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 22fb7fc694..1b18445f56 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.interfaces.tileentity.IGregTechTileEntity; 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 @@ public class LargeFusionComputer1 extends LargeFusionComputer { 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 770a14ffaf..381afb33d6 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.interfaces.tileentity.IGregTechTileEntity; 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 @@ public class LargeFusionComputer2 extends LargeFusionComputer { 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 50688ee678..334456e5b8 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.interfaces.tileentity.IGregTechTileEntity; 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 @@ public class LargeFusionComputer3 extends LargeFusionComputer { 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 b25d5851d1..7930beb0fd 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_Energ 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 @@ public class LargeFusionComputer4 extends LargeFusionComputerPP { 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 21ea21f59e..8ab7a83b30 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_Energ 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 @@ public class LargeFusionComputer5 extends LargeFusionComputerPP { 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 2885ad1fa5..2e7e5e0de5 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.IStructureDefinition; 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_Input 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 class MultiNqGenerator extends GT_MetaTileEntity_TooltipMultiBlockBase_EM super.saveNBTData(aNBT); } + @Override + public RecipeMap getRecipeMap() { + return GoodGeneratorRecipeMaps.naquadahReactorFuels; + } + @Override public @NotNull CheckRecipeResult checkProcessing_EM() { @@ -207,7 +213,7 @@ public class MultiNqGenerator extends GT_MetaTileEntity_TooltipMultiBlockBase_EM } } - 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 e1317c1174..21b1ec38d2 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.FakeSyncWidget; 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.loader.Loaders; 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.logic.ProcessingLogic; 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 class NeutronActivator extends GT_MetaTileEntity_TooltipMultiBlockBase_EM } @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 3242ff8778..5793b62271 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.metatileentity.BaseTileEntity.TOOLTIP_DELAY; 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.nbt.NBTTagCompound; 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.ModularWindow; 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_Maint 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 class PreciseAssembler extends GT_MetaTileEntity_ExtendedPowerMultiBlockB 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 @@ public class PreciseAssembler extends GT_MetaTileEntity_ExtendedPowerMultiBlockB @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 class PreciseAssembler extends GT_MetaTileEntity_ExtendedPowerMultiBlockB } @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 c89342aad4..112185efad 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.enums.Textures.BlockIcons.*; 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_Dynam 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 @@ public class UniversalChemicalFuelEngine extends GT_MetaTileEntity_TooltipMultiB 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 @@ public class UniversalChemicalFuelEngine extends GT_MetaTileEntity_TooltipMultiB 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 @@ public class UniversalChemicalFuelEngine extends GT_MetaTileEntity_TooltipMultiB } 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 ec6c40a282..ef85023706 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.enums.Textures.BlockIcons.*; 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.enums.Textures; 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_Input 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_OverclockCalculator; 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 @@ public abstract class LargeFusionComputer extends GT_MetaTileEntity_TooltipMulti 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 abstract class LargeFusionComputer extends GT_MetaTileEntity_TooltipMulti : ((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 863e18fe92..0000000000 --- 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 a13fc94a36..18fda2f118 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.Materials; 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 @@ public class ComponentAssemblyLineRecipeLoader { 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 b9f2e26a6f..1d2afe9d50 100644 --- a/src/main/java/goodgenerator/loader/Loaders.java +++ b/src/main/java/goodgenerator/loader/Loaders.java @@ -43,7 +43,6 @@ import goodgenerator.blocks.tileEntity.YottaFluidTank; 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 class Loaders { } GTMetaTileRegister(); initLoadRec