mirror of
https://github.com/MCCTeam/Minecraft-Console-Client
synced 2026-08-15 13:04:36 +00:00
hypixel book fixes
This commit is contained in:
parent
61c2cbf7c3
commit
e744ff206b
7 changed files with 302 additions and 38 deletions
|
|
@ -32,17 +32,13 @@ public class WrittenBlookContentComponent(DataTypes dataTypes, ItemPalette itemP
|
|||
|
||||
for (var i = 0; i < NumberOfPages; i++)
|
||||
{
|
||||
var rawContentNbt = DataTypes.ReadNextNbt(data);
|
||||
var rawContent = ChatParser.ParseText(rawContentNbt);
|
||||
var (rawContent, rawContentNbt) = ReadPageComponent(data);
|
||||
var hasFilteredContent = DataTypes.ReadNextBool(data);
|
||||
Dictionary<string, object>? filteredContentNbt = null;
|
||||
string? filteredContent = null;
|
||||
|
||||
if (hasFilteredContent)
|
||||
{
|
||||
filteredContentNbt = DataTypes.ReadNextNbt(data);
|
||||
filteredContent = ChatParser.ParseText(filteredContentNbt);
|
||||
}
|
||||
(filteredContent, filteredContentNbt) = ReadPageComponent(data);
|
||||
|
||||
Pages.Add(new BookPage(rawContent, hasFilteredContent, filteredContent, rawContentNbt, filteredContentNbt));
|
||||
}
|
||||
|
|
@ -50,6 +46,28 @@ public class WrittenBlookContentComponent(DataTypes dataTypes, ItemPalette itemP
|
|||
Resolved = DataTypes.ReadNextBool(data);
|
||||
}
|
||||
|
||||
private (string Content, Dictionary<string, object> Nbt) ReadPageComponent(Queue<byte> data)
|
||||
{
|
||||
// Hypixel sent page payloads in the string-shaped form on this structured-book path,
|
||||
// so keep the parser tolerant while still preserving the raw data for serialization.
|
||||
Queue<byte> fallbackData = new(data);
|
||||
|
||||
try
|
||||
{
|
||||
var nbt = DataTypes.ReadNextNbt(data);
|
||||
return (ChatParser.ParseText(nbt), nbt);
|
||||
}
|
||||
catch (System.IO.InvalidDataException)
|
||||
{
|
||||
data.Clear();
|
||||
foreach (var b in fallbackData)
|
||||
data.Enqueue(b);
|
||||
|
||||
var json = DataTypes.ReadNextString(data);
|
||||
return (ChatParser.ParseText(json), new Dictionary<string, object> { [""] = json });
|
||||
}
|
||||
}
|
||||
|
||||
public override Queue<byte> Serialize()
|
||||
{
|
||||
var data = new List<byte>();
|
||||
|
|
@ -80,4 +98,4 @@ public class WrittenBlookContentComponent(DataTypes dataTypes, ItemPalette itemP
|
|||
data.AddRange(DataTypes.GetBool(Resolved));
|
||||
return new Queue<byte>(data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue