From c5ed533e90322f598d693f145010336c6c0edf29 Mon Sep 17 00:00:00 2001 From: GlodBlock <1356392126@qq.com> Date: Sun, 16 May 2021 21:26:26 +0800 Subject: add recipe check for FRF --- .../Blocks/TEs/FuelRefineFactory.java | 66 ++++++++++++++++++++- .../GoodGenerator/Loader/FuelRecipeLoader.java | 5 +- .../java/GoodGenerator/Loader/RecipeLoader.java | 2 +- .../java/GoodGenerator/util/CrackRecipeAdder.java | 6 +- .../java/GoodGenerator/util/MyRecipeAdder.java | 39 ++++++++++-- .../resources/assets/goodgenerator/lang/en_US.lang | 3 +- .../textures/gui/naquadah_reactor.png | Bin 0 -> 3376 bytes 7 files changed, 105 insertions(+), 16 deletions(-) create mode 100644 src/main/resources/assets/goodgenerator/textures/gui/naquadah_reactor.png diff --git a/src/main/java/GoodGenerator/Blocks/TEs/FuelRefineFactory.java b/src/main/java/GoodGenerator/Blocks/TEs/FuelRefineFactory.java index 329912935b..aeb8027486 100644 --- a/src/main/java/GoodGenerator/Blocks/TEs/FuelRefineFactory.java +++ b/src/main/java/GoodGenerator/Blocks/TEs/FuelRefineFactory.java @@ -1,6 +1,7 @@ package GoodGenerator.Blocks.TEs; import GoodGenerator.Loader.Loaders; +import GoodGenerator.util.MyRecipeAdder; import com.github.bartimaeusnek.bartworks.util.Coords; import com.github.bartimaeusnek.crossmod.tectech.TecTechEnabledMulti; import com.github.technus.tectech.mechanics.constructable.IConstructable; @@ -17,11 +18,15 @@ import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.metatileentity.implementations.*; import gregtech.api.objects.GT_RenderedTexture; +import gregtech.api.util.GT_Recipe; +import gregtech.api.util.GT_Utility; import net.minecraft.block.Block; import net.minecraft.item.ItemStack; import net.minecraft.world.World; +import net.minecraftforge.fluids.FluidStack; import java.util.ArrayList; +import java.util.Collection; import java.util.HashSet; import java.util.List; @@ -32,7 +37,7 @@ public class FuelRefineFactory extends GT_MetaTileEntity_MultiblockBase_EM imple @SideOnly(Side.CLIENT) protected String name; private IStructureDefinition multiDefinition = null; - private int Tire = -1; + private int Tier = -1; private final HashSet vis = new HashSet<>(64); public FuelRefineFactory(String name){super(name);} @@ -141,7 +146,7 @@ public class FuelRefineFactory extends GT_MetaTileEntity_MultiblockBase_EM imple vis.clear(); if (aTile.getBlockOffset(dx[i],dy[i],dz[i]) == block[j]) if (dfs(block[j], aTile.getWorld(),aTile.getXCoord() + dx[i],aTile.getYCoord() + dy[i],aTile.getZCoord() + dz[i],32)){ - Tire = j; + Tier = j; return true; } } @@ -164,11 +169,61 @@ public class FuelRefineFactory extends GT_MetaTileEntity_MultiblockBase_EM imple @Override public boolean checkMachine_EM(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) { + mWrench = true; + mScrewdriver = true; + mSoftHammer = true; + mHardHammer = true; + mSolderingTool = true; + mCrowbar = true; return structureCheck_EM(name, 7,12,1) && checkCoil(); } @Override public boolean checkRecipe_EM(ItemStack aStack){ + + ArrayList tFluids = getStoredFluids(); + ArrayList tItems = getStoredInputs(); + Collection tRecipes = MyRecipeAdder.instance.FRF.mRecipeList; + long maxVoltage = getMaxInputVoltage(); + + for (int i = 0; i < tFluids.size() - 1; i++) { + for (int j = i + 1; j < tFluids.size(); j++) { + if (GT_Utility.areFluidsEqual(tFluids.get(i), tFluids.get(j))) { + if ((tFluids.get(i)).amount >= (tFluids.get(j)).amount) { + tFluids.remove(j--); + } else { + tFluids.remove(i--); + break; + } + } + } + } + + for (int i = 0; i < tItems.size() - 1; i++) { + for (int j = i + 1; j < tItems.size(); j++) { + if (GT_Utility.areStacksEqual(tItems.get(i), tItems.get(j))) { + if ((tItems.get(i)).stackSize >= (tItems.get(j)).stackSize) { + tItems.remove(j--); + } else { + tItems.remove(i--); + break; + } + } + } + } + + for (GT_Recipe recipe : tRecipes){ + + checkCoil(); + if (recipe.mSpecialValue > Tier) continue; + + if (recipe.isRecipeInputEqual(true, tFluids.toArray(new FluidStack[tFluids.size()]), tItems.toArray(new ItemStack[tItems.size()]))){ + calculatePerfectOverclockedNessMulti(recipe.mEUt, recipe.mDuration / (Tier - recipe.mSpecialValue + 1), 1, maxVoltage); + this.mOutputFluids = recipe.mFluidOutputs; + this.updateSlots(); + return true; + } + } return false; } @@ -200,6 +255,11 @@ public class FuelRefineFactory extends GT_MetaTileEntity_MultiblockBase_EM imple } } + @Override + public boolean onRunningTick(ItemStack stack) { + return true; + } + @Override public String[] getStructureDescription(ItemStack itemStack) { return new String[0]; @@ -227,7 +287,7 @@ public class FuelRefineFactory extends GT_MetaTileEntity_MultiblockBase_EM imple @Override public boolean explodesOnComponentBreak(ItemStack aStack) { - return false; + return true; } @Override diff --git a/src/main/java/GoodGenerator/Loader/FuelRecipeLoader.java b/src/main/java/GoodGenerator/Loader/FuelRecipeLoader.java index 93f3f99bad..7e677bb706 100644 --- a/src/main/java/GoodGenerator/Loader/FuelRecipeLoader.java +++ b/src/main/java/GoodGenerator/Loader/FuelRecipeLoader.java @@ -11,8 +11,7 @@ public class FuelRecipeLoader { MyRecipeAdder.instance.addLiquidMentalFuel(MyMaterial.uraniumBasedLiquidFuelExcited.getFluidOrGas(1),MyMaterial.uraniumBasedLiquidFuelDepleted.getFluidOrGas(1),12960,100); MyRecipeAdder.instance.addLiquidMentalFuel(MyMaterial.thoriumBasedLiquidFuelExcited.getFluidOrGas(1),MyMaterial.thoriumBasedLiquidFuelDepleted.getFluidOrGas(1),4320,500); MyRecipeAdder.instance.addLiquidMentalFuel(MyMaterial.plutoniumBasedLiquidFuelExcited.getFluidOrGas(1),MyMaterial.plutoniumBasedLiquidFuelDepleted.getFluidOrGas(1),32400,150); - MyRecipeAdder.instance.addLiquidMentalFuel(MyMaterial.naquadahBasedFuelMkI.getFluidOrGas(1),MyMaterial.naquadahBasedFuelMkIDepleted.getFluidOrGas(1),96000,950); - MyRecipeAdder.instance.addLiquidMentalFuel(MyMaterial.naquadahBasedFuelMkII.getFluidOrGas(1),MyMaterial.naquadahBasedFuelMkIIDepleted.getFluidOrGas(1),145000,850); + MyRecipeAdder.instance.addLiquidMentalFuel(MyMaterial.naquadahBasedFuelMkI.getFluidOrGas(1),MyMaterial.naquadahBasedFuelMkIDepleted.getFluidOrGas(1),288000,320); + MyRecipeAdder.instance.addLiquidMentalFuel(MyMaterial.naquadahBasedFuelMkII.getFluidOrGas(1),MyMaterial.naquadahBasedFuelMkIIDepleted.getFluidOrGas(1),1276000,100); } - } diff --git a/src/main/java/GoodGenerator/Loader/RecipeLoader.java b/src/main/java/GoodGenerator/Loader/RecipeLoader.java index 0622269a86..4d57b75716 100644 --- a/src/main/java/GoodGenerator/Loader/RecipeLoader.java +++ b/src/main/java/GoodGenerator/Loader/RecipeLoader.java @@ -36,7 +36,7 @@ public class RecipeLoader { ItemList.Field_Generator_ZPM.get(2), ItemList.Electric_Pump_UV.get(2), GT_OreDictUnificator.get(OrePrefixes.circuit,Materials.Infinite,2), - GT_OreDictUnificator.get(OrePrefixes.wireGt08,Materials.SuperconductorUV,8), + GT_OreDictUnificator.get(OrePrefixes.wireGt08,Materials.SuperconductorLuV,8), GT_OreDictUnificator.get(OrePrefixes.pipeHuge,Materials.Lead,4), GT_OreDictUnificator.get(OrePrefixes.plate,Materials.NaquadahAlloy,8), GT_OreDictUnificator.get(OrePrefixes.screw,Materials.Osmium,16) diff --git a/src/main/java/GoodGenerator/util/CrackRecipeAdder.java b/src/main/java/GoodGenerator/util/CrackRecipeAdder.java index 3d3e3a356c..2c74128073 100644 --- a/src/main/java/GoodGenerator/util/CrackRecipeAdder.java +++ b/src/main/java/GoodGenerator/util/CrackRecipeAdder.java @@ -26,7 +26,7 @@ public class CrackRecipeAdder { actOutput[j] = new FluidStack(tmp1, tmp2); } - GT_Values.RA.addUniversalDistillationRecipe(FluidRegistry.getFluidStack("lightlycracked"+name,1000),actOutput,outputItem,2400,7680); + GT_Values.RA.addUniversalDistillationRecipe(FluidRegistry.getFluidStack("lightlycracked"+name,1000),actOutput,outputItem,120,7680); for ( int i = num - 1, j = 0; i >= 0; i --, j ++ ){ Fluid tmp1 = outputFluids[i].getFluid(); @@ -34,7 +34,7 @@ public class CrackRecipeAdder { actOutput[j] = new FluidStack(tmp1, tmp2); } - GT_Values.RA.addUniversalDistillationRecipe(FluidRegistry.getFluidStack("moderatelycracked"+name,1000),actOutput,outputItem,2400,7680); + GT_Values.RA.addUniversalDistillationRecipe(FluidRegistry.getFluidStack("moderatelycracked"+name,1000),actOutput,outputItem,120,7680); for ( int i = num - 1, j = 0; i >= 0; i --, j ++ ){ Fluid tmp1 = outputFluids[i].getFluid(); @@ -42,6 +42,6 @@ public class CrackRecipeAdder { actOutput[j] = new FluidStack(tmp1, tmp2); } - GT_Values.RA.addUniversalDistillationRecipe(FluidRegistry.getFluidStack("heavilycracked"+name,1000),actOutput,outputItem,2400,7680); + GT_Values.RA.addUniversalDistillationRecipe(FluidRegistry.getFluidStack("heavilycracked"+name,1000),actOutput,outputItem,120,7680); } } diff --git a/src/main/java/GoodGenerator/util/MyRecipeAdder.java b/src/main/java/GoodGenerator/util/MyRecipeAdder.java index 7b72ec68f3..4bb42288cc 100644 --- a/src/main/java/GoodGenerator/util/MyRecipeAdder.java +++ b/src/main/java/GoodGenerator/util/MyRecipeAdder.java @@ -1,6 +1,7 @@ package GoodGenerator.util; import gregtech.api.util.GT_Recipe; +import net.minecraft.item.ItemStack; import net.minecraft.util.StatCollector; import net.minecraftforge.fluids.FluidStack; @@ -16,7 +17,7 @@ public class MyRecipeAdder { "gg.recipe.naquadah_reactor", StatCollector.translateToLocal("tile.recipe.naquadah_reactor"), null, - "gregtech:textures/gui/basicmachines/Default", + "goodgenerator:textures/gui/naquadah_reactor", 0,0,1,1,1, "Basic Output Voltage: ", 1, @@ -25,6 +26,20 @@ public class MyRecipeAdder { 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/Default", + 6,0, 0, 1, 1, + "Need Tier ", + 1, + " Coil", + true, + true + ); + public static class liquidMentalFuelMapper extends GT_Recipe.GT_Recipe_Map_Fuel{ int lasting = 0; @@ -32,13 +47,27 @@ public class MyRecipeAdder { 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){ + public void 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); + 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); + } + + 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); } } - public boolean addLiquidMentalFuel(FluidStack input,FluidStack output,int EUt,int ticks){ - return NqGFuels.addFuel(input,output,EUt,ticks)!=null; + public void addNaquadahFuelRefineRecipe(FluidStack[] input1, ItemStack[] input2, FluidStack output, int EUt, int ticks, int tier){ + FRF.addNaqFuelRefineRecipe(input1, input2, output, EUt, ticks, tier); } } diff --git a/src/main/resources/assets/goodgenerator/lang/en_US.lang b/src/main/resources/assets/goodgenerator/lang/en_US.lang index 053de6dc13..9130780645 100644 --- a/src/main/resources/assets/goodgenerator/lang/en_US.lang +++ b/src/main/resources/assets/goodgenerator/lang/en_US.lang @@ -47,4 +47,5 @@ tile.heavilyCrackedNaquadahAsphalt.name=Severely Cracked Naquadah Asphalt itemGroup.Good Generator=Good Generator -tile.recipe.naquadah_reactor=Large Naquadah Reactor \ No newline at end of file +tile.recipe.naquadah_reactor=Large Naquadah Reactor +tile.naquadah_fuel_refine_factory=Naquadah Fuel Refine Factory \ No newline at end of file diff --git a/src/main/resources/assets/goodgenerator/textures/gui/naquadah_reactor.png b/src/main/resources/assets/goodgenerator/textures/gui/naquadah_reactor.png new file mode 100644 index 0000000000..f2cbb5ffe0 Binary files /dev/null and b/src/main/resources/assets/goodgenerator/textures/gui/naquadah_reactor.png differ -- cgit