Blood on the Clocktower Unofficial
An unofficial Minecraft companion mod for running Blood on the Clocktower sessions inside Minecraft. The mod handles the bookkeeping (seating chart, role assignment, day/night phase, nominations, votes, executions, deaths) so the storyteller can focus on running the game.
Not affiliated with The Pandemonium Institute. All role names and game mechanics referenced are property of their respective owners.
Features
- Storyteller-driven setup — designate one or more storytellers
(
/boct storyteller add <player>); they get a dedicated GUI with grimoire, script builder, seat manager, and map editor. - Map system — store multiple "sets" of seat positions, vote-indicator blocks, and execution blocks. Switch between maps mid-game.
- Seating chart — place a Seat Marker at each player's spot; the mod tracks neighbours, displays floating name labels above each seat, and ships consistent seat colors to every UI.
- Phase control — Day → Sunset → Night → Nominations cycle with bossbar timers, automatic dawn announcements, and storyteller-only nominate / resolve / execute controls.
- Nominations & voting —
/votetoggles. Vote indicators (yes block / no block) drop in front of each player at resolve time with a piston SFX and a per-seat anvil-drop animation for executions. - Grimoire — scrollable seat list with per-row Nominate, Kill / Revive, Assign Role, and Edit Nickname icon buttons. Hover a role to see its description.
- Script catalog — 144 roles across Trouble Brewing, Bad Moon Rising, Sects & Violets, plus assorted Travellers and Fabled. Build scripts via a 4-column scrollable picker (Townsfolk / Outsider / Minion / Demon), with per-column search.
- Nicknames —
&-coded color formatting; nicknames carry into chat, bossbars, splashes, name tags, and every menu. - Storyteller settings — toggle blindness at night, hide nametags, rain / thunder / cape rendering, and force-adventure mode for non-ops; configurable per-phase timer durations.
- Voice chat thresholds (optional) — with Simple Voice Chat installed, place step-on blocks that force-join players into isolated voice rooms or force-leave them. Channels are scoped to the active map and recreated automatically on map switch.
Requirements
- Minecraft 1.21.1
- Fabric Loader ≥ 0.15.0
- Fabric API matching 1.21.1
- Java 21+
- (Optional) Simple Voice Chat ≥ 2.5.0 — for voice threshold features. The mod loads fine without it; voice thresholds simply become inert.
- (Optional) Enhanced Groups — adds chat commands for managing voice groups; not required.
Install
Single-player / private server
- Install Fabric Loader for 1.21.1.
- Drop the following JARs into your
mods/folder:fabric-api-*.jarboct-unofficial-mod-1.0.0.jar- (optional)
voicechat-fabric-1.21.1-*.jar
Multiplayer
The same JARs go in the server's mods/ and in every player's
mods/. Versions must match across all parties or the network protocol
mismatches and clients fail to connect.
Quick start
- The world is created with a default 12-seat circular layout around
(0, 50, 0)in the overworld. - Designate a storyteller:
/boct storyteller add <player>. - Place players in seats via the Seat Marker (right-click a block).
- As storyteller, open
/boctfor the full control panel. /boct items ensurehands every player a Clocktower Menu Book and gives storytellers a Voice Threshold Wand.
Voice chat thresholds
Right-click a block with the Voice Threshold Wand to place a join threshold; a channel-picker pops up. Sneak + right-click drops an exit threshold at your feet. While the wand is held, all thresholds glow (green = join, red = exit).
Voice channels are scoped to the active map. Switching maps tears down the previous map's SVC groups and recreates the new map's, so each map can have its own room layout.
Commands
| Command | Who | What |
|---|---|---|
/boct |
anyone | Open the main menu |
/vote |
anyone in nominations | Toggle yes/no |
/boct nick <text> |
self | Set your nickname (&-codes supported) |
/boct nick <player> <text> |
storyteller | Set someone else's nickname |
/boct phase next |
storyteller | Advance phase |
/boct nominate <name> |
storyteller | Open a nomination |
/boct nomination resolve |
storyteller | Tally + close current nomination |
/boct execute |
storyteller | Execute whoever's on the block |
/boct items ensure |
storyteller | Hand out menu books + wand |
/boct storyteller add\|remove <player> |
op | Manage storyteller roster |
The full surface is discoverable via /boct — the GUI mirrors every
storyteller-tier action.
Permissions
- Op (level 2) — needed only to designate storytellers
(
/boct storyteller add\|remove). - Storyteller — every other admin action (phase control, nominations, grimoire, settings, map editor, voice wand).
- Player — script viewer, voting, nominee target lists, own nickname.
A non-op player who's been designated a storyteller has the same permissions as an op for all BotC-tier actions.
License
MIT. See LICENSE.

