mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
46 lines
1.5 KiB
Java
46 lines
1.5 KiB
Java
package com.hbm.hazard.modifier;
|
|
|
|
import com.hbm.hazard.HazardRegistry;
|
|
import com.hbm.items.machine.ItemRBMKPellet;
|
|
import com.hbm.items.machine.ItemRBMKRod;
|
|
|
|
import net.minecraft.entity.EntityLivingBase;
|
|
import net.minecraft.item.ItemStack;
|
|
|
|
public class HazardModifierRBMKRadiation extends HazardModifier {
|
|
|
|
float target;
|
|
boolean linear = false;
|
|
|
|
public HazardModifierRBMKRadiation(float target, boolean linear) {
|
|
this.target = target;
|
|
this.linear = linear;
|
|
}
|
|
|
|
@Override
|
|
public float modify(ItemStack stack, EntityLivingBase holder, float level) {
|
|
|
|
if(stack.getItem() instanceof ItemRBMKRod) {
|
|
//Due to short-lived fission products, radioactivity rises quicker than depletion when applicable
|
|
double depletion = linear ? 1D - ItemRBMKRod.getEnrichment(stack) : 1D - Math.pow(ItemRBMKRod.getEnrichment(stack), 2);
|
|
double xenon = ItemRBMKRod.getPoisonLevel(stack);
|
|
|
|
level = (float) (level + (this.target - level) * depletion);
|
|
level += HazardRegistry.xe135 * xenon;
|
|
|
|
} else if(stack.getItem() instanceof ItemRBMKPellet) {
|
|
|
|
double depletion = linear ? (ItemRBMKPellet.rectify(stack.getItemDamage()) % 5) / 4F : 1 - Math.pow((4 - ItemRBMKPellet.rectify(stack.getItemDamage()) % 5) / 4F, 2);
|
|
|
|
level = level + (target - level) * ((ItemRBMKPellet.rectify(stack.getItemDamage()) % 5) / 4F);
|
|
|
|
if(ItemRBMKPellet.hasXenon(stack.getItemDamage()))
|
|
level += HazardRegistry.xe135 * HazardRegistry.nugget;
|
|
}
|
|
|
|
|
|
return level;
|
|
}
|
|
|
|
}
|