public Log(StreamWriter stream, ProxySettings settings) { Stream = stream; MemoryStream = new MemoryStream(); MinecraftStream = new MinecraftStream(MemoryStream); Settings = settings; }
public NetworkMode ReadPacket(MinecraftStream stream, NetworkMode mode, PacketDirection direction) { ProtocolVersion = stream.ReadVarInt(); ServerHostname = stream.ReadString(); ServerPort = stream.ReadUInt16(); NextState = (NetworkMode)stream.ReadVarInt(); return NextState; }
public NetworkMode WritePacket(MinecraftStream stream, NetworkMode mode, PacketDirection direction) { stream.WriteVarInt(ProtocolVersion); stream.WriteString(ServerHostname); stream.WriteUInt16(ServerPort); stream.WriteVarInt((int)NextState); return NextState; }
public void ReadPacket(MinecraftStream stream) { EntityId = stream.ReadInt32(); LevelType = stream.ReadString(); GameMode = (GameMode)stream.ReadUInt8(); Dimension = (Dimension)stream.ReadInt8(); Difficulty = (Difficulty)stream.ReadUInt8(); Discarded = stream.ReadUInt8(); MaxPlayers = stream.ReadUInt8(); }
public Proxy(NetworkStream client, NetworkStream server, Log log, ProxySettings settings) { Client = client; Server = server; Log = log; ClientStream = new MinecraftStream(new BufferedStream(Client)); ServerStream = new MinecraftStream(new BufferedStream(Server)); CryptoServiceProvider = new RSACryptoServiceProvider(1024); ServerKey = CryptoServiceProvider.ExportParameters(true); Settings = settings; }
public void WritePacket(MinecraftStream stream) { stream.WriteUInt8(Id); stream.WriteInt32(EntityId); stream.WriteString(LevelType); stream.WriteUInt8((byte)GameMode); stream.WriteInt8((sbyte)Dimension); stream.WriteUInt8((byte)Difficulty); stream.WriteUInt8(Discarded); stream.WriteUInt8(MaxPlayers); }
public override void MessageRecieved(RemoteClient client, byte[] data) { if (ServerPingReceived != null) { var stream = new MinecraftStream(new MemoryStream(data)); var eventArgs = new ServerPingEventArgs( stream.ReadInt32(), stream.ReadString(), stream.ReadInt32()); ServerPingReceived(this, eventArgs); } }
public void Connect(IPEndPoint endPoint) { if (Client != null && Client.Connected) throw new InvalidOperationException("Already connected to a server!"); EndPoint = endPoint; Client = new TcpClient(); Client.Connect(EndPoint); NetworkStream = Client.GetStream(); Stream = new MinecraftStream(new BufferedStream(NetworkStream)); NetworkWorkerThread = new Thread(NetworkWorker); NetworkWorkerThread.Start(); var handshake = new HandshakePacket(PacketReader.ProtocolVersion, Session.SelectedProfile.Name, EndPoint.Address.ToString(), EndPoint.Port); SendPacket(handshake); }
public static MetadataDictionary FromStream(MinecraftStream stream) { var value = new MetadataDictionary(); while (true) { byte key = stream.ReadUInt8(); if (key == 127) break; byte type = (byte)((key & 0xE0) >> 5); byte index = (byte)(key & 0x1F); var entry = EntryTypes[type](); entry.FromStream(stream); entry.Index = index; value[index] = entry; } return value; }
public override void WriteTo(MinecraftStream stream, byte index) { stream.WriteUInt8(GetKey(index)); stream.WriteInt16(Value.Id); if (Value.Id != -1) { stream.WriteInt8(Value.Count); stream.WriteInt16(Value.Metadata); if (Value.Nbt != null) { var file = new NbtFile(Value.Nbt); var data = file.SaveToBuffer(NbtCompression.GZip); stream.WriteInt16((short)data.Length); stream.WriteUInt8Array(data); } else stream.WriteInt16(-1); } }
public static ServerPing DoPing(IPEndPoint endPoint) { var client = new TcpClient(); client.Connect(endPoint); var stream = new MinecraftStream(client.GetStream()); var ping = new ServerListPingPacket(); ping.WritePacket(stream); var response = PacketReader.ReadPacket(stream); client.Close(); // TODO: Handle old pings var pong = (DisconnectPacket)response; var parts = pong.Reason.Substring(3).Split('\0'); var result = new ServerPing(); result.ProtocolVersion = int.Parse(parts[0]); result.ServerVersion = parts[1]; result.MotD = parts[2]; result.CurrentPlayers = int.Parse(parts[3]); result.MaxPlayers = int.Parse(parts[4]); return result; }
public NetworkMode ReadPacket(MinecraftStream stream, NetworkMode mode, PacketDirection direction) { EntityId = stream.ReadVarInt(); Type = stream.ReadUInt8(); X = stream.ReadInt32(); Y = stream.ReadInt32(); Z = stream.ReadInt32(); Yaw = stream.ReadUInt8(); Pitch = stream.ReadUInt8(); Data = stream.ReadInt32(); if (Data != 0) { SpeedX = stream.ReadInt16(); SpeedY = stream.ReadInt16(); SpeedZ = stream.ReadInt16(); } return mode; }
public NetworkMode WritePacket(MinecraftStream stream, NetworkMode mode, PacketDirection direction) { stream.WriteVarInt(ItemId); stream.WriteVarInt(PlayerId); return mode; }
public NetworkMode ReadPacket(MinecraftStream stream, NetworkMode mode, PacketDirection direction) { ItemId = stream.ReadVarInt(); PlayerId = stream.ReadVarInt(); return mode; }
public override void FromStream(MinecraftStream stream) { Value = stream.ReadInt32(); }
public override void FromStream(MinecraftStream stream) { Value = ItemStack.FromStream(stream); }
public NetworkMode ReadPacket(MinecraftStream stream, NetworkMode mode, PacketDirection direction) { EntityId = stream.ReadVarInt(); Title = stream.ReadString(); Location = stream.ReadPosition(); Direction = stream.ReadUInt8(); return mode; }
public NetworkMode ReadPacket(MinecraftStream stream, NetworkMode mode, PacketDirection direction) { EntityId = stream.ReadVarInt(); Type = stream.ReadUInt8(); X = stream.ReadInt32(); Y = stream.ReadInt32(); Z = stream.ReadInt32(); Yaw = stream.ReadUInt8(); Pitch = stream.ReadUInt8(); HeadYaw = stream.ReadUInt8(); VelocityX = stream.ReadInt16(); VelocityY = stream.ReadInt16(); VelocityZ = stream.ReadInt16(); Metadata = MetadataDictionary.FromStream(stream); return mode; }
public abstract void FromStream(MinecraftStream stream);
public NetworkMode WritePacket(MinecraftStream stream, NetworkMode mode, PacketDirection direction) { if (direction == PacketDirection.Clientbound) stream.WriteInt8((sbyte)Slot); else stream.WriteInt16(Slot); return mode; }
public abstract void WriteTo(MinecraftStream stream, byte index);
public override void WriteTo(MinecraftStream stream, byte index) { stream.WriteUInt8(GetKey(index)); stream.WriteSingle(Value); }
public override void FromStream(MinecraftStream stream) { Value = stream.ReadSingle(); }
public NetworkMode WritePacket(MinecraftStream stream, NetworkMode mode, PacketDirection direction) { stream.WriteVarInt(EntityId); stream.WriteUInt8(Type); stream.WriteInt32(X); stream.WriteInt32(Y); stream.WriteInt32(Z); stream.WriteUInt8(Yaw); stream.WriteUInt8(Pitch); stream.WriteInt32(Data); if (Data != 0) { stream.WriteInt16(SpeedX.Value); stream.WriteInt16(SpeedY.Value); stream.WriteInt16(SpeedZ.Value); } return mode; }
public NetworkMode WritePacket(MinecraftStream stream, NetworkMode mode, PacketDirection direction) { return mode; }
public NetworkMode ReadPacket(MinecraftStream stream, NetworkMode mode, PacketDirection direction) { if (direction == PacketDirection.Serverbound) return mode; // -- Server bound has no fields. EntityId = stream.ReadVarInt(); Animation = (AnimationType) stream.ReadUInt8(); return mode; }
public NetworkMode WritePacket(MinecraftStream stream, NetworkMode mode, PacketDirection direction) { stream.WriteVarInt(EntityId); stream.WriteUInt8(Type); stream.WriteInt32(X); stream.WriteInt32(Y); stream.WriteInt32(Z); stream.WriteUInt8(Yaw); stream.WriteUInt8(Pitch); stream.WriteUInt8(HeadYaw); stream.WriteInt16(VelocityX); stream.WriteInt16(VelocityY); stream.WriteInt16(VelocityZ); Metadata.WriteTo(stream); return mode; }
public NetworkMode WritePacket(MinecraftStream stream, NetworkMode mode, PacketDirection direction) { if (direction == PacketDirection.Serverbound) return mode; stream.WriteVarInt(EntityId); stream.WriteUInt8((byte)Animation); return mode; }
public NetworkMode WritePacket(MinecraftStream stream, NetworkMode mode, PacketDirection direction) { stream.WriteVarInt(EntityId); stream.WriteString(Title); stream.WritePosition(Location); stream.WriteUInt8(Direction); return mode; }
public NetworkMode ReadPacket(MinecraftStream stream, NetworkMode mode, PacketDirection direction) { EntityId = stream.ReadVarInt(); PlayerUuid = new Guid(stream.ReadUInt8Array(16)); PlayerName = stream.ReadString(); X = stream.ReadInt32(); Y = stream.ReadInt32(); Z = stream.ReadInt32(); Yaw = stream.ReadUInt8(); Pitch = stream.ReadUInt8(); HeldItem = stream.ReadInt16(); Metadata = MetadataDictionary.FromStream(stream); return mode; }
public NetworkMode ReadPacket(MinecraftStream stream, NetworkMode mode, PacketDirection direction) { EntityId = stream.ReadInt32(); Location = stream.ReadPosition(); return mode; }
public NetworkMode WritePacket(MinecraftStream stream, NetworkMode mode, PacketDirection direction) { stream.WriteVarInt(EntityId); stream.WriteUInt8Array(PlayerUuid.ToByteArray()); stream.WriteString(PlayerName); stream.WriteInt32(X); stream.WriteInt32(Y); stream.WriteInt32(Z); stream.WriteUInt8(Yaw); stream.WriteUInt8(Pitch); stream.WriteInt16(HeldItem); Metadata.WriteTo(stream); return mode; }
public override void WriteTo(MinecraftStream stream, byte index) { stream.WriteUInt8(GetKey(index)); stream.WriteInt32(Value); }
public NetworkMode WritePacket(MinecraftStream stream, NetworkMode mode, PacketDirection direction) { stream.WriteInt32(EntityId); stream.WritePosition(Location); return mode; }