aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/goodgenerator/blocks/tileEntity/NeutronActivator.java
diff options
context:
space:
mode:
authorYang Xizhi <60341015+GlodBlock@users.noreply.github.com>2023-03-16 06:36:51 +0800
committerGitHub <noreply@github.com>2023-03-15 23:36:51 +0100
commit1d25115add66a6fa74984da931948b6139300931 (patch)
tree3f7857f59f9cf14fd3992051ad72c8f3c2a262d7 /src/main/java/goodgenerator/blocks/tileEntity/NeutronActivator.java
parent9b4b07f808499bc83804578c91089b2bbd49c4fb (diff)
downloadGT5-Unofficial-1d25115add66a6fa74984da931948b6139300931.tar.gz
GT5-Unofficial-1d25115add66a6fa74984da931948b6139300931.tar.bz2
GT5-Unofficial-1d25115add66a6fa74984da931948b6139300931.zip
add batch mode for neutron activator (#141)
* batch mode for neutron activator * sa * requset change * Fix typo (#142) (#143) Co-authored-by: LewisSaber <39595617+LewisSaber@users.noreply.github.com> --------- Co-authored-by: Martin Robertz <dream-master@gmx.net> Co-authored-by: LewisSaber <39595617+LewisSaber@users.noreply.github.com>
Diffstat (limited to 'src/main/java/goodgenerator/blocks/tileEntity/NeutronActivator.java')
-rw-r--r--src/main/java/goodgenerator/blocks/tileEntity/NeutronActivator.java55
1 files changed, 48 insertions, 7 deletions
diff --git a/src/main/java/goodgenerator/blocks/tileEntity/NeutronActivator.java b/src/main/java/goodgenerator/blocks/tileEntity/NeutronActivator.java
index 72b2a7db52..c1bc679903 100644
--- a/src/main/java/goodgenerator/blocks/tileEntity/NeutronActivator.java
+++ b/src/main/java/goodgenerator/blocks/tileEntity/NeutronActivator.java
@@ -1,5 +1,7 @@
package goodgenerator.blocks.tileEntity;
+import static com.github.bartimaeusnek.bartworks.util.RecipeFinderForParallel.getMultiOutput;
+import static com.github.bartimaeusnek.bartworks.util.RecipeFinderForParallel.handleParallelRecipe;
import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
import static goodgenerator.util.DescTextLocalization.BLUE_PRINT_INFO;
import static gregtech.api.util.GT_StructureUtility.buildHatchAdder;
@@ -8,6 +10,7 @@ import static gregtech.api.util.GT_StructureUtility.ofFrame;
import java.util.*;
import net.minecraft.block.Block;
+import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
@@ -15,6 +18,7 @@ import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.StatCollector;
import net.minecraftforge.fluids.FluidStack;
+import com.github.bartimaeusnek.bartworks.util.Pair;
import com.gtnewhorizon.structurelib.alignment.constructable.IConstructable;
import com.gtnewhorizon.structurelib.alignment.constructable.ISurvivalConstructable;
import com.gtnewhorizon.structurelib.structure.IItemSource;
@@ -57,6 +61,7 @@ public class NeutronActivator extends GT_MetaTileEntity_TooltipMultiBlockBase_EM
protected int casingAmount = 0;
protected int height = 0;
protected int eV = 0, mCeil = 0, mFloor = 0;
+ private GT_Recipe lastRecipe;
final XSTR R = new XSTR();
private static final IIconContainer textureFontOn = new Textures.BlockIcons.CustomIcon("icons/NeutronActivator_On");
@@ -117,16 +122,35 @@ public class NeutronActivator extends GT_MetaTileEntity_TooltipMultiBlockBase_EM
ItemStack[] inItems = tItems.toArray(new ItemStack[0]);
int minNKE, maxNKE;
- for (GT_Recipe recipe : tRecipes) {
- minNKE = (recipe.mSpecialValue % 10000) * 1000000;
- maxNKE = (recipe.mSpecialValue / 10000) * 1000000;
- if (recipe.isRecipeInputEqual(true, inFluids, inItems)) {
+ lastRecipe = getRecipeMap()
+ .findRecipe(this.getBaseMetaTileEntity(), lastRecipe, false, Integer.MAX_VALUE, inFluids, inItems);
+
+ if (lastRecipe != null) {
+ minNKE = (lastRecipe.mSpecialValue % 10000) * 1000000;
+ maxNKE = (lastRecipe.mSpecialValue / 10000) * 1000000;
+ if (batchMode) {
+ int pall = handleParallelRecipe(lastRecipe, inFluids, inItems, 128);
+ if (pall > 0) {
+ mFloor = minNKE;
+ mCeil = maxNKE;
+ mMaxProgresstime = Math.max((int) (lastRecipe.mDuration * pall * Math.pow(0.9, height - 4)), 1);
+ Pair<ArrayList<FluidStack>, ArrayList<ItemStack>> Outputs = getMultiOutput(this.lastRecipe, pall);
+ if (eV <= maxNKE && eV >= minNKE) {
+ this.mOutputFluids = Outputs.getKey().toArray(new FluidStack[0]);
+ this.mOutputItems = Outputs.getValue().toArray(new ItemStack[0]);
+ } else {
+ this.mOutputFluids = null;
+ this.mOutputItems = new ItemStack[] { ItemRefer.Radioactive_Waste.get(4) };
+ }
+ return true;
+ }
+ } else if (lastRecipe.isRecipeInputEqual(true, inFluids, inItems)) {
mFloor = minNKE;
mCeil = maxNKE;
- mMaxProgresstime = Math.max((int) (recipe.mDuration * Math.pow(0.9, height - 4)), 1);
+ mMaxProgresstime = Math.max((int) (lastRecipe.mDuration * Math.pow(0.9, height - 4)), 1);
if (eV <= maxNKE && eV >= minNKE) {
- this.mOutputFluids = recipe.mFluidOutputs;
- this.mOutputItems = recipe.mOutputs;
+ this.mOutputFluids = lastRecipe.mFluidOutputs;
+ this.mOutputItems = lastRecipe.mOutputs;
} else {
this.mOutputFluids = null;
this.mOutputItems = new ItemStack[] { ItemRefer.Radioactive_Waste.get(4) };
@@ -138,6 +162,18 @@ public class NeutronActivator extends GT_MetaTileEntity_TooltipMultiBlockBase_EM
}
@Override
+ public boolean onWireCutterRightClick(byte aSide, byte aWrenchingSide, EntityPlayer aPlayer, float aX, float aY,
+ float aZ) {
+ batchMode = !batchMode;
+ if (batchMode) {
+ GT_Utility.sendChatToPlayer(aPlayer, StatCollector.translateToLocal("misc.BatchModeTextOn"));
+ } else {
+ GT_Utility.sendChatToPlayer(aPlayer, StatCollector.translateToLocal("misc.BatchModeTextOff"));
+ }
+ return true;
+ }
+
+ @Override
public int getMaxEfficiency(ItemStack aStack) {
return 10000;
}
@@ -165,6 +201,11 @@ public class NeutronActivator extends GT_MetaTileEntity_TooltipMultiBlockBase_EM
super.saveNBTData(aNBT);
}
+ @Override
+ public GT_Recipe.GT_Recipe_Map getRecipeMap() {
+ return MyRecipeAdder.instance.NA;
+ }
+
protected GT_Multiblock_Tooltip_Builder createTooltip() {
final GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
tt.addMachineType("Neutron Activator").addInfo("Controller block for the Neutron Activator")