package crazypants.enderio.gui;
import java.util.List;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntityFurnace;
import com.enderio.core.client.handlers.SpecialTooltipHandler.ITooltipCallback;
import crazypants.enderio.EnderIO;
import crazypants.enderio.config.Config;
import crazypants.enderio.machine.AbstractMachineEntity;
import crazypants.enderio.machine.generator.stirling.StirlingGeneratorContainer;
import crazypants.enderio.machine.generator.stirling.TileEntityStirlingGenerator;
import crazypants.enderio.machine.power.PowerDisplayUtil;
public class TooltipHandlerBurnTime implements ITooltipCallback {
@Override
public void addCommonEntries(ItemStack itemstack, EntityPlayer entityplayer, List<String> list, boolean flag) {
int time = 0;
TileEntityStirlingGenerator gen = getStirlingGen(itemstack);
if (isStirlingGen(itemstack, gen)) {
int rate = gen.getPowerUsePerTick();
String msg = String.format("%s %s %s %s %s %s%s",
EnderIO.lang.localize("power.generates"),
PowerDisplayUtil.formatPower((long)gen.getBurnTime(itemstack) * rate),
PowerDisplayUtil.abrevation(),
EnderIO.lang.localize("power.generation_rate"),
PowerDisplayUtil.formatPower(rate),
PowerDisplayUtil.abrevation(),
PowerDisplayUtil.perTickStr());
list.add(msg);
} else if (Config.addFurnaceFuelTootip && (time = TileEntityFurnace.getItemBurnTime(itemstack)) > 0) {
list.add(EnderIO.lang.localize("tooltip.burntime") + " " + time);
}
}
@Override
public void addBasicEntries(ItemStack itemstack, EntityPlayer entityplayer, List<String> list, boolean flag) {
}
@Override
public void addDetailedEntries(ItemStack itemstack, EntityPlayer entityplayer, List<String> list, boolean flag) {
}
@Override
public boolean shouldHandleItem(ItemStack item) {
int time = TileEntityFurnace.getItemBurnTime(item);
return time > 0 || isStirlingGen(item);
}
private TileEntityStirlingGenerator getStirlingGen(ItemStack stack) {
EntityPlayer player = Minecraft.getMinecraft().thePlayer;
if (player != null && player.openContainer instanceof StirlingGeneratorContainer) {
AbstractMachineEntity te = ((StirlingGeneratorContainer) player.openContainer).getInv();
if (te instanceof TileEntityStirlingGenerator) {
return (TileEntityStirlingGenerator) te;
}
}
return null;
}
private boolean isStirlingGen(ItemStack stack) {
return isStirlingGen(stack, getStirlingGen(stack));
}
private boolean isStirlingGen(ItemStack stack, TileEntityStirlingGenerator gen) {
return gen == null ? false : gen.getBurnTime(stack) > 0;
}
}