Files
TiedUp-/docs/plans/D01-branch-B-json-definitions.md
NotEvil 3df979ceee fix(D-01/D): checkup cleanup — 5 issues resolved
1. LockableComponent: remove duplicate "Lockable" tooltip line
   (ILockable.appendLockTooltip already handles lock status display)
2. ILockable/IHasResistance Javadoc: update @link refs from deleted
   V1 classes to V2 AbstractV2BondageItem/DataDrivenBondageItem
3. SettingsAccessor Javadoc: remove stale BindVariant @link references
4. DataDrivenBondageItem: update NECK block comment (remove branch ref)
5. Delete empty bondage3d/gags/ directory
2026-04-15 02:52:27 +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