mirror of
https://github.com/MCCTeam/Minecraft-Console-Client
synced 2025-10-14 21:22:49 +00:00
Adds support for villager trading (#1316)
* adds villager trading support Adds handler for tradeList packet and selectTrade packet * added extra line at end * removed tab; removed size and hasSecondItem removed a mistakenly added tab instead of 4 spaces. SelectTrade was already added in 1.13. Removed unnecessary size and hasSecondItem from trade dataType. * Added VillagerInfo class and capitalized vars in Trade class * Update VillagerInfo.cs * Small formatting/naming adjustments Co-authored-by: ORelio <ORelio@users.noreply.github.com>
This commit is contained in:
parent
2a7f0c7f16
commit
28f47cc532
11 changed files with 186 additions and 1 deletions
|
|
@ -432,6 +432,28 @@ namespace MinecraftClient.Protocol.Handlers
|
|||
int iconcount = dataTypes.ReadNextVarInt(packetData);
|
||||
handler.OnMapData(mapid, scale, trackingposition, locked, iconcount);
|
||||
break;
|
||||
case PacketTypesIn.TradeList:
|
||||
if ((protocolversion >= MC114Version) && (handler.GetInventoryEnabled()))
|
||||
{
|
||||
// MC 1.14 or greater
|
||||
int windowID = dataTypes.ReadNextVarInt(packetData);
|
||||
int size = dataTypes.ReadNextByte(packetData);
|
||||
List<VillagerTrade> trades = new List<VillagerTrade>();
|
||||
for (int tradeId = 0; tradeId < size; tradeId++)
|
||||
{
|
||||
VillagerTrade trade = dataTypes.ReadNextTrade(packetData, itemPalette);
|
||||
trades.Add(trade);
|
||||
}
|
||||
VillagerInfo villagerInfo = new VillagerInfo()
|
||||
{
|
||||
Level = dataTypes.ReadNextVarInt(packetData),
|
||||
Experience = dataTypes.ReadNextVarInt(packetData),
|
||||
IsRegularVillager = dataTypes.ReadNextBool(packetData),
|
||||
CanRestock = dataTypes.ReadNextBool(packetData)
|
||||
};
|
||||
handler.OnTradeList(windowID, trades, villagerInfo);
|
||||
}
|
||||
break;
|
||||
case PacketTypesIn.Title:
|
||||
if (protocolversion >= MC18Version)
|
||||
{
|
||||
|
|
@ -1889,5 +1911,24 @@ namespace MinecraftClient.Protocol.Handlers
|
|||
catch (System.IO.IOException) { return false; }
|
||||
catch (ObjectDisposedException) { return false; }
|
||||
}
|
||||
|
||||
public bool SelectTrade(int selectedSlot)
|
||||
{
|
||||
// MC 1.13 or greater
|
||||
if (protocolversion >= MC113Version)
|
||||
{
|
||||
try
|
||||
{
|
||||
List<byte> packet = new List<byte>();
|
||||
packet.AddRange(dataTypes.GetVarInt(selectedSlot));
|
||||
SendPacket(PacketTypesOut.SelectTrade, packet);
|
||||
return true;
|
||||
}
|
||||
catch (SocketException) { return false; }
|
||||
catch (System.IO.IOException) { return false; }
|
||||
catch (ObjectDisposedException) { return false; }
|
||||
}
|
||||
else { return false; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue