예제 #1
0
 public void removeFromTrackedPlayers(EntityPlayerMP entityplayermp)
 {
     if (trackedPlayers.contains(entityplayermp))
     {
         trackedPlayers.remove(entityplayermp);
     }
 }
예제 #2
0
        public void addPlayer(EntityPlayerMP entityplayermp)
        {
            int i = (int) entityplayermp.posX >> 4;
            int j = (int) entityplayermp.posZ >> 4;
            entityplayermp.field_9155_d = entityplayermp.posX;
            entityplayermp.field_9154_e = entityplayermp.posZ;
            int k = 0;
            byte byte0 = 10;
            int l = 0;
            int i1 = 0;
            func_537_a(i, j, true).func_779_a(entityplayermp);
            for (int j1 = 1; j1 <= byte0*2; j1++)
            {
                for (int l1 = 0; l1 < 2; l1++)
                {
                    int[] ai = field_22089_e[k++%4];
                    for (int i2 = 0; i2 < j1; i2++)
                    {
                        l += ai[0];
                        i1 += ai[1];
                        func_537_a(i + l, j + i1, true).func_779_a(entityplayermp);
                    }
                }
            }

            k %= 4;
            for (int k1 = 0; k1 < byte0*2; k1++)
            {
                l += field_22089_e[k][0];
                i1 += field_22089_e[k][1];
                func_537_a(i + l, j + i1, true).func_779_a(entityplayermp);
            }

            field_9216_a.add(entityplayermp);
        }
예제 #3
0
        public void HasReceived(object sender, Server.DataReceivedArgs args)
        {
            if (args.packet != null)
            {
                switch (args.packet.Type)
                {
                case Packet.PacketType.connect:
                    level.SpawnEntity(Entity.EntityName.playerMP, new Vector2f(0, 0), ((PacketConnect)args.packet).Nickname);
                    break;

                case Packet.PacketType.entityData:
                    level.UpdateEntityByPacket((PacketEntityData)args.packet);
                    break;

                case Packet.PacketType.disconnect:
                    EntityPlayerMP plr = level.GetPlayerAtName(((PacketDisconnect)args.packet).Nickname);
                    if (plr != null)
                    {
                        plr.Destroy();
                    }
                    break;

                default:
                    //Console.WriteLine(args.packet.ToString());
                    break;
                }
            }
        }
예제 #4
0
 public void removeTrackedPlayerSymmetric(EntityPlayerMP entityplayermp)
 {
     if (trackedPlayers.contains(entityplayermp))
     {
         trackedPlayers.remove(entityplayermp);
         entityplayermp.playerNetServerHandler.sendPacket(new Packet29DestroyEntity(trackedEntity.entityId));
     }
 }
예제 #5
0
 public void removeTrackedPlayerSymmetric(EntityPlayerMP entityplayermp)
 {
     EntityTrackerEntry entitytrackerentry;
     for (Iterator iterator = trackedEntitySet.iterator();
          iterator.hasNext();
          entitytrackerentry.removeTrackedPlayerSymmetric(entityplayermp))
     {
         entitytrackerentry = (EntityTrackerEntry) iterator.next();
     }
 }
예제 #6
0
 public NetServerHandler(MinecraftServer minecraftserver, NetworkManager networkmanager,
     EntityPlayerMP entityplayermp)
 {
     connectionClosed = false;
     hasMoved = true;
     field_10_k = new HashMap();
     mcServer = minecraftserver;
     netManager = networkmanager;
     networkmanager.setNetHandler(this);
     playerEntity = entityplayermp;
     entityplayermp.playerNetServerHandler = this;
 }
예제 #7
0
        public bool SpawnEntity(Entity.EntityName name, Vector2f pos, object _info = null)
        {
            bool spawned = true;

            Entity entity = null;

            if (IsFree(pos))
            {
                switch (name)
                {
                case Entity.EntityName.player:
                    if (Player == null)
                    {
                        entity = new EntityPlayer(pos);
                    }
                    else
                    {
                        spawned = false;
                    }
                    break;

                case Entity.EntityName.playerMP:
                    entity = new EntityPlayerMP(pos, (string)_info);
                    break;

                default:
                    spawned = false;
                    break;
                }
            }
            else
            {
                spawned = false;
            }

            if (entity != null)
            {
                spawned = AddEntity(entity);
            }
            else
            {
                spawned = false;
            }

            if (entity != null && spawned && name == Entity.EntityName.player)
            {
                Player = (EntityPlayer)entity;
            }

            return(spawned);
        }
예제 #8
0
        public void UpdateEntityByPacket(PacketEntityData packet)
        {
            string entityID   = packet.EntityID;
            string entityType = entityID.Split("_")[0];
            float  posX       = packet.PosX;
            float  posY       = packet.PosY;
            string addData    = packet.AddData;

            if (entityType == "player")
            {
                Console.WriteLine(packet.ToString());
                string          playerName = addData.Split(".")[0];
                bool            isMoving   = bool.Parse(addData.Split(".")[1]);
                Utils.Direction moveDir    = (Utils.Direction) int.Parse(addData.Split(".")[2]);

                EntityPlayerMP player = GetPlayerAtName(playerName);
                if (player != null)
                {
                    player.SetMove(moveDir, isMoving);
                    player.Pos = new Vector2f(posX, posY);
                }
            }
        }
예제 #9
0
 public void playerLoggedOut(EntityPlayerMP entityplayermp)
 {
     playerNBTManagerObj.writePlayerData(entityplayermp);
     mcServer.worldMngr.func_22085_d(entityplayermp);
     playerEntities.remove(entityplayermp);
     playerManagerObj.removePlayer(entityplayermp);
 }
예제 #10
0
 public override void handleRespawnPacket(Packet9 packet9)
 {
     if (playerEntity.health > 0)
     {
         return;
     }
     else
     {
         playerEntity = mcServer.configManager.recreatePlayerEntity(playerEntity);
         return;
     }
 }
예제 #11
0
 public SharpBukkitPlayer(EntityPlayerMP entityplayermp)
 {
     this.NetServerHandler = entityplayermp.netServerHandler;
 }
예제 #12
0
 public void func_779_a(EntityPlayerMP entityplayermp)
 {
     if (field_1072_b.contains(entityplayermp))
     {
         throw new IllegalStateException(
             (new StringBuilder()).append("Failed to add player. ").append(entityplayermp).append(
                 " already is in chunk ").append(field_1071_c).append(", ").append(field_1070_d).toString());
     }
     else
     {
         entityplayermp.field_420_ah.add(field_1069_e);
         entityplayermp.playerNetServerHandler.sendPacket(new Packet50PreChunk(field_1069_e.chunkXPos,
                                                                               field_1069_e.chunkZPos, true));
         field_1072_b.add(entityplayermp);
         entityplayermp.loadedChunks.add(field_1069_e);
         return;
     }
 }
예제 #13
0
 public void updatePlayerEntity(EntityPlayerMP entityplayermp)
 {
     if (entityplayermp == trackedEntity)
     {
         return;
     }
     double d = entityplayermp.posX - (encodedPosX/32);
     double d1 = entityplayermp.posZ - (encodedPosZ/32);
     if (d >= (-trackingDistanceThreshold) && d <= trackingDistanceThreshold &&
         d1 >= (-trackingDistanceThreshold) && d1 <= trackingDistanceThreshold)
     {
         if (!trackedPlayers.contains(entityplayermp))
         {
             trackedPlayers.add(entityplayermp);
             entityplayermp.playerNetServerHandler.sendPacket(getSpawnPacket());
             if (shouldSendMotionUpdates)
             {
                 entityplayermp.playerNetServerHandler.sendPacket(new Packet28(trackedEntity.entityId,
                                                                               trackedEntity.motionX,
                                                                               trackedEntity.motionY,
                                                                               trackedEntity.motionZ));
             }
             ItemStack[] aitemstack = trackedEntity.getInventory();
             if (aitemstack != null)
             {
                 for (int i = 0; i < aitemstack.Length; i++)
                 {
                     entityplayermp.playerNetServerHandler.sendPacket(
                         new Packet5PlayerInventory(trackedEntity.entityId, i, aitemstack[i]));
                 }
             }
         }
     }
     else if (trackedPlayers.contains(entityplayermp))
     {
         trackedPlayers.remove(entityplayermp);
         entityplayermp.playerNetServerHandler.sendPacket(new Packet29DestroyEntity(trackedEntity.entityId));
     }
 }
예제 #14
0
        public void func_543_c(EntityPlayerMP entityplayermp)
        {
            int i = (int) entityplayermp.posX >> 4;
            int j = (int) entityplayermp.posZ >> 4;
            double d = entityplayermp.field_9155_d - entityplayermp.posX;
            double d1 = entityplayermp.field_9154_e - entityplayermp.posZ;
            double d2 = d*d + d1*d1;
            if (d2 < 64D)
            {
                return;
            }
            int k = (int) entityplayermp.field_9155_d >> 4;
            int l = (int) entityplayermp.field_9154_e >> 4;
            int i1 = i - k;
            int j1 = j - l;
            if (i1 == 0 && j1 == 0)
            {
                return;
            }
            for (int k1 = i - 10; k1 <= i + 10; k1++)
            {
                for (int l1 = j - 10; l1 <= j + 10; l1++)
                {
                    if (!func_544_a(k1, l1, k, l))
                    {
                        func_537_a(k1, l1, true).func_779_a(entityplayermp);
                    }
                    if (func_544_a(k1 - i1, l1 - j1, i, j))
                    {
                        continue;
                    }
                    PlayerInstance playerinstance = func_537_a(k1 - i1, l1 - j1, false);
                    if (playerinstance != null)
                    {
                        playerinstance.func_778_b(entityplayermp);
                    }
                }
            }

            entityplayermp.field_9155_d = entityplayermp.posX;
            entityplayermp.field_9154_e = entityplayermp.posZ;
        }
예제 #15
0
        public void removePlayer(EntityPlayerMP entityplayermp)
        {
            int i = (int) entityplayermp.field_9155_d >> 4;
            int j = (int) entityplayermp.field_9154_e >> 4;
            for (int k = i - 10; k <= i + 10; k++)
            {
                for (int l = j - 10; l <= j + 10; l++)
                {
                    PlayerInstance playerinstance = func_537_a(k, l, false);
                    if (playerinstance != null)
                    {
                        playerinstance.func_778_b(entityplayermp);
                    }
                }
            }

            field_9216_a.remove(entityplayermp);
        }
예제 #16
0
 public EntityPlayerMP recreatePlayerEntity(EntityPlayerMP entityplayermp)
 {
     mcServer.entityTracker.removeTrackedPlayerSymmetric(entityplayermp);
     mcServer.entityTracker.untrackEntity(entityplayermp);
     playerManagerObj.removePlayer(entityplayermp);
     playerEntities.remove(entityplayermp);
     mcServer.worldMngr.func_22073_e(entityplayermp);
     var entityplayermp1 = new EntityPlayerMP(mcServer, mcServer.worldMngr, entityplayermp.username,
                                              new ItemInWorldManager(mcServer.worldMngr));
     entityplayermp1.entityId = entityplayermp.entityId;
     entityplayermp1.playerNetServerHandler = entityplayermp.playerNetServerHandler;
     mcServer.worldMngr.field_20911_y.loadChunk((int) entityplayermp1.posX >> 4, (int) entityplayermp1.posZ >> 4);
     for (;
         mcServer.worldMngr.getCollidingBoundingBoxes(entityplayermp1, entityplayermp1.boundingBox).size() != 0;
         entityplayermp1.setPosition(entityplayermp1.posX, entityplayermp1.posY + 1.0D, entityplayermp1.posZ))
     {
     }
     entityplayermp1.playerNetServerHandler.sendPacket(new Packet9());
     entityplayermp1.playerNetServerHandler.teleportTo(entityplayermp1.posX, entityplayermp1.posY,
                                                       entityplayermp1.posZ, entityplayermp1.rotationYaw,
                                                       entityplayermp1.rotationPitch);
     playerManagerObj.addPlayer(entityplayermp1);
     mcServer.worldMngr.entityJoinedWorld(entityplayermp1);
     playerEntities.add(entityplayermp1);
     entityplayermp1.func_20057_k();
     entityplayermp1.func_22068_s();
     return entityplayermp1;
 }
예제 #17
0
 public void func_778_b(EntityPlayerMP entityplayermp)
 {
     if (!field_1072_b.contains(entityplayermp))
     {
         (new IllegalStateException(
             (new StringBuilder()).append("Failed to remove player. ").append(entityplayermp).append(
                 " isn't in chunk ").append(field_1071_c).append(", ").append(field_1070_d).toString())).
             printStackTrace();
         return;
     }
     field_1072_b.remove(entityplayermp);
     if (field_1072_b.size() == 0)
     {
         long l = field_1071_c + 0x7fffffffL | field_1070_d + 0x7fffffffL << 32;
         PlayerManager.func_539_b(field_1073_a).func_670_b(l);
         if (field_1067_g > 0)
         {
             PlayerManager.func_533_c(field_1073_a).remove(this);
         }
         PlayerManager.getMinecraftServer(field_1073_a).worldMngr.field_20911_y.func_374_c(field_1071_c,
                                                                                           field_1070_d);
     }
     entityplayermp.loadedChunks.remove(field_1069_e);
     if (entityplayermp.field_420_ah.contains(field_1069_e))
     {
         entityplayermp.playerNetServerHandler.sendPacket(new Packet50PreChunk(field_1071_c, field_1070_d, false));
     }
 }
예제 #18
0
 public void playerLoggedIn(EntityPlayerMP entityplayermp)
 {
     playerEntities.add(entityplayermp);
     playerNBTManagerObj.readPlayerData(entityplayermp);
     mcServer.worldMngr.field_20911_y.loadChunk((int) entityplayermp.posX >> 4, (int) entityplayermp.posZ >> 4);
     for (;
         mcServer.worldMngr.getCollidingBoundingBoxes(entityplayermp, entityplayermp.boundingBox).size() != 0;
         entityplayermp.setPosition(entityplayermp.posX, entityplayermp.posY + 1.0D, entityplayermp.posZ))
     {
     }
     mcServer.worldMngr.entityJoinedWorld(entityplayermp);
     playerManagerObj.addPlayer(entityplayermp);
 }
예제 #19
0
 public void func_613_b(EntityPlayerMP entityplayermp)
 {
     playerManagerObj.func_543_c(entityplayermp);
 }