mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
77 lines
2.2 KiB
Java
77 lines
2.2 KiB
Java
package com.hbm.items.machine;
|
|
|
|
import java.util.List;
|
|
|
|
import com.hbm.util.BobMathUtil;
|
|
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
import net.minecraft.item.Item;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
import net.minecraft.util.EnumChatFormatting;
|
|
import net.minecraft.world.World;
|
|
|
|
public class ItemPlateFuel extends ItemFuelRod {
|
|
|
|
public int reactivity;
|
|
public FunctionEnum function;
|
|
|
|
public ItemPlateFuel(int life) {
|
|
super(life);
|
|
this.canRepair = false;
|
|
}
|
|
|
|
public ItemPlateFuel setFunction(FunctionEnum function, int reactivity) {
|
|
this.function = function;
|
|
this.reactivity = reactivity;
|
|
return this;
|
|
}
|
|
|
|
@Override
|
|
public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) {
|
|
|
|
list.add(EnumChatFormatting.YELLOW + "[Reactor Plate Fuel]");
|
|
list.add(EnumChatFormatting.DARK_AQUA + " " + getFunctionDesc());
|
|
list.add(EnumChatFormatting.DARK_AQUA + " Yield of " + BobMathUtil.getShortNumber(lifeTime) + " events");
|
|
|
|
super.addInformation(itemstack, player, list, bool);
|
|
}
|
|
|
|
public static enum FunctionEnum {
|
|
LOGARITHM(),
|
|
SQUARE_ROOT(),
|
|
NEGATIVE_QUADRATIC(),
|
|
LINEAR(),
|
|
PASSIVE();
|
|
|
|
private FunctionEnum() { }
|
|
}
|
|
|
|
public String getFunctionDesc() {
|
|
switch(this.function) {
|
|
case LOGARITHM: return "f(x) = log10(x + 1) * 0.5 * " + reactivity;
|
|
case SQUARE_ROOT: return "f(x) = sqrt(x) * " + reactivity + " / 10";
|
|
case NEGATIVE_QUADRATIC: return "f(x) = [x - (x² / 10000)] / 100 * " + reactivity;
|
|
case LINEAR: return "f(x) = x / 100 * " + reactivity;
|
|
case PASSIVE: return "f(x) = " + reactivity;
|
|
default: return "x";
|
|
}
|
|
}
|
|
|
|
public int react(World world, ItemStack stack, int flux) {
|
|
if(this.function != FunctionEnum.PASSIVE)
|
|
setLifeTime(stack, getLifeTime(stack) + flux);
|
|
|
|
switch(this.function) {
|
|
case LOGARITHM: return (int) (Math.log10(flux + 1) * 0.5D * reactivity);
|
|
case SQUARE_ROOT: return (int) (Math.sqrt(flux) * this.reactivity / 10);
|
|
case NEGATIVE_QUADRATIC: return (int) (Math.max(flux - (flux * flux / 10000) / 100 * reactivity, 0));
|
|
case LINEAR: return (int) (flux / 100 * reactivity);
|
|
case PASSIVE:
|
|
setLifeTime(stack, getLifeTime(stack) + reactivity);
|
|
return reactivity;
|
|
default: return 0;
|
|
}
|
|
}
|
|
}
|