From 28e0e9ce198be374e6dc951dc9389c3fb34a0cff Mon Sep 17 00:00:00 2001 From: Boblet Date: Fri, 5 Nov 2021 15:09:03 +0100 Subject: [PATCH] RBMK profiling, fixed moderated rods reflecting, cleaned up RadGen fuels --- .../machine/TileEntityMachineRadGen.java | 79 +++++++++---------- .../machine/rbmk/TileEntityRBMKBase.java | 13 ++- .../machine/rbmk/TileEntityRBMKConsole.java | 4 + .../machine/rbmk/TileEntityRBMKRod.java | 6 +- 4 files changed, 55 insertions(+), 47 deletions(-) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadGen.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadGen.java index 9022b8ae1..620d307d3 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadGen.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadGen.java @@ -1,14 +1,19 @@ package com.hbm.tileentity.machine; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import com.hbm.blocks.BlockDummyable; import com.hbm.interfaces.IConsumer; import com.hbm.interfaces.ISource; +import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; +import com.hbm.items.special.ItemWasteLong; +import com.hbm.items.special.ItemWasteShort; import com.hbm.lib.Library; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.Tuple.Triplet; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -202,57 +207,45 @@ public class TileEntityMachineRadGen extends TileEntityMachineBase implements IS return i >= 12; } - private int getPowerFromItem(ItemStack stack) { - Item item = stack.getItem(); + public static final HashMap> fuels = new HashMap(); + + static { - if(item == ModItems.nuclear_waste_short) - return 150; - if(item == ModItems.nuclear_waste_long) - return 50; - - if(item == ModItems.nuclear_waste_short_tiny) - return 15; - if(item == ModItems.nuclear_waste_long_tiny) - return 5; - - if(item == ModItems.scrap_nuclear) - return 5; + for(int i = 0; i < ItemWasteShort.WasteClass.values().length; i++) { + fuels.put( new ComparableStack(ModItems.nuclear_waste_short, 1, i), new Triplet(150, 30 * 60 * 20, new ItemStack(ModItems.nuclear_waste_short_depleted, 1, i))); + fuels.put( new ComparableStack(ModItems.nuclear_waste_short_tiny, 1, i), new Triplet(15, 3 * 60 * 20, new ItemStack(ModItems.nuclear_waste_short_depleted_tiny, 1, i))); + } + for(int i = 0; i < ItemWasteLong.WasteClass.values().length; i++) { + fuels.put( new ComparableStack(ModItems.nuclear_waste_long, 1, i), new Triplet(50, 2 * 60 * 60 * 20, new ItemStack(ModItems.nuclear_waste_long_depleted, 1, i))); + fuels.put( new ComparableStack(ModItems.nuclear_waste_long_tiny, 1, i), new Triplet(5, 12 * 60 * 20, new ItemStack(ModItems.nuclear_waste_long_depleted_tiny, 1, i))); + } - return 0; + fuels.put( new ComparableStack(ModItems.scrap_nuclear), new Triplet(5, 5 * 60 * 20, null)); + } + + private Triplet grabResult(ItemStack stack) { + return fuels.get(new ComparableStack(stack).makeSingular()); + } + + private int getPowerFromItem(ItemStack stack) { + Triplet result = grabResult(stack); + if(result == null) + return 0; + return result.getX(); } private int getDurationFromItem(ItemStack stack) { - Item item = stack.getItem(); - - if(item == ModItems.nuclear_waste_short) - return 30 * 60 * 20; - if(item == ModItems.nuclear_waste_long) - return 2 * 60 * 60 * 20; - - if(item == ModItems.nuclear_waste_short_tiny) - return 3 * 60 * 20; - if(item == ModItems.nuclear_waste_long_tiny) - return 12 * 60 * 20; - - if(item == ModItems.scrap_nuclear) - return 5 * 60 * 20; - - return 0; + Triplet result = grabResult(stack); + if(result == null) + return 0; + return result.getY(); } private ItemStack getOutputFromItem(ItemStack stack) { - Item item = stack.getItem(); - - if(item == ModItems.nuclear_waste_short) - return new ItemStack(ModItems.nuclear_waste_short_depleted, 1, stack.getItemDamage()); - if(item == ModItems.nuclear_waste_long) - return new ItemStack(ModItems.nuclear_waste_long_depleted, 1, stack.getItemDamage()); - if(item == ModItems.nuclear_waste_short_tiny) - return new ItemStack(ModItems.nuclear_waste_short_depleted_tiny, 1, stack.getItemDamage()); - if(item == ModItems.nuclear_waste_long_tiny) - return new ItemStack(ModItems.nuclear_waste_long_depleted_tiny, 1, stack.getItemDamage()); - - return null; + Triplet result = grabResult(stack); + if(result == null) + return null; + return result.getZ(); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java index 13d0f79c7..812d0c344 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java @@ -68,7 +68,7 @@ public abstract class TileEntityRBMKBase extends TileEntity implements INBTPacke /** * Approx melting point of steel - * This metric won't be used because fuel tends to melt much earlier than that + * Fuels often burn much hotter than this but it won't affect the column too much due to low diffusion * @return */ public double maxHeat() { @@ -88,6 +88,7 @@ public abstract class TileEntityRBMKBase extends TileEntity implements INBTPacke return true; } + //unused public int trackingRange() { return 25; } @@ -96,9 +97,17 @@ public abstract class TileEntityRBMKBase extends TileEntity implements INBTPacke public void updateEntity() { if(!worldObj.isRemote) { + + this.worldObj.theProfiler.startSection("rbmkBase_heat_movement"); moveHeat(); - if(RBMKDials.getReasimBoilers(worldObj)) boilWater(); + if(RBMKDials.getReasimBoilers(worldObj)) { + this.worldObj.theProfiler.endStartSection("rbmkBase_reasim_boilers"); + boilWater(); + } + + this.worldObj.theProfiler.endStartSection("rbmkBase_rpassive_cooling"); coolPassively(); + this.worldObj.theProfiler.endSection(); NBTTagCompound data = new NBTTagCompound(); this.writeToNBT(data); diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java index cab900e44..27e253eda 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java @@ -46,7 +46,11 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon if(!worldObj.isRemote) { if(this.worldObj.getTotalWorldTime() % 10 == 0) { + + this.worldObj.theProfiler.startSection("rbmkConsole_rescan"); rescan(); + this.worldObj.theProfiler.endSection(); + prepareNetworkPack(); } } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java index 86e20cc15..b8086e6de 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java @@ -78,8 +78,10 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM //for spreading, we want the buffered flux to be 0 because we want to know exactly how much gets reflected back this.fluxFast = 0; this.fluxSlow = 0; - + + this.worldObj.theProfiler.startSection("rbmkRod_flux_spread"); spreadFlux(rType, fluxOut); + this.worldObj.theProfiler.endSection(); hasRod = true; @@ -192,7 +194,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM //return the neutrons back to this with no further action required if(te instanceof TileEntityRBMKReflector) { - this.receiveFlux(stream, flux); + this.receiveFlux(this.isModerated() ? NType.SLOW : stream, flux); return 0; }