/******************************************************************************* * AbyssalCraft * Copyright (c) 2012 - 2017 Shinoow. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Lesser Public License v3 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/lgpl-3.0.txt * * Contributors: * Shinoow - implementation ******************************************************************************/ package com.shinoow.abyssalcraft.common.entity.anti; import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityAgeable; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.EntityAIFollowParent; import net.minecraft.entity.ai.EntityAILookIdle; import net.minecraft.entity.ai.EntityAIMate; import net.minecraft.entity.ai.EntityAIPanic; import net.minecraft.entity.ai.EntityAISwimming; import net.minecraft.entity.ai.EntityAITempt; import net.minecraft.entity.ai.EntityAIWander; import net.minecraft.entity.ai.EntityAIWatchClosest; import net.minecraft.entity.passive.EntityAnimal; import net.minecraft.entity.passive.EntityPig; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; import net.minecraft.init.SoundEvents; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraft.util.SoundEvent; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import com.shinoow.abyssalcraft.api.entity.IAntiEntity; import com.shinoow.abyssalcraft.api.item.ACItems; import com.shinoow.abyssalcraft.lib.ACLoot; public class EntityAntiPig extends EntityAnimal implements IAntiEntity { public EntityAntiPig(World par1World) { super(par1World); setSize(0.9F, 0.9F); tasks.addTask(0, new EntityAISwimming(this)); tasks.addTask(1, new EntityAIPanic(this, 1.25D)); tasks.addTask(3, new EntityAIMate(this, 1.0D)); tasks.addTask(4, new EntityAITempt(this, 1.2D, Items.CARROT_ON_A_STICK, false)); tasks.addTask(4, new EntityAITempt(this, 1.2D, Items.CARROT, false)); tasks.addTask(5, new EntityAIFollowParent(this, 1.1D)); tasks.addTask(6, new EntityAIWander(this, 1.0D)); tasks.addTask(7, new EntityAIWatchClosest(this, EntityPlayer.class, 6.0F)); tasks.addTask(8, new EntityAILookIdle(this)); } @Override protected void applyEntityAttributes() { super.applyEntityAttributes(); getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(20.0D); getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED).setBaseValue(0.25D); } @Override protected void updateAITasks() { super.updateAITasks(); } @Override protected SoundEvent getAmbientSound() { return SoundEvents.ENTITY_PIG_AMBIENT; } @Override protected SoundEvent getHurtSound() { return SoundEvents.ENTITY_PIG_HURT; } @Override protected SoundEvent getDeathSound() { return SoundEvents.ENTITY_PIG_DEATH; } @Override protected void playStepSound(BlockPos pos, Block par4Block) { playSound(SoundEvents.ENTITY_PIG_STEP, 0.15F, 1.0F); } @Override protected Item getDropItem() { return isBurning() ? ACItems.anti_pork : ACItems.anti_pork; } @Override protected void dropFewItems(boolean par1, int par2) { int j = rand.nextInt(3) + 1 + rand.nextInt(1 + par2); for (int k = 0; k < j; ++k) if (isBurning()) dropItem(ACItems.anti_pork, 1); else dropItem(ACItems.anti_pork, 1); } @Override protected ResourceLocation getLootTable(){ return ACLoot.ENTITY_ANTI_PIG; } @Override protected void collideWithEntity(Entity par1Entity) { if(!world.isRemote && par1Entity instanceof EntityPig){ boolean flag = world.getGameRules().getBoolean("mobGriefing"); world.createExplosion(this, posX, posY, posZ, 5, flag); setDead(); } else par1Entity.applyEntityCollision(this); } @Override public EntityAntiPig createChild(EntityAgeable par1EntityAgeable) { return new EntityAntiPig(world); } @Override public boolean isBreedingItem(ItemStack par1ItemStack) { return !par1ItemStack.isEmpty() && par1ItemStack.getItem() == Items.CARROT; } }