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)); }
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; }
public void RemovePlayer(Player player) { players.Remove(player); RemoveEntity(player); }
public void AddPlayer(Player player) { players.Add(player); AddEntity(player); }
// 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)); } }
public override void OnPlayerTouched(Player player) { Console.WriteLine("touched item"); player.World.EntityHandler.RemoveEntity(this); player.CollectItem(this); }
public virtual void OnPlayerTouched(Player player) { Console.WriteLine("touched " + Id); }