mirror of
https://github.com/MCCTeam/Minecraft-Console-Client
synced 2025-10-14 21:22:49 +00:00
Fixed a crash in SendPlayerBlockPlacement
This commit is contained in:
parent
691f1a136e
commit
2ce0311949
1 changed files with 40 additions and 27 deletions
|
|
@ -3918,41 +3918,54 @@ namespace MinecraftClient.Protocol.Handlers
|
||||||
|
|
||||||
public bool SendPlayerBlockPlacement(int hand, Location location, Direction face, int sequenceId)
|
public bool SendPlayerBlockPlacement(int hand, Location location, Direction face, int sequenceId)
|
||||||
{
|
{
|
||||||
if (protocolVersion < MC_1_14_Version)
|
try
|
||||||
{
|
{
|
||||||
var playerInventory = handler.GetInventory(0);
|
|
||||||
|
|
||||||
if (playerInventory == null)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
var packet = new List<byte>();
|
var packet = new List<byte>();
|
||||||
|
|
||||||
|
switch (protocolVersion)
|
||||||
|
{
|
||||||
|
case < MC_1_9_Version:
|
||||||
packet.AddRange(dataTypes.GetLocation(location));
|
packet.AddRange(dataTypes.GetLocation(location));
|
||||||
packet.Add(dataTypes.GetBlockFace(face));
|
packet.Add(dataTypes.GetBlockFace(face));
|
||||||
|
|
||||||
var item = playerInventory.Items[((McClient)handler).GetCurrentSlot()];
|
var playerInventory = handler.GetInventory(0);
|
||||||
|
|
||||||
|
if (playerInventory?.Items is null)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
var slotWindowIds = new int[]{ 36, 37, 38, 39, 40, 41, 42, 43, 44 };
|
||||||
|
var currentSlot = ((McClient)handler).GetCurrentSlot();
|
||||||
|
|
||||||
|
playerInventory.Items.TryGetValue(slotWindowIds[currentSlot], out var item);
|
||||||
packet.AddRange(dataTypes.GetItemSlot(item, itemPalette));
|
packet.AddRange(dataTypes.GetItemSlot(item, itemPalette));
|
||||||
|
|
||||||
packet.Add(0); // cursorX
|
packet.Add(0); // cursorX
|
||||||
packet.Add(0); // cursorY
|
packet.Add(0); // cursorY
|
||||||
packet.Add(0); // cursorZ
|
packet.Add(0); // cursorZ
|
||||||
|
|
||||||
SendPacket(PacketTypesOut.PlayerBlockPlacement, packet);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
case < MC_1_14_Version:
|
||||||
|
packet.AddRange(dataTypes.GetLocation(location));
|
||||||
try
|
packet.AddRange(DataTypes.GetVarInt(dataTypes.GetBlockFace(face)));
|
||||||
{
|
packet.AddRange(DataTypes.GetVarInt(hand));
|
||||||
var packet = new List<byte>();
|
break;
|
||||||
|
default:
|
||||||
packet.AddRange(DataTypes.GetVarInt(hand));
|
packet.AddRange(DataTypes.GetVarInt(hand));
|
||||||
packet.AddRange(dataTypes.GetLocation(location));
|
packet.AddRange(dataTypes.GetLocation(location));
|
||||||
packet.AddRange(DataTypes.GetVarInt(dataTypes.GetBlockFace(face)));
|
packet.AddRange(DataTypes.GetVarInt(dataTypes.GetBlockFace(face)));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
packet.AddRange(dataTypes.GetFloat(0.5f)); // cursorX
|
packet.AddRange(dataTypes.GetFloat(0.5f)); // cursorX
|
||||||
packet.AddRange(dataTypes.GetFloat(0.5f)); // cursorY
|
packet.AddRange(dataTypes.GetFloat(0.5f)); // cursorY
|
||||||
packet.AddRange(dataTypes.GetFloat(0.5f)); // cursorZ
|
packet.AddRange(dataTypes.GetFloat(0.5f)); // cursorZ
|
||||||
packet.Add(0); // insideBlock = false;
|
|
||||||
|
if(protocolVersion >= MC_1_14_Version)
|
||||||
|
packet.Add(0); // insideBlock = false
|
||||||
|
|
||||||
if (protocolVersion >= MC_1_19_Version)
|
if (protocolVersion >= MC_1_19_Version)
|
||||||
packet.AddRange(DataTypes.GetVarInt(sequenceId));
|
packet.AddRange(DataTypes.GetVarInt(sequenceId));
|
||||||
|
|
||||||
SendPacket(PacketTypesOut.PlayerBlockPlacement, packet);
|
SendPacket(PacketTypesOut.PlayerBlockPlacement, packet);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue