Features
A real checkbox agreement
Native Minecraft dialog with a checkbox and buttons — not a wall of chat text players scroll past. Can't be dismissed with Escape.
100% server-side
Works with completely vanilla clients. Players on the standard launcher see the rules screen with nothing to install.
Once, weekly, or on your schedule
Show the rules a single time, or re-prompt every few days, weekly, or any interval you choose.
Re-agree when rules change
Edit your rules and every player automatically sees the new version on their next join.
Automatic enforcement
Decline = kicked. Ignore the prompt = kicked after a timeout. No chat or commands until they agree.
Every word customizable
Rules, buttons, kick messages, and welcome text are all yours to edit, with full color-code support.
Live reload
Change the config and apply it with /pledgegate reload — no server restart, no downtime.
Acceptance records
Who agreed, when, and to which version of the rules — stored in a plain JSON file you can audit or reset.
How it works
PledgeGate uses Minecraft's built-in dialog system, so even completely vanilla clients see a real popup with a checkbox and buttons the moment they join:
A recreation of what players see in-game.
- Players must tick the checkbox and click Enter Server to play.
- Clicking I Do Not Agree kicks them with a message you control.
- The dialog can't be closed with Escape, and players can't chat or run commands until they agree.
- Ignoring the prompt too long (default 5 minutes) also kicks them.
Installation
Install the Fabric server launcher for Minecraft 26.1.2 or 26.2, with Java 25.
Put pledgegate-1.1.1.jar and Fabric API into the server's mods/ folder.
PledgeGate creates config/pledgegate/config.json with example rules.
Edit the config, then run /pledgegate reload in the server console — no restart needed.
Editing your rules
Your rules live in a plain text file on the server. Changing them takes about a minute:
On the server, open config/pledgegate/config.json in any text editor (Notepad, TextEdit, VS Code, or your host's file manager).
rules listEach rule is one line inside the square brackets, wrapped in double quotes, with a comma after every line except the last. Add, remove, or reword lines freely.
Run /pledgegate reload in the server console or as an op in-game. No restart needed — you'll see a confirmation with the rule count.
Run /pledgegate preview in-game to see the dialog exactly as players will, without affecting your own acceptance.
For example, to add a fifth rule:
"rules": [
"&e1. &fPlease treat all players respectfully. No bullying, personal insults, hate speech, or verbal abuse.",
"&e2. &fPlease keep your language clean and family-friendly in chat and/or voice chat.",
"&e3. &fNo cheating, hacking, or exploiting bugs.",
"&e4. &fNo advertising other servers.",
"&e5. &fNo griefing or stealing from other players."
],
Formatting tips: start a line with &e1. to get a yellow number, and use &f to switch back to white text. Blank-looking spacer lines are fine too — just add " " as its own entry. If a rule needs a quotation mark inside it, write it as \".
After you save and reload, everyone re-agrees. Because rules changed, every player is shown the new rules on their next join (that's the repromptWhenRulesChange setting — set it to false if you don't want that). If the server won't reload the config, a missing or extra comma in the JSON is the usual culprit — paste the file into jsonlint.com to find it.
Configuration
Everything lives in config/pledgegate/config.json:
{
"title": "Server Rules",
"rules": [
"&e1. &fPlease treat all players respectfully. No bullying, personal insults, hate speech, or verbal abuse.",
"&e2. &fPlease keep your language clean and family-friendly in chat and/or voice chat.",
"&e3. &fNo cheating, hacking, or exploiting bugs.",
"&e4. &fNo advertising other servers."
],
"displayMode": "once", // "once" or "interval"
"intervalDays": 7.0,
"repromptWhenRulesChange": true,
"agreeTimeoutSeconds": 300,
"blockChatWhilePending": true,
"checkboxLabel": "I have read and agree to the rules",
"agreeButtonLabel": "Enter Server",
"declineButtonLabel": "I Do Not Agree",
"mustCheckWarning": "You must check the box below to agree to the rules!",
"kickMessage": "You must agree to the server rules to play here.",
"timeoutKickMessage": "You did not respond to the rules prompt in time.",
"welcomeMessage": "&aThanks for agreeing to the rules. Have fun!"
}
| Setting | What it does |
|---|---|
rules | One entry per line. Supports & color codes: &c red, &e yellow, &a green, &f white, &l bold, &o italic. |
displayMode | "once" — players agree a single time, forever. "interval" — the rules pop up again every intervalDays. |
intervalDays | How often players must re-agree in interval mode. Fractions work: 0.5 = every 12 hours, 3 = every 3 days, 7 = weekly. |
repromptWhenRulesChange | When true, editing the title or rules makes everyone agree again on their next join — even in once mode. |
agreeTimeoutSeconds | Kick players who never respond to the prompt after this many seconds. 0 disables the timeout. |
blockChatWhilePending | When true, players can't chat or run commands until they've agreed. |
welcomeMessage | Chat message sent right after agreeing. Set to "" to disable. |
Display modes at a glance: use "once" for a classic "accept the rules on first join" gate. Use "interval" with intervalDays: 7 to remind everyone weekly, or 3 for every few days. Either way, changing the rules text re-prompts everyone (unless you turn repromptWhenRulesChange off).
Admin commands
All commands require operator permission (level 2+).
| Command | Effect |
|---|---|
/pledgegate reload | Reloads the config without a restart. If the rules changed, players re-agree on their next join. |
/pledgegate preview | Shows you the rules dialog without affecting your own acceptance — great for checking formatting. |
/pledgegate reset all | Wipes everyone's acceptance. Online players are re-prompted immediately. |
/pledgegate reset <player> | Wipes one player's acceptance; if they're online, they're re-prompted immediately. |
Frequently asked questions
Is PledgeGate a plugin or a mod?
PledgeGate is a Fabric mod, but it fills the same role a rules plugin fills on Bukkit, Spigot, or Paper servers: it gates entry behind a rules agreement. If you run a Fabric server and want a rules plugin, this is the equivalent — one jar in the mods/ folder.
Do players need to install anything?
No. The rules screen is native Minecraft UI streamed from the server. Vanilla launcher, vanilla client — it just works.
What happens if a player declines the rules?
They are kicked from the server with a message you control. The same happens if they ignore the prompt past a configurable timeout (5 minutes by default).
Can the rules pop up periodically instead of just once?
Yes. Set displayMode to "interval" and choose how often with intervalDays — every 3 days, weekly, or any fraction like 0.5 for twice a day.
What happens when I change the rules?
By default every player must agree to the new rules on their next join. You can turn this off with the repromptWhenRulesChange setting.
Where are rule acceptances stored?
In config/pledgegate/acceptances.json on the server — each player's UUID, name, timestamp, and which version of the rules they accepted. Delete the file or use /pledgegate reset to clear them.
Requirements: Minecraft 26.1.2 – 26.2 · Fabric Loader 0.19.3+ · Fabric API · Java 25. The mod also loads harmlessly in single-player, where it does nothing.