promotional bannermobile promotional banner
premium banner
A fission addon for GregTech modern, designed around peak configurability.

Description

A fission addon for GregTech Modern focused on cool, adaptable features and heavy configurability. It can be used standalone, but it’s primarily designed for pack developers who want to reshape reactor behavior, balance, and progression for their own packs.

There are 2 main reactor multiblocks:

Pressurized Fission Reactor

Uses Fission Coolers, Fission Moderators, and a Driver Fuel Rod to produce EU and waste.

  • Cooling is provided by all installed coolers (total HU/t).

  • Coolant consumption behavior is configurable:

    • Additive: every cooler adds to the coolant draw, or

    • Primary-only: only the “primary” (highest-tier / most dominant) cooler determines coolant use.

High Performance Breeder Reactor

Uses Fission Coolers, Fission Moderators, Blanket Rods (targets), and a Driver Fuel Rod to produce stronger fuels for future breeder cycles, plus some power.

  • Blanket processing supports fluid or item inputs/outputs (GT material IDs or Forge registry IDs).

  • Blanket usage behavior can be made configurable as well (additive blankets vs primary-only), matching the coolant model style.


KubeJS Content Support

New Coolers, Moderators, Fuel Rods, and Blanket Rods can all be defined in KubeJS.

Key points:

  • Coolers now use pure Forge fluid registry IDs for coolant (example: gtceu:distilled_water).

  • Coolers may optionally define an output “hot” coolant (example: distilled water → steam).

    • If the reactor can’t output the hot variant, it can optionally void the output (pack-configurable behavior), so the reactor can still run without requiring an output hatch in every build.

  • Usage behavior (coolant / fuel / blanket) can be driven by config toggles (additive vs primary-only).

Below is an example of each type.

StartupEvents.registry("block", event => {
event.create('aether_flow_cooler', 'phoenixcore:fission_cooler')
.displayName('Aether-Flow Cooler')
.coolerTemperature(1025)
// Cooling power given per cooler (HU/t). If total cooling doesn’t meet reactor needs,
// core heat rises and meltdown logic will eventually trigger.
.coolantUsagePerTick(10) // The amount of coolant this cooler uses per tick. Additive logic is a config value.
.tier(3) // Used for explosion scaling + progression/tier logic.
.requiredCoolantMaterialId('phoenixcore:frost') // The "cold" coolant from running reactors, only the primary cooler defines this.
.outputCoolantFluidId('phoenixcore:warm_frost') // The "hot" coolant from running reactors, only the primary cooler defines this.
.coolerMaterial(() => GTMaterials.get('tungsten_steel'))
.texture('kubejs:block/fission/aether_flow_cooler'); // Also needs a texture the same name with _active appended to the end.

event.create('high_density_driver_rod', 'phoenix_fission:fission_fuel_rod')
.displayName('High-Density Driver Rod')
.baseHeatProduction(50) // The amount of heat each rod produces/t before moderator effects.
.durationTicks(1200) // The amount of time at base before it tries to consume another use of fuel.
.amountPerCycle(1) // The amount of fuel it eats per cycle.
.neutronBias(1) // Refers directly to breeder rod output fuel instability, does nothing by itself.
.tier(3) // Handles primary rod and explosion logic.
.fuelKey('gtceu:uranium_235_nugget') // The input fuel.
.outputKey('gtceu:depleted_uranium_235_nugget') // The output "depleted" fuel.
.rodMaterial(() => GTMaterials.get('stainless_steel')) // Uses for some internal names.
.texture('kubejs:block/fission/high_density_driver_rod'); // Also requires a texture with _active appended.

event.create('niobium_modified_silicon_carbide_moderator', 'phoenixcore:fission_moderator')
.displayName('Nb-SiC Moderator')
.EUBoost(15) // Handles how much each moderator boosts eu generation.
.fuelDiscount(5) // Improves efficiency of fuels by extending time between each use.
.tier(4) // Used for explosion scaling + primary-moderator selection.
.moderatorMaterial(() => GTMaterials.get('niobium_modified_silicon_carbide')) // Used for some internal names.
.texture('kubejs:block/fission/niobium_sic_moderator');
// Moderators don’t require an active texture.

event.create('uranium_blanket_rod', 'phoenix_fission:fission_blanket_rod')
.displayName('U-238 Blanket Rod')
.tier(2) // Used to decide what rod is primary.
.durationTicks(2400)
// The amount of time in ticks it takes at base to consume one instance of the input fuel item.
.amountPerCycle(1) // The amount of fuel used per durationTicks.
.inputKey('gtceu:uranium_238_nugget') // Fully realized Forge ID for input fuel.
.addOutput('gtceu:plutonium_nugget', 70, 1) // Fully realized list of Forge IDs for output fuel,
.addOutput('gtceu:plutonium_241_nugget', 20, 3)
// The first digit for the outputs list is the weight, aka the chance of said output.
.addOutput('gtceu:plutonium_238_nugget', 10, 4) // The second digit for the list is the instability.
// If the driver rod has a high spectrum bias, a higher instability means this fuel output will have a higher weight.
.blanketMaterial(() => GTMaterials.get('uranium_238'))
.texture('kubejs:block/fission/uranium_blanket_rod'); // Also needs a texture the same name with _active appended to the end.
});