Ejemplo n.º 1
0
 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());
     }
 }
Ejemplo n.º 2
0
        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);
                }
            }
        }