package com.zivilon.cinder_loe.entity;

import com.zivilon.cinder_loe.CinderLoE;

import lotr.common.LOTRFoods;
import lotr.common.LOTRMod;
import lotr.common.entity.ai.*;
import lotr.common.entity.animal.LOTREntityHorse;
import lotr.common.entity.npc.*;
import lotr.common.fac.LOTRFaction;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.SharedMonsterAttributes;
import net.minecraft.entity.ai.*;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.Potion;
import net.minecraft.potion.PotionEffect;
import net.minecraft.util.DamageSource;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;

import java.util.Arrays;
import java.util.List;

public class DarkSpider extends LOTREntitySpiderBase {
    public static int VENOM_DARK = 3;
    public DarkSpider(World world) {
        super(world);
    }
    @Override
    protected int getRandomSpiderScale() {
        return this.rand.nextInt(4);
    }
    @Override
    protected int getRandomSpiderType() {
        return VENOM_DARK;
    }
    @Override
    public LOTRFaction getFaction() {
        return LOTRFaction.UTUMNO;
    }

    @Override
    public boolean attackEntityAsMob(Entity entity) {
        if (super.attackEntityAsMob(entity)) {
            if (entity instanceof EntityLivingBase) {
                ((EntityLivingBase) entity).addPotionEffect(new PotionEffect(Potion.blindness.id, 200, 0));
            }
            return true;
        }
        return false;
    }
    @Override
    protected boolean canRideSpider() {
        return false;
    }
    @Override
    public void attackEntityWithRangedAttack(EntityLivingBase p_82196_1_, float p_82196_2_) {
    }
    @Override
    public boolean attackEntityFrom(DamageSource source, float amount) {
        if (source.getEntity() instanceof  EntityLivingBase) {
            EntityLivingBase attacker = (EntityLivingBase) source.getEntity();
            if (attacker instanceof  EntityPlayer) {
                EntityPlayer player = (EntityPlayer) attacker;
                if (this.getSpiderScale() > 4 && this.rand.nextDouble() < 0.5) {
                    spawnDarkSpiders(player);
                }
            }
        }
        return super.attackEntityFrom(source, amount);
    }
    private void spawnDarkSpiders(EntityPlayer player) {
        World world = player.worldObj;
        for (int i = 0; i < 10; i++) {
            DarkSpider babySpider = new DarkSpider(world);
            babySpider.setLocationAndAngles(player.posX, player.posY, player.posZ, player.rotationYaw, 0.0F);
            babySpider.setSpiderScale(0);
            babySpider.setHealth(10);
            world.spawnEntityInWorld(babySpider);
        }
    }
    @Override
    public ItemStack getPickedResult(MovingObjectPosition target) {
        return null;
    }
}
