package mods.ocminecart.interaction.waila;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaEntityAccessor;
import mcp.mobius.waila.api.IWailaEntityProvider;
import mods.ocminecart.OCMinecart;
import mods.ocminecart.common.minecart.ComputerCart;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
import java.util.List;
public class ComputerCartDataProvider implements IWailaEntityProvider {
@Override
public Entity getWailaOverride(IWailaEntityAccessor accessor, IWailaConfigHandler config) {
return accessor.getEntity();
}
@Override
public List<String> getWailaHead(Entity entity, List<String> currenttip,
IWailaEntityAccessor accessor, IWailaConfigHandler config) {
NBTTagCompound tag = accessor.getNBTData();
String stier;
EnumChatFormatting color;
switch(tag.getInteger("tier")){
case 0:
color = EnumChatFormatting.WHITE;
stier = "(Tier 1)";
break;
case 1:
color = EnumChatFormatting.YELLOW;
stier = "(Tier 2)";
break;
case 2:
color = EnumChatFormatting.AQUA;
stier = "(Tier 3)";
break;
case 3:
color = EnumChatFormatting.LIGHT_PURPLE;
stier = "(Creative)";
break;
default:
color = EnumChatFormatting.DARK_RED;
stier = "ERROR!";
break;
}
currenttip.set(0, color+StatCollector.translateToLocal("entity.ocminecart.computercart.name")+" "+stier);
return currenttip;
}
@Override
public List<String> getWailaBody(Entity entity, List<String> currenttip,
IWailaEntityAccessor accessor, IWailaConfigHandler config) {
NBTTagCompound tag = accessor.getNBTData();
if(config.getConfig("oc.address") && tag.hasKey("address")){
String loc = StatCollector.translateToLocal("tooltip."+OCMinecart.MODID+".address");
currenttip.add(EnumChatFormatting.GOLD+loc+": "+EnumChatFormatting.WHITE+tag.getString("address"));
}
if(config.getConfig("oc.energy") && tag.hasKey("energy") && tag.hasKey("maxenergy")){
String loc = StatCollector.translateToLocal("tooltip."+OCMinecart.MODID+".storedenergy");
currenttip.add(EnumChatFormatting.GOLD+loc+": "+EnumChatFormatting.WHITE+tag.getInteger("energy")
+"/"+tag.getInteger("maxenergy"));
}
return currenttip;
}
@Override
public List<String> getWailaTail(Entity entity, List<String> currenttip,
IWailaEntityAccessor accessor, IWailaConfigHandler config) { //Unused
return currenttip;
}
@Override
public NBTTagCompound getNBTData(EntityPlayerMP player, Entity ent,NBTTagCompound tag, World world) {
NBTTagCompound newtag = new NBTTagCompound();
if(ent instanceof ComputerCart){
ComputerCart cart = (ComputerCart) ent;
newtag.setInteger("tier", cart.tier());
newtag.setInteger("energy", (int)Math.floor(cart.getCurEnergy()+0.5D));
newtag.setInteger("maxenergy", (int)Math.floor(cart.getMaxEnergy()));
newtag.setString("address", cart.node().address());
}
return newtag;
}
}