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 +++++++++++-- 5 files changed, 103 insertions(+), 15 deletions(-) (limited to 'src/main/java') 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); } } -- cgit