示例#1
0
        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);
            }
        }
示例#2
0
        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);
        }
示例#3
0
 //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);
    }