No description
  • Java 99.6%
  • Python 0.4%
Find a file
2026-07-06 20:05:29 +00:00
.forgejo/issue_template chore: add issue template (suggestion.md) 2026-06-24 22:47:18 +00:00
config FEAT : CPD baseline diff — flag only NEW copy-paste 2026-07-01 22:28:47 +02:00
documentation ASSET : rig template — conservative cleanup only. Keep every object of the artist master (Helper included, no orphan purge): strictly strip the actions/NLA (drivers preserved) and reset the pose. Verified again: 15 drivers, IK/FK switches toggle, IK knee bends forward, skeleton untouched (== runtime rest) 2026-07-05 22:10:39 +02:00
gradle/wrapper Clean repo for open source release 2026-04-12 00:51:22 +02:00
src FEAT : Wildfire gender mod compat on the RIG — the vanilla GenderLayer never fires on patched players (render canceled), so a new PatchedGenderLayer re-renders the exact same breast cubes (same 64x64 skin texels, jacket overlay, verbatim transform chain: bounce, cleavage, -35deg tilt, breathing) mounted on the Chest joint's pose-vs-rest delta — identity at rest = vanilla-exact placement, RIG clips contribute only the spine bend. State read through WildfireGenderBridge, a reflective fail-soft bridge to com.wildfire.* (works with upstream and fork alike, no compile dependency; physics stays live since the mod integrates on PlayerTickEvent, not render). Not ported yet: armor breast cups. Verified in game: placement, jump/turn/walk physics 2026-07-06 10:26:44 +02:00
tools REWORK : the runtime skeleton IS the artist master rig — 1:1 Blender<->Minecraft by construction. biped_local_transforms.json regenerated from the artist rest (biped parenting, orthonormalized, recomposition verified 1.2e-07); every clip is now a pose delta replayed on its own authoring rest, so nothing compensates anything anywhere. The gitignored EF MATRIX clips (idle/run/sit/...) were rebased on-disk to ATTRIBUTES vs the new rest with world poses preserved to 0.0003cm (MATRIX replays full local chains = rest-agnostic; pristine originals recoverable from any pre-swap jar); the 8 tracked artist ATTRIBUTES clips are untouched — their old ~3cm/6 deg replay bias disappears with the swap. New tools/ef_attributes_export.py = the one-step blend->clip exporter under the 1:1 contract (raw quats, pose-basis vs the authoring rest, evaluated seam joints). Old rest backed up in docs/plans for rollback; plan in docs/plans/skeleton-adoption-2026-07-05.md 2026-07-05 21:48:06 +02:00
.dockerignore CHORE : English-only sources, refreshed README, standalone Dockerfile 2026-06-24 12:21:17 +02:00
.gitattributes Clean repo for open source release 2026-04-12 00:51:22 +02:00
.gitignore CHORE : gitignore the dev-only Epic Fight porting scripts 2026-06-24 21:27:29 +02:00
build.gradle FEAT : CPD baseline diff — flag only NEW copy-paste 2026-07-01 22:28:47 +02:00
Dockerfile CHORE : English-only sources, refreshed README, standalone Dockerfile 2026-06-24 12:21:17 +02:00
gradle.properties FEAT : RIG animation system + supporting subsystems 2026-06-24 10:59:49 +02:00
gradlew Clean repo for open source release 2026-04-12 00:51:22 +02:00
gradlew.bat Clean repo for open source release 2026-04-12 00:51:22 +02:00
LICENSE FEAT : RIG animation system + supporting subsystems 2026-06-24 10:59:49 +02:00
LICENSE.txt Clean repo for open source release 2026-04-12 00:51:22 +02:00
NOTICE FEAT : RIG animation system + supporting subsystems 2026-06-24 10:59:49 +02:00
README.md CHORE : add Tier A code-quality tooling (SpotBugs, PMD, CPD, JaCoCo) 2026-07-01 13:21:43 +02:00
settings.gradle Clean repo for open source release 2026-04-12 00:51:22 +02:00
Taskfile.yml FEAT : CPD baseline diff — flag only NEW copy-paste 2026-07-01 22:28:47 +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
  • Custom RIG system (Epic Fight fork) for player + NPC animation and 3D item rendering
  • Multiplayer synchronization

Requirements

  • Java 17
  • Minecraft 1.20.1
  • Forge 47.4.10+

Building

# Build the mod (canonical — runs in a pinned-JDK Docker container)
go-task docker:build

# Run the JUnit test suite
go-task docker:test

# Run the code-quality analyses (SpotBugs, PMD, CPD, JaCoCo)
# Reports land in build/reports/ — report-only, never fails the build.
go-task docker:quality

# Wipe build artifacts
go-task clean

# List all available tasks
go-task --list

No go-task? Build with plain Docker instead — either via the provided Dockerfile:

docker build -t tiedup-build .
id=$(docker create tiedup-build) && docker cp "$id":/project/build/libs ./build && docker rm "$id"

or by running Gradle directly in the pinned-JDK container:

docker run --rm -v "$PWD":/project -w /project eclipse-temurin:17.0.10_7-jdk \
  ./gradlew --no-daemon clean build

Or directly with Gradle on the host (only safe on a JDK 17 between 17.0.5 and 17.0.18; newer 17.0.19+ breaks AccessTransformer, which is why the canonical build runs in Docker — see Taskfile.yml):

./gradlew build

The built JAR will be in build/libs/.

Development

# Run Minecraft dev client
go-task run

# Run dedicated dev server
go-task server

# Multiplayer testing (server + 2 clients in konsole tabs)
go-task mp:test

# Run the Forge data generators (recipes, loot tables, …)
go-task data

# Generate IntelliJ IDEA run configurations
go-task idea

Project Structure

src/main/java/com/tiedup/remake/
├── blocks/        # Custom blocks and block entities
├── bondage/       # Bondage items + components (data-driven)
├── bounty/        # Bounty / capture-contract system
├── cells/         # Captive cell management
├── client/        # Rendering, GUI, animations
├── commands/      # /tiedup command tree
├── coop/          # Cooperative multi-entity actions (e.g. takedowns)
├── core/          # Main mod class, config, sounds
├── deviouschest/  # Trapped chests with datapack loadouts
├── dialogue/      # NPC conversation system
├── dispenser/     # Custom dispenser behaviours
├── entities/      # Custom NPCs and AI
├── events/        # Event handlers
├── furniture/     # Furniture entities
├── items/         # All mod items
├── labor/         # Forced-labour tasks
├── minigame/      # Struggle / lockpick minigames
├── mixin/         # Minecraft bytecode modifications
├── network/       # Multiplayer packet system
├── npc/           # NPC AI (mind / activity / archetypes)
├── personality/   # NPC personality system
├── pets/          # Pet blocks (bed, bowl, cage)
├── predator/      # Predator AI
├── prison/        # Prison / ransom mechanics
├── rig/           # RIG animation + rendering system (Epic Fight fork)
├── state/         # Player state tracking
├── tasks/         # Scheduled restraint tasks
├── util/          # Shared helpers
└── worldgen/      # Structure generation

Dependencies

No third-party mod dependencies. Animation and rendering are handled internally by the bundled RIG system (com.tiedup.remake.rig.*, a fork of Epic Fight, GPL-3.0). No external animation library is required.

License

GPL-3.0-or-later - see LICENSE for details.

TL;DR: Free to use, modify, and redistribute under the same license (it stays open-source — pass the source along). 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