mirror of
https://github.com/ACGaming/Spackenmobs
synced 2024-05-19 11:54:25 +02:00
158 lines
4 KiB
Java
158 lines
4 KiB
Java
package mod.acgaming.spackenmobs.entities;
|
|
|
|
import mod.acgaming.spackenmobs.misc.ModItems;
|
|
import mod.acgaming.spackenmobs.misc.ModLootTableList;
|
|
import mod.acgaming.spackenmobs.misc.ModSoundEvents;
|
|
import net.minecraft.entity.EntityCreature;
|
|
import net.minecraft.entity.EntityLiving;
|
|
import net.minecraft.entity.IMerchant;
|
|
import net.minecraft.entity.SharedMonsterAttributes;
|
|
import net.minecraft.entity.ai.*;
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
import net.minecraft.init.Items;
|
|
import net.minecraft.init.SoundEvents;
|
|
import net.minecraft.inventory.EntityEquipmentSlot;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.util.*;
|
|
import net.minecraft.util.math.BlockPos;
|
|
import net.minecraft.village.MerchantRecipe;
|
|
import net.minecraft.village.MerchantRecipeList;
|
|
import net.minecraft.world.World;
|
|
|
|
public class EntityFriedrichLiechtenstein extends EntityCreature implements IMerchant
|
|
{
|
|
public EntityFriedrichLiechtenstein(World worldIn)
|
|
{
|
|
super(worldIn);
|
|
setSize(0.6F, 1.8F);
|
|
setItemStackToSlot(EntityEquipmentSlot.MAINHAND, new ItemStack(ModItems.AHOJ_BRAUSE));
|
|
setItemStackToSlot(EntityEquipmentSlot.OFFHAND, new ItemStack(ModItems.AHOJ_BRAUSE_DRINK));
|
|
}
|
|
|
|
@Override
|
|
protected void initEntityAI()
|
|
{
|
|
this.tasks.addTask(0, new EntityAISwimming(this));
|
|
this.tasks.addTask(2, new EntityAIMoveIndoors(this));
|
|
this.tasks.addTask(3, new EntityAIRestrictOpenDoor(this));
|
|
this.tasks.addTask(4, new EntityAIOpenDoor(this, true));
|
|
this.tasks.addTask(5, new EntityAIMoveTowardsRestriction(this, 0.6D));
|
|
this.tasks.addTask(9, new EntityAIWatchClosest2(this, EntityPlayer.class, 3.0F, 1.0F));
|
|
this.tasks.addTask(9, new EntityAIWanderAvoidWater(this, 0.6D));
|
|
this.tasks.addTask(10, new EntityAIWatchClosest(this, EntityLiving.class, 8.0F));
|
|
}
|
|
|
|
@Override
|
|
protected void applyEntityAttributes()
|
|
{
|
|
super.applyEntityAttributes();
|
|
this.getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED).setBaseValue(0.25D);
|
|
}
|
|
|
|
@Override
|
|
public boolean processInteract(EntityPlayer player, EnumHand hand)
|
|
{
|
|
ItemStack itemstack = player.getHeldItem(hand);
|
|
|
|
if (itemstack.getItem() == Items.GLASS_BOTTLE)
|
|
{
|
|
player.playSound(ModSoundEvents.ENTITY_FRIEDRICH_DEATH, 1.0F, 1.0F);
|
|
player.playSound(SoundEvents.ENTITY_COW_MILK, 1.0F, 1.0F);
|
|
for (int i = 0; i < 7; ++i)
|
|
{
|
|
double d0 = this.rand.nextGaussian() * 0.02D;
|
|
double d1 = this.rand.nextGaussian() * 0.02D;
|
|
double d2 = this.rand.nextGaussian() * 0.02D;
|
|
this.world.spawnParticle(EnumParticleTypes.VILLAGER_HAPPY, this.posX + this.rand.nextFloat() * this.width * 2.0F - this.width, this.posY + 0.5D + this.rand.nextFloat() * this.height, this.posZ + this.rand.nextFloat() * this.width * 2.0F - this.width, d0, d1, d2);
|
|
}
|
|
itemstack.shrink(1);
|
|
|
|
if (itemstack.isEmpty())
|
|
{
|
|
player.setHeldItem(hand, new ItemStack(ModItems.AHOJ_BRAUSE_DRINK));
|
|
}
|
|
else if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.AHOJ_BRAUSE_DRINK)))
|
|
{
|
|
player.dropItem(new ItemStack(ModItems.AHOJ_BRAUSE_DRINK), false);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
return super.processInteract(player, hand);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
protected ResourceLocation getLootTable()
|
|
{
|
|
return ModLootTableList.ENTITIES_FRIEDRICH;
|
|
}
|
|
|
|
@Override
|
|
protected SoundEvent getAmbientSound()
|
|
{
|
|
return ModSoundEvents.ENTITY_FRIEDRICH_AMBIENT;
|
|
}
|
|
|
|
@Override
|
|
protected SoundEvent getHurtSound(DamageSource damageSourceIn)
|
|
{
|
|
return ModSoundEvents.ENTITY_FRIEDRICH_HURT;
|
|
}
|
|
|
|
@Override
|
|
protected SoundEvent getDeathSound()
|
|
{
|
|
return ModSoundEvents.ENTITY_FRIEDRICH_DEATH;
|
|
}
|
|
|
|
@Override
|
|
public EntityPlayer getCustomer()
|
|
{
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public void setCustomer(EntityPlayer player)
|
|
{
|
|
|
|
}
|
|
|
|
@Override
|
|
public MerchantRecipeList getRecipes(EntityPlayer player)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public void setRecipes(MerchantRecipeList recipeList)
|
|
{
|
|
|
|
}
|
|
|
|
@Override
|
|
public void useRecipe(MerchantRecipe recipe)
|
|
{
|
|
|
|
}
|
|
|
|
@Override
|
|
public void verifySellingItem(ItemStack stack)
|
|
{
|
|
|
|
}
|
|
|
|
@Override
|
|
public World getWorld()
|
|
{
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public BlockPos getPos()
|
|
{
|
|
return null;
|
|
}
|
|
} |