public void SendPacket(OutgoingPacket packet) { List <byte> buffer = new List <byte>(); PacketOutgoingType type = packet.GetBuffer(protocolversion, buffer); SendPacket(type, buffer); }
/// <summary> /// Send a location update to the server /// </summary> /// <param name="location">The new location of the player</param> /// <param name="onGround">True if the player is on the ground</param> /// <param name="yaw">Optional new yaw for updating player look</param> /// <param name="pitch">Optional new pitch for updating player look</param> /// <returns>True if the location update was successfully sent</returns> public bool SendLocationUpdate(Location location, bool onGround, float?yaw = null, float?pitch = null) { if (handler.GetTerrainEnabled()) { byte[] yawpitch = new byte[0]; PacketOutgoingType packetType = PacketOutgoingType.PlayerPosition; if (yaw.HasValue && pitch.HasValue) { yawpitch = dataTypes.ConcatBytes(dataTypes.GetFloat(yaw.Value), dataTypes.GetFloat(pitch.Value)); packetType = PacketOutgoingType.PlayerPositionAndLook; } try { SendPacket(packetType, dataTypes.ConcatBytes( dataTypes.GetDouble(location.X), dataTypes.GetDouble(location.Y), protocolversion < MC18Version ? dataTypes.GetDouble(location.Y + 1.62) : new byte[0], dataTypes.GetDouble(location.Z), yawpitch, new byte[] { onGround ? (byte)1 : (byte)0 })); return(true); } catch (SocketException) { return(false); } } else { return(false); } }
public override int getPacketOutgoingID(PacketOutgoingType packet) { switch (packet) { case PacketOutgoingType.KeepAlive: return(0x00); case PacketOutgoingType.ChatMessage: return(0x01); case PacketOutgoingType.PlayerBlockPlacement: return(0x08); case PacketOutgoingType.ClientSettings: return(0x15); default: return(0xFF); } }
public override int getPacketOutgoingID(PacketOutgoingType packet) { switch (packet) { case PacketOutgoingType.TabComplete: return(0x01); case PacketOutgoingType.ChatMessage: return(0x02); case PacketOutgoingType.ClientStatus: return(0x03); case PacketOutgoingType.ClientSettings: return(0x04); case PacketOutgoingType.PluginMessage: return(0x09); case PacketOutgoingType.KeepAlive: return(0x0B); case PacketOutgoingType.PlayerPositionAndLook: return(0x0E); case PacketOutgoingType.ResourcePackStatus: return(0x18); default: return(0xFF); } }
/// <summary> /// Send a packet to the server. Packet ID, compression, and encryption will be handled automatically. /// </summary> /// <param name="packet">packet type</param> /// <param name="packetData">packet Data</param> private void SendPacket(PacketOutgoingType packet, IEnumerable <byte> packetData) { SendPacket(Protocol18PacketTypes.GetPacketOutgoingID(packet, protocolversion), packetData); }
/// <summary> /// Get packet ID of the specified outgoing packet /// </summary> /// <param name="packet">Abstract packet numbering</param> /// <param name="protocol">Protocol version</param> /// <returns>Packet ID</returns> public static int GetPacketOutgoingID(PacketOutgoingType packet, int protocol) { if (protocol <= Protocol18Handler.MC18Version) // MC 1.7 and 1.8 { switch (packet) { case PacketOutgoingType.KeepAlive: return(0x00); case PacketOutgoingType.ResourcePackStatus: return(0x19); case PacketOutgoingType.ChatMessage: return(0x01); case PacketOutgoingType.ClientStatus: return(0x16); case PacketOutgoingType.ClientSettings: return(0x15); case PacketOutgoingType.PluginMessage: return(0x17); case PacketOutgoingType.TabComplete: return(0x14); case PacketOutgoingType.PlayerPosition: return(0x04); case PacketOutgoingType.PlayerPositionAndLook: return(0x06); case PacketOutgoingType.TeleportConfirm: throw new InvalidOperationException("Teleport confirm is not supported in protocol " + protocol); } } else if (protocol <= Protocol18Handler.MC1112Version) // MC 1.9, 1,10 and 1.11 { switch (packet) { case PacketOutgoingType.KeepAlive: return(0x0B); case PacketOutgoingType.ResourcePackStatus: return(0x16); case PacketOutgoingType.ChatMessage: return(0x02); case PacketOutgoingType.ClientStatus: return(0x03); case PacketOutgoingType.ClientSettings: return(0x04); case PacketOutgoingType.PluginMessage: return(0x09); case PacketOutgoingType.TabComplete: return(0x01); case PacketOutgoingType.PlayerPosition: return(0x0C); case PacketOutgoingType.PlayerPositionAndLook: return(0x0D); case PacketOutgoingType.TeleportConfirm: return(0x00); } } else if (protocol <= Protocol18Handler.MC112Version) // MC 1.12 { switch (packet) { case PacketOutgoingType.KeepAlive: return(0x0C); case PacketOutgoingType.ResourcePackStatus: return(0x18); case PacketOutgoingType.ChatMessage: return(0x03); case PacketOutgoingType.ClientStatus: return(0x04); case PacketOutgoingType.ClientSettings: return(0x05); case PacketOutgoingType.PluginMessage: return(0x0A); case PacketOutgoingType.TabComplete: return(0x02); case PacketOutgoingType.PlayerPosition: return(0x0E); case PacketOutgoingType.PlayerPositionAndLook: return(0x0F); case PacketOutgoingType.TeleportConfirm: return(0x00); } } else if (protocol <= Protocol18Handler.MC1122Version) // 1.12.2 { switch (packet) { case PacketOutgoingType.KeepAlive: return(0x0B); case PacketOutgoingType.ResourcePackStatus: return(0x18); case PacketOutgoingType.ChatMessage: return(0x02); case PacketOutgoingType.ClientStatus: return(0x03); case PacketOutgoingType.ClientSettings: return(0x04); case PacketOutgoingType.PluginMessage: return(0x09); case PacketOutgoingType.TabComplete: return(0x01); case PacketOutgoingType.PlayerPosition: return(0x0D); case PacketOutgoingType.PlayerPositionAndLook: return(0x0E); case PacketOutgoingType.TeleportConfirm: return(0x00); } } else if (protocol < Protocol18Handler.MC114Version) // MC 1.13 to 1.13.2 { switch (packet) { case PacketOutgoingType.KeepAlive: return(0x0E); case PacketOutgoingType.ResourcePackStatus: return(0x1D); case PacketOutgoingType.ChatMessage: return(0x02); case PacketOutgoingType.ClientStatus: return(0x03); case PacketOutgoingType.ClientSettings: return(0x04); case PacketOutgoingType.PluginMessage: return(0x0A); case PacketOutgoingType.TabComplete: return(0x05); case PacketOutgoingType.PlayerPosition: return(0x10); case PacketOutgoingType.PlayerPositionAndLook: return(0x11); case PacketOutgoingType.TeleportConfirm: return(0x00); } } else // MC 1.14 { switch (packet) { case PacketOutgoingType.KeepAlive: return(0x0F); case PacketOutgoingType.ResourcePackStatus: return(0x1F); case PacketOutgoingType.ChatMessage: return(0x03); case PacketOutgoingType.ClientStatus: return(0x04); case PacketOutgoingType.ClientSettings: return(0x05); case PacketOutgoingType.PluginMessage: return(0x0B); case PacketOutgoingType.TabComplete: return(0x06); case PacketOutgoingType.PlayerPosition: return(0x11); case PacketOutgoingType.PlayerPositionAndLook: return(0x12); case PacketOutgoingType.TeleportConfirm: return(0x00); } } throw new System.ComponentModel.InvalidEnumArgumentException("Unknown PacketOutgoingType (protocol=" + protocol + ")", (int)packet, typeof(PacketOutgoingType)); }
private void SendPacket(PacketOutgoingType packet, IEnumerable <byte> packetData) { SendPacket(handler.getProtocol().getPacketOutgoingID(packet), packetData); }
private void SendPacket(PacketOutgoingType packetID, IEnumerable <byte> packetData) { SendPacket(getPacketOutgoingID(packetID), packetData); }
/// <summary> /// Get packet ID of the specified outgoing packet /// </summary> /// <remarks> /// When adding a new packet, see https://wiki.vg/Protocol_version_numbers /// For each switch below, see the corresponding page (e.g. MC 1.7, then 1.9) and add the ID /// By the way, also look for packet layout changes across versions and handle them in Protocol18.cs /// Please add entries in the same order as they are displayed in PacketOutgoingType.cs /// </remarks> /// <param name="packet">Abstract packet numbering</param> /// <param name="protocol">Protocol version</param> /// <returns>Packet ID</returns> public static int GetPacketOutgoingID(PacketOutgoingType packet, int protocol) { if (protocol <= Protocol18Handler.MC18Version) // MC 1.7 and 1.8 { switch (packet) { case PacketOutgoingType.KeepAlive: return(0x00); case PacketOutgoingType.ResourcePackStatus: return(0x19); case PacketOutgoingType.ChatMessage: return(0x01); case PacketOutgoingType.ClientStatus: return(0x16); case PacketOutgoingType.ClientSettings: return(0x15); case PacketOutgoingType.PluginMessage: return(0x17); case PacketOutgoingType.TabComplete: return(0x14); case PacketOutgoingType.EntityAction: return(0x0B); case PacketOutgoingType.PlayerPosition: return(0x04); case PacketOutgoingType.PlayerPositionAndLook: return(0x06); case PacketOutgoingType.TeleportConfirm: throw new InvalidOperationException("Teleport confirm is not supported in protocol " + protocol); case PacketOutgoingType.HeldItemChange: return(0x17); case PacketOutgoingType.InteractEntity: return(0x02); case PacketOutgoingType.UseItem: throw new InvalidOperationException("Use item is not supported in protocol " + protocol); case PacketOutgoingType.ClickWindow: return(0x0E); case PacketOutgoingType.CloseWindow: return(0x0D); case PacketOutgoingType.PlayerBlockPlacement: return(0x08); case PacketOutgoingType.CreativeInventoryAction: return(0x10); case PacketOutgoingType.Animation: return(0x0A); case PacketOutgoingType.PlayerDigging: return(0x07); } } else if (protocol <= Protocol18Handler.MC1112Version) // MC 1.9, 1,10 and 1.11 { switch (packet) { case PacketOutgoingType.KeepAlive: return(0x0B); case PacketOutgoingType.ResourcePackStatus: return(0x16); case PacketOutgoingType.ChatMessage: return(0x02); case PacketOutgoingType.ClientStatus: return(0x03); case PacketOutgoingType.ClientSettings: return(0x04); case PacketOutgoingType.PluginMessage: return(0x09); case PacketOutgoingType.TabComplete: return(0x01); case PacketOutgoingType.EntityAction: return(0x14); case PacketOutgoingType.PlayerPosition: return(0x0C); case PacketOutgoingType.PlayerPositionAndLook: return(0x0D); case PacketOutgoingType.TeleportConfirm: return(0x00); case PacketOutgoingType.HeldItemChange: return(0x17); case PacketOutgoingType.InteractEntity: return(0x0A); case PacketOutgoingType.UseItem: return(0x1D); case PacketOutgoingType.ClickWindow: return(0x07); case PacketOutgoingType.CloseWindow: return(0x08); case PacketOutgoingType.PlayerBlockPlacement: return(0x1C); case PacketOutgoingType.CreativeInventoryAction: return(0x18); case PacketOutgoingType.Animation: return(0x1A); case PacketOutgoingType.PlayerDigging: return(0x13); } } else if (protocol <= Protocol18Handler.MC112Version) // MC 1.12 { switch (packet) { case PacketOutgoingType.KeepAlive: return(0x0C); case PacketOutgoingType.ResourcePackStatus: return(0x18); case PacketOutgoingType.ChatMessage: return(0x03); case PacketOutgoingType.ClientStatus: return(0x04); case PacketOutgoingType.ClientSettings: return(0x05); case PacketOutgoingType.PluginMessage: return(0x0A); case PacketOutgoingType.TabComplete: return(0x02); case PacketOutgoingType.EntityAction: return(0x15); case PacketOutgoingType.PlayerPosition: return(0x0E); case PacketOutgoingType.PlayerPositionAndLook: return(0x0F); case PacketOutgoingType.TeleportConfirm: return(0x00); case PacketOutgoingType.HeldItemChange: return(0x1A); case PacketOutgoingType.InteractEntity: return(0x0B); case PacketOutgoingType.UseItem: return(0x20); case PacketOutgoingType.ClickWindow: return(0x07); case PacketOutgoingType.CloseWindow: return(0x08); case PacketOutgoingType.PlayerBlockPlacement: return(0x1F); case PacketOutgoingType.CreativeInventoryAction: return(0x1B); case PacketOutgoingType.Animation: return(0x1D); case PacketOutgoingType.PlayerDigging: return(0x14); } } else if (protocol <= Protocol18Handler.MC1122Version) // 1.12.2 { switch (packet) { case PacketOutgoingType.KeepAlive: return(0x0B); case PacketOutgoingType.ResourcePackStatus: return(0x18); case PacketOutgoingType.ChatMessage: return(0x02); case PacketOutgoingType.ClientStatus: return(0x03); case PacketOutgoingType.ClientSettings: return(0x04); case PacketOutgoingType.PluginMessage: return(0x09); case PacketOutgoingType.TabComplete: return(0x01); case PacketOutgoingType.EntityAction: return(0x15); case PacketOutgoingType.PlayerPosition: return(0x0D); case PacketOutgoingType.PlayerPositionAndLook: return(0x0E); case PacketOutgoingType.TeleportConfirm: return(0x00); case PacketOutgoingType.HeldItemChange: return(0x1F); case PacketOutgoingType.InteractEntity: return(0x0A); case PacketOutgoingType.UseItem: return(0x20); case PacketOutgoingType.ClickWindow: return(0x07); case PacketOutgoingType.CloseWindow: return(0x08); case PacketOutgoingType.PlayerBlockPlacement: return(0x1F); case PacketOutgoingType.CreativeInventoryAction: return(0x1B); case PacketOutgoingType.Animation: return(0x1D); case PacketOutgoingType.PlayerDigging: return(0x14); } } else if (protocol < Protocol18Handler.MC114Version) // MC 1.13 to 1.13.2 { switch (packet) { case PacketOutgoingType.KeepAlive: return(0x0E); case PacketOutgoingType.ResourcePackStatus: return(0x1D); case PacketOutgoingType.ChatMessage: return(0x02); case PacketOutgoingType.ClientStatus: return(0x03); case PacketOutgoingType.ClientSettings: return(0x04); case PacketOutgoingType.PluginMessage: return(0x0A); case PacketOutgoingType.TabComplete: return(0x05); case PacketOutgoingType.EntityAction: return(0x19); case PacketOutgoingType.PlayerPosition: return(0x10); case PacketOutgoingType.PlayerPositionAndLook: return(0x11); case PacketOutgoingType.TeleportConfirm: return(0x00); case PacketOutgoingType.HeldItemChange: return(0x21); case PacketOutgoingType.InteractEntity: return(0x0D); case PacketOutgoingType.UseItem: return(0x2A); case PacketOutgoingType.ClickWindow: return(0x08); case PacketOutgoingType.CloseWindow: return(0x09); case PacketOutgoingType.PlayerBlockPlacement: return(0x29); case PacketOutgoingType.CreativeInventoryAction: return(0x24); case PacketOutgoingType.Animation: return(0x27); case PacketOutgoingType.PlayerDigging: return(0x18); } } else // MC 1.14 to 1.15 { switch (packet) { case PacketOutgoingType.KeepAlive: return(0x0F); case PacketOutgoingType.ResourcePackStatus: return(0x1F); case PacketOutgoingType.ChatMessage: return(0x03); case PacketOutgoingType.ClientStatus: return(0x04); case PacketOutgoingType.ClientSettings: return(0x05); case PacketOutgoingType.PluginMessage: return(0x0B); case PacketOutgoingType.TabComplete: return(0x06); case PacketOutgoingType.EntityAction: return(0x1B); case PacketOutgoingType.PlayerPosition: return(0x11); case PacketOutgoingType.PlayerPositionAndLook: return(0x12); case PacketOutgoingType.TeleportConfirm: return(0x00); case PacketOutgoingType.HeldItemChange: return(0x23); case PacketOutgoingType.InteractEntity: return(0x0E); case PacketOutgoingType.UseItem: return(0x2D); case PacketOutgoingType.ClickWindow: return(0x09); case PacketOutgoingType.CloseWindow: return(0x0A); case PacketOutgoingType.PlayerBlockPlacement: return(0x2C); case PacketOutgoingType.CreativeInventoryAction: return(0x26); case PacketOutgoingType.Animation: return(0x2A); case PacketOutgoingType.PlayerDigging: return(0x1A); } } throw new System.ComponentModel.InvalidEnumArgumentException("Unknown PacketOutgoingType (protocol=" + protocol + ")", (int)packet, typeof(PacketOutgoingType)); }
public void WritePacket(PacketOutgoingType packetOutgoingType, IEnumerable <byte> data) { WritePacket(Protocol18PacketTypes.GetPacketOutgoingID(packetOutgoingType, protocolVersion), data); }
/// <summary> /// Get packet ID of the specified outgoing packet /// </summary> /// <remarks> /// When adding a new packet, see https://wiki.vg/Protocol_version_numbers /// For each switch below, see the corresponding page (e.g. MC 1.7, then 1.9) and add the ID /// By the way, also look for packet layout changes across versions and handle them in Protocol18.cs /// Please add entries in the same order as they are displayed in PacketOutgoingType.cs /// </remarks> /// <param name="packet">Abstract packet numbering</param> /// <param name="protocol">Protocol version</param> /// <returns>Packet ID</returns> public static int GetPacketOutgoingID(PacketOutgoingType packet, int protocol) { if (protocol <= Protocol18Handler.MC18Version) // MC 1.7 and 1.8 { switch (packet) { case PacketOutgoingType.KeepAlive: return 0x00; case PacketOutgoingType.ResourcePackStatus: return 0x19; case PacketOutgoingType.ChatMessage: return 0x01; case PacketOutgoingType.ClientStatus: return 0x16; case PacketOutgoingType.ClientSettings: return 0x15; case PacketOutgoingType.PluginMessage: return 0x17; case PacketOutgoingType.TabComplete: return 0x14; case PacketOutgoingType.EntityAction: return 0x0B; case PacketOutgoingType.PlayerPosition: return 0x04; case PacketOutgoingType.PlayerPositionAndLook: return 0x06; case PacketOutgoingType.TeleportConfirm: throw new InvalidOperationException("Teleport confirm is not supported in protocol " + protocol); case PacketOutgoingType.HeldItemChange: return 0x17; case PacketOutgoingType.InteractEntity: return 0x02; case PacketOutgoingType.UseItem: throw new InvalidOperationException("Use item is not supported in protocol " + protocol); case PacketOutgoingType.ClickWindow: return 0x0E; case PacketOutgoingType.CloseWindow: return 0x0D; case PacketOutgoingType.PlayerBlockPlacement: return 0x08; case PacketOutgoingType.CreativeInventoryAction: return 0x10; case PacketOutgoingType.Animation: return 0x0A; case PacketOutgoingType.PlayerDigging: return 0x07; case PacketOutgoingType.UpdateSign: return 0x12; case PacketOutgoingType.UpdateCommandBlock: return 0x20; } } else if (protocol <= Protocol18Handler.MC1112Version) // MC 1.9, 1,10 and 1.11 { switch (packet) { case PacketOutgoingType.KeepAlive: return 0x0B; case PacketOutgoingType.ResourcePackStatus: return 0x16; case PacketOutgoingType.ChatMessage: return 0x02; case PacketOutgoingType.ClientStatus: return 0x03; case PacketOutgoingType.ClientSettings: return 0x04; case PacketOutgoingType.PluginMessage: return 0x09; case PacketOutgoingType.TabComplete: return 0x01; case PacketOutgoingType.EntityAction: return 0x14; case PacketOutgoingType.PlayerPosition: return 0x0C; case PacketOutgoingType.PlayerPositionAndLook: return 0x0D; case PacketOutgoingType.TeleportConfirm: return 0x00; case PacketOutgoingType.HeldItemChange: return 0x17; case PacketOutgoingType.InteractEntity: return 0x0A; case PacketOutgoingType.UseItem: return 0x1D; case PacketOutgoingType.ClickWindow: return 0x07; case PacketOutgoingType.CloseWindow: return 0x08; case PacketOutgoingType.PlayerBlockPlacement: return 0x1C; case PacketOutgoingType.CreativeInventoryAction: return 0x18; case PacketOutgoingType.Animation: return 0x1A; case PacketOutgoingType.PlayerDigging: return 0x13; case PacketOutgoingType.UpdateSign: return 0x19; case PacketOutgoingType.UpdateCommandBlock: return 0x20; } } else if (protocol <= Protocol18Handler.MC112Version) // MC 1.12 { switch (packet) { case PacketOutgoingType.KeepAlive: return 0x0C; case PacketOutgoingType.ResourcePackStatus: return 0x18; case PacketOutgoingType.ChatMessage: return 0x03; case PacketOutgoingType.ClientStatus: return 0x04; case PacketOutgoingType.ClientSettings: return 0x05; case PacketOutgoingType.PluginMessage: return 0x0A; case PacketOutgoingType.TabComplete: return 0x02; case PacketOutgoingType.EntityAction: return 0x15; case PacketOutgoingType.PlayerPosition: return 0x0E; case PacketOutgoingType.PlayerPositionAndLook: return 0x0F; case PacketOutgoingType.TeleportConfirm: return 0x00; case PacketOutgoingType.HeldItemChange: return 0x1A; case PacketOutgoingType.InteractEntity: return 0x0B; case PacketOutgoingType.UseItem: return 0x20; case PacketOutgoingType.ClickWindow: return 0x07; case PacketOutgoingType.CloseWindow: return 0x08; case PacketOutgoingType.PlayerBlockPlacement: return 0x1F; case PacketOutgoingType.CreativeInventoryAction: return 0x1B; case PacketOutgoingType.Animation: return 0x1D; case PacketOutgoingType.PlayerDigging: return 0x14; case PacketOutgoingType.UpdateSign: return 0x1C; case PacketOutgoingType.UpdateCommandBlock: return 0x20; } } else if (protocol <= Protocol18Handler.MC1122Version) // 1.12.2 { switch (packet) { case PacketOutgoingType.KeepAlive: return 0x0B; case PacketOutgoingType.ResourcePackStatus: return 0x18; case PacketOutgoingType.ChatMessage: return 0x02; case PacketOutgoingType.ClientStatus: return 0x03; case PacketOutgoingType.ClientSettings: return 0x04; case PacketOutgoingType.PluginMessage: return 0x09; case PacketOutgoingType.TabComplete: return 0x01; case PacketOutgoingType.EntityAction: return 0x15; case PacketOutgoingType.PlayerPosition: return 0x0D; case PacketOutgoingType.PlayerPositionAndLook: return 0x0E; case PacketOutgoingType.TeleportConfirm: return 0x00; case PacketOutgoingType.HeldItemChange: return 0x1F; case PacketOutgoingType.InteractEntity: return 0x0A; case PacketOutgoingType.UseItem: return 0x20; case PacketOutgoingType.ClickWindow: return 0x07; case PacketOutgoingType.CloseWindow: return 0x08; case PacketOutgoingType.PlayerBlockPlacement: return 0x1F; case PacketOutgoingType.CreativeInventoryAction: return 0x1B; case PacketOutgoingType.Animation: return 0x1D; case PacketOutgoingType.PlayerDigging: return 0x14; case PacketOutgoingType.UpdateSign: return 0x1C; case PacketOutgoingType.UpdateCommandBlock: return 0x20; } } else if (protocol < Protocol18Handler.MC114Version) // MC 1.13 to 1.13.2 { switch (packet) { case PacketOutgoingType.KeepAlive: return 0x0E; case PacketOutgoingType.ResourcePackStatus: return 0x1D; case PacketOutgoingType.ChatMessage: return 0x02; case PacketOutgoingType.ClientStatus: return 0x03; case PacketOutgoingType.ClientSettings: return 0x04; case PacketOutgoingType.PluginMessage: return 0x0A; case PacketOutgoingType.TabComplete: return 0x05; case PacketOutgoingType.EntityAction: return 0x19; case PacketOutgoingType.PlayerPosition: return 0x10; case PacketOutgoingType.PlayerPositionAndLook: return 0x11; case PacketOutgoingType.TeleportConfirm: return 0x00; case PacketOutgoingType.HeldItemChange: return 0x21; case PacketOutgoingType.InteractEntity: return 0x0D; case PacketOutgoingType.UseItem: return 0x2A; case PacketOutgoingType.ClickWindow: return 0x08; case PacketOutgoingType.CloseWindow: return 0x09; case PacketOutgoingType.PlayerBlockPlacement: return 0x29; case PacketOutgoingType.CreativeInventoryAction: return 0x24; case PacketOutgoingType.Animation: return 0x27; case PacketOutgoingType.PlayerDigging: return 0x18; case PacketOutgoingType.UpdateSign: return 0x26; case PacketOutgoingType.UpdateCommandBlock: return 0x22; } } else if (protocol <= Protocol18Handler.MC1152Version) //MC 1.14 to 1.15.2 { switch (packet) { case PacketOutgoingType.KeepAlive: return 0x0F; case PacketOutgoingType.ResourcePackStatus: return 0x1F; case PacketOutgoingType.ChatMessage: return 0x03; case PacketOutgoingType.ClientStatus: return 0x04; case PacketOutgoingType.ClientSettings: return 0x05; case PacketOutgoingType.PluginMessage: return 0x0B; case PacketOutgoingType.TabComplete: return 0x06; case PacketOutgoingType.EntityAction: return 0x1B; case PacketOutgoingType.PlayerPosition: return 0x11; case PacketOutgoingType.PlayerPositionAndLook: return 0x12; case PacketOutgoingType.TeleportConfirm: return 0x00; case PacketOutgoingType.HeldItemChange: return 0x23; case PacketOutgoingType.InteractEntity: return 0x0E; case PacketOutgoingType.UseItem: return 0x2D; case PacketOutgoingType.ClickWindow: return 0x09; case PacketOutgoingType.CloseWindow: return 0x0A; case PacketOutgoingType.PlayerBlockPlacement: return 0x2C; case PacketOutgoingType.CreativeInventoryAction: return 0x26; case PacketOutgoingType.Animation: return 0x2A; case PacketOutgoingType.PlayerDigging: return 0x1A; case PacketOutgoingType.UpdateSign: return 0x29; case PacketOutgoingType.UpdateCommandBlock: return 0x24; } } else { switch (packet) { case PacketOutgoingType.KeepAlive: return 0x10; case PacketOutgoingType.ResourcePackStatus: return 0x20; case PacketOutgoingType.ChatMessage: return 0x03; case PacketOutgoingType.ClientStatus: return 0x04; case PacketOutgoingType.ClientSettings: return 0x05; case PacketOutgoingType.PluginMessage: return 0x0B; case PacketOutgoingType.TabComplete: return 0x06; case PacketOutgoingType.EntityAction: return 0x1C; case PacketOutgoingType.PlayerPosition: return 0x12; case PacketOutgoingType.PlayerPositionAndLook: return 0x13; case PacketOutgoingType.TeleportConfirm: return 0x00; case PacketOutgoingType.HeldItemChange: return 0x24; case PacketOutgoingType.InteractEntity: return 0x0E; case PacketOutgoingType.UseItem: return 0x2E; case PacketOutgoingType.ClickWindow: return 0x09; case PacketOutgoingType.CloseWindow: return 0x0A; case PacketOutgoingType.PlayerBlockPlacement: return 0x2C; case PacketOutgoingType.CreativeInventoryAction: return 0x27; case PacketOutgoingType.Animation: return 0x2B; case PacketOutgoingType.PlayerDigging: return 0x1B; case PacketOutgoingType.UpdateSign: return 0x2A; case PacketOutgoingType.UpdateCommandBlock: return 0x24; } } throw new System.ComponentModel.InvalidEnumArgumentException("Unknown PacketOutgoingType (protocol=" + protocol + ")", (int)packet, typeof(PacketOutgoingType)); }
private int getPacketOutgoingID(PacketOutgoingType packet, int protocol) { if (protocol < 107) { switch (packet) { case PacketOutgoingType.KeepAlive: return(0x00); case PacketOutgoingType.ResourcePackStatus: return(0x19); case PacketOutgoingType.ChatMessage: return(0x01); case PacketOutgoingType.ClientStatus: return(0x16); case PacketOutgoingType.ClientSettings: return(0x15); case PacketOutgoingType.PluginMessage: return(0x17); case PacketOutgoingType.TabComplete: return(0x14); case PacketOutgoingType.PlayerPosition: return(0x04); case PacketOutgoingType.PlayerPositionAndLook: return(0x06); case PacketOutgoingType.TeleportConfirm: throw new InvalidOperationException("Teleport confirm is not supported in protocol " + protocol); } } else if (protocol < 318) { switch (packet) { case PacketOutgoingType.KeepAlive: return(0x0B); case PacketOutgoingType.ResourcePackStatus: return(0x16); case PacketOutgoingType.ChatMessage: return(0x02); case PacketOutgoingType.ClientStatus: return(0x03); case PacketOutgoingType.ClientSettings: return(0x04); case PacketOutgoingType.PluginMessage: return(0x09); case PacketOutgoingType.TabComplete: return(0x01); case PacketOutgoingType.PlayerPosition: return(0x0C); case PacketOutgoingType.PlayerPositionAndLook: return(0x0D); case PacketOutgoingType.TeleportConfirm: return(0x00); } } else if (protocolversion < 332) { switch (packet) { case PacketOutgoingType.KeepAlive: return(0x0C); case PacketOutgoingType.ResourcePackStatus: return(0x17); case PacketOutgoingType.ChatMessage: return(0x03); case PacketOutgoingType.ClientStatus: return(0x04); case PacketOutgoingType.ClientSettings: return(0x05); case PacketOutgoingType.PluginMessage: return(0x0A); case PacketOutgoingType.TabComplete: return(0x02); case PacketOutgoingType.PlayerPosition: return(0x0D); case PacketOutgoingType.PlayerPositionAndLook: return(0x0E); case PacketOutgoingType.TeleportConfirm: return(0x00); } } else if (protocol < 336) { switch (packet) { case PacketOutgoingType.KeepAlive: return(0x0C); case PacketOutgoingType.ResourcePackStatus: return(0x17); case PacketOutgoingType.ChatMessage: return(0x03); case PacketOutgoingType.ClientStatus: return(0x04); case PacketOutgoingType.ClientSettings: return(0x05); case PacketOutgoingType.PluginMessage: return(0x0A); case PacketOutgoingType.TabComplete: return(0x02); case PacketOutgoingType.PlayerPosition: return(0x0E); case PacketOutgoingType.PlayerPositionAndLook: return(0x0F); case PacketOutgoingType.TeleportConfirm: return(0x00); } } else { switch (packet) { case PacketOutgoingType.KeepAlive: return(0x0B); case PacketOutgoingType.ResourcePackStatus: return(0x17); case PacketOutgoingType.ChatMessage: return(0x02); case PacketOutgoingType.ClientStatus: return(0x03); case PacketOutgoingType.ClientSettings: return(0x04); case PacketOutgoingType.PluginMessage: return(0x09); case PacketOutgoingType.TabComplete: return(0x01); case PacketOutgoingType.PlayerPosition: return(0x0D); case PacketOutgoingType.PlayerPositionAndLook: return(0x0E); case PacketOutgoingType.TeleportConfirm: return(0x00); } } throw new System.ComponentModel.InvalidEnumArgumentException("Unknown PacketOutgoingType (protocol=" + protocol + ")", (int)packet, typeof(PacketOutgoingType)); }
public abstract int getPacketOutgoingID(PacketOutgoingType packet);