1.19.3 PlayerRemove & Explosion packet

This commit is contained in:
BruceChen 2023-01-14 15:55:40 +08:00
parent 052060b23c
commit e0294f1beb
2 changed files with 1587 additions and 1575 deletions

View file

@ -329,8 +329,10 @@ namespace MinecraftClient.Protocol.Handlers
/// <returns>TRUE if the packet was processed, FALSE if ignored or unknown</returns> /// <returns>TRUE if the packet was processed, FALSE if ignored or unknown</returns>
internal bool HandlePacket(int packetID, Queue<byte> packetData) internal bool HandlePacket(int packetID, Queue<byte> packetData)
{ {
#if Release
try try
{ {
#endif
if (login_phase) if (login_phase)
{ {
switch (packetID) //Packet IDs are different while logging in switch (packetID) //Packet IDs are different while logging in
@ -1237,11 +1239,9 @@ namespace MinecraftClient.Protocol.Handlers
if (hasIcon) if (hasIcon)
iconBase64 = dataTypes.ReadNextString(packetData); iconBase64 = dataTypes.ReadNextString(packetData);
bool previewsChat = false; bool previewsChat = false;
if (protocolVersion < MC_1_19_3_Version) if (protocolVersion < MC_1_19_3_Version)
dataTypes.ReadNextBool(packetData); previewsChat = dataTypes.ReadNextBool(packetData);
handler.OnServerDataRecived(hasMotd, motd, hasIcon, iconBase64, previewsChat); handler.OnServerDataRecived(hasMotd, motd, hasIcon, iconBase64, previewsChat);
break; break;
@ -1507,6 +1507,14 @@ namespace MinecraftClient.Protocol.Handlers
else handler.OnPlayerLeave(FakeUUID); else handler.OnPlayerLeave(FakeUUID);
} }
break; break;
case PacketTypesIn.PlayerRemove:
int numberOfLeavePlayers = dataTypes.ReadNextVarInt(packetData);
for (int i = 0; i < numberOfLeavePlayers; ++i)
{
Guid playerUuid = dataTypes.ReadNextUUID(packetData);
handler.OnPlayerLeave(playerUuid);
}
break;
case PacketTypesIn.TabComplete: case PacketTypesIn.TabComplete:
if (protocolVersion >= MC_1_13_Version) if (protocolVersion >= MC_1_13_Version)
{ {
@ -1903,7 +1911,11 @@ namespace MinecraftClient.Protocol.Handlers
handler.OnSetExperience(experiencebar, level, totalexperience); handler.OnSetExperience(experiencebar, level, totalexperience);
break; break;
case PacketTypesIn.Explosion: case PacketTypesIn.Explosion:
Location explosionLocation = new(dataTypes.ReadNextFloat(packetData), dataTypes.ReadNextFloat(packetData), dataTypes.ReadNextFloat(packetData)); Location explosionLocation;
if (protocolVersion >= MC_1_19_3_Version)
explosionLocation = new(dataTypes.ReadNextDouble(packetData), dataTypes.ReadNextDouble(packetData), dataTypes.ReadNextDouble(packetData));
else
explosionLocation = new(dataTypes.ReadNextFloat(packetData), dataTypes.ReadNextFloat(packetData), dataTypes.ReadNextFloat(packetData));
float explosionStrength = dataTypes.ReadNextFloat(packetData); float explosionStrength = dataTypes.ReadNextFloat(packetData);
int explosionBlockCount = protocolVersion >= MC_1_17_Version int explosionBlockCount = protocolVersion >= MC_1_17_Version
@ -1972,6 +1984,7 @@ namespace MinecraftClient.Protocol.Handlers
return false; //Ignored packet return false; //Ignored packet
} }
return true; //Packet processed return true; //Packet processed
#if Release
} }
catch (Exception innerException) catch (Exception innerException)
{ {
@ -1986,6 +1999,7 @@ namespace MinecraftClient.Protocol.Handlers
innerException.GetType()), innerException.GetType()),
innerException); innerException);
} }
#endif
} }
/// <summary> /// <summary>

View file

@ -264,9 +264,7 @@ namespace MinecraftClient.Protocol.Handlers
int[] palette = new int[paletteLength]; int[] palette = new int[paletteLength];
for (int i = 0; i < paletteLength; i++) for (int i = 0; i < paletteLength; i++)
{
palette[i] = dataTypes.ReadNextVarInt(cache); palette[i] = dataTypes.ReadNextVarInt(cache);
}
// Bit mask covering bitsPerBlock bits // Bit mask covering bitsPerBlock bits
// EG, if bitsPerBlock = 5, valueMask = 00011111 in binary // EG, if bitsPerBlock = 5, valueMask = 00011111 in binary