Features
Flows
Snap blocks together in the dashboard that react to events in Minecraft and Discord.
A flow starts with an event, such as "When somebody joins the server", followed by the blocks that should run. You build it in the dashboard under "Flows". Minecraft events and actions need a connected server, see Chat sync.
Flows are still in beta.
Set up
- In the dashboard, open "Flows".
- Click "New flow" and pick a template or "Start empty".
- Drag an event to the top and attach the actions below it. Click a block to see what it does.
- Fill in the dropdowns, such as channel or server.
- Click "Save". A new flow is off; turn it on with "Turn on".
Three buttons above the canvas help you try it out:
| Button | Effect |
|---|---|
| "Check" | Checks the flow without saving it |
| "Dry run" | Saves and plays the flow through without actually doing anything |
| "Run now" | Saves and starts the flow right away. Enter the event's fields under "Test values". |
"Dry run" and "Run now" only work while the flow is on.
"Recent runs" lists every run with its status, steps and log.
Example: welcome message
Everyone who joins the Minecraft server gets a greeting in #welcome.
- Click "New flow" and pick "Welcome message".
- The canvas shows "When somebody joins the server" with "Message to Discord" below it. The text joins the player "from the event" with " joined the server."
- In "Message to Discord", pick the channel
#welcome. - In the event, pick the server
Survival. Left empty, it applies to all connected servers. - Click "Save", then "Turn on".
When Notch joins, #welcome shows "Notch joined the server."
Triggers
| Group | Events |
|---|---|
| Minecraft | "When somebody writes in Minecraft", "When somebody joins the server", "When somebody leaves the server", "When a player dies", "When somebody earns an advancement", "When the Minecraft server starts", "When the Minecraft server shuts down", "When a console line arrives", "When the Minecraft command is run" |
| Discord | "When somebody writes in Discord", "When somebody joins the Discord server", "When somebody leaves the Discord server", "When somebody is given a role", "When a role is taken from somebody", "When the Discord command is run" |
| Time | "Every day at" with time, time zone and weekdays, "Every few minutes" |
| Manual | "When I start it", "When an API request arrives" |
- Chat, console and Discord messages can be narrowed to a word with "contains" on the event. The flow then only starts for matching messages.
- "When the Discord command is run" creates a slash command on your Discord server. "When the Minecraft command is run" creates a command on the Minecraft server and needs MC-Sync 2.2.0 there on Spigot, Paper or Folia. Set up the arguments below the canvas.
- "When an API request arrives" shows a "Trigger URL" below the canvas. Calling it starts the flow.
Actions
| Block | Effect |
|---|---|
| "Run Minecraft command" | Runs a command as if typed in the console. Whether the server accepts it depends on commands.mode. |
| "Write to Minecraft chat" | Writes a line into the game chat |
| "HTTP request via the Minecraft server" | Needs MC-Sync 2.2.0 and http.mode: "allow", see Config |
| "Message to Discord", "Embed to Discord" | Posts to a channel. Mentions in the text don't ping; use the "mention" block for that. |
| "Give role", "Remove role" | For a member, by ID or name |
| "Add to whitelist", "Remove from whitelist" | For a player on one server |
| "Set variable", "Increase variable" | Stores a value for "this flow" or "the whole server" |
| "Wait" | Pauses, up to 30 seconds at a time |
| "Write to log" | One line under "Recent runs" |
| "Stop the flow", "Start another flow" | Ends this flow, or starts another one with the same event fields |
Conditions and values
- Control: "If" (with and without "else"), "Repeat", "Repeat while", "For every entry", "Count" and "Leave the loop".
- Values: "from the event" reads fields such as player, message or channel. "variable" reads a stored value. "player count on", "is reachable" and "player list of" ask a Minecraft server.
- Logic, math, text, lists: comparisons, "and", "or", "not", "join", "contains" and more. Text is compared without regard to case.
Permissions and limits
A flow needs the access of every block in it: "Console" for Minecraft commands, chat and HTTP, "Settings" for messages to Discord, "Permissions" for roles, "Whitelist" for the whitelist. If you lack one, you can't open the flow.
| Limit | Value |
|---|---|
| Flows per Discord server | 30 |
| Runtime per run, waiting included | 60 seconds |
| Steps per run | 10,000 |
| Passes per loop | 1,000 |
| Runs at the same time per Discord server | 2, up to 50 more wait |
| Starts per minute and Discord server | 60 |
| Variables | 200 per Discord server, 50 per flow |
A flow that fails five times in a row turns itself off. It then shows "Switched off automatically" and the last error.
Problems
Saving says "A block is missing a required field."
A dropdown is empty, usually channel or server. After a template or an import, these fields are empty.
The flow doesn't run
- Check in the list that it's "on". A new flow is off, and while it's off, "Dry run" and "Run now" don't start it either.
- Check the "contains" filter on the event.
- If "Recent runs" says "did not start", too many flows were running on the Discord server at once.
The Minecraft command is rejected
The Minecraft server only accepts what commands.mode and commands.allow allow. By default that's the whitelist only. See Config.
The flow turned itself off
It failed five times in a row. "Recent runs" shows why. Fix it and click "Turn back on".
Background: flows on the Minecraft server
Flows run at the bot. With flows.mode: "on" in the config, the Minecraft server runs flows itself when the event and all actions concern only that server: a Minecraft or time event, exactly one server, nothing with Discord, the whitelist or variables shared across servers. The bot decides which flows qualify when they're saved. Their runs still show up under "Recent runs".