public void AddClient(Client c) { lock (Clients) { foreach (Client client in Clients) { SpawnPlayerPacket spawnPacket = StateManager.FindState("play").GetSendPacket(0x0C) as SpawnPlayerPacket; spawnPacket.PlayerEntityId = client.ID; spawnPacket.PlayerUUID = client.UUID; spawnPacket.PlayerName = client.Name; spawnPacket.PlayerX = client.PlayerPosition.X; spawnPacket.PlayerY = client.PlayerPosition.FeetY; spawnPacket.PlayerZ = client.PlayerPosition.Z; spawnPacket.PlayerYaw = 0; spawnPacket.PlayerPitch = 0; spawnPacket.CurrentItem = client.PlayerMetadata.CurrentItem; spawnPacket.Health = client.PlayerMetadata.Health; c.AddResponse(spawnPacket); } Clients.Add(c); MinecraftServer.ViewModel.NewClient(c); } }
public override void SpawnToPlayers(Player[] players) { PlayerListProperty p = null; if (AuthResponse != null) { foreach (var i in AuthResponse.Properties) { if (i.Name.Equals("textures", StringComparison.InvariantCultureIgnoreCase)) { p = new PlayerListProperty { Name = i.Name, Value = i.Value, IsSigned = true, Signature = i.Signature }; break; } } } PlayerListItemPacket packet = new PlayerListItemPacket { Action = PlayerListAction.AddPlayer, Ping = 0, Gamemode = (int)Gamemode, Name = Username, //Displayname = DisplayName, UUID = UUID }; if (p != null) { packet.Properties = new PlayerListProperty[] { p }; } Level.RelayBroadcast(players, packet); SpawnPlayerPacket spp = new SpawnPlayerPacket { EntityId = EntityId, Pitch = (byte)(KnownPosition.Pitch.ToRadians()), Yaw = (byte)(KnownPosition.Yaw.ToRadians()), X = KnownPosition.X, Y = KnownPosition.Y, Z = KnownPosition.Z, Uuid = UUID }; Level.RelayBroadcast(players, spp); }
//NO LONGER NEEDED. public PacketHandler OnSpwanPositionHandler(PacketType p_type, string CustomPacketType, ref PacketReader _pReader, PacketHandler _p, ref ClientManager cm) { SpawnPlayerPacket p = new SpawnPlayerPacket(PacketType.SpwanPosition); p.X = cm._player.position.X; p.Y = cm._player.position.Z; p.Z = cm._player.position.Y; p.BuildPacket(); cm.SendPacket(p, cm.id, ref cm, false, false); int i = 0; for (; i < base.ModuleAddons.Count; i++) { base.ModuleAddons.ElementAt(i).Value(PacketType.SpwanPosition, ModuleAddons.ElementAt(i).Key, ref _pReader, (PacketHandler)p, ref cm); } p = null; return _p; }
/// <summary> /// Spawns a player on the client /// </summary> /// <param name="pkt"></param> public void HandleSpawnPlayerPacket(SpawnPlayerPacket pkt) { // ignore spawn player if player info has not been sent by server if (!PlayerLibrary.TryGetPlayer(pkt.PlayerUUID, out var player)) { return; } var playerEntity = Instantiate(EntityLibrary.GetEntityPrefab(Entity.EntityType.Player), transform).GetComponent <EntityPlayer>(); playerEntity.Player = player; playerEntity.World = World; playerEntity.EntityID = pkt.EntityID; Vector3 pos = new Vector3((float)pkt.X, (float)pkt.Y, (float)pkt.Z); playerEntity.MinecraftPosition = pos; playerEntity.SetRotation(pkt.Pitch * ENTITY_ANGLE_COEFFICIENT, pkt.Yaw * ENTITY_ANGLE_COEFFICIENT + ENTITY_ANGLE_OFFSET); playerEntity.name = $"{player.Name}: {player.UUID}"; _entities.Add(player.UUID, playerEntity); }