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 —
/vote toggles. 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-*.jar
boct-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
/boct for the full control panel.
/boct items ensure hands 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.