From 157de8bbb03c3ed007c21a78017f2a3911ec16dc Mon Sep 17 00:00:00 2001 From: GlodBlock <1356392126@qq.com> Date: Tue, 20 Apr 2021 00:11:21 +0800 Subject: use GT_Recipe_Map to add generator recipes --- .../GoodGenerator/Blocks/TEs/MultiNqGenerator.java | 79 ++++++++++------------ .../GoodGenerator/Loader/FuelRecipeLoader.java | 12 ++++ .../java/GoodGenerator/Main/GoodGenerator.java | 2 + .../java/GoodGenerator/util/MyRecipeAdder.java | 44 ++++++++++++ .../resources/assets/goodgenerator/lang/en_US.lang | 4 +- 5 files changed, 95 insertions(+), 46 deletions(-) create mode 100644 src/main/java/GoodGenerator/Loader/FuelRecipeLoader.java create mode 100644 src/main/java/GoodGenerator/util/MyRecipeAdder.java (limited to 'src/main') diff --git a/src/main/java/GoodGenerator/Blocks/TEs/MultiNqGenerator.java b/src/main/java/GoodGenerator/Blocks/TEs/MultiNqGenerator.java index cfba9d3900..fb00965600 100644 --- a/src/main/java/GoodGenerator/Blocks/TEs/MultiNqGenerator.java +++ b/src/main/java/GoodGenerator/Blocks/TEs/MultiNqGenerator.java @@ -3,6 +3,7 @@ package GoodGenerator.Blocks.TEs; import GoodGenerator.Items.MyMaterial; import GoodGenerator.Loader.Loaders; import GoodGenerator.Main.GoodGenerator; +import GoodGenerator.util.MyRecipeAdder; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import gregtech.api.GregTech_API; @@ -14,6 +15,7 @@ import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase; import gregtech.api.objects.GT_RenderedTexture; import gregtech.api.util.GT_Multiblock_Tooltip_Builder; +import gregtech.api.util.GT_Recipe; import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; @@ -23,6 +25,7 @@ import net.minecraftforge.fluids.FluidStack; import org.lwjgl.input.Keyboard; import java.util.ArrayList; +import java.util.Collection; public class MultiNqGenerator extends GT_MetaTileEntity_MultiBlockBase { @@ -47,6 +50,7 @@ public class MultiNqGenerator extends GT_MetaTileEntity_MultiBlockBase { public boolean checkRecipe(ItemStack aStack) { ArrayList tFluids = getStoredFluids(); + Collection tRecipes = MyRecipeAdder.instance.NqGFuels.mRecipeList; FluidStack f1=null,f2=null; float booster = 1.0f; @@ -81,52 +85,37 @@ public class MultiNqGenerator extends GT_MetaTileEntity_MultiBlockBase { } } - if(tFluids.size()>0){ - if(tFluids.contains(Materials.NaquadahEnriched.getMolten(times)) && tFluids.get(tFluids.indexOf(Materials.NaquadahEnriched.getMolten(times))).amount >= times){ - if(f1 != null) - depleteInput(f1); - if(f2 != null) - depleteInput(f2); - if(mRuntime == 0 || mRuntime%1200 == 0){ - depleteInput(Materials.NaquadahEnriched.getMolten(times)); - this.mOutputFluids = new FluidStack[]{Materials.Naquadah.getMolten(times)}; - } - else this.mOutputFluids = null; - if(tFluids.contains(Materials.LiquidAir.getFluid(120)) && tFluids.get(tFluids.indexOf(Materials.LiquidAir.getFluid(120))).amount >= 120){ - depleteInput(Materials.LiquidAir.getFluid(120)); - addEnergyOutput((long)(32768*times*booster)); - this.mEUt = (int)(32768*times*booster); - } - else{ - addEnergyOutput(0); - this.mEUt = 0; - } - this.mProgresstime = 1; - this.mMaxProgresstime = 1; - return true; - } - if(tFluids.contains(Materials.Naquadria.getMolten(times)) && tFluids.get(tFluids.indexOf(Materials.Naquadria.getMolten(times))).amount >= times){ - if(f1 != null) - depleteInput(f1); - if(f2 != null) - depleteInput(f2); - if(mRuntime == 0 || mRuntime%100 == 0){ - depleteInput(Materials.Naquadria.getMolten(times)); - this.mOutputFluids = new FluidStack[]{Materials.Naquadah.getMolten(times)}; - } - else this.mOutputFluids = null; - if(tFluids.contains(Materials.LiquidAir.getFluid(120)) && tFluids.get(tFluids.indexOf(Materials.LiquidAir.getFluid(120))).amount >= 120){ - depleteInput(Materials.LiquidAir.getFluid(120)); - addEnergyOutput((long)(262144*times*booster)); - this.mEUt = (int)(262144*times*booster); - } - else{ - addEnergyOutput(0); - this.mEUt = 0; + if (tFluids.size()>0 && tRecipes != null){ + for (GT_Recipe recipe : tRecipes){ + FluidStack recipeFluid = recipe.mFluidInputs[0].copy(); + FluidStack recipeFluidOut = recipe.mFluidOutputs[0].copy(); + recipeFluid.amount = times; + recipeFluidOut.amount = times; + int lasting = recipe.mDuration; + int outputEU = recipe.mSpecialValue; + if (tFluids.contains(recipeFluid) && tFluids.get(tFluids.indexOf(recipeFluid)).amount >= times){ + if(f1 != null) + depleteInput(f1); + if(f2 != null) + depleteInput(f2); + if (mRuntime == 0 || mRuntime%lasting == 0){ + depleteInput(recipeFluid); + this.mOutputFluids = new FluidStack[]{recipeFluidOut}; + } + else this.mOutputFluids = null; + if (tFluids.contains(Materials.LiquidAir.getFluid(120)) && tFluids.get(tFluids.indexOf(Materials.LiquidAir.getFluid(120))).amount >= 120){ + depleteInput(Materials.LiquidAir.getFluid(120)); + addEnergyOutput((long)(outputEU*times*booster)); + this.mEUt = (int)(outputEU*times*booster); + } + else{ + addEnergyOutput(0); + this.mEUt = 0; + } + this.mProgresstime = 1; + this.mMaxProgresstime = 1; + return true; } - this.mProgresstime = 1; - this.mMaxProgresstime = 1; - return true; } } this.mEUt = 0; diff --git a/src/main/java/GoodGenerator/Loader/FuelRecipeLoader.java b/src/main/java/GoodGenerator/Loader/FuelRecipeLoader.java new file mode 100644 index 0000000000..82e6f3201f --- /dev/null +++ b/src/main/java/GoodGenerator/Loader/FuelRecipeLoader.java @@ -0,0 +1,12 @@ +package GoodGenerator.Loader; + +import GoodGenerator.util.MyRecipeAdder; +import gregtech.api.enums.Materials; + +public class FuelRecipeLoader { + public static void RegisterFuel(){ + MyRecipeAdder.instance.addLiquidMentalFuel(Materials.NaquadahEnriched.getMolten(1L),Materials.Naquadah.getMolten(1L),32768,1200); + MyRecipeAdder.instance.addLiquidMentalFuel(Materials.Naquadria.getMolten(1L),Materials.Naquadah.getMolten(1L),262144,100); + } + +} diff --git a/src/main/java/GoodGenerator/Main/GoodGenerator.java b/src/main/java/GoodGenerator/Main/GoodGenerator.java index c674b8b6b6..4751270c4f 100644 --- a/src/main/java/GoodGenerator/Main/GoodGenerator.java +++ b/src/main/java/GoodGenerator/Main/GoodGenerator.java @@ -2,6 +2,7 @@ package GoodGenerator.Main; import GoodGenerator.Common.CommonProxy; import GoodGenerator.Items.MyMaterial; +import GoodGenerator.Loader.FuelRecipeLoader; import GoodGenerator.Loader.Loaders; import GoodGenerator.Loader.RecipeLoader; import GoodGenerator.Tabs.MyTabs; @@ -37,6 +38,7 @@ public final class GoodGenerator { proxy.init(event); Loaders.Register(); RecipeLoader.RecipeLoad(); + FuelRecipeLoader.RegisterFuel(); } @Mod.EventHandler public static void postInit(FMLPostInitializationEvent event){ diff --git a/src/main/java/GoodGenerator/util/MyRecipeAdder.java b/src/main/java/GoodGenerator/util/MyRecipeAdder.java new file mode 100644 index 0000000000..7b72ec68f3 --- /dev/null +++ b/src/main/java/GoodGenerator/util/MyRecipeAdder.java @@ -0,0 +1,44 @@ +package GoodGenerator.util; + +import gregtech.api.util.GT_Recipe; +import net.minecraft.util.StatCollector; +import net.minecraftforge.fluids.FluidStack; + +import java.util.Collection; +import java.util.HashSet; + +public class MyRecipeAdder { + + public static final MyRecipeAdder instance = new MyRecipeAdder(); + + public final liquidMentalFuelMapper NqGFuels = new liquidMentalFuelMapper( + new HashSet<>(50), + "gg.recipe.naquadah_reactor", + StatCollector.translateToLocal("tile.recipe.naquadah_reactor"), + null, + "gregtech:textures/gui/basicmachines/Default", + 0,0,1,1,1, + "Basic Output Voltage: ", + 1, + " EU/t", + false, + true + ); + + public static class liquidMentalFuelMapper extends GT_Recipe.GT_Recipe_Map_Fuel{ + int lasting = 0; + + 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 GT_Recipe addFuel(FluidStack input,FluidStack output,int EUt,int ticks){ + lasting = ticks; + return super.addRecipe(true,null,null,null,new FluidStack[]{input},new FluidStack[]{output},ticks,0,EUt); + } + } + + public boolean addLiquidMentalFuel(FluidStack input,FluidStack output,int EUt,int ticks){ + return NqGFuels.addFuel(input,output,EUt,ticks)!=null; + } +} diff --git a/src/main/resources/assets/goodgenerator/lang/en_US.lang b/src/main/resources/assets/goodgenerator/lang/en_US.lang index a1e9c91845..c7e0b0bc16 100644 --- a/src/main/resources/assets/goodgenerator/lang/en_US.lang +++ b/src/main/resources/assets/goodgenerator/lang/en_US.lang @@ -6,4 +6,6 @@ item.wrappedUraniumIngot.name=Wrapped Uranium Ingot item.highDensityUraniumNugget.name=High Density Uranium Nugget item.highDensityUranium.name=High Density Uranium -itemGroup.Good Generator=Good Generator \ No newline at end of file +itemGroup.Good Generator=Good Generator + +tile.recipe.naquadah_reactor=Large Naquadah Reactor \ No newline at end of file -- cgit