package me.zombie_striker.qg.npcs;

import me.zombie_striker.customitemmanager.CustomItemManager;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;

import me.zombie_striker.customitemmanager.OLD_ItemFact;
import me.zombie_striker.qg.QAMain;
import me.zombie_striker.qg.guns.Gun;
import me.zombie_striker.qg.npcs.goals.Gunnergoal;
import net.citizensnpcs.api.CitizensAPI;
import net.citizensnpcs.api.npc.NPC;
import net.citizensnpcs.npc.skin.SkinnableEntity;

public class Gunner {

	public NPC gunner;

	@SuppressWarnings("deprecation")
	public static Gunner createGunner(Location loc, final String gun) {
		final Gunner gunner = new Gunner();
		gunner.gunner = CitizensAPI.getNPCRegistry().createNPC(EntityType.PLAYER, "GunnerTest");
		gunner.gunner.spawn(loc);
		QAMain.gunners.add(gunner);
		SkinnableEntity se = ((SkinnableEntity)gunner.gunner.getEntity());
		se.setSkinName("army");
		// gunner.gunner.addTrait(GunnerTrait.class);
		// new BukkitRunnable() {
		// @Override
		// public void run() {
		Gun g = me.zombie_striker.qg.api.QualityArmory.getGunByName(gun);
		if (g == null) {
			Bukkit.broadcastMessage("gun is null");
		} else {
			((Player) gunner.gunner.getEntity()).setItemInHand(CustomItemManager.getItemType("gun").getItem(g.getItemData().getMat(),g.getItemData().getData(),g.getItemData().getVariant()));
		}
		gunner.gunner.getDefaultGoalController().addGoal(new Gunnergoal(gunner, g), 1);
		
		//LookClose lookclose = new LookClose();
		//lookclose.setRange(64);
		//lookclose.setRealisticLooking(true);
		//lookclose.linkToNPC(gunner.gunner);
		//gunner.gunner.addTrait(lookclose);

		// }
		// }.runTaskLater(Main.getInstance(), 1);

		return gunner;
	}
	
	public void dispose() {
		gunner.despawn();
		//TODO: Check if destroying is best option, or if multiple entities are okay.
		gunner.destroy();
	}

}