Botch — Blood on the Clocktower Helper
A Fabric plugin that pairs with my papermc plugin to turn a Minecraft server into a Blood on the Clocktower session. Players vote by right-clicking copper bulb lamps, the game master controls time of day and nominations from in-game commands, and a sidebar scoreboard tracks the living and dead in real time.
> New to Blood on the Clocktower? It is a social deduction game of deduction, bluffing, and murder. One team of villagers tries to identify and execute the demon hiding among them before it kills everyone. Read the rules at wiki.bloodontheclocktower.com.
What this does for the Game Master
- Voting lamps — each player has a copper bulb block in the world. Right-clicking it toggles their vote. The first time a player votes Aye their lamp lights up; clicking again switches to Nay and extinguishes it.
- Nominations —
/vote begin <player>starts a sequential vote where each player votes one at a time. The result is announced automatically; if the vote passes, the nominated player is marked dead. - Dead tracking — dead players appear greyed out with a skull on the scoreboard. Players executed during a vote can no longer vote in future rounds (their lamp turns to a different block type).
- Time of day —
/botch day,/botch evening, and/botch nightsmoothly advance the world clock and play an ambient sound on all Fabric clients. A title is shown to every player explaining what to do. - Live scoreboard — a persistent sidebar shows the current time of day, every player's status (alive, dead with vote remaining, dead vote used), and whose turn it is to vote during a nomination.
- Boss bars — during a vote, the top bar shows the running Aye/Nay tally and turns green when the vote is passing. The lower bar shows the active voter's name, their current choice, and the time remaining.
Setup guide
1. Install
This comes with both a papermc plugin and a fabric mod, you will need both for full features.
It does work perfectly well with just the papermc plugin, you will simply lack transparent dead players and noises to signal day time changes.
2. Place and register voting lamps
Place a Waxed Copper Bulb (or any lightable block) in the world for each player. Stand close, look directly at the block (within 5 blocks), and register it with a seat name:
/vote blocks add One
/vote blocks add Two
/vote blocks add Three
Check placement with /vote blocks show — all lamps highlight yellow for 10 seconds.
4. Assign players to lamps
Link each player name to their lamp so the vote system knows who owns which block: Easiest way to do this is with
/vote blocks list
And then lick the [unassigned] button next to a block and type their name in.
You can also use the arrows in the chat list to re-order the blocks.
5. Set the vote timer
Each player has a limited time to vote. The default is 15 seconds per player.
Change time allowed per player in seconds using
/vote time 20
6. Run a day
At the start of each day phase, advance the world to daytime:
/botch day
This rushes the world clock to dawn and plays the morning ambient sound. Players see a title reading Morning / You can walk around town safely.
Let players walk around and talk as normal.
7. Run an evening vote
Advance to evening and start discussions and nominations, start the vote:
/botch evening
/vote begin Alice Bob
The above example /vote begin means that Alice nominates Bob for execution. Each player's lamp extinguishes, then players vote one at a time in block order starting after the nominator — the current voter's lamp is highlighted and they have the configured number of seconds to right-click Aye or Nay. The boss bars show the live tally.
When all votes are cast the result is announced in chat. If the vote passes it is announced to all players, but no automatic killing occurs.
8. Advance to night
/botch night
World time moves to night and the night ambient sound plays. Players see Night / Get to bed! Hurry Now!.
9. Kill or revive players manually
If a player dies through the story (demon kill, execution due to a vote, etc.) you can update their status directly:
/botch dead Alice
/botch revive Alice
10. Reset between games
/botch game reset
Resets all vote lamps back to their default (unlit) state and marks all players as alive again.
Command reference
All commands require the botch.admin permission (default: op).
/botch — Game management
| Command | Description |
|---|---|
/botch players |
Show the player roster (same as /botch players list). |
/botch players list |
Display the full player list with reorder and remove buttons. |
/botch players add <name> |
Add a player to the roster. Names do not have to match Minecraft usernames. |
/botch players remove <name> |
Remove a player from the roster. |
/botch players up <name> |
Move a player up one position in the roster. |
/botch players down <name> |
Move a player down one position in the roster. |
/botch dead <name> |
Mark a player as dead. Their lamp block changes to indicate they have been executed. |
/botch revive <name> |
Mark a player as alive again. |
/botch game reset |
Restore all lamp blocks to their default state and mark all players alive. Cannot be used while a vote is active. |
/botch day |
Advance world time at 10× speed to dawn (tick 0), then at normal speed to midday (tick 6000), then freeze. Plays morning.ogg on all Fabric clients and shows the Morning title. |
/botch evening |
Advance time to pre-sunset (tick 11000) at 10× speed, then at normal speed to early night (tick 12500), then freeze. Plays evening.ogg and shows the Evening title. |
/botch night |
Advance time to early night (tick 12500) at 10× speed, then at normal speed to late night (tick 22500), then freeze. Plays night.ogg and shows the Night title. |
/vote — Voting setup and control
Block management
| Command | Description |
|---|---|
/vote blocks add <name> |
Register the block you are looking at (within 5 blocks) as a voting lamp with the given seat name. Must be a lightable block. |
/vote blocks remove |
Unregister the block you are looking at. |
/vote blocks list |
List all registered lamps with their assigned player, order controls, and a remove button. |
/vote blocks show |
Highlight all registered lamps in yellow for 10 seconds so you can locate them. |
/vote blocks goto <name> |
Teleport to the saved view position for a lamp and highlight it. |
/vote blocks setplayer <blockName> [playerName] |
Assign a player to a lamp. Omitting playerName opens a clickable picker of online players. |
/vote blocks up <name> |
Move a lamp earlier in the voting order. |
/vote blocks down <name> |
Move a lamp later in the voting order. |
/vote blocks removename <name> |
Remove the player assignment from the named lamp (lamp itself stays registered). |
Vote control
| Command | Description |
|---|---|
/vote time <seconds> |
Set how many seconds each player has to vote. Default is 15. Saved to config. |
/vote begin <playerName> <playerName> |
First player nominates a player for execution. playerName must match a player assigned to a lamp. All lamps are extinguished, then players vote sequentially in block order. |
/vote end |
End the current vote immediately and tally results. |
Scoreboard
The sidebar scoreboard is always visible and refreshes every second. It shows:
- Title — Blood on the Clocktower normally; the nomination message during a vote.
- Line 1 — Separator.
- Line 2 — Current time of day (☀ Day / 🌅 Evening / 🌙 Night). Updated when a
/botch day/evening/nightcommand is run, and initialised from world time when the server starts. - Lines 3+ — One line per assigned player, in block order. Icons indicate status:
🖉☻ Name— alive🖉☠ Name— dead, has their one remaining vote available⛔☠ Name— dead, vote used- A
✓is appended during a vote to show the player voted Aye. - The current voter's name is highlighted in gold and bold.
Boss bars (during a vote)
| Bar | Content |
|---|---|
| Top — Outcome | <nomination message> · N Aye / N Nay. Fills proportionally to the yes vote share. Green when the vote is passing (≥ 50 %), red when failing. Only counts players who have already voted plus the current voter. |
| Bottom — Timer | <playerName> · Aye/Nay · Ns. Fills as time counts down. Yellow. Updates live as the current player toggles their lamp. |