@Override public void onUpdate() { super.onUpdate(); if(ticksExisted % 5 == 0) { List<EntitySlime> slimes = supertile.getWorld().getEntitiesWithinAABB(EntitySlime.class, new AxisAlignedBB(supertile.getPos().add(-RANGE, -RANGE, -RANGE), supertile.getPos().add(RANGE + 1, RANGE + 1, RANGE + 1))); for(EntitySlime slime : slimes) { if(slime.getEntityData().getBoolean(TAG_WORLD_SPAWNED) && !slime.isDead) { int size = slime.getSlimeSize(); int mul = (int) Math.pow(2, size); int mana = 1200 * mul; if(!slime.world.isRemote) { slime.setDead(); slime.playSound(size > 1 ? SoundEvents.ENTITY_SLIME_SQUISH : SoundEvents.ENTITY_SMALL_SLIME_SQUISH, 1, 0.02F); this.mana = Math.min(getMaxMana(), this.mana + mana); sync(); } for (int j = 0; j < mul * 8; ++j) { float f = slime.world.rand.nextFloat() * (float)Math.PI * 2.0F; float f1 = slime.world.rand.nextFloat() * 0.5F + 0.5F; float f2 = MathHelper.sin(f) * size * 0.5F * f1; float f3 = MathHelper.cos(f) * size * 0.5F * f1; float f4 = slime.world.rand.nextFloat() * size * 0.5F * f1; slime.world.spawnParticle(EnumParticleTypes.SLIME, slime.posX + f2, slime.getEntityBoundingBox().minY + f4, slime.posZ + f3, 0.0D, 0.0D, 0.0D); } break; } } } }
@Override protected int getAttackStrength() { return super.getAttackStrength() + 2; }
@Override protected int getJumpDelay() { return super.getJumpDelay() * 4; }
@Override public EnumActionResult onItemUse(EntityPlayer playerIn, World worldIn, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { double x = pos.getX() + 0.5 + facing.getFrontOffsetX(); double y = pos.getY() + 0.5 + facing.getFrontOffsetY(); double z = pos.getZ() + 0.5 + facing.getFrontOffsetZ(); if(!worldIn.isRemote) { EntitySlime slime = new EntitySlime(worldIn); NBTTagCompound data = ItemNBTHelper.getCompound(playerIn.getHeldItem(hand), TAG_ENTITY_DATA, true); if(data != null) slime.readFromNBT(data); else { slime.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(1.0); slime.getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED).setBaseValue(0.3); slime.setHealth(slime.getMaxHealth()); } slime.setPosition(x, y, z); worldIn.spawnEntity(slime); playerIn.swingArm(hand); } playerIn.setHeldItem(hand, new ItemStack(Items.BUCKET)); return EnumActionResult.SUCCESS; }
@Override public EntityDimensions getDimensions(Entity entity) { EntitySlime slime = (EntitySlime) entity; int size = slime.getSlimeSize(); return new EntityDimensions(0.0F, 0.25F, 0.0F, 1F / size); } }
@Override protected void applyEntityAttributes() { super.applyEntityAttributes(); this.getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED).setBaseValue(0.20000000298023224D); }
if(event.getTarget() != null && !event.getWorld().isRemote) { String name = EntityList.getEntityString(event.getTarget()); if(name != null && name.equals("Slime") && ((EntitySlime) event.getTarget()).getSlimeSize() == 1 && ((EntityLiving) event.getTarget()).getHealth() > 0) { EntityPlayer player = event.getEntityPlayer(); EnumHand hand = EnumHand.MAIN_HAND;