private net.minecraft.src.Packet GetSpawnPacket() { if (trackedEntity is net.minecraft.src.EntityItem) { net.minecraft.src.EntityItem entityitem = (net.minecraft.src.EntityItem)trackedEntity; net.minecraft.src.Packet21PickupSpawn packet21pickupspawn = new net.minecraft.src.Packet21PickupSpawn (entityitem); entityitem.posX = (double)packet21pickupspawn.xPosition / 32D; entityitem.posY = (double)packet21pickupspawn.yPosition / 32D; entityitem.posZ = (double)packet21pickupspawn.zPosition / 32D; return(packet21pickupspawn); } if (trackedEntity is net.minecraft.src.EntityPlayerMP) { // CRAFTBUKKIT start - limit name length to 16 characters if (((EntityPlayerMP)this.trackedEntity).username.Length > 16) { ((EntityPlayerMP)this.trackedEntity).username = ((EntityPlayerMP)this.trackedEntity).username.Substring(0, 16); } // CRAFTBUKKIT end return(new net.minecraft.src.Packet20NamedEntitySpawn((net.minecraft.src.EntityPlayer)trackedEntity)); } if (trackedEntity is net.minecraft.src.EntityMinecart) { net.minecraft.src.EntityMinecart entityminecart = (net.minecraft.src.EntityMinecart )trackedEntity; if (entityminecart.minecartType == 0) { return(new net.minecraft.src.Packet23VehicleSpawn(trackedEntity, 10)); } if (entityminecart.minecartType == 1) { return(new net.minecraft.src.Packet23VehicleSpawn(trackedEntity, 11)); } if (entityminecart.minecartType == 2) { return(new net.minecraft.src.Packet23VehicleSpawn(trackedEntity, 12)); } } if (trackedEntity is net.minecraft.src.EntityBoat) { return(new net.minecraft.src.Packet23VehicleSpawn(trackedEntity, 1)); } if (trackedEntity is net.minecraft.src.IAnimals) { return(new net.minecraft.src.Packet24MobSpawn((net.minecraft.src.EntityLiving)trackedEntity )); } if (trackedEntity is net.minecraft.src.EntityFish) { return(new net.minecraft.src.Packet23VehicleSpawn(trackedEntity, 90)); } if (trackedEntity is net.minecraft.src.EntityArrow) { net.minecraft.src.EntityLiving entityliving = ((net.minecraft.src.EntityArrow)trackedEntity ).owner; return(new net.minecraft.src.Packet23VehicleSpawn(trackedEntity, 60, entityliving == null ? trackedEntity.entityId : entityliving.entityId)); } if (trackedEntity is net.minecraft.src.EntitySnowball) { return(new net.minecraft.src.Packet23VehicleSpawn(trackedEntity, 61)); } if (trackedEntity is net.minecraft.src.EntityFireball) { net.minecraft.src.EntityFireball entityfireball = (net.minecraft.src.EntityFireball)trackedEntity; net.minecraft.src.Packet23VehicleSpawn packet23vehiclespawn = new net.minecraft.src.Packet23VehicleSpawn(trackedEntity, 63, ((net.minecraft.src.EntityFireball)trackedEntity).owner?.entityId ?? 1); // CRAFTBUKKIT -- added check for null shooter packet23vehiclespawn.motionX = (int)(entityfireball.field_9199_b * 8000D); packet23vehiclespawn.motionY = (int)(entityfireball.field_9198_c * 8000D); packet23vehiclespawn.motionZ = (int)(entityfireball.field_9196_d * 8000D); return(packet23vehiclespawn); } if (trackedEntity is net.minecraft.src.EntityEgg) { return(new net.minecraft.src.Packet23VehicleSpawn(trackedEntity, 62)); } if (trackedEntity is net.minecraft.src.EntityTNTPrimed) { return(new net.minecraft.src.Packet23VehicleSpawn(trackedEntity, 50)); } if (trackedEntity is net.minecraft.src.EntityFallingSand) { net.minecraft.src.EntityFallingSand entityfallingsand = (net.minecraft.src.EntityFallingSand )trackedEntity; if (entityfallingsand.blockID == net.minecraft.src.Block.SAND.ID) { return(new net.minecraft.src.Packet23VehicleSpawn(trackedEntity, 70)); } if (entityfallingsand.blockID == net.minecraft.src.Block.GRAVEL.ID) { return(new net.minecraft.src.Packet23VehicleSpawn(trackedEntity, 71)); } } if (trackedEntity is net.minecraft.src.EntityPainting) { return(new net.minecraft.src.Packet25EntityPainting((net.minecraft.src.EntityPainting )trackedEntity)); } else { throw new System.ArgumentException((new java.lang.StringBuilder()).Append("Don't know how to add ").Append(trackedEntity.GetType()).Append("!").ToString()); } }
protected internal override void UpdatePlayerActionState() { if (!worldObj.singleplayerWorld && worldObj.difficultySetting == 0) { SetEntityDead(); } Func_27013_Q(); prevAttackCounter = attackCounter; double d = waypointX - posX; double d1 = waypointY - posY; double d2 = waypointZ - posZ; double d3 = net.minecraft.src.MathHelper.Sqrt_double(d * d + d1 * d1 + d2 * d2); if (d3 < 1.0D || d3 > 60D) { waypointX = posX + (double)((rand.NextFloat() * 2.0F - 1.0F) * 16F); waypointY = posY + (double)((rand.NextFloat() * 2.0F - 1.0F) * 16F); waypointZ = posZ + (double)((rand.NextFloat() * 2.0F - 1.0F) * 16F); } if (courseChangeCooldown-- <= 0) { courseChangeCooldown += rand.Next(5) + 2; if (IsCourseTraversable(waypointX, waypointY, waypointZ, d3)) { motionX += (d / d3) * 0.10000000000000001D; motionY += (d1 / d3) * 0.10000000000000001D; motionZ += (d2 / d3) * 0.10000000000000001D; } else { waypointX = posX; waypointY = posY; waypointZ = posZ; } } if (targetedEntity != null && targetedEntity.isDead) { targetedEntity = null; } if (targetedEntity == null || aggroCooldown-- <= 0) { targetedEntity = worldObj.GetClosestPlayerToEntity(this, 100D); if (targetedEntity != null) { aggroCooldown = 20; } } double d4 = 64D; if (targetedEntity != null && targetedEntity.GetDistanceSqToEntity(this) < d4 * d4) { double d5 = targetedEntity.posX - posX; double d6 = (targetedEntity.boundingBox.minY + (double)(targetedEntity.height / 2.0F )) - (posY + (double)(height / 2.0F)); double d7 = targetedEntity.posZ - posZ; renderYawOffset = rotationYaw = (-(float)System.Math.Atan2(d5, d7) * 180F) / 3.141593F; if (CanEntityBeSeen(targetedEntity)) { if (attackCounter == 10) { worldObj.PlaySoundAtEntity(this, "mob.ghast.charge", GetSoundVolume(), (rand.NextFloat () - rand.NextFloat()) * 0.2F + 1.0F); } attackCounter++; if (attackCounter == 20) { worldObj.PlaySoundAtEntity(this, "mob.ghast.fireball", GetSoundVolume(), (rand.NextFloat () - rand.NextFloat()) * 0.2F + 1.0F); net.minecraft.src.EntityFireball entityfireball = new net.minecraft.src.EntityFireball (worldObj, this, d5, d6, d7); double d8 = 4D; net.minecraft.src.Vec3D vec3d = GetLook(1.0F); entityfireball.posX = posX + vec3d.xCoord * d8; entityfireball.posY = posY + (double)(height / 2.0F) + 0.5D; entityfireball.posZ = posZ + vec3d.zCoord * d8; worldObj.AddEntity(entityfireball); attackCounter = -40; } } else { if (attackCounter > 0) { attackCounter--; } } } else { renderYawOffset = rotationYaw = (-(float)System.Math.Atan2(motionX, motionZ) * 180F ) / 3.141593F; if (attackCounter > 0) { attackCounter--; } } if (!worldObj.singleplayerWorld) { byte byte0 = dataWatcher.GetWatchableObjectByte(16); byte byte1 = unchecked ((byte)(attackCounter <= 10 ? 0 : 1)); if (byte0 != byte1) { dataWatcher.UpdateObject(16, byte1); } } }