PledgeGate

The server rules mod for Fabric: players must read and agree to your rules before they can play. Server‑side only — your players install nothing.

Minecraft 26.1.2 – 26.2 Fabric Server-side only MIT License
Download pledgegate‑1.1.1.jar Install Guide

Requires Fabric API on the server.

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:

Server Rules
1. Please treat all players respectfully. No bullying, personal insults, hate speech, or verbal abuse.
2. Please keep your language clean and family-friendly in chat and/or voice chat.
3. No cheating, hacking, or exploiting bugs.
4. No advertising other servers.
I have read and agree to the rules
Enter Server
I Do Not Agree

A recreation of what players see in-game.

Installation

Set up a Fabric server

Install the Fabric server launcher for Minecraft 26.1.2 or 26.2, with Java 25.

Drop in two jars

Put pledgegate-1.1.1.jar and Fabric API into the server's mods/ folder.

Start the server once

PledgeGate creates config/pledgegate/config.json with example rules.

Write your 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:

Open the config file

On the server, open config/pledgegate/config.json in any text editor (Notepad, TextEdit, VS Code, or your host's file manager).

Edit the rules list

Each 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.

Save, then reload

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.

Check your work

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!"
}
SettingWhat it does
rulesOne 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.
intervalDaysHow often players must re-agree in interval mode. Fractions work: 0.5 = every 12 hours, 3 = every 3 days, 7 = weekly.
repromptWhenRulesChangeWhen true, editing the title or rules makes everyone agree again on their next join — even in once mode.
agreeTimeoutSecondsKick players who never respond to the prompt after this many seconds. 0 disables the timeout.
blockChatWhilePendingWhen true, players can't chat or run commands until they've agreed.
welcomeMessageChat 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+).

CommandEffect
/pledgegate reloadReloads the config without a restart. If the rules changed, players re-agree on their next join.
/pledgegate previewShows you the rules dialog without affecting your own acceptance — great for checking formatting.
/pledgegate reset allWipes 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.