notevil 227cf5f346 D1 remaining property codecs : bondage-relevant subset serialized
Audit of 29 remaining properties without name+codec :
- Category A (trivial data types) : 7 properties — direct Codec added
  (fixed_head_rotation, reset_living_motion, no_gravity_time, move_time,
  coord_update_time, coord_start_keyframe_index, coord_dest_keyframe_index).
  Two new shared codecs : LIVING_MOTION_CODEC (ExtendableEnum string lookup)
  and TIME_PAIR_LIST_CODEC (even-length float list, odd-count = codec error).
- Category B (functional/lambda) : 3 properties — dispatch registry pattern
  (like D2 AnimationAction) with base impls for immediate artist use.
  pose_modifier, play_speed_modifier, elapsed_time_modifier. The property
  static type stays the wider functional interface for backward compat with
  existing consumers (AnimationPlayer.tick, StaticAnimation.modifyPose) via
  a subinterface + xmap upcast.
- Category C (combat-only, EF legacy stripped) : 14 properties skipped with
  explicit TODO markers referencing V3-REW-11. Covers all 4 AttackPhase
  properties (their super-constructor is already commented out) plus
  ON_ITEM_CHANGE_EVENT, COORD, COORD_SET_{BEGIN,TICK}, COORD_GET,
  DEST_LOCATION_PROVIDER, ENTITY_YROT_PROVIDER, DEST_COORD_YROT_PROVIDER.
- Category D (already sub-file parsed / baked at load) : 4 properties
  skipped to avoid duplication : TRANSITION_ANIMATIONS_FROM/TO (need
  AnimationAccessor resolution, chicken-and-egg), IK_DEFINITION,
  BAKED_IK_DEFINITION.

After this commit : ~31 / 47 properties serializable (baseline 21 pre-D1).
Non-serialized remainder is combat-legacy or intentionally sub-file-only.

Registries created :
- PoseModifierRegistry (3 impls : joint_rotation_offset,
  joint_translation_offset, chain)
- PlaybackSpeedModifierRegistry (2 impls : constant_factor, linear_ramp)
- PlaybackTimeModifierRegistry (1 impl : loop_section)

Design note : ChainedPoseModifier.CODEC uses a hand-rolled Codec.of(...)
with inlined Encoder/Decoder bodies rather than RecordCodecBuilder, to
break a static-init cycle between the chain codec and the pose modifier
dispatch codec. Mojang DFU 6.0.8 has no Codec.recursive() — a lazy closure
inside encode/decode is the cleanest workaround.

Artist impact : locomotion tweaks (pose_modifier, play_speed_modifier,
elapsed_time_modifier, reset_living_motion, no_gravity_time and the coord
keyframe indexes) now controllable from JSON. Per-joint rotation /
translation nudges unlock bondage pose constraints without recompiling.

Tests : +41 (411 → 452 GREEN).
2026-04-24 23:48:34 +02:00
2026-04-12 00:51:22 +02:00
2026-04-12 00:51:22 +02:00
2026-04-12 00:51:22 +02:00
2026-04-22 00:13:50 +02:00
2026-04-12 00:51:22 +02:00

TiedUp! - Minecraft 1.20.1 Forge Mod

Community remake of the TiedUp! mod for Minecraft 1.20.1 (Forge). Adds restraint and roleplay mechanics to the game.

Original mod by Yuti & Marl Velius (1.12.2). This is an independent remake, not affiliated with the original developers.

Features

  • Restraint items (binds, gags, blindfolds, collars, straps, and more)
  • NPC entities with AI and personality-driven dialogue (Kidnapper, Damsel, Guard, Trader, Maid, Master)
  • Kidnapper camp world generation
  • Captivity and prison mechanics
  • Player animation system with 3D item rendering
  • Multiplayer synchronization
  • Mod compatibility (Minecraft Comes Alive, Wildfire's Female Gender Mod)
  • In-game guide book (Patchouli)

Requirements

Building

# First time setup
make setup

# Build the mod
make build

# Clean and rebuild
make rebuild

# See all available commands
make help

Or directly with Gradle:

export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
./gradlew build

The built JAR will be in build/libs/.

Development

# Run Minecraft client
make run

# Run dedicated server
make server

# Multiplayer testing (server + 2 clients)
make mptest

# Generate IDE configurations
make idea     # IntelliJ IDEA
make eclipse  # Eclipse

Project Structure

src/main/java/com/tiedup/remake/
├── blocks/        # Custom blocks and block entities
├── cells/         # Captive cell management
├── client/        # Rendering, GUI, animations
├── commands/      # /tiedup command
├── compat/        # Mod compatibility (MCA, Wildfire)
├── core/          # Main mod class, config, sounds
├── dialogue/      # NPC conversation system
├── entities/      # Custom NPCs and AI
├── events/        # Event handlers
├── items/         # All mod items
├── mixin/         # Minecraft bytecode modifications
├── network/       # Multiplayer packet system
├── personality/   # NPC personality system
├── state/         # Player state tracking
├── v2/            # Next-gen items and blocks
└── worldgen/      # Structure generation

Dependencies

Some dependencies are included as local JARs in libs/ because they are not available on Maven Central:

Library Version Usage
PlayerAnimator 1.0.2-rc1+1.20 Player pose animations
bendy-lib 4.0.0 Model part bending
Architectury 9.2.14 Required by MCA
Minecraft Comes Alive 7.6.13 Optional compatibility
Wildfire Gender Mod 3.1 Optional compatibility

License

GPL-3.0 with Commons Clause - see LICENSE for details.

TL;DR: Free to use, modify, and distribute. Cannot be sold or put behind a paywall. The 3D models are the property of their creators; if their names are listed, please ask them for permission otherwise me.

Status

This mod is under heavy rework. Things will break, APIs will change, features will come and go. If you want to build and use it as-is, that's on you.

Contributing

Contributions are welcome. Rules:

  • Pull requests only - no direct pushes
  • Clear commit messages - describe what and why, not how
  • Test your changes before submitting - at minimum, make sure it compiles and runs
  • Bug fixes, new features, improvements - all welcome
  • Areas where help is especially needed: textures, 3D models, multiplayer testing
Description
No description provided
Readme 23 MiB
Languages
Java 99.9%