mirror of
https://github.com/MCCTeam/Minecraft-Console-Client
synced 2026-08-15 13:04:36 +00:00
Add a nullable `Nbt` field to `MccInventorySnapshotSlot`, `MccInventorySearchMatch`, and `MccItemStackSnapshot` so that callers can access the full item metadata beyond just material and count. For 1.20.6+ servers the field is a map of component name (e.g. "minecraft:custom_data") to the serialized component object. For legacy servers it is the raw NBT dictionary. The field is omitted entirely for vanilla items that carry no extra data, so there is no noise for plain items like Stone or Dirt. Implementation: - `StructuredComponent`: add `ComponentName` property (set by the registry during parse) and mark both it and `TypeId` with `[JsonIgnore]` so they are excluded from component serialization. - `StructuredComponentRegistry.ParseComponent`: assign `ComponentName` after instantiation. - `MccGameCommon.BuildNbt`: new helper that serializes components by runtime type (fixing the polymorphism issue with System.Text.Json) keyed by component name, falling back to the legacy NBT dictionary. - Snapshot and search query builders updated to call `BuildNbt`.
321 lines
11 KiB
C#
321 lines
11 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace MinecraftClient.Scripting;
|
|
|
|
public sealed class MccRecentEventsResult
|
|
{
|
|
public required long AfterId { get; init; }
|
|
public required long LatestId { get; init; }
|
|
public required int Count { get; init; }
|
|
public required MccRecentEventEntry[] Events { get; init; }
|
|
}
|
|
|
|
public sealed class MccChatHistoryResult
|
|
{
|
|
public required int Count { get; init; }
|
|
public required MccChatHistoryEntry[] Entries { get; init; }
|
|
}
|
|
|
|
public sealed class MccPathPreviewResult
|
|
{
|
|
public required bool PathFound { get; init; }
|
|
public required bool ExactReachable { get; init; }
|
|
public required MccCoordinate Target { get; init; }
|
|
public required MccCoordinate StartLocation { get; init; }
|
|
public MccCoordinate? FinalWaypoint { get; init; }
|
|
public double? FinalDistance { get; init; }
|
|
public required int WaypointCount { get; init; }
|
|
public required bool Truncated { get; init; }
|
|
public required MccCoordinate[] Waypoints { get; init; }
|
|
public required bool AllowUnsafe { get; init; }
|
|
public required int MaxOffset { get; init; }
|
|
public required int MinOffset { get; init; }
|
|
public required int TimeoutMs { get; init; }
|
|
}
|
|
|
|
public sealed class MccReachabilityResult
|
|
{
|
|
public required bool Reachable { get; init; }
|
|
public required bool ExactReachable { get; init; }
|
|
public required MccCoordinate Target { get; init; }
|
|
public required MccCoordinate StartLocation { get; init; }
|
|
public MccCoordinate? FinalWaypoint { get; init; }
|
|
public double? FinalDistance { get; init; }
|
|
public required int WaypointCount { get; init; }
|
|
public required bool AllowUnsafe { get; init; }
|
|
public required int MaxOffset { get; init; }
|
|
public required int MinOffset { get; init; }
|
|
public required int TimeoutMs { get; init; }
|
|
}
|
|
|
|
public sealed class MccPlayersDetailedEntry
|
|
{
|
|
public string? Name { get; init; }
|
|
public required Guid Uuid { get; init; }
|
|
public required int Ping { get; init; }
|
|
public required int Gamemode { get; init; }
|
|
public required bool Listed { get; init; }
|
|
public string? DisplayName { get; init; }
|
|
public int? EntityId { get; init; }
|
|
public double? X { get; init; }
|
|
public double? Y { get; init; }
|
|
public double? Z { get; init; }
|
|
}
|
|
|
|
public sealed class MccPlayersDetailedResult
|
|
{
|
|
public required bool IncludeSelf { get; init; }
|
|
public required bool IncludeCoordinates { get; init; }
|
|
public required int Count { get; init; }
|
|
public required MccPlayersDetailedEntry[] Players { get; init; }
|
|
}
|
|
|
|
public sealed class MccNearbyPlayerEntry
|
|
{
|
|
public required int EntityId { get; init; }
|
|
public required Guid Uuid { get; init; }
|
|
public string? Name { get; init; }
|
|
public string? CustomName { get; init; }
|
|
public required double X { get; init; }
|
|
public required double Y { get; init; }
|
|
public required double Z { get; init; }
|
|
public required double Distance { get; init; }
|
|
public required int Latency { get; init; }
|
|
}
|
|
|
|
public sealed class MccPlayerNearbyResult
|
|
{
|
|
public required double Radius { get; init; }
|
|
public string? PlayerName { get; init; }
|
|
public required bool IncludeSelf { get; init; }
|
|
public required bool AnyNearby { get; init; }
|
|
public required int Count { get; init; }
|
|
public required MccNearbyPlayerEntry[] Players { get; init; }
|
|
}
|
|
|
|
public sealed class MccLocatedPlayerResult
|
|
{
|
|
public required string PlayerName { get; init; }
|
|
public string? MatchedName { get; init; }
|
|
public required int EntityId { get; init; }
|
|
public required Guid Uuid { get; init; }
|
|
public required double X { get; init; }
|
|
public required double Y { get; init; }
|
|
public required double Z { get; init; }
|
|
public required double Distance { get; init; }
|
|
}
|
|
|
|
public sealed class MccEntitySummary
|
|
{
|
|
public required int Id { get; init; }
|
|
public required string Type { get; init; }
|
|
public required string TypeLabel { get; init; }
|
|
public required Guid Uuid { get; init; }
|
|
public string? Name { get; init; }
|
|
public string? CustomName { get; init; }
|
|
public required double X { get; init; }
|
|
public required double Y { get; init; }
|
|
public required double Z { get; init; }
|
|
public double? Distance { get; init; }
|
|
public float? Health { get; init; }
|
|
public string? Pose { get; init; }
|
|
public int? Latency { get; init; }
|
|
}
|
|
|
|
public sealed class MccQueryEntitiesResult
|
|
{
|
|
public required int Count { get; init; }
|
|
public required MccEntitySummary[] Entities { get; init; }
|
|
}
|
|
|
|
public sealed class MccListEntitiesResult
|
|
{
|
|
public required int TotalTracked { get; init; }
|
|
public required int Count { get; init; }
|
|
public required MccEntitySummary[] Entities { get; init; }
|
|
}
|
|
|
|
public sealed class MccEntityEquipmentEntry
|
|
{
|
|
public required int Slot { get; init; }
|
|
public required string Type { get; init; }
|
|
public required int Count { get; init; }
|
|
}
|
|
|
|
public sealed class MccEffectSnapshot
|
|
{
|
|
public required string Id { get; init; }
|
|
public string? Name { get; init; }
|
|
public required int Amplifier { get; init; }
|
|
public required int RemainingSeconds { get; init; }
|
|
public required bool IsInfinite { get; init; }
|
|
}
|
|
|
|
public sealed class MccEntityInfoResult
|
|
{
|
|
public required int Id { get; init; }
|
|
public required string Type { get; init; }
|
|
public required string TypeLabel { get; init; }
|
|
public required Guid Uuid { get; init; }
|
|
public string? Name { get; init; }
|
|
public string? CustomName { get; init; }
|
|
public required bool CustomNameVisible { get; init; }
|
|
public required double X { get; init; }
|
|
public required double Y { get; init; }
|
|
public required double Z { get; init; }
|
|
public required float Yaw { get; init; }
|
|
public required float Pitch { get; init; }
|
|
public required float Health { get; init; }
|
|
public string? Pose { get; init; }
|
|
public int? Latency { get; init; }
|
|
public int? ObjectData { get; init; }
|
|
public Dictionary<string, object?>? Metadata { get; init; }
|
|
public MccEntityEquipmentEntry[]? Equipment { get; init; }
|
|
public MccEffectSnapshot[]? ActiveEffects { get; init; }
|
|
}
|
|
|
|
public sealed class MccMoveToPlayerTarget
|
|
{
|
|
public string? PlayerName { get; init; }
|
|
public required int EntityId { get; init; }
|
|
public required double X { get; init; }
|
|
public required double Y { get; init; }
|
|
public required double Z { get; init; }
|
|
}
|
|
|
|
public sealed class MccMoveToPlayerResult
|
|
{
|
|
public required bool PathFound { get; init; }
|
|
public required bool Arrived { get; init; }
|
|
public required double Tolerance { get; init; }
|
|
public required int VerifyWaitMs { get; init; }
|
|
public required MccMoveToPlayerTarget Target { get; init; }
|
|
public required MccCoordinate StartLocation { get; init; }
|
|
public required MccCoordinate FinalLocation { get; init; }
|
|
public required double FinalDistance { get; init; }
|
|
public required double DistanceMoved { get; init; }
|
|
public required bool AllowUnsafe { get; init; }
|
|
public required bool AllowDirectTeleport { get; init; }
|
|
public required int MaxOffset { get; init; }
|
|
public required int MinOffset { get; init; }
|
|
public required int TimeoutMs { get; init; }
|
|
}
|
|
|
|
public sealed class MccHotbarSelectionResult
|
|
{
|
|
public required bool Success { get; init; }
|
|
public required string ItemType { get; init; }
|
|
public required int InventorySlot { get; init; }
|
|
public required int SelectedSlot { get; init; }
|
|
public required int Count { get; init; }
|
|
}
|
|
|
|
public sealed class MccInventorySnapshotSlot
|
|
{
|
|
public required int Slot { get; init; }
|
|
public required string Type { get; init; }
|
|
public required int Count { get; init; }
|
|
public Dictionary<string, object>? Nbt { get; init; }
|
|
}
|
|
|
|
public sealed class MccInventorySnapshotResult
|
|
{
|
|
public required int Id { get; init; }
|
|
public required string Type { get; init; }
|
|
public required string Title { get; init; }
|
|
public required int SlotCount { get; init; }
|
|
public required MccInventorySnapshotSlot[] Slots { get; init; }
|
|
public MccItemStackSnapshot? Cursor { get; init; }
|
|
}
|
|
|
|
public sealed class MccInventorySearchMatch
|
|
{
|
|
public required int InventoryId { get; init; }
|
|
public required string InventoryType { get; init; }
|
|
public required string InventoryTitle { get; init; }
|
|
public required int Slot { get; init; }
|
|
public required string ItemType { get; init; }
|
|
public required string TypeLabel { get; init; }
|
|
public required int Count { get; init; }
|
|
public required bool IsPlayerInventory { get; init; }
|
|
public int? HotbarSlot { get; init; }
|
|
public Dictionary<string, object>? Nbt { get; init; }
|
|
}
|
|
|
|
public sealed class MccInventorySearchResult
|
|
{
|
|
public required string Query { get; init; }
|
|
public required bool ExactMatch { get; init; }
|
|
public required bool IncludeContainers { get; init; }
|
|
public required int Count { get; init; }
|
|
public required MccInventorySearchMatch[] Matches { get; init; }
|
|
}
|
|
|
|
public sealed class MccInventoryListEntry
|
|
{
|
|
public required int Id { get; init; }
|
|
public required string Type { get; init; }
|
|
public required string Title { get; init; }
|
|
public required int SlotCount { get; init; }
|
|
public required int NonEmptySlots { get; init; }
|
|
public required bool Active { get; init; }
|
|
}
|
|
|
|
public sealed class MccInventoryListResult
|
|
{
|
|
public required int Count { get; init; }
|
|
public required MccInventoryListEntry[] Inventories { get; init; }
|
|
}
|
|
|
|
public sealed class MccItemEntityEntry
|
|
{
|
|
public required int EntityId { get; init; }
|
|
public required string ItemType { get; init; }
|
|
public required string TypeLabel { get; init; }
|
|
public required int Count { get; init; }
|
|
public required double X { get; init; }
|
|
public required double Y { get; init; }
|
|
public required double Z { get; init; }
|
|
public required double Distance { get; init; }
|
|
}
|
|
|
|
public sealed class MccItemEntitiesResult
|
|
{
|
|
public string? ItemType { get; init; }
|
|
public required double Radius { get; init; }
|
|
public required int Count { get; init; }
|
|
public required MccItemEntityEntry[] Items { get; init; }
|
|
}
|
|
|
|
public sealed class MccPickupAttempt
|
|
{
|
|
public required int EntityId { get; init; }
|
|
public required string ItemType { get; init; }
|
|
public required string TypeLabel { get; init; }
|
|
public required int ExpectedCount { get; init; }
|
|
public required MccCoordinate Target { get; init; }
|
|
public required bool PathFound { get; init; }
|
|
public required bool Arrived { get; init; }
|
|
public required bool EntityGone { get; init; }
|
|
public required int InventoryDelta { get; init; }
|
|
public required MccCoordinate StartLocation { get; init; }
|
|
public required MccCoordinate FinalLocation { get; init; }
|
|
public required double FinalDistance { get; init; }
|
|
}
|
|
|
|
public sealed class MccPickupItemsResult
|
|
{
|
|
public required string ItemType { get; init; }
|
|
public required double Radius { get; init; }
|
|
public required int MaxItems { get; init; }
|
|
public required bool AllowUnsafe { get; init; }
|
|
public required int TimeoutMs { get; init; }
|
|
public required int Attempted { get; init; }
|
|
public required int SuccessfulPickups { get; init; }
|
|
public required int CollectedCount { get; init; }
|
|
public int? InitialInventoryCount { get; init; }
|
|
public int? FinalInventoryCount { get; init; }
|
|
public required int RemainingNearby { get; init; }
|
|
public required MccPickupAttempt[] Attempts { get; init; }
|
|
}
|