public void Write(ClientWrapper state, MSGBuffer buffer, object[] Arguments) { buffer.WriteVarInt(PacketID); buffer.WriteLong(Globals.WorldAge); buffer.WriteLong(Globals.TimeOfDay); buffer.FlushData(); }
private void HandleStatusRequest(ClientWrapper state, MSGBuffer buffer) { buffer.WriteVarInt(PacketID); Serverping serverlistping = new Serverping() { Version = new ServerpingVersion() { Name = Globals.ProtocolName, Protocol = Globals.ProtocolVersion }, Players = new ServerpingPlayers() { Max = Globals.MaxPlayers, Online = Globals.PlayersOnline, }, Description = new ServerpingDescription() { Motd = Globals.Config.Motd }, Favicon = (Globals.Favicon == null) ? "" : Globals.Favicon }; buffer.WriteString(JsonConvert.SerializeObject(serverlistping)); buffer.FlushData(); }
public byte[] Export() { var buffer = new MSGBuffer(new byte[0]); buffer.WriteInt(Blocks.Length); for (var i = 0; i < Blocks.Length; i++) { buffer.WriteUShort(Blocks[i]); } buffer.WriteInt(Blocks.Length); for (var i = 0; i < Blocks.Length; i++) { buffer.WriteUShort((ushort)Metadata[i]); } buffer.WriteInt(Blocklight.Data.Length); buffer.Write(Blocklight.Data); buffer.WriteInt(Skylight.Data.Length); buffer.Write(Skylight.Data); buffer.WriteInt(BiomeId.Length); buffer.Write(BiomeId); return(buffer.ExportWriter); }
public byte[] GetBytes(bool unloader = false) { var writer = new MSGBuffer(new byte[0]); if (!unloader) { writer.WriteInt(X); writer.WriteInt(Z); writer.WriteBool(true); writer.WriteUShort(0xffff); // bitmap writer.WriteVarInt((Blocks.Length * 2) + Skylight.Data.Length + Blocklight.Data.Length + BiomeId.Length); for (var i = 0; i < Blocks.Length; i++) { //if (i == null) writer.WriteUShort((0 << 4) | 0); writer.WriteUShort((ushort)((Blocks[i] << 4) | Metadata[i])); } writer.Write(Blocklight.Data); writer.Write(Skylight.Data); writer.Write(BiomeId); } else { writer.WriteInt(X); writer.WriteInt(Z); writer.WriteBool(true); writer.WriteUShort(0); writer.WriteVarInt(0); } return(writer.ExportWriter); }
public void Write(ClientWrapper state, MSGBuffer buffer, object[] Arguments) { buffer.WriteVarInt(PacketID); buffer.WriteString(Arguments[0].ToString()); buffer.WriteString(Arguments[1].ToString()); buffer.FlushData(); }
private void HandleLoginRequest(ClientWrapper state, MSGBuffer buffer) { string username = buffer.ReadUsername(); string UUID = getUUID(username); Program.Logger.Log(LogType.Warning, "Logging in : " + UUID); try { new LoginSuccess().Write(state, buffer, new object[] { UUID, username }); } catch (Exception e) { Globals.Logger.Log(LogType.Error, e.Message); } Globals.LastUniqueID++; state.Player = new Player() { UUID = UUID, Username = username, UniqueServerID = Globals.LastUniqueID, Wrapper = state, Gamemode = Gamemode.Creative, Dimension = 0 }; state.PlayMode = true; //Toggle the boolean to PlayMode so we know we are not handling Status stuff anymore. if (!Globals.UseCompression) { new SetCompression().Write(state, buffer, new object[] { -1 }); //Turn off compression. } new JoinGame().Write(state, buffer, new object[] { state.Player }); // new MapChunkBulk ().Write (state, buffer, new object[0]); new SpawnPosition().Write(state, buffer, new object[0]); // new PlayerPositionAndLook().Write(state, buffer, new object[0]); //new KeepAlive ().Write (state, buffer, new object[0]); state.StartKeepAliveTimer(); state.Player.AddToList(); state.Player.SendChunksFromPosition(); }
public void Write(ClientWrapper state, MSGBuffer buffer, object[] Arguments) { int id = new Random().Next(0, 100); buffer.WriteVarInt(PacketID); buffer.WriteVarInt(id); buffer.FlushData(); }
public void Write(ClientWrapper state, MSGBuffer buffer, object[] Arguments) { Vector3 D = Globals.WorldGen.GetSpawnPoint(); long Data = (((long)D.X & 0x3FFFFFF) << 38) | (((long)D.Y & 0xFFF) << 26) | ((long)D.Z & 0x3FFFFFF); buffer.WriteVarInt(PacketID); buffer.WriteLong(Data); buffer.FlushData(); }
public void Read(ClientWrapper state, MSGBuffer buffer, object[] Arguments) { float Yaw = buffer.ReadFloat(); float Pitch = buffer.ReadFloat(); bool OnGround = buffer.ReadBool(); state.Player.Yaw = Yaw; state.Player.Pitch = Pitch; }
protected Package(ClientWrapper client) { if (!client.TcpClient.Connected) { return; } Client = client; Stream = client.TcpClient.GetStream(); Buffer = new MSGBuffer(client); }
protected Package(ClientWrapper client, MSGBuffer buffer) { if (!client.TcpClient.Connected) { return; } Client = client; Stream = client.TcpClient.GetStream(); Buffer = buffer; }
public void Read(ClientWrapper state, MSGBuffer buffer, object[] Arguments) { Player targetplayer = state.Player; double X = buffer.ReadDouble(); double FeetY = buffer.ReadDouble(); double Z = buffer.ReadDouble(); bool OnGround = buffer.ReadBool(); targetplayer.Coordinates = new Vector3(X, FeetY, Z); state.Player.OnGround = OnGround; }
public void Write(ClientWrapper state, MSGBuffer buffer, object[] Arguments) { buffer.WriteVarInt(0x08); buffer.WriteDouble(Globals.WorldGen.GetSpawnPoint().X); buffer.WriteDouble(Globals.WorldGen.GetSpawnPoint().Y); buffer.WriteDouble(Globals.WorldGen.GetSpawnPoint().Z); buffer.WriteFloat(0f); buffer.WriteFloat(0f); buffer.WriteByte(111); buffer.FlushData(); }
public void Write(ClientWrapper state, MSGBuffer buffer, object[] Arguments) { buffer.WriteVarInt(PacketID); buffer.WriteInt(state.Player.UniqueServerID); buffer.WriteByte((byte)state.Player.Gamemode); buffer.WriteInt(state.Player.Dimension); buffer.WriteByte((byte)Globals.Difficulty); buffer.WriteByte((byte)Globals.MaxPlayers); buffer.WriteString(Globals.LVLType); buffer.WriteBool(false); Globals.Logger.Log(Utils.LogType.Error, Globals.LVLType); buffer.FlushData(); }
public void Write(ClientWrapper state, MSGBuffer buffer, object[] Arguments) { if (state.PlayMode) { buffer.WriteVarInt(PacketID); } else { buffer.WriteVarInt(0x00); } buffer.WriteString(JsonConvert.SerializeObject((ChatMessage)Arguments[0])); buffer.FlushData(); }
public void Read(ClientWrapper state, MSGBuffer buffer, object[] Arguments) { string Locale = buffer.ReadString(); byte ViewDistance = (byte)buffer.ReadByte(); byte ChatFlags = (byte)buffer.ReadByte(); bool ChatColours = buffer.ReadBool(); byte SkinParts = (byte)buffer.ReadByte(); state.Player.Locale = Locale; state.Player.ViewDistance = ViewDistance; state.Player.ChatColours = ChatColours; state.Player.ChatFlags = ChatFlags; state.Player.SkinParts = SkinParts; }
public void Broadcast(Level level, bool self = true, Player source = null) { foreach (var i in level.OnlinePlayers) { if (!self && i == source) { continue; } Client = i.Wrapper; Buffer = new MSGBuffer(i.Wrapper); Stream = i.Wrapper.TcpClient.GetStream(); Write(); } }
public void Read(ClientWrapper state, MSGBuffer buffer, object[] Arguments) { double X = buffer.ReadDouble(); double FeetY = buffer.ReadDouble(); double Z = buffer.ReadDouble(); float Yaw = buffer.ReadFloat(); float Pitch = buffer.ReadFloat(); bool OnGround = buffer.ReadBool(); state.Player.OnGround = OnGround; state.Player.Yaw = Yaw; state.Player.Pitch = Pitch; state.Player.Coordinates = new Vector3(X, FeetY, Z); }
private void HandleClientCommNew(TcpClient tcpClient, NetworkStream clientStream) { ClientWrapper Client = new ClientWrapper(tcpClient); while (tcpClient.Connected) { try { MSGBuffer Buf = new MSGBuffer(Client, clientStream); int ReceivedData = clientStream.Read(Buf.BufferedData, 0, Buf.BufferedData.Length); if (ReceivedData > 0) { int length = Buf.ReadVarInt(); Buf.Size = length; int packid = Buf.ReadVarInt(); bool found = false; foreach (IPacket i in Globals.Packets) { if (i.PacketID == packid && i.IsPlayePacket == Client.PlayMode) { i.Read(Client, Buf, new object[0]); found = true; break; } } if (!found) { Globals.Logger.Log(LogType.Error, "Unknown packet received! \"0x" + packid.ToString("X2") + "\""); } } else { break; } } catch (Exception e) { Globals.Logger.Log(LogType.Error, e.Message); new Disconnect().Write(Client, new MSGBuffer(Client), new object[] { "Server threw an exception!" }); break; } } //Close the connection with the client. :) Client.StopKeepAliveTimer(); if (Client.Player != null) { Globals.Players.Remove(Client.Player); } Client.TCPClient.Close(); }
public void Read(ClientWrapper state, MSGBuffer buffer, object[] Arguments) { int Protocol = buffer.ReadVarInt(); string Host = buffer.ReadString(); short Port = buffer.ReadShort(); int State = buffer.ReadVarInt(); switch (State) { case 1: HandleStatusRequest(state, buffer); break; case 2: HandleLoginRequest(state, buffer); break; } }
public override ChunkColumn LoadChunk(int x, int z) { var u = Globals.Decompress(File.ReadAllBytes(_folder + "/" + x + "." + z + ".cfile")); var reader = new MSGBuffer(u); var blockLength = reader.ReadInt(); var block = reader.ReadUShortLocal(blockLength); var metalength = reader.ReadInt(); var blockmeta = reader.ReadShortLocal(metalength); //var blockies = new Block[block.Length]; //var blocks = new ushort[block.Length]; //for (var i = 0; i < block.Length; i++) //{ // blockies[i] = new Block(block[i]) {Metadata = (byte) blockmeta[i]}; //} var skyLength = reader.ReadInt(); var skylight = reader.Read(skyLength); var lightLength = reader.ReadInt(); var blocklight = reader.Read(lightLength); var biomeIdLength = reader.ReadInt(); var biomeId = reader.Read(biomeIdLength); var cc = new ChunkColumn { Blocks = block, Metadata = blockmeta, Blocklight = { Data = blocklight }, Skylight = { Data = skylight }, BiomeId = biomeId, X = x, Z = z }; Debug.WriteLine("We should have loaded " + x + ", " + z); return(cc); //throw new NotImplementedException(); }
public PackageFactory(ClientWrapper client, MSGBuffer buffer) { #region Ping PingPackages.Add(new Handshake(client, buffer)); PingPackages.Add(new Ping(client, buffer)); PingPackages.Add(new StevenBug(client, buffer)); #endregion LoginPackages.Add(new EncryptionResponse(client, buffer)); #region Play PlayPackages.Add(new ChatMessage(client, buffer)); PlayPackages.Add(new Animation(client, buffer)); PlayPackages.Add(new PlayerBlockPlacement(client, buffer)); PlayPackages.Add(new HeldItemChange(client, buffer)); PlayPackages.Add(new EntityAction(client, buffer)); PlayPackages.Add(new PlayerAbilities(client, buffer)); PlayPackages.Add(new PluginMessage(client, buffer)); PlayPackages.Add(new KeepAlive(client, buffer)); PlayPackages.Add(new PlayerPositionAndLook(client, buffer)); PlayPackages.Add(new PlayerPosition(client, buffer)); PlayPackages.Add(new PlayerLook(client, buffer)); PlayPackages.Add(new OnGround(client, buffer)); PlayPackages.Add(new ClientSettings(client, buffer)); PlayPackages.Add(new PlayerDigging(client, buffer)); PlayPackages.Add(new ClientStatus(client, buffer)); PlayPackages.Add(new ClickWindow(client, buffer)); PlayPackages.Add(new UseEntity(client, buffer)); #endregion _client = client; _buffer = buffer; }
public UseEntity(ClientWrapper client, MSGBuffer buffer) : base(client, buffer) { ReadId = 0x02; }
public Handshake(ClientWrapper client, MSGBuffer buffer) : base(client, buffer) { ReadId = 0x00; SendId = 0x00; }
public EntityLook(ClientWrapper client, MSGBuffer buffer) : base(client, buffer) { SendId = 0x16; }
public EncryptionResponse(ClientWrapper client, MSGBuffer buffer) : base(client, buffer) { ReadId = 0x01; }
public Animation(ClientWrapper client, MSGBuffer buffer) : base(client, buffer) { SendId = 0x0B; ReadId = 0x0A; }
public void Write(ClientWrapper state, MSGBuffer buffer, object[] Arguments) { buffer.WriteVarInt(PacketID); buffer.Write((byte[])Arguments[0]); buffer.FlushData(); }
public void Read(ClientWrapper state, MSGBuffer buffer, object[] Arguments) { }
public JoinGame(ClientWrapper client, MSGBuffer buffer) : base(client, buffer) { SendId = 0x01; }