Merge branch 'HbmMods:master' into master

This commit is contained in:
Raaaaaaaaaay 2026-03-06 16:01:01 +02:00 committed by GitHub
commit 7ecdb61226
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 14 additions and 37 deletions

View File

@ -42,6 +42,10 @@
* In a 5x5 square around the cooler, all components are cooled down by 200°C per tick, down to a minimum of 20°C * In a 5x5 square around the cooler, all components are cooled down by 200°C per tick, down to a minimum of 20°C
* This renders that section of the reactor unsuitable for boiling water, however it means very high heat fuels can be used * This renders that section of the reactor unsuitable for boiling water, however it means very high heat fuels can be used
* Cold PFM is used up at a steady rate, even if the reactor is already cold * Cold PFM is used up at a steady rate, even if the reactor is already cold
* The RBMK structural column recipe now uses only half as many metal plates, and rubber instead of insulator
* Changed the way reasim RBMK fuel channels work
* Instead of six randomized neutron streams, reasim rods now use eight half strength streams in an even star pattern
* The pattern is rotated in a random multiple of 9° (i.e. four possible angle variations)
## Fixed ## Fixed
* Fixed NBTStack serialization omitting the stack size most of the time, preventing deserialization (mainly in the precision assembler config) * Fixed NBTStack serialization omitting the stack size most of the time, preventing deserialization (mainly in the precision assembler config)
@ -53,3 +57,4 @@
* Fixed RBMK control rods incorrectly showing up in the red group when no group is set * Fixed RBMK control rods incorrectly showing up in the red group when no group is set
* Fixed fluid output direction being incorrect on boilers, causing them to break with pipe anchors * Fixed fluid output direction being incorrect on boilers, causing them to break with pipe anchors
* Fixed an issue where the industrial turbine's tendency to round up the possible operation counter would cause it to use up steam it doesn't actually have * Fixed an issue where the industrial turbine's tendency to round up the possible operation counter would cause it to use up steam it doesn't actually have
* Fixed yet another issue with the settings tool when copying automatic control rod settings

View File

@ -510,7 +510,7 @@ public class AssemblyMachineRecipes extends GenericRecipes<GenericRecipe> {
.inputItems(new OreDictStack(STEEL.shell(), 4), new OreDictStack(STEEL.pipe(), 8), new OreDictStack(B.ingot(), 8), new OreDictStack(GRAPHITE.ingot(), 16), new OreDictStack(RUBBER.ingot(), 16), new OreDictStack(ANY_CONCRETE.any(), 16), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BASIC)) .inputItems(new OreDictStack(STEEL.shell(), 4), new OreDictStack(STEEL.pipe(), 8), new OreDictStack(B.ingot(), 8), new OreDictStack(GRAPHITE.ingot(), 16), new OreDictStack(RUBBER.ingot(), 16), new OreDictStack(ANY_CONCRETE.any(), 16), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BASIC))
.inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.LEAD_PLATING), new OreDictStack(GRAPHITE.ingot(), 16), new OreDictStack(RUBBER.ingot(), 16), new OreDictStack(ANY_CONCRETE.any(), 16), new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.CIRCUIT))); .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.LEAD_PLATING), new OreDictStack(GRAPHITE.ingot(), 16), new OreDictStack(RUBBER.ingot(), 16), new OreDictStack(ANY_CONCRETE.any(), 16), new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.CIRCUIT)));
this.register(new GenericRecipe("ass.rbmk").setup(100, 100).outputItems(new ItemStack(ModBlocks.rbmk_blank, 1)) this.register(new GenericRecipe("ass.rbmk").setup(100, 100).outputItems(new ItemStack(ModBlocks.rbmk_blank, 1))
.inputItems(new ComparableStack(ModBlocks.concrete_asbestos, 4), new OreDictStack(STEEL.plateCast(), 4), new OreDictStack(CU.plate(), 8), new ComparableStack(ModItems.plate_polymer, 4)) .inputItems(new ComparableStack(ModBlocks.concrete_asbestos, 4), new OreDictStack(STEEL.plateCast(), 2), new OreDictStack(CU.plate(), 4), new OreDictStack(RUBBER.ingot(), 2))
.inputItemsEx(new ComparableStack(ModBlocks.concrete_asbestos, 4), new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.FERRO_PLATING), new OreDictStack(CU.plate(), 16)) .inputItemsEx(new ComparableStack(ModBlocks.concrete_asbestos, 4), new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.FERRO_PLATING), new OreDictStack(CU.plate(), 16))
.setPools528(GenericRecipes.POOL_PREFIX_528 + "ferrouranium")); .setPools528(GenericRecipes.POOL_PREFIX_528 + "ferrouranium"));
this.register(new GenericRecipe("ass.rbmkautoloader").setup(100, 100).outputItems(new ItemStack(ModBlocks.rbmk_autoloader, 1)) this.register(new GenericRecipe("ass.rbmkautoloader").setup(100, 100).outputItems(new ItemStack(ModBlocks.rbmk_autoloader, 1))

View File

@ -30,8 +30,6 @@ public class RBMKDials {
KEY_SURGE_MOD("dialControlSurgeMod", 1.0), KEY_SURGE_MOD("dialControlSurgeMod", 1.0),
KEY_FLUX_RANGE("dialFluxRange", 5), KEY_FLUX_RANGE("dialFluxRange", 5),
KEY_REASIM_RANGE("dialReasimRange", 10), KEY_REASIM_RANGE("dialReasimRange", 10),
KEY_REASIM_COUNT("dialReasimCount", 6),
KEY_REASIM_MOD("dialReasimOutputMod", 1.0),
KEY_REASIM_BOILERS("dialReasimBoilers", false), KEY_REASIM_BOILERS("dialReasimBoilers", false),
KEY_REASIM_BOILER_SPEED("dialReasimBoilerSpeed", 0.05), KEY_REASIM_BOILER_SPEED("dialReasimBoilerSpeed", 0.05),
KEY_DISABLE_MELTDOWNS("dialDisableMeltdowns", false), KEY_DISABLE_MELTDOWNS("dialDisableMeltdowns", false),
@ -104,8 +102,6 @@ public class RBMKDials {
gameRules.get(RBMKKeys.KEY_SURGE_MOD).add(new Tuple.Pair<>(world, GameRuleHelper.getDoubleMinimum(world, RBMKKeys.KEY_SURGE_MOD, 0.0D))); gameRules.get(RBMKKeys.KEY_SURGE_MOD).add(new Tuple.Pair<>(world, GameRuleHelper.getDoubleMinimum(world, RBMKKeys.KEY_SURGE_MOD, 0.0D)));
gameRules.get(RBMKKeys.KEY_FLUX_RANGE).add(new Tuple.Pair<>(world, GameRuleHelper.getClampedInt(world, RBMKKeys.KEY_FLUX_RANGE, 1, 100))); gameRules.get(RBMKKeys.KEY_FLUX_RANGE).add(new Tuple.Pair<>(world, GameRuleHelper.getClampedInt(world, RBMKKeys.KEY_FLUX_RANGE, 1, 100)));
gameRules.get(RBMKKeys.KEY_REASIM_RANGE).add(new Tuple.Pair<>(world, GameRuleHelper.getClampedInt(world, RBMKKeys.KEY_REASIM_RANGE, 1, 100))); gameRules.get(RBMKKeys.KEY_REASIM_RANGE).add(new Tuple.Pair<>(world, GameRuleHelper.getClampedInt(world, RBMKKeys.KEY_REASIM_RANGE, 1, 100)));
gameRules.get(RBMKKeys.KEY_REASIM_COUNT).add(new Tuple.Pair<>(world, GameRuleHelper.getClampedInt(world, RBMKKeys.KEY_REASIM_COUNT, 1, 24)));
gameRules.get(RBMKKeys.KEY_REASIM_MOD).add(new Tuple.Pair<>(world, GameRuleHelper.getDoubleMinimum(world, RBMKKeys.KEY_REASIM_MOD, 0.0D)));
gameRules.get(RBMKKeys.KEY_REASIM_BOILERS).add(new Tuple.Pair<>(world, world.getGameRules().getGameRuleBooleanValue(RBMKKeys.KEY_REASIM_BOILERS.keyString) || GeneralConfig.enable528ReasimBoilers)); gameRules.get(RBMKKeys.KEY_REASIM_BOILERS).add(new Tuple.Pair<>(world, world.getGameRules().getGameRuleBooleanValue(RBMKKeys.KEY_REASIM_BOILERS.keyString) || GeneralConfig.enable528ReasimBoilers));
gameRules.get(RBMKKeys.KEY_REASIM_BOILER_SPEED).add(new Tuple.Pair<>(world, GameRuleHelper.getClampedDouble(world, RBMKKeys.KEY_REASIM_BOILER_SPEED, 0.0D, 1.0D))); gameRules.get(RBMKKeys.KEY_REASIM_BOILER_SPEED).add(new Tuple.Pair<>(world, GameRuleHelper.getClampedDouble(world, RBMKKeys.KEY_REASIM_BOILER_SPEED, 0.0D, 1.0D)));
gameRules.get(RBMKKeys.KEY_DISABLE_MELTDOWNS).add(new Tuple.Pair<>(world, world.getGameRules().getGameRuleBooleanValue(RBMKKeys.KEY_DISABLE_MELTDOWNS.keyString))); gameRules.get(RBMKKeys.KEY_DISABLE_MELTDOWNS).add(new Tuple.Pair<>(world, world.getGameRules().getGameRuleBooleanValue(RBMKKeys.KEY_DISABLE_MELTDOWNS.keyString)));
@ -287,24 +283,6 @@ public class RBMKDials {
return (int) getGameRule(world, RBMKKeys.KEY_REASIM_RANGE); return (int) getGameRule(world, RBMKKeys.KEY_REASIM_RANGE);
} }
/**
* Simple integer that decides how many neutrons are created from ReaSim fuel rods.
* @param world
* @return [1;24]
*/
public static int getReaSimCount(World world) {
return (int) getGameRule(world, RBMKKeys.KEY_REASIM_COUNT);
}
/**
* Returns a modifier for the outgoing flux of individual streams from the ReaSim fuel rod to compensate for the potentially increased stream count.
* @param world
* @return >0
*/
public static double getReaSimOutputMod(World world) {
return (double) getGameRule(world, RBMKKeys.KEY_REASIM_MOD);
}
/** /**
* Whether or not all components should act like boilers with dedicated in/outlet blocks * Whether or not all components should act like boilers with dedicated in/outlet blocks
* @param world * @param world

View File

@ -181,7 +181,7 @@ public class TileEntityRBMKControlAuto extends TileEntityRBMKControl implements
@Override @Override
public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) { public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) {
if(nbt.hasKey("levelLower")) levelLower = nbt.getDouble("levelLower"); if(nbt.hasKey("levelLower")) levelLower = nbt.getDouble("levelLower");
if(nbt.hasKey("levelUpper")) levelLower = nbt.getDouble("levelUpper"); if(nbt.hasKey("levelUpper")) levelUpper = nbt.getDouble("levelUpper");
if(nbt.hasKey("heatLower")) heatLower = nbt.getDouble("heatLower"); if(nbt.hasKey("heatLower")) heatLower = nbt.getDouble("heatLower");
if(nbt.hasKey("heatUpper")) heatUpper = nbt.getDouble("heatUpper"); if(nbt.hasKey("heatUpper")) heatUpper = nbt.getDouble("heatUpper");
if(nbt.hasKey("function")) function = EnumUtil.grabEnumSafely(RBMKFunction.class, nbt.getInteger("function")); if(nbt.hasKey("function")) function = EnumUtil.grabEnumSafely(RBMKFunction.class, nbt.getInteger("function"));

View File

@ -4,9 +4,8 @@ import com.hbm.handler.neutron.NeutronNodeWorld;
import com.hbm.handler.neutron.RBMKNeutronHandler; import com.hbm.handler.neutron.RBMKNeutronHandler;
import com.hbm.handler.neutron.NeutronNodeWorld.StreamWorld; import com.hbm.handler.neutron.NeutronNodeWorld.StreamWorld;
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType;
import com.hbm.util.Vec3NT;
import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.util.fauxpointtwelve.BlockPos;
import net.minecraft.util.Vec3;
import static com.hbm.handler.neutron.RBMKNeutronHandler.*; import static com.hbm.handler.neutron.RBMKNeutronHandler.*;
@ -26,8 +25,7 @@ public class TileEntityRBMKRodReaSim extends TileEntityRBMKRod {
@Override @Override
public void spreadFlux(double flux, double ratio) { public void spreadFlux(double flux, double ratio) {
if(pos == null) if(pos == null) pos = new BlockPos(this);
pos = new BlockPos(this);
if(flux == 0) { if(flux == 0) {
// simple way to remove the node from the cache when no flux is going into it! // simple way to remove the node from the cache when no flux is going into it!
@ -43,15 +41,11 @@ public class TileEntityRBMKRodReaSim extends TileEntityRBMKRod {
streamWorld.addNode(node); streamWorld.addNode(node);
} }
int count = RBMKDials.getReaSimCount(worldObj); Vec3NT vec = new Vec3NT(1, 0, 0);
vec.rotateAroundYDeg(worldObj.rand.nextInt(4) * 9D);
for(int i = 0; i < count; i++) { for(int i = 0; i < 8; i++) {
Vec3 neutronVector = Vec3.createVectorHelper(1, 0, 0); new RBMKNeutronHandler.RBMKNeutronStream(node, vec, flux * 0.5, ratio);
vec.rotateAroundYDeg(45D);
neutronVector.rotateAroundY((float)(Math.PI * 2D * worldObj.rand.nextDouble()));
new RBMKNeutronHandler.RBMKNeutronStream(makeNode(streamWorld, this), neutronVector, flux, ratio);
// Create new neutron streams
} }
} }