Files
TiedUp-/docs/plans/D01-branch-B-json-definitions.md
NotEvil 3d61c9e9e6 feat(D-01/C): consumer migration — 85 files migrated to V2 helpers
Phase 1 (state): PlayerBindState, PlayerCaptorManager, PlayerEquipment,
  PlayerDataRetrieval, PlayerLifecycle, PlayerShockCollar, StruggleAccessory
Phase 2 (client): AnimationTickHandler, NpcAnimationTickHandler, 5 render
  handlers, DamselModel, 3 client mixins, SelfBondageInputHandler,
  SlaveManagementScreen, ActionPanel, SlaveEntryWidget, ModKeybindings
Phase 3 (entities): 28 entity/AI files migrated to CollarHelper,
  BindModeHelper, PoseTypeHelper, createStack()
Phase 4 (network): PacketSlaveAction, PacketMasterEquip,
  PacketAssignCellToCollar, PacketNpcCommand, PacketFurnitureForcemount
Phase 5 (events): RestraintTaskTickHandler, PetPlayRestrictionHandler,
  PlayerEnslavementHandler, ChatEventHandler, LaborAttackPunishmentHandler
Phase 6 (commands): BondageSubCommand, CollarCommand, NPCCommand,
  KidnapSetCommand
Phase 7 (compat): MCAKidnappedAdapter, MCA mixins
Phase 8 (misc): GagTalkManager, PetRequestManager, HangingCagePiece,
  BondageItemBlockEntity, TrappedChestBlockEntity, DispenserBehaviors,
  BondageItemLoaderUtility, RestraintApplicator, StruggleSessionManager,
  MovementStyleResolver, CampLifecycleManager

Some files retain dual V1/V2 checks (instanceof V1 || V2Helper) for
coexistence — V1-only branches removed in Branch D.
2026-04-15 00:16:50 +02:00

5.8 KiB

D-01 Branch B : 46 JSON Item Definitions

Prérequis : Branch A (bridge utilities) mergée. Branche : feature/d01-branch-b-definitions Objectif : Créer les définitions JSON data-driven pour les 46 items V1. Chaque item V1 a un équivalent JSON. Les valeurs sont config-driven (pas hardcodées). À la fin, les 46 items V2 existent en parallèle des V1.


Extensions parser nécessaires

Avant de créer les JSON, vérifier que le parser supporte :

  • pose_type (string, optionnel) — ajouté en Branch A4
  • can_attach_padlock (boolean, default true) — à ajouter si pas fait en A
  • GaggingComponent material — ajouté en Branch A2
  • ResistanceComponent id — ajouté en Branch A1

Fichiers : DataDrivenItemParser.java, DataDrivenItemDefinition.java


Items à créer

Tous dans src/main/resources/data/tiedup/tiedup_items/.

Binds (16 fichiers)

Fichier display_name resistance id pose_type Notes
ropes.json Ropes rope STANDARD supports_color: true
armbinder.json Armbinder armbinder STANDARD
dogbinder.json Dogbinder armbinder DOG movement_style: crawl
chain.json Chains chain STANDARD
ribbon.json Ribbon ribbon STANDARD supports_color: true
slime.json Slime Bind slime STANDARD can_attach_padlock: false
vine_seed.json Vine Bind vine STANDARD can_attach_padlock: false
web_bind.json Web Bind web STANDARD can_attach_padlock: false
shibari.json Shibari rope STANDARD supports_color: true
leather_straps.json Leather Straps armbinder STANDARD
medical_straps.json Medical Straps armbinder STANDARD
beam_cuffs.json Beam Cuffs chain STANDARD
duct_tape.json Duct Tape tape STANDARD can_attach_padlock: false
straitjacket.json Straitjacket straitjacket STRAITJACKET
wrap.json Wrap wrap WRAP
latex_sack.json Latex Sack latex_sack LATEX_SACK

Tous ont : regions ["ARMS"], lockable component (sauf organiques), resistance component avec id.

Référence : BindVariant.java pour les registry names, pose types, supports_color. ModConfig.ServerConfig pour les resistance IDs (lignes 413-428).

Gags (19 fichiers)

Fichier display_name gag material Notes
cloth_gag.json Cloth Gag cloth
ropes_gag.json Rope Gag cloth
cleave_gag.json Cleave Gag cloth
ribbon_gag.json Ribbon Gag cloth supports_color: true
ball_gag.json Ball Gag ball supports_color: true
ball_gag_strap.json Ball Gag (Strap) ball
tape_gag.json Tape Gag tape can_attach_padlock: false
wrap_gag.json Wrap Gag tape
slime_gag.json Slime Gag tape can_attach_padlock: false
vine_gag.json Vine Gag tape can_attach_padlock: false
web_gag.json Web Gag tape can_attach_padlock: false
panel_gag.json Panel Gag panel
beam_panel_gag.json Beam Panel Gag panel
chain_panel_gag.json Chain Panel Gag panel
latex_gag.json Latex Gag latex
tube_gag.json Tube Gag stuffed
bite_gag.json Bite Gag bite
sponge_gag.json Sponge Gag sponge
baguette_gag.json Baguette Gag baguette

Tous ont : regions ["MOUTH"], gagging component avec material, lockable, resistance {"id": "gag"}, adjustable.

Référence : GagVariant.java pour les materials et registry names. ModConfig.ServerConfig.gagComprehension/gagRange pour les valeurs runtime.

Blindfolds (2 fichiers)

Fichier display_name
classic_blindfold.json Blindfold
blindfold_mask.json Blindfold Mask

Regions ["EYES"], components : blinding, lockable, resistance {"id": "blindfold"}, adjustable.

Earplugs (1 fichier)

classic_earplugs.json — regions ["EARS"], lockable, resistance {"id": "blindfold"} (partage la résistance blindfold dans V1).

Mittens (1 fichier)

leather_mittens.json — regions ["HANDS"], lockable.

Collars (5 fichiers)

Fichier display_name Components spécifiques
classic_collar.json Classic Collar ownership, lockable, resistance {"id": "collar"}
shock_collar.json Shock Collar + shock {"damage": 2.0}
shock_collar_auto.json Auto Shock Collar + shock {"damage": 2.0, "auto_interval": 200}
gps_collar.json GPS Collar + gps {"safe_zone_radius": 50}
choke_collar.json Choke Collar + choking

Combos (3 fichiers)

Fichier display_name Regions Components
hood.json Hood ["EYES"] blinding, gagging {"material": "cloth"}, lockable, blocked_regions: ["EYES", "EARS"]
medical_gag.json Medical Gag ["MOUTH"] gagging {"material": "stuffed"}, blinding, lockable
ball_gag_3d.json Ball Gag 3D ["MOUTH"] gagging {"material": "ball"}, lockable, adjustable. Model 3D spécifique.

Supprimer le fichier test

Supprimer src/main/resources/data/tiedup/tiedup_items/test_component_gag.json (fichier de test Phase 1, plus nécessaire).


Vérification

  • make build — clean
  • make run — les 46 items data-driven apparaissent (via /tiedup give ou creative tab section data-driven)
  • Résistance = valeur config (changer dans config, vérifier que la résistance change)
  • Gag comprehension = valeur config (changer dans config, vérifier)
  • Collars ownership fonctionne via le nouveau OwnershipComponent
  • Items organiques (slime, vine, web, tape) ne peuvent pas recevoir de padlock