Beispiel #1
0
        public void SendInitialPosition()
        {
            // TODO: Save player location, etc.
            SpawnPositionPacket spawnPacket = new SpawnPositionPacket(0, 75, 0);

            Stream.WritePacket(spawnPacket);
            spawnPacket = null;

            PlayerPositionLookPacket positionPacket = new PlayerPositionLookPacket();
            positionPacket.X = 0d;
            positionPacket.Y = 75d;
            positionPacket.Z = 0d;
            positionPacket.Stance = positionPacket.Y + 1.60;
            positionPacket.Yaw = 0f;
            positionPacket.Pitch = 0f;
            positionPacket.OnGround = false;

            Stream.WritePacket(positionPacket);
            positionPacket = null;
        }
Beispiel #2
0
        public void SendInitialPosition()
        {
            // TODO: Save player location, etc.
            SpawnPositionPacket spawnPacket = new SpawnPositionPacket(0, 75, 0);

            Stream.WritePacket(spawnPacket);
            spawnPacket = null;

            PlayerPositionLookPacket positionPacket = new PlayerPositionLookPacket();

            positionPacket.X        = 0d;
            positionPacket.Y        = 75d;
            positionPacket.Z        = 0d;
            positionPacket.Stance   = positionPacket.Y + 1.60;
            positionPacket.Yaw      = 0f;
            positionPacket.Pitch    = 0f;
            positionPacket.OnGround = false;

            Stream.WritePacket(positionPacket);
            positionPacket = null;
        }
Beispiel #3
0
        private static async Task LoginStart(Client client, byte[] data)
        {
            String username = Utils.ReadString(new MemoryStream(data), 16);

            Console.WriteLine("Client attempting to authenticate as " + username);

            Guid guid = new Guid();
            LoginSuccessPacket loginSuccessPacket = new LoginSuccessPacket(client, guid, username);
            await loginSuccessPacket.SendToClient();

            client.State  = ClientState.Play;
            client.Player = new Player(client, username, guid);

            JoinGamePacket joinGamePacket = new JoinGamePacket(client, client.Player.EntityId, (byte)client.Player.Gamemode, 0, 0x0000000000000000);
            await joinGamePacket.SendToClient();

            Console.WriteLine("Client authenticated as " + username);

            HeldItemChangePacket heldItemChangePacket = new HeldItemChangePacket(client, 0);
            await heldItemChangePacket.SendToClient();

            client.Player.Y = 68;
            PlayerPositionLookPacket playerPositionLookPacket = new PlayerPositionLookPacket(client, client.Player);
            await playerPositionLookPacket.SendToClient();

            PlayerInfoPacket playerInfoPacket = new PlayerInfoPacket(client, PlayerInfoAction.AddPlayer);

            playerInfoPacket.AddPlayer(client.Player);
            await playerInfoPacket.SendToClient();

            playerInfoPacket = new PlayerInfoPacket(client, PlayerInfoAction.UpdateLatency);
            playerInfoPacket.AddPlayer(client.Player);
            await playerInfoPacket.SendToClient();

            Region region = new Region(0, 0);

            ChunkColumn column = new ChunkColumn(0, 0);

            column.FillTest();
            ChunkDataPacket chunkDataPacket = new ChunkDataPacket(client, column);
            await chunkDataPacket.SendToClient();


            column = new ChunkColumn(1, 0);
            column.FillTest();
            chunkDataPacket = new ChunkDataPacket(client, column);
            await chunkDataPacket.SendToClient();

            column = new ChunkColumn(1, 1);
            column.FillTest();
            chunkDataPacket = new ChunkDataPacket(client, column);
            await chunkDataPacket.SendToClient();

            column = new ChunkColumn(0, 1);
            column.FillTest();
            chunkDataPacket = new ChunkDataPacket(client, column);
            await chunkDataPacket.SendToClient();

            column = new ChunkColumn(-1, 1);
            column.FillTest();
            chunkDataPacket = new ChunkDataPacket(client, column);
            await chunkDataPacket.SendToClient();

            column = new ChunkColumn(-1, -1);
            column.FillTest();
            chunkDataPacket = new ChunkDataPacket(client, column);
            await chunkDataPacket.SendToClient();

            column = new ChunkColumn(1, -1);
            column.FillTest();
            chunkDataPacket = new ChunkDataPacket(client, column);
            await chunkDataPacket.SendToClient();

            column = new ChunkColumn(0, -1);
            column.FillTest();
            chunkDataPacket = new ChunkDataPacket(client, column);
            await chunkDataPacket.SendToClient();

            column = new ChunkColumn(-1, -0);
            column.FillTest();
            chunkDataPacket = new ChunkDataPacket(client, column);
            await chunkDataPacket.SendToClient();

            Console.WriteLine("Sent");
        }
Beispiel #4
0
        private void HandlePlayerPositionLook(Client client, PlayerPositionLookPacket packet)
        {
            // TODO: See above
            // Update player position & look
            Location newLoc = new Location(packet.X, packet.Y, packet.Z);

            // if (Location.Distance(client.Player.Location, newLoc) > 15 && client.Spawned)
            //     client.Dispose();

            byte xOff, yOff, zOff;
            xOff = (byte)(-1 * Math.Min((int)(client.Player.Location.X - newLoc.X) * 32, 128));
            yOff = (byte)(-1 * Math.Min((int)(client.Player.Location.Y - newLoc.Y) * 32, 128));
            zOff = (byte)(-1 * Math.Min((int)(client.Player.Location.Z - newLoc.Z) * 32, 128));

            // TODO: Pitch & Yaw
            Server.BroadcastPacket(new EntityLookRelativeMovePacket(client.Player.EntityID, xOff, yOff, zOff, 0, 0), client);

            client.Player.Location = newLoc;
            client.Player.Yaw = packet.Yaw;
            client.Player.Pitch = packet.Pitch;

            if (!client.Spawned)
            {
                client.Spawned = true;
                Server.BroadcastPacket(new NamedEntitySpawnPacket(client.Player.EntityID, client.Player.Username,
                (int)client.Player.Location.X, (int)client.Player.Location.Y, (int)client.Player.Location.Z, 0, 0, 0), client);
            }
        }