Build TwitchSpawn rules without hand-writing TSL
TwitchSpawn rulesets are written in a small custom language (TSL) that's easy to get subtly wrong —
a missing bracket, an unwrapped multi-word value, or a predicate that silently never fires.
This tool builds the file for you, starting with your Minecraft version.
✕
Playbook
A quick reference for TSL (TwitchSpawn Language) rules. This tool builds the syntax
for you, but it helps to know the shape of what you're building.
Rule shape
ACTION [params]
ON Event Name
WITH property comparator value
WITH another_property comparator value
Every WITH must match (they're AND'd together) — leave them off to match every
occurrence of the event.
Rules are checked top-to-bottom; the first one that matches wins and the rest are
skipped.
Keywords aren't case-sensitive (on/ON/On all work), but rule
blocks must be separated by a truly blank line — a comment-only line does not count as
a separator, a common gotcha in hand-written files.
Actions
DROP — drops an item in the direction the streamer is facing.
SUMMON — summons an entity near the streamer.
EXECUTE — runs one or more Minecraft commands as the streamer.
THROW — drops the item from a slot (destroys nothing).
CLEAR — destroys the item in a slot.
SHUFFLE — shuffles items within an inventory/slot range.
CHANGE — replaces the item in a slot with another item.
EITHER ... OR ... — randomly runs one of several actions.
BOTH ... AND ... — runs several actions in sequence.
FOR n TIMES — repeats an action.
WAIT — pauses before continuing (pair with BOTH/FOR).
REFLECT — mirrors an action to other players.
OS_RUN — runs a shell script locally or on the streamer's machine.
NOTHING — does nothing (optionally still shows a message).
Comparators
= > < >= <= — numeric comparisons.
IS — exact match.
PREFIX / POSTFIX / CONTAINS — string matching.
IN RANGE [min,max] — inclusive range. No spaces inside the brackets —
[100,200] is valid, [100, 200] is not.
Chat/title messages (DISPLAYING)
Must be a JSON text-component array wrapped in [ ], e.g.
DISPLAYING [{text:"Something happened!", color:"gold"}]. Values with spaces get wrapped in
%...% automatically by this tool. On 1.14+ you can also suppress the notification entirely
with DISPLAYING NOTHING.
Common mistakes this tool catches
Unbalanced { } / [ ] in a DISPLAYING message or item NBT data.
A predicate property that doesn't apply to the chosen event (e.g. amount on
Twitch Follow) — parses fine but silently never fires in-game.
EITHER branch chances that don't add up to 100%.
Using a Profile-B-only event or DISPLAYING NOTHING while targeting 1.12.2.
Full documentation
This playbook is just the basics — for the complete TwitchSpawn reference (item/entity IDs,
NBT syntax, placeholders, full mod setup), see the
official TwitchSpawn GitBook .