package me.exz.wailanbt.handler;

import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaEntityAccessor;
import mcp.mobius.waila.api.IWailaEntityProvider;
import mcp.mobius.waila.api.IWailaRegistrar;
import me.exz.wailanbt.util.LogHelper;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityList;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;

import java.util.List;

public class EntityHandler implements IWailaEntityProvider {

    @SuppressWarnings("UnusedDeclaration")
    public static void callbackRegister(IWailaRegistrar registrar) {
        EntityHandler instance = new EntityHandler();
        registrar.registerSyncedNBTKey("*", Entity.class);
        registrar.registerBodyProvider(instance, Entity.class);
        LogHelper.info("entity handler");
    }

    @Override
    public Entity getWailaOverride(IWailaEntityAccessor accessor, IWailaConfigHandler config) {
        return null;
    }

    @Override
    public List<String> getWailaHead(Entity entity, List<String> currenttip, IWailaEntityAccessor accessor, IWailaConfigHandler config) {
        return currenttip;
    }

    @Override
    public List<String> getWailaBody(Entity entity, List<String> currenttip, IWailaEntityAccessor accessor, IWailaConfigHandler config) {
        Entity currentEntity = accessor.getEntity();
        Class currentEntityClass = currentEntity.getClass();
        if (EntityList.classToStringMapping.containsKey(currentEntityClass)) {
            NBTTagCompound n = accessor.getNBTData();
            //LogHelper.info(n.toString());
            EntityPlayer player = accessor.getPlayer();
            ItemStack holdItemReal = player.getHeldItem();
            String holdItemNameReal = "";
            if (holdItemReal != null) {
                holdItemNameReal = Item.itemRegistry.getNameForObject(holdItemReal.getItem());
            }
            NBTHandler.flag=1;
            NBTHandler.id= EntityList.getEntityString(currentEntity);
            //currenttip.add(NBTHandler.id);
            List<String> tips = NBTHandler.getTipsFromNBT(n, holdItemNameReal);
            currenttip.addAll(tips);
        }
        return currenttip;
    }

    @Override
    public List<String> getWailaTail(Entity entity, List<String> currenttip, IWailaEntityAccessor accessor, IWailaConfigHandler config) {
        return currenttip;
    }
}