promotional bannermobile promotional banner

Soulbound Dolls

This project adds a doll based on the original skin as the standard for each player in the MC, and at the same time has many interesting functions

Soulbound Dolls

Build Minecraft NeoForge Java License

Soulbound Dolls is a NeoForge 1.21.1 mod that turns known players into small, placeable player-skin dolls. It records player profiles on the server, lets operators issue bound dolls, and renders bound items and placed entities with player skins when texture data is available.

Highlights

  • Player-bound doll items with UUID-backed profile data.
  • Placeable Player Doll entities with sitting, standing, and cute idle poses.
  • Dynamic player-skin rendering for bound doll items and placed dolls.
  • Server-side known-player registry saved with the world.
  • Operator commands (permission-based, delegatable) for listing profiles, giving dolls, and refreshing skins.
  • Per-player skin texture caching on the client and a configurable online-refresh TTL on the server.
  • Configurable auto-give, online skin refresh, pat particles, and pickup permissions.
  • English and Simplified Chinese user documentation.

Compatibility

Component Version
Minecraft 1.21.1
NeoForge 21.1.18+
Java 21
Mod loader NeoForge only

Install

  1. Install a Minecraft 1.21.1 NeoForge client or server.
  2. Download the built soulbound-dolls-neoforge-1.21.1-*.jar from a trusted release source.
  3. Put the jar in the instance mods directory.
  4. Start the game or dedicated server.

Publishing to Modrinth and CurseForge is scaffolded but not active until project IDs and tokens are configured by the maintainer.

Player Flow

  1. A player joins a world or server.
  2. The server records their UUID, name, and available skin texture data.
  3. If autoGiveOwnDoll is enabled, the player receives their own bound doll once.
  4. A blank Player Doll can also be crafted and binds to the placing player on first placement.
  5. Placed dolls can be patted, shaken, pose-cycled, copied in creative mode, worn as head-slot dolls, and picked up with permission checks.

Interactions

Dolls mostly use vanilla mouse and sneak interactions. Keybindings are used for teleporting to a bound player and cycling the pose of a worn doll.

Action Input Effect
Place a doll Right-click a block face while holding a doll Spawns a Player Doll entity bound to the doll's profile.
Cycle pose Right-click a placed doll while holding any item Cycles Sitting → Standing → Cute idle.
Wear a doll Right-click air while holding a doll and with an empty head slot Equips exactly one doll in the head slot.
Cycle worn pose Press B while wearing a doll Cycles the worn doll Sitting → Standing → Cute idle.
Pat Right-click a placed doll with an empty hand Plays a chime and emits heart particles (if allowPatParticles).
Shake Sneak + attack (left-click) a placed doll Plays a shake animation and sound.
Pick up Sneak + right-click a placed doll Returns the doll to your inventory, subject to allowPickupByAnyone.

Note: the default worn-doll pose key is B and can be changed in Minecraft's key bindings menu.

Commands

There is no config toggle for commands; access is permission-based:

  • Operators (single-player worlds with cheats on, or server operators at permission level 2) can always use the commands.
  • An operator can delegate access to specific players with /sbdoll permission grant <player> — without granting full operator status. Use revoke to take it back and list to see who has it.
  • Granted players can use list, give, and refresh, but not permission (no escalation).
/sbdoll list
/sbdoll give <target> <prototype...>
/sbdoll giveall <target>
/sbdoll refresh <prototype>
/sbdoll permission grant <player>     (operators only)
/sbdoll permission revoke <player>    (operators only)
/sbdoll permission list               (operators only)

<prototype> can be a player name or UUID. give accepts multiple space-separated names for batch handouts; giveall hands out a doll for every known player. give resolves any player that has logged into this server (via the native usercache.json profile cache), not only players already in the doll registry — so you can hand out a doll for anyone who has joined before, even on offline-mode servers. list shows every known player and marks whether a skin has been captured (✔) or is still the default (✘).

Config

The common config is generated at:

config/soulbound_dolls-common.toml
Option Default Purpose
autoGiveOwnDoll true Give players their own bound doll on login if missing.
enableOnlineSkinRefresh true Refresh known player skins from Mojang services.
allowPatParticles true Emit heart particles when dolls are patted.
allowPickupByAnyone false Allow anyone to pick up placed dolls instead of only the creator.
skinRefreshTtlMinutes 60 Minimum minutes between online skin refreshes per player; cached skins are reused within this window.
allowDollAsHelmet true Allow player dolls to be equipped in the head slot.
enableEnderMaskProtection true Treat worn or compatible accessory-slot dolls as Enderman masks.

The Soulbound Dolls Team

profile avatar
  • 4
    Followers
  • 3
    Projects
  • 41.3K
    Downloads

More from miyakko_de