Bob 43ab1f3134 i'm stealing your catalytic converter so i can sell it to buy crack.
please don't ask such feeble-minded questions. it's rude.
2023-03-12 19:31:56 +01:00

604 lines
34 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.hbm.hazard;
import static com.hbm.blocks.ModBlocks.*;
import static com.hbm.items.ModItems.*;
import static com.hbm.inventory.OreDictManager.*;
import com.hbm.blocks.ModBlocks;
import com.hbm.config.GeneralConfig;
import com.hbm.hazard.modifier.*;
import com.hbm.hazard.transformer.*;
import com.hbm.hazard.type.*;
import com.hbm.inventory.material.MaterialShapes;
import com.hbm.items.ModItems;
import com.hbm.items.machine.ItemBreedingRod.BreedingRodType;
import com.hbm.items.machine.ItemRTGPelletDepleted.DepletedRTGMaterial;
import com.hbm.items.machine.ItemZirnoxRod.EnumZirnoxType;
import com.hbm.items.special.ItemHolotapeImage.EnumHoloImage;
import com.hbm.util.Compat;
import com.hbm.util.Compat.ReikaIsotope;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
public class HazardRegistry {
//CO60 5a β− 030.00Rad/s Spicy
//SR90 29a β− 015.00Rad/s Spicy
//TC99 211,000a β− 002.75Rad/s Spicy
//I181 192h β− 150.00Rad/s 2 much spice :(
//XE135 9h β− aaaaaaaaaaaaaaaa
//CS137 30a β− 020.00Rad/s Spicy
//AU198 64h β− 500.00Rad/s 2 much spice :(
//PB209 3h β− 10,000.00Rad/s mama mia my face is melting off
//AT209 5h β+ like 7.5k or sth idk bruv
//PO210 138d α 075.00Rad/s Spicy
//RA226 1,600a α 007.50Rad/s
//AC227 22a β− 030.00Rad/s Spicy
//TH232 14,000,000,000a α 000.10Rad/s
//U233 160,000a α 005.00Rad/s
//U235 700,000,000a α 001.00Rad/s
//U238 4,500,000,000a α 000.25Rad/s
//NP237 2,100,000a α 002.50Rad/s
//PU238 88a α 010.00Rad/s Spicy
//PU239 24,000a α 005.00Rad/s
//PU240 6,600a α 007.50Rad/s
//PU241 14a β− 025.00Rad/s Spicy
//AM241 432a α 008.50Rad/s
//AM242 141a β− 009.50Rad/s
//simplified groups for ReC compat
public static final float gen_S = 10_000F;
public static final float gen_H = 2_000F;
public static final float gen_10D = 100F;
public static final float gen_100D = 80F;
public static final float gen_1Y = 50F;
public static final float gen_10Y = 30F;
public static final float gen_100Y = 10F;
public static final float gen_1K = 7.5F;
public static final float gen_10K = 6.25F;
public static final float gen_100K = 5F;
public static final float gen_1M = 2.5F;
public static final float gen_10M = 1.5F;
public static final float gen_100M = 1F;
public static final float gen_1B = 0.5F;
public static final float gen_10B = 0.1F;
public static final float co60 = 30.0F;
public static final float sr90 = 15.0F;
public static final float tc99 = 2.75F;
public static final float i131 = 150.0F;
public static final float xe135 = 1250.0F;
public static final float cs137 = 20.0F;
public static final float au198 = 500.0F;
public static final float pb209 = 10000.0F;
public static final float at209 = 7500.0F;
public static final float po210 = 75.0F;
public static final float ra226 = 7.5F;
public static final float ac227 = 30.0F;
public static final float th232 = 0.1F;
public static final float thf = 1.75F;
public static final float u = 0.35F;
public static final float u233 = 5.0F;
public static final float u235 = 1.0F;
public static final float u238 = 0.25F;
public static final float uf = 0.5F;
public static final float np237 = 2.5F;
public static final float npf = 1.5F;
public static final float pu = 7.5F;
public static final float purg = 6.25F;
public static final float pu238 = 10.0F;
public static final float pu239 = 5.0F;
public static final float pu240 = 7.5F;
public static final float pu241 = 25.0F;
public static final float puf = 4.25F;
public static final float am241 = 8.5F;
public static final float am242 = 9.5F;
public static final float amrg = 9.0F;
public static final float amf = 4.75F;
public static final float mox = 2.5F;
public static final float sa326 = 15.0F;
public static final float sa327 = 17.5F;
public static final float saf = 5.85F;
public static final float sas3 = 5F;
public static final float gh336 = 5.0F;
public static final float radsource_mult = 3.0F;
public static final float pobe = po210 * radsource_mult;
public static final float rabe = ra226 * radsource_mult;
public static final float pube = pu238 * radsource_mult;
public static final float zfb_bi = u235 * 0.35F;
public static final float zfb_pu241 = pu241 * 0.5F;
public static final float zfb_am_mix = amrg * 0.5F;
public static final float bf = 300_000.0F;
public static final float bfb = 500_000.0F;
public static final float sr = sa326 * 0.1F;
public static final float sb = sa326 * 0.1F;
public static final float trx = 25.0F;
public static final float trn = 0.1F;
public static final float wst = 15.0F;
public static final float wstv = 7.5F;
public static final float yc = u;
public static final float fo = 10F;
public static final float nugget = 0.1F;
public static final float ingot = 1.0F;
public static final float gem = 1.0F;
public static final float plate = 1.0F;
public static final float plateCast = 3.0F;
public static final float powder_mult = 3.0F;
public static final float powder = ingot * powder_mult;
public static final float powder_tiny = nugget * powder_mult;
public static final float ore = ingot;
public static final float block = 10.0F;
public static final float crystal = block;
public static final float billet = 0.5F;
public static final float rtg = billet * 3;
public static final float rod = 0.5F;
public static final float rod_dual = rod * 2;
public static final float rod_quad = rod * 4;
public static final float rod_rbmk = rod * 8;
public static final HazardTypeBase RADIATION = new HazardTypeRadiation();
public static final HazardTypeBase DIGAMMA = new HazardTypeDigamma();
public static final HazardTypeBase HOT = new HazardTypeHot();
public static final HazardTypeBase BLINDING = new HazardTypeBlinding();
public static final HazardTypeBase ASBESTOS = new HazardTypeAsbestos();
public static final HazardTypeBase COAL = new HazardTypeCoal();
public static final HazardTypeBase HYDROACTIVE = new HazardTypeHydroactive();
public static final HazardTypeBase EXPLOSIVE = new HazardTypeExplosive();
public static void registerItems() {
HazardSystem.register(Items.gunpowder, makeData(EXPLOSIVE, 1F));
HazardSystem.register(Blocks.tnt, makeData(EXPLOSIVE, 4F));
HazardSystem.register(Items.pumpkin_pie, makeData(EXPLOSIVE, 1F));
HazardSystem.register(ball_dynamite, makeData(EXPLOSIVE, 2F));
HazardSystem.register(stick_dynamite, makeData(EXPLOSIVE, 1F));
HazardSystem.register(stick_tnt, makeData(EXPLOSIVE, 1.5F));
HazardSystem.register(stick_semtex, makeData(EXPLOSIVE, 2.5F));
HazardSystem.register(stick_c4, makeData(EXPLOSIVE, 2.5F));
HazardSystem.register(cordite, makeData(EXPLOSIVE, 2F));
HazardSystem.register(ballistite, makeData(EXPLOSIVE, 1F));
HazardSystem.register("dustCoal", makeData(COAL, powder));
HazardSystem.register("dustTinyCoal", makeData(COAL, powder_tiny));
HazardSystem.register("dustLignite", makeData(COAL, powder));
HazardSystem.register("dustTinyLignite", makeData(COAL, powder_tiny));
HazardSystem.register(insert_polonium, makeData(RADIATION, 100F));
HazardSystem.register(demon_core_open, makeData(RADIATION, 5F));
HazardSystem.register(demon_core_closed, makeData(RADIATION, 100_000F));
HazardSystem.register(lamp_demon, makeData(RADIATION, 100_000F));
HazardSystem.register(cell_tritium, makeData(RADIATION, 0.001F));
HazardSystem.register(cell_sas3, makeData().addEntry(RADIATION, sas3).addEntry(BLINDING, 10F));
HazardSystem.register(cell_balefire, makeData(RADIATION, 50F));
HazardSystem.register(powder_balefire, makeData(RADIATION, 500F));
HazardSystem.register(egg_balefire_shard, makeData(RADIATION, bf * nugget));
HazardSystem.register(egg_balefire, makeData(RADIATION, bf * ingot));
HazardSystem.register(solid_fuel_bf, makeData(RADIATION, 1000)); //roughly the amount of the balefire shard diluted in 250mB of rocket fuel
HazardSystem.register(solid_fuel_presto_bf, makeData(RADIATION, 2000));
HazardSystem.register(solid_fuel_presto_triplet_bf, makeData(RADIATION, 6000));
HazardSystem.register(nuclear_waste_long, makeData(RADIATION, 5F));
HazardSystem.register(nuclear_waste_long_tiny, makeData(RADIATION, 0.5F));
HazardSystem.register(nuclear_waste_short, makeData().addEntry(RADIATION, 30F).addEntry(HOT, 5F));
HazardSystem.register(nuclear_waste_short_tiny, makeData().addEntry(RADIATION, 3F).addEntry(HOT, 5F));
HazardSystem.register(nuclear_waste_long_depleted, makeData(RADIATION, 0.5F));
HazardSystem.register(nuclear_waste_long_depleted_tiny, makeData(RADIATION, 0.05F));
HazardSystem.register(nuclear_waste_short_depleted, makeData(RADIATION, 3F));
HazardSystem.register(nuclear_waste_short_depleted_tiny, makeData(RADIATION, 0.3F));
HazardSystem.register(scrap_nuclear, makeData(RADIATION, 1F));
HazardSystem.register(trinitite, makeData(RADIATION, trn * ingot));
HazardSystem.register(block_trinitite, makeData(RADIATION, trn * block));
HazardSystem.register(nuclear_waste, makeData(RADIATION, wst * ingot));
HazardSystem.register(yellow_barrel, makeData(RADIATION, wst * ingot * 10));
HazardSystem.register(billet_nuclear_waste, makeData(RADIATION, wst * billet));
HazardSystem.register(nuclear_waste_tiny, makeData(RADIATION, wst * nugget));
HazardSystem.register(nuclear_waste_vitrified, makeData(RADIATION, wstv * ingot));
HazardSystem.register(nuclear_waste_vitrified_tiny, makeData(RADIATION, wstv * nugget));
HazardSystem.register(block_waste, makeData(RADIATION, wst * block));
HazardSystem.register(block_waste_painted, makeData(RADIATION, wst * block));
HazardSystem.register(block_waste_vitrified, makeData(RADIATION, wstv * block));
HazardSystem.register(ancient_scrap, makeData(RADIATION, 150F));
HazardSystem.register(block_corium, makeData(RADIATION, 150F));
HazardSystem.register(block_corium_cobble, makeData(RADIATION, 150F));
HazardSystem.register(sand_gold198, makeData(RADIATION, au198 * block * powder_mult));
HazardSystem.register(new ItemStack(ModBlocks.sellafield, 1, 0), makeData(RADIATION, 0.5F));
HazardSystem.register(new ItemStack(ModBlocks.sellafield, 1, 1), makeData(RADIATION, 1F));
HazardSystem.register(new ItemStack(ModBlocks.sellafield, 1, 2), makeData(RADIATION, 2.5F));
HazardSystem.register(new ItemStack(ModBlocks.sellafield, 1, 3), makeData(RADIATION, 4F));
HazardSystem.register(new ItemStack(ModBlocks.sellafield, 1, 4), makeData(RADIATION, 5F));
HazardSystem.register(new ItemStack(ModBlocks.sellafield, 1, 5), makeData(RADIATION, 10F));
registerOtherFuel(rod_zirnox, EnumZirnoxType.NATURAL_URANIUM_FUEL.ordinal(), u * rod_dual, wst * rod_dual * 11.5F, false);
registerOtherFuel(rod_zirnox, EnumZirnoxType.URANIUM_FUEL.ordinal(), uf * rod_dual, wst * rod_dual * 10F, false);
registerOtherFuel(rod_zirnox, EnumZirnoxType.TH232.ordinal(), th232 * rod_dual, thf * rod_dual, false);
registerOtherFuel(rod_zirnox, EnumZirnoxType.THORIUM_FUEL.ordinal(), thf * rod_dual, wst * rod_dual * 7.5F, false);
registerOtherFuel(rod_zirnox, EnumZirnoxType.MOX_FUEL.ordinal(), mox * rod_dual, wst * rod_dual * 10F, false);
registerOtherFuel(rod_zirnox, EnumZirnoxType.PLUTONIUM_FUEL.ordinal(), puf * rod_dual, wst * rod_dual * 12.5F, false);
registerOtherFuel(rod_zirnox, EnumZirnoxType.U233_FUEL.ordinal(), u233 * rod_dual, wst * rod_dual * 10F, false);
registerOtherFuel(rod_zirnox, EnumZirnoxType.U235_FUEL.ordinal(), u235 * rod_dual, wst * rod_dual * 11F, false);
registerOtherFuel(rod_zirnox, EnumZirnoxType.LES_FUEL.ordinal(), saf * rod_dual, wst * rod_dual * 15F, false);
registerOtherFuel(rod_zirnox, EnumZirnoxType.LITHIUM.ordinal(), 0, 0.001F * rod_dual, false);
registerOtherFuel(rod_zirnox, EnumZirnoxType.ZFB_MOX.ordinal(), mox * rod_dual, wst * rod_dual * 5F, false);
HazardSystem.register(rod_zirnox_natural_uranium_fuel_depleted, makeData(RADIATION, wst * rod_dual * 11.5F));
HazardSystem.register(rod_zirnox_uranium_fuel_depleted, makeData(RADIATION, wst * rod_dual * 10F));
HazardSystem.register(rod_zirnox_thorium_fuel_depleted, makeData(RADIATION, wst * rod_dual * 7.5F));
HazardSystem.register(rod_zirnox_mox_fuel_depleted, makeData(RADIATION, wst * rod_dual * 10F));
HazardSystem.register(rod_zirnox_plutonium_fuel_depleted, makeData(RADIATION, wst * rod_dual * 12.5F));
HazardSystem.register(rod_zirnox_u233_fuel_depleted, makeData(RADIATION, wst * rod_dual * 10F));
HazardSystem.register(rod_zirnox_u235_fuel_depleted, makeData(RADIATION, wst * rod_dual * 11F));
HazardSystem.register(rod_zirnox_les_fuel_depleted, makeData().addEntry(RADIATION, wst * rod_dual * 15F).addEntry(BLINDING, 20F));
HazardSystem.register(rod_zirnox_tritium, makeData(RADIATION, 0.001F * rod_dual));
HazardSystem.register(rod_zirnox_zfb_mox_depleted, makeData(RADIATION, wst * rod_dual * 5F));
registerOtherWaste(waste_natural_uranium, wst * billet * 11.5F);
registerOtherWaste(waste_uranium, wst * billet * 10F);
registerOtherWaste(waste_thorium, wst * billet * 7.5F);
registerOtherWaste(waste_mox, wst * billet * 10F);
registerOtherWaste(waste_plutonium, wst * billet * 12.5F);
registerOtherWaste(waste_u233, wst * billet * 10F);
registerOtherWaste(waste_u235, wst * billet * 11F);
registerOtherWaste(waste_schrabidium, wst * billet * 15F);
registerOtherWaste(waste_zfb_mox, wst * billet * 5F);
registerOtherFuel(pellet_schrabidium, sa326 * ingot * 5, wst * ingot * 100, true);
registerOtherFuel(pellet_hes, saf * ingot * 5, wst * ingot * 75, true);
registerOtherFuel(pellet_mes, saf * ingot * 5, wst * ingot * 50, true);
registerOtherFuel(pellet_les, saf * ingot * 5, wst * ingot * 20, false);
registerOtherFuel(pellet_beryllium, 0F, 10F, false);
registerOtherFuel(pellet_neptunium, np237 * ingot * 5, wst * ingot * 10, false);
registerOtherFuel(pellet_lead, 0F, 15F, false);
registerOtherFuel(pellet_advanced, 0F, 20F, false);
registerOtherFuel(plate_fuel_u233, u233 * ingot, wst * ingot * 13F, false);
registerOtherFuel(plate_fuel_u235, u235 * ingot, wst * ingot * 10F, false);
registerOtherFuel(plate_fuel_mox, mox * ingot, wst * ingot * 16F, false);
registerOtherFuel(plate_fuel_pu239, pu239 * ingot, wst * ingot * 13.5F, false);
registerOtherFuel(plate_fuel_sa326, sa326 * ingot, wst * ingot * 10F, true);
registerOtherFuel(plate_fuel_ra226be, rabe * billet, pobe * nugget * 3, false);
registerOtherFuel(plate_fuel_pu238be, pube * billet, pube * nugget * 1, false);
registerOtherWaste(waste_plate_u233, wst * ingot * 13F);
registerOtherWaste(waste_plate_u235, wst * ingot * 10F);
registerOtherWaste(waste_plate_mox, wst * ingot * 16F);
registerOtherWaste(waste_plate_pu239, wst * ingot * 13.5F);
registerOtherWaste(waste_plate_sa326, wst * ingot * 10F);
registerRadSourceWaste(waste_plate_ra226be, pobe * nugget * 3);
registerRadSourceWaste(waste_plate_pu238be, pube * nugget * 1);
HazardSystem.register(debris_graphite, makeData().addEntry(RADIATION, 70F).addEntry(HOT, 5F));
HazardSystem.register(debris_metal, makeData(RADIATION, 5F));
HazardSystem.register(debris_fuel, makeData().addEntry(RADIATION, 500F).addEntry(HOT, 5F));
HazardSystem.register(debris_concrete, makeData(RADIATION, 30F));
HazardSystem.register(debris_exchanger, makeData(RADIATION, 25F));
HazardSystem.register(debris_shrapnel, makeData(RADIATION, 2.5F));
HazardSystem.register(debris_element, makeData(RADIATION, 100F));
HazardSystem.register(nugget_uranium_fuel, makeData(RADIATION, uf * nugget));
HazardSystem.register(billet_uranium_fuel, makeData(RADIATION, uf * billet));
HazardSystem.register(ingot_uranium_fuel, makeData(RADIATION, uf * ingot));
HazardSystem.register(block_uranium_fuel, makeData(RADIATION, uf * block));
HazardSystem.register(nugget_plutonium_fuel, makeData(RADIATION, puf * nugget));
HazardSystem.register(billet_plutonium_fuel, makeData(RADIATION, puf * billet));
HazardSystem.register(ingot_plutonium_fuel, makeData(RADIATION, puf * ingot));
HazardSystem.register(block_plutonium_fuel, makeData(RADIATION, puf * block));
HazardSystem.register(nugget_thorium_fuel, makeData(RADIATION, thf * nugget));
HazardSystem.register(billet_thorium_fuel, makeData(RADIATION, thf * billet));
HazardSystem.register(ingot_thorium_fuel, makeData(RADIATION, thf * ingot));
HazardSystem.register(block_thorium_fuel, makeData(RADIATION, thf * block));
HazardSystem.register(nugget_neptunium_fuel, makeData(RADIATION, npf * nugget));
HazardSystem.register(billet_neptunium_fuel, makeData(RADIATION, npf * billet));
HazardSystem.register(ingot_neptunium_fuel, makeData(RADIATION, npf * ingot));
HazardSystem.register(nugget_mox_fuel, makeData(RADIATION, mox * nugget));
HazardSystem.register(billet_mox_fuel, makeData(RADIATION, mox * billet));
HazardSystem.register(ingot_mox_fuel, makeData(RADIATION, mox * ingot));
HazardSystem.register(block_mox_fuel, makeData(RADIATION, mox * block));
HazardSystem.register(nugget_americium_fuel, makeData(RADIATION, amf * nugget));
HazardSystem.register(billet_americium_fuel, makeData(RADIATION, amf * billet));
HazardSystem.register(ingot_americium_fuel, makeData(RADIATION, amf * ingot));
HazardSystem.register(nugget_schrabidium_fuel, makeData().addEntry(RADIATION, saf * nugget).addEntry(BLINDING, 5F * nugget));
HazardSystem.register(billet_schrabidium_fuel, makeData().addEntry(RADIATION, saf * billet).addEntry(BLINDING, 5F * billet));
HazardSystem.register(ingot_schrabidium_fuel, makeData().addEntry(RADIATION, saf * ingot).addEntry(BLINDING, 5F * ingot));
HazardSystem.register(block_schrabidium_fuel, makeData().addEntry(RADIATION, saf * block).addEntry(BLINDING, 5F * block));
HazardSystem.register(nugget_hes, makeData(RADIATION, saf * nugget));
HazardSystem.register(billet_hes, makeData(RADIATION, saf * billet));
HazardSystem.register(ingot_hes, makeData(RADIATION, saf * ingot));
HazardSystem.register(nugget_les, makeData(RADIATION, saf * nugget));
HazardSystem.register(billet_les, makeData(RADIATION, saf * billet));
HazardSystem.register(ingot_les, makeData(RADIATION, saf * ingot));
HazardSystem.register(billet_balefire_gold, makeData(RADIATION, au198 * billet));
HazardSystem.register(billet_flashlead, makeData().addEntry(RADIATION, pb209 * 1.25F * billet).addEntry(HOT, 7F));
HazardSystem.register(billet_po210be, makeData(RADIATION, pobe * billet));
HazardSystem.register(billet_ra226be, makeData(RADIATION, rabe * billet));
HazardSystem.register(billet_pu238be, makeData(RADIATION, pube * billet));
registerRTGPellet(pellet_rtg, pu238 * rtg, 0, 3F);
registerRTGPellet(pellet_rtg_radium, ra226 * rtg, 0);
registerRTGPellet(pellet_rtg_weak, (pu238 + (u238 * 2)) * billet, 0);
registerRTGPellet(pellet_rtg_strontium, sr90 * rtg, 0);
registerRTGPellet(pellet_rtg_cobalt, co60 * rtg, 0);
registerRTGPellet(pellet_rtg_actinium, ac227 * rtg, 0);
registerRTGPellet(pellet_rtg_polonium, po210 * rtg, 0, 3F);
registerRTGPellet(pellet_rtg_lead, pb209 * rtg, 0, 7F, 50F);
registerRTGPellet(pellet_rtg_gold, au198 * rtg, 0, 5F);
registerRTGPellet(pellet_rtg_americium, am241 * rtg, 0);
HazardSystem.register(new ItemStack(pellet_rtg_depleted, 1, DepletedRTGMaterial.NEPTUNIUM.ordinal()), makeData(RADIATION, np237 * rtg));
HazardSystem.register(pile_rod_uranium, makeData(RADIATION, u * billet * 3));
HazardSystem.register(pile_rod_pu239, makeData(RADIATION, !GeneralConfig.enable528 ? purg * billet + pu239 * billet + u * billet : purg * billet + pu239 * billet + wst * billet));
HazardSystem.register(pile_rod_plutonium, makeData(RADIATION, !GeneralConfig.enable528 ? purg * billet * 2 + u * billet : purg * billet * 2 + wst * billet));
HazardSystem.register(pile_rod_source, makeData(RADIATION, rabe * billet * 3));
registerBreedingRodRadiation(BreedingRodType.TRITIUM, 0.001F);
registerBreedingRodRadiation(BreedingRodType.CO60, co60);
registerBreedingRodRadiation(BreedingRodType.RA226, ra226);
registerBreedingRodRadiation(BreedingRodType.AC227, ac227);
registerBreedingRodRadiation(BreedingRodType.TH232, th232);
registerBreedingRodRadiation(BreedingRodType.THF, thf);
registerBreedingRodRadiation(BreedingRodType.U235, u235);
registerBreedingRodRadiation(BreedingRodType.NP237, np237);
registerBreedingRodRadiation(BreedingRodType.U238, u238);
registerBreedingRodRadiation(BreedingRodType.PU238, pu238); //it's in a container :)
registerBreedingRodRadiation(BreedingRodType.PU239, pu239);
registerBreedingRodRadiation(BreedingRodType.RGP, purg);
registerBreedingRodRadiation(BreedingRodType.WASTE, wst);
registerBreedingRodRadiation(BreedingRodType.URANIUM, u);
registerRBMKRod(rbmk_fuel_ueu, u * rod_rbmk, wst * rod_rbmk * 20F);
registerRBMKRod(rbmk_fuel_meu, uf * rod_rbmk, wst * rod_rbmk * 21.5F);
registerRBMKRod(rbmk_fuel_heu233, u233 * rod_rbmk, wst * rod_rbmk * 31F);
registerRBMKRod(rbmk_fuel_heu235, u235 * rod_rbmk, wst * rod_rbmk * 30F);
registerRBMKRod(rbmk_fuel_thmeu, thf * rod_rbmk, wst * rod_rbmk * 17.5F);
registerRBMKRod(rbmk_fuel_lep, puf * rod_rbmk, wst * rod_rbmk * 25F);
registerRBMKRod(rbmk_fuel_mep, purg * rod_rbmk, wst * rod_rbmk * 30F);
registerRBMKRod(rbmk_fuel_hep239, pu239 * rod_rbmk, wst * rod_rbmk * 32.5F);
registerRBMKRod(rbmk_fuel_hep241, pu241 * rod_rbmk, wst * rod_rbmk * 35F);
registerRBMKRod(rbmk_fuel_lea, amf * rod_rbmk, wst * rod_rbmk * 26F);
registerRBMKRod(rbmk_fuel_mea, amrg * rod_rbmk, wst * rod_rbmk * 30.5F);
registerRBMKRod(rbmk_fuel_hea241, am241 * rod_rbmk, wst * rod_rbmk * 33.5F);
registerRBMKRod(rbmk_fuel_hea242, am242 * rod_rbmk, wst * rod_rbmk * 34F);
registerRBMKRod(rbmk_fuel_men, npf * rod_rbmk, wst * rod_rbmk * 22.5F);
registerRBMKRod(rbmk_fuel_hen, np237 * rod_rbmk, wst * rod_rbmk * 30F);
registerRBMKRod(rbmk_fuel_mox, mox * rod_rbmk, wst * rod_rbmk * 25.5F);
registerRBMKRod(rbmk_fuel_les, saf * rod_rbmk, wst * rod_rbmk * 24.5F);
registerRBMKRod(rbmk_fuel_mes, saf * rod_rbmk, wst * rod_rbmk * 30F);
registerRBMKRod(rbmk_fuel_hes, saf * rod_rbmk, wst * rod_rbmk * 50F);
registerRBMKRod(rbmk_fuel_leaus, 0F, wst * rod_rbmk * 37.5F);
registerRBMKRod(rbmk_fuel_heaus, 0F, wst * rod_rbmk * 32.5F);
registerRBMKRod(rbmk_fuel_po210be, pobe * rod_rbmk, pobe * rod_rbmk * 0.1F, true);
registerRBMKRod(rbmk_fuel_ra226be, rabe * rod_rbmk, rabe * rod_rbmk * 0.4F, true);
registerRBMKRod(rbmk_fuel_pu238be, pube * rod_rbmk, wst * rod_rbmk * 2.5F);
registerRBMKRod(rbmk_fuel_balefire_gold, au198 * rod_rbmk, bf * rod_rbmk * 0.5F, true);
registerRBMKRod(rbmk_fuel_flashlead, pb209 * 1.25F * rod_rbmk, pb209 * nugget * 0.05F * rod_rbmk, true);
registerRBMKRod(rbmk_fuel_balefire, bf * rod_rbmk, bf * rod_rbmk * 100F, true);
registerRBMKRod(rbmk_fuel_zfb_bismuth, pu241 * rod_rbmk * 0.1F, wst * rod_rbmk * 5F);
registerRBMKRod(rbmk_fuel_zfb_pu241, pu239 * rod_rbmk * 0.1F, wst * rod_rbmk * 7.5F);
registerRBMKRod(rbmk_fuel_zfb_am_mix, pu241 * rod_rbmk * 0.1F, wst * rod_rbmk * 10F);
registerRBMK(rbmk_fuel_drx, bf * rod_rbmk, bf * rod_rbmk * 100F, true, true, 0, 1F/3F);
registerRBMKPellet(rbmk_pellet_ueu, u * billet, wst * billet * 20F);
registerRBMKPellet(rbmk_pellet_meu, uf * billet, wst * billet * 21.5F);
registerRBMKPellet(rbmk_pellet_heu233, u233 * billet, wst * billet * 31F);
registerRBMKPellet(rbmk_pellet_heu235, u235 * billet, wst * billet * 30F);
registerRBMKPellet(rbmk_pellet_thmeu, thf * billet, wst * billet * 17.5F);
registerRBMKPellet(rbmk_pellet_lep, puf * billet, wst * billet * 25F);
registerRBMKPellet(rbmk_pellet_mep, purg * billet, wst * billet * 30F);
registerRBMKPellet(rbmk_pellet_hep239, pu239 * billet, wst * billet * 32.5F);
registerRBMKPellet(rbmk_pellet_hep241, pu241 * billet, wst * billet * 35F);
registerRBMKPellet(rbmk_pellet_lea, amf * billet, wst * billet * 26F);
registerRBMKPellet(rbmk_pellet_mea, amrg * billet, wst * billet * 30.5F);
registerRBMKPellet(rbmk_pellet_hea241, am241 * billet, wst * billet * 33.5F);
registerRBMKPellet(rbmk_pellet_hea242, am242 * billet, wst * billet * 34F);
registerRBMKPellet(rbmk_pellet_men, npf * billet, wst * billet * 22.5F);
registerRBMKPellet(rbmk_pellet_hen, np237 * billet, wst * billet * 30F);
registerRBMKPellet(rbmk_pellet_mox, mox * billet, wst * billet * 25.5F);
registerRBMKPellet(rbmk_pellet_les, saf * billet, wst * billet * 24.5F);
registerRBMKPellet(rbmk_pellet_mes, saf * billet, wst * billet * 30F);
registerRBMKPellet(rbmk_pellet_hes, saf * billet, wst * billet * 50F);
registerRBMKPellet(rbmk_pellet_leaus, 0F, wst * billet * 37.5F);
registerRBMKPellet(rbmk_pellet_heaus, 0F, wst * billet * 32.5F);
registerRBMKPellet(rbmk_pellet_po210be, pobe * billet, pobe * billet * 0.1F, true);
registerRBMKPellet(rbmk_pellet_ra226be, rabe * billet, rabe * billet * 0.4F, true);
registerRBMKPellet(rbmk_pellet_pu238be, pube * billet, wst * 1.5F);
registerRBMKPellet(rbmk_pellet_balefire_gold, au198 * billet, bf * billet * 0.5F, true);
registerRBMKPellet(rbmk_pellet_flashlead, pb209 * 1.25F * billet, pb209 * nugget * 0.05F, true);
registerRBMKPellet(rbmk_pellet_balefire, bf * billet, bf * billet * 100F, true);
registerRBMKPellet(rbmk_pellet_zfb_bismuth, pu241 * billet * 0.1F, wst * billet * 5F);
registerRBMKPellet(rbmk_pellet_zfb_pu241, pu239 * billet * 0.1F, wst * billet * 7.5F);
registerRBMKPellet(rbmk_pellet_zfb_am_mix, pu241 * billet * 0.1F, wst * billet * 10F);
registerRBMKPellet(rbmk_pellet_drx, bf * billet, bf * billet * 100F, true, 0F, 1F/24F);
HazardSystem.register(powder_yellowcake, makeData(RADIATION, yc * powder));
HazardSystem.register(block_yellowcake, makeData(RADIATION, yc * block * powder_mult));
HazardSystem.register(ModItems.fallout, makeData(RADIATION, fo * powder));
HazardSystem.register(ModBlocks.fallout, makeData(RADIATION, fo * powder * 2));
HazardSystem.register(ModBlocks.block_fallout, makeData(RADIATION, yc * block * powder_mult));
HazardSystem.register(powder_caesium, makeData().addEntry(HYDROACTIVE, 1F).addEntry(HOT, 3F));
HazardSystem.register(wire_schrabidium, makeData(RADIATION, sa326 * nugget));
HazardSystem.register(brick_asbestos, makeData(ASBESTOS, 1F));
HazardSystem.register(tile_lab_broken, makeData(ASBESTOS, 1F));
HazardSystem.register(powder_coltan_ore, makeData(ASBESTOS, 3F));
//crystals
HazardSystem.register(crystal_uranium, makeData(RADIATION, u * crystal));
HazardSystem.register(crystal_thorium, makeData(RADIATION, th232 * crystal));
HazardSystem.register(crystal_plutonium, makeData(RADIATION, pu * crystal));
HazardSystem.register(crystal_schraranium, makeData(RADIATION, sr * crystal));
HazardSystem.register(crystal_schrabidium, makeData(RADIATION, sa326 * crystal));
HazardSystem.register(crystal_phosphorus, makeData(HOT, 2F * crystal));
HazardSystem.register(crystal_lithium, makeData(HYDROACTIVE, 1F * crystal));
HazardSystem.register(ModItems.crystal_trixite, makeData(RADIATION, trx * crystal));
//nuke parts
HazardSystem.register(boy_propellant, makeData(EXPLOSIVE, 2F));
HazardSystem.register(gadget_core, makeData(RADIATION, pu239 * nugget * 10));
HazardSystem.register(boy_target, makeData(RADIATION, u235 * ingot * 2));
HazardSystem.register(boy_bullet, makeData(RADIATION, u235 * ingot));
HazardSystem.register(man_core, makeData(RADIATION, pu239 * nugget * 10));
HazardSystem.register(mike_core, makeData(RADIATION, u238 * nugget * 10));
HazardSystem.register(tsar_core, makeData(RADIATION, pu239 * nugget * 15));
HazardSystem.register(fleija_propellant, makeData().addEntry(RADIATION, 15F).addEntry(EXPLOSIVE, 8F).addEntry(BLINDING, 50F));
HazardSystem.register(fleija_core, makeData(RADIATION, 10F));
HazardSystem.register(solinium_propellant, makeData(EXPLOSIVE, 10F));
HazardSystem.register(solinium_core, makeData().addEntry(RADIATION, sa327 * nugget * 8).addEntry(BLINDING, 45F));
HazardSystem.register(nuke_fstbmb, makeData(DIGAMMA, 0.01F));
HazardSystem.register(DictFrame.fromOne(ModItems.holotape_image, EnumHoloImage.HOLO_RESTORED), makeData(DIGAMMA, 1F));
HazardSystem.register(holotape_damaged, makeData(DIGAMMA, 1_000F));
/*
* Blacklist
*/
for(String ore : TH232.ores()) HazardSystem.blacklist(ore);
for(String ore : U.ores()) HazardSystem.blacklist(ore);
/*
* ReC compat
*/
Item recWaste = Compat.tryLoadItem(Compat.MOD_REC, "reactorcraft_item_waste");
if(recWaste != null) {
for(ReikaIsotope i : ReikaIsotope.values()) {
if(i.getRad() > 0) {
HazardSystem.register(new ItemStack(recWaste, 1, i.ordinal()), makeData(RADIATION, i.getRad()));
}
}
}
if(Compat.isModLoaded(Compat.MOD_GT6)) {
Object[][] data = new Object[][] {
{"Naquadah", u},
{"Naquadah-Enriched", u235},
{"Naquadria", pu239},
};
for(MaterialShapes shape : MaterialShapes.allShapes) {
for(String prefix : shape.prefixes) {
for(Object[] o : data) {
HazardSystem.register(prefix + o[0], new HazardData().setMutex(0b1).addEntry(new HazardEntry(RADIATION, (float) o[1] * shape.q(1) / MaterialShapes.INGOT.q(1))));
}
}
}
}
}
public static void registerTrafos() {
HazardSystem.trafos.add(new HazardTransformerRadiationNBT());
HazardSystem.trafos.add(new HazardTransformerRadiationContainer());
if(!(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSafeMEDrives)) {
HazardSystem.trafos.add(new HazardTransformerRadiationME());
}
}
private static HazardData makeData() { return new HazardData(); }
private static HazardData makeData(HazardTypeBase hazard) { return new HazardData().addEntry(hazard); }
private static HazardData makeData(HazardTypeBase hazard, float level) { return new HazardData().addEntry(hazard, level); }
private static HazardData makeData(HazardTypeBase hazard, float level, boolean override) { return new HazardData().addEntry(hazard, level, override); }
private static void registerRBMKPellet(Item pellet, float base, float dep) { registerRBMKPellet(pellet, base, dep, false, 0F, 0F); }
private static void registerRBMKPellet(Item pellet, float base, float dep, boolean linear) { registerRBMKPellet(pellet, base, dep, linear, 0F, 0F); }
private static void registerRBMKPellet(Item pellet, float base, float dep, boolean linear, float blinding, float digamma) {
HazardData data = new HazardData();
data.addEntry(new HazardEntry(RADIATION, base).addMod(new HazardModifierRBMKRadiation(dep, linear)));
if(blinding > 0) data.addEntry(new HazardEntry(BLINDING, blinding));
if(digamma > 0) data.addEntry(new HazardEntry(DIGAMMA, digamma));
HazardSystem.register(pellet, data);
}
private static void registerRBMKRod(Item rod, float base, float dep) { registerRBMK(rod, base, dep, true, false, 0F, 0F); }
private static void registerRBMKRod(Item rod, float base, float dep, float blinding) { registerRBMK(rod, base, dep, true, false, blinding, 0F); }
private static void registerRBMKRod(Item rod, float base, float dep, boolean linear) { registerRBMK(rod, base, dep, true, linear, 0F, 0F); }
private static void registerRBMK(Item rod, float base, float dep, boolean hot, boolean linear, float blinding, float digamma) {
HazardData data = new HazardData();
data.addEntry(new HazardEntry(RADIATION, base).addMod(new HazardModifierRBMKRadiation(dep, linear)));
if(hot) data.addEntry(new HazardEntry(HOT, 0).addMod(new HazardModifierRBMKHot()));
if(blinding > 0) data.addEntry(new HazardEntry(BLINDING, blinding));
if(digamma > 0) data.addEntry(new HazardEntry(DIGAMMA, digamma));
HazardSystem.register(rod, data);
}
private static void registerBreedingRodRadiation(BreedingRodType type, float base) {
HazardSystem.register(new ItemStack(ModItems.rod, 1, type.ordinal()), makeData(RADIATION, base));
HazardSystem.register(new ItemStack(ModItems.rod_dual, 1, type.ordinal()), makeData(RADIATION, base * rod_dual));
HazardSystem.register(new ItemStack(ModItems.rod_quad, 1, type.ordinal()), makeData(RADIATION, base * rod_quad));
}
private static void registerOtherFuel(Item fuel, float base, float target, boolean blinding) {
HazardData data = new HazardData();
data.addEntry(new HazardEntry(RADIATION, base).addMod(new HazardModifierFuelRadiation(target)));
if(blinding)
data.addEntry(BLINDING, 20F);
HazardSystem.register(fuel, data);
}
private static void registerOtherFuel(Item fuel, int meta, float base, float target, boolean blinding) {
HazardData data = new HazardData();
data.addEntry(new HazardEntry(RADIATION, base).addMod(new HazardModifierFuelRadiation(target)));
if(blinding)
data.addEntry(BLINDING, 20F);
HazardSystem.register(new ItemStack(fuel, 1, meta), data);
}
private static void registerRTGPellet(Item pellet, float base, float target) { registerRTGPellet(pellet, base, target, 0, 0); }
private static void registerRTGPellet(Item pellet, float base, float target, float hot) { registerRTGPellet(pellet, base, target, hot, 0); }
private static void registerRTGPellet(Item pellet, float base, float target, float hot, float blinding) {
HazardData data = new HazardData();
data.addEntry(new HazardEntry(RADIATION, base).addMod(new HazardModifierRTGRadiation(target)));
if(hot > 0) data.addEntry(new HazardEntry(HOT, hot));
if(blinding > 0) data.addEntry(new HazardEntry(BLINDING, blinding));
HazardSystem.register(pellet, data);
}
private static void registerOtherWaste(Item waste, float base) {
HazardSystem.register(new ItemStack(waste, 1, 0), makeData(RADIATION, base * 0.075F));
HazardData data = new HazardData();
data.addEntry(new HazardEntry(RADIATION, base));
data.addEntry(new HazardEntry(HOT, 5F));
HazardSystem.register(new ItemStack(waste, 1, 1), data);
}
private static void registerRadSourceWaste(Item waste, float base) {
HazardSystem.register(new ItemStack(waste, 1, 0), makeData(RADIATION, base));
HazardData data = new HazardData();
data.addEntry(new HazardEntry(RADIATION, base));
data.addEntry(new HazardEntry(HOT, 5F));
HazardSystem.register(new ItemStack(waste, 1, 1), data);
}
}