2020-08-23 10:30:02 +02:00
|
|
|
package mod.acgaming.spackenmobs.entities;
|
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.Random;
|
|
|
|
|
2020-08-23 18:26:24 +02:00
|
|
|
import mod.acgaming.spackenmobs.misc.ModConfigs;
|
2020-08-23 10:30:02 +02:00
|
|
|
import net.minecraft.entity.ai.EntityAIBase;
|
|
|
|
import net.minecraft.entity.item.EntityItem;
|
|
|
|
import net.minecraft.item.ItemStack;
|
|
|
|
import net.minecraft.util.math.AxisAlignedBB;
|
|
|
|
import net.minecraft.world.World;
|
|
|
|
|
2020-08-23 15:38:40 +02:00
|
|
|
public class EntityAIEatDroppedFish extends EntityAIBase
|
|
|
|
{
|
|
|
|
private EntityJens jens;
|
|
|
|
private Random rand = new Random();
|
|
|
|
private World world = null;
|
2020-08-23 18:26:24 +02:00
|
|
|
double searchDistance = ModConfigs.Jens_search_distance;
|
2020-08-23 10:30:02 +02:00
|
|
|
|
2020-08-23 15:38:40 +02:00
|
|
|
public EntityAIEatDroppedFish(EntityJens jens)
|
|
|
|
{
|
|
|
|
this.jens = jens;
|
|
|
|
this.world = jens.world;
|
|
|
|
}
|
2020-08-23 10:30:02 +02:00
|
|
|
|
2020-08-23 15:38:40 +02:00
|
|
|
public EntityItem getNearbyFood()
|
|
|
|
{
|
|
|
|
List<EntityItem> items = getItems();
|
|
|
|
for (EntityItem item : items)
|
|
|
|
{
|
|
|
|
EntityItem stack = item;
|
|
|
|
if (items != null)
|
|
|
|
{
|
|
|
|
return stack;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return null;
|
2020-08-23 10:30:02 +02:00
|
|
|
}
|
|
|
|
|
2020-08-23 15:38:40 +02:00
|
|
|
List<EntityItem> getItems()
|
|
|
|
{
|
|
|
|
return this.world.getEntitiesWithinAABB(EntityItem.class, new AxisAlignedBB(this.jens.posX - this.searchDistance, this.jens.posY - this.searchDistance, this.jens.posZ - this.searchDistance,
|
|
|
|
this.jens.posX + this.searchDistance, this.jens.posY + this.searchDistance, this.jens.posZ + this.searchDistance));
|
|
|
|
}
|
2020-08-23 10:30:02 +02:00
|
|
|
|
2020-08-23 15:38:40 +02:00
|
|
|
@Override
|
|
|
|
public boolean shouldExecute()
|
|
|
|
{
|
2020-08-23 18:26:24 +02:00
|
|
|
EntityItem nearbyFood = getNearbyFood();
|
|
|
|
if (nearbyFood != null && !this.jens.isChild() && this.jens.yummy_in_tummy == false && this.jens.isFishItem(nearbyFood.getItem()))
|
2020-08-23 15:38:40 +02:00
|
|
|
{
|
2020-08-23 18:26:24 +02:00
|
|
|
execute(this.jens, nearbyFood);
|
2020-08-23 15:38:40 +02:00
|
|
|
}
|
|
|
|
return false;
|
2020-08-23 10:30:02 +02:00
|
|
|
}
|
|
|
|
|
2020-08-23 15:38:40 +02:00
|
|
|
public boolean execute(EntityJens jens, EntityItem item)
|
|
|
|
{
|
|
|
|
if (jens.getNavigator().tryMoveToXYZ(item.posX, item.posY, item.posZ, 1.25D))
|
|
|
|
{
|
|
|
|
if (jens.getDistance(item) < 1.0F)
|
|
|
|
{
|
|
|
|
eatItem(item);
|
|
|
|
jens.digestFish();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return true;
|
2020-08-23 10:30:02 +02:00
|
|
|
}
|
|
|
|
|
2020-08-23 15:38:40 +02:00
|
|
|
public void eatItem(EntityItem item)
|
|
|
|
{
|
|
|
|
ItemStack stack = item.getItem();
|
|
|
|
stack.setCount(stack.getCount() - 1);
|
|
|
|
if (stack.getCount() == 0)
|
|
|
|
{
|
|
|
|
item.setDead();
|
|
|
|
}
|
2020-08-23 10:30:02 +02:00
|
|
|
}
|
|
|
|
}
|