Esempio n. 1
0
        public PlayerHandler(Server server, PacketPipe pipe, Player player)
        {
            this.server = server;
            this.pipe = pipe;
            this.player = player;

            pipe.SetHandler(this);
            //server.World.ChunkPool.AddPlayer(player);
            //pipe.SendPacket(new PositionPacket(0, 4, 0));
            SetPosition(player.X, player.Y, player.Z, 0, 0);

            var mainInv = new InventoryItem[36];
            mainInv[0] = new InventoryItem((int)BlockType.Stone, -1);
            mainInv[1] = new InventoryItem((int)BlockType.Dirt, -1);
            mainInv[2] = new InventoryItem((int)BlockType.Cobblestone, -1);
            mainInv[3] = new InventoryItem((int)BlockType.Wood, -1);
            mainInv[4] = new InventoryItem((int)BlockType.Sand, -1);
            mainInv[5] = new InventoryItem((int)BlockType.StillLava, -1);
            mainInv[6] = new InventoryItem((int)BlockType.StillWater, -1);
            mainInv[7] = new InventoryItem((int)BlockType.Sponge, -1);
            mainInv[8] = new InventoryItem(277, 1);
            pipe.SendPacket(new SendInventoryPacket(InventoryType.Main, mainInv));
            pipe.SendPacket(new SendInventoryPacket(InventoryType.Crafting, new InventoryItem[4]));
            pipe.SendPacket(new SendInventoryPacket(InventoryType.Armor, new InventoryItem[4]));
            pipe.SendPacket(new UpdateTimePacket((int)server.World.Time));
            Broadcast(new ChatPacket("Player connected: " + player.Name));
        }
Esempio n. 2
0
 public Player NewPlayer(PacketPipe client, string accountName, string serverPassword)
 {
     var player = new Player(client, world, accountName);
     player.X = 0;
     player.Y = 100;
     player.Z = 0;
     Console.WriteLine("Player #{0} connected: {1}", player.Id, accountName);
     return player;
 }
Esempio n. 3
0
 public void RemovePlayer(Player player)
 {
     players.Remove(player);
     RemoveEntity(player);
 }
Esempio n. 4
0
 public void AddPlayer(Player player)
 {
     players.Add(player);
     AddEntity(player);
 }
Esempio n. 5
0
        // Check if a specific player is in range and subscribe/unsubscribe it depending on that
        public void Update(Player player)
        {
            if (Origin == player || Origin.Deleted)
                return;

            var distanceX = player.X - Origin.X;
            var distanceY = player.Y - Origin.Y;
            var distanceZ = player.Z - Origin.Z;
            var distance = distanceX * distanceX + distanceY * distanceY + distanceZ * distanceZ;

            // Add or remove entity depending on range
            if (distance <= trackRange * trackRange) {
                if (!subscribedEntities.Contains(player)) {
                    subscribedEntities.Add(player);
                    player.Client.SendPacket(CreateAddPacket());
                }

                if (distance <= TouchDistance * TouchDistance) {
                    Origin.OnPlayerTouched(player);
                }
            } else if (subscribedEntities.Contains(player)) {
                // The player went out of range, remove him
                subscribedEntities.Remove(player);
                player.Client.SendPacket(new DestroyEntityPacket(Origin));
            }
        }
Esempio n. 6
0
 public override void OnPlayerTouched(Player player)
 {
     Console.WriteLine("touched item");
     player.World.EntityHandler.RemoveEntity(this);
     player.CollectItem(this);
 }
Esempio n. 7
0
 public virtual void OnPlayerTouched(Player player)
 {
     Console.WriteLine("touched " + Id);
 }