feat(D-01/A): poseType, helpers, OWNERSHIP ComponentType (A4, A5, A6)
- DataDrivenItemDefinition: add poseType field, parsed from JSON "pose_type" - PoseTypeHelper: resolves PoseType from V2 definition or V1 ItemBind fallback - BindModeHelper: static bind mode NBT utilities (isBindItem, hasArmsBound, hasLegsBound, cycleBindModeId) — works for V1 and V2 items - CollarHelper: complete static utility class for collar operations with dual-path V2/V1 dispatch (ownership, features, shock, GPS, choke, alert) - ComponentType: add OWNERSHIP enum value - OwnershipComponent: stub class (lifecycle hooks added in next commit)
This commit is contained in:
@@ -46,6 +46,9 @@ public record DataDrivenItemDefinition(
|
||||
/** Body regions this item blocks. Defaults to occupiedRegions if not specified. */
|
||||
Set<BodyRegionV2> blockedRegions,
|
||||
|
||||
/** Optional pose type identifier (e.g., "STANDARD", "STRAITJACKET", "DOG"). */
|
||||
@Nullable String poseType,
|
||||
|
||||
/** Pose priority for conflict resolution. Higher wins. */
|
||||
int posePriority,
|
||||
|
||||
|
||||
@@ -188,6 +188,9 @@ public final class DataDrivenItemParser {
|
||||
blockedRegions = occupiedRegions;
|
||||
}
|
||||
|
||||
// Optional: pose_type (e.g., "STANDARD", "STRAITJACKET", "DOG")
|
||||
String poseType = getStringOrNull(root, "pose_type");
|
||||
|
||||
// Optional: pose_priority (default 0)
|
||||
int posePriority = getIntOrDefault(root, "pose_priority", 0);
|
||||
|
||||
@@ -328,6 +331,7 @@ public final class DataDrivenItemParser {
|
||||
animationSource,
|
||||
occupiedRegions,
|
||||
blockedRegions,
|
||||
poseType,
|
||||
posePriority,
|
||||
escapeDifficulty,
|
||||
lockable,
|
||||
|
||||
Reference in New Issue
Block a user