
📜 RulesPlugin - Custom GUI Rules Acceptance
RulesPlugin is a lightweight Minecraft server plugin that shows your server rules in a clean GUI and requires players to accept them before playing.
It is designed for server owners who want a customizable rules menu, acceptance tracking, reloadable configuration, and safer GUI handling without building a custom system from scratch.
🚀 Latest Update
v1.3.3 - Emergency Hotfix fixes two community-reported regressions affecting rule acceptance and update notifications.
- Fixed the accept button becoming invalid after navigating away from page 1.
- Fixed false update notifications that reported v1.3.1 while v1.3.2 was installed.
- Replaced the legacy website version file with the official Modrinth API.
- Added proper numeric version comparison so older releases are never reported as updates.
- Removed the discontinued SpigotMC download link from update notifications.
✨ Features
- Fully customizable through
config.yml. - Unlimited rules with automatic GUI pagination.
- Custom rule titles, descriptions, punishments, and item icons.
- Custom accept button item and display name.
- Custom previous/next page buttons.
- Blocks player actions until the rules are accepted.
- Tracks accepted players in
data.yml. - Optional acceptance log in
acceptance-log.yml. - Recent logs and version-specific logs with pagination.
- Rule versioning: increase
rules-versionto force players to re-accept updated rules. - In-game reload command with YAML validation.
- Force-open the rules GUI for one player or everyone online.
- Permission support for admin commands.
- Tab completion for RulesPlugin commands.
- Update checker with official download links.
- Strong GUI item leak and duplication protection.
🧰 Commands
| Command | Description | Permission |
|---|---|---|
/rules |
Opens the rules GUI. If already accepted, opens it in view-only mode. | rulespl.rules |
/rules reload |
Reloads and validates the configuration. | rulespl.reload |
/rules logs |
Shows recent rule acceptances. | rulespl.seelogs |
/rules logs v<version> [page] |
Shows acceptances for a specific rules version with pagination. | rulespl.seelogs |
/rules show <player> |
Force-opens the first-join rules GUI for one player. | rulespl.show |
/rules show everyone |
Force-opens the first-join rules GUI for everyone online. | rulespl.show |
📁 Configuration Preview
rules-version: 1
gui-title: "Server Rules"
accept-button:
name: "§aClick here to accept the rules"
item: EMERALD_BLOCK
previous-page:
name: "§a< Previous Page"
item: ARROW
next-page:
name: "§aNext Page >"
item: ARROW
accepted-message: "§aYou've accepted the server rules!"
error-message: "§cYou must accept the rules before doing anything!"
rules-updated-message: "§cThe rules have been updated. Please review and accept them again."
update-check-failed-message: "§e[RulesPlugin] Could not reach the update API. Offline servers can ignore this; the plugin will keep working."
rules:
- title: "§e1. Be respectful"
description: "§7Treat all players with kindness."
punishment: "§cPunishment: 1h mute"
item: PAPER
- title: "§e2. No hacking"
description: "§7Mods and hacks are not allowed."
punishment: "§cPunishment: Permanent ban"
item: BARRIER
Use Bukkit material names for icons, such as STICKY_PISTON, DIAMOND_SWORD, PAPER, or EMERALD_BLOCK.
Full configuration guide: RulesPlugin Config
📥 Installation
- Download the correct
.jarfor your Minecraft server version from Modrinth. - Place it inside your server's
/pluginsfolder. - Start or restart the server.
- Edit
config.ymlif you want to customize rules, messages, or GUI items. - Run
/rules reloadafter changing the config.
Official download:
🧩 Compatibility
RulesPlugin currently provides separate builds for:
- Minecraft 1.21.x
- Minecraft 26.1.x
- Minecraft 26.2.x
- Minecraft 26.3.x
The plugin is built against the Spigot API and avoids unnecessary Paper-only calls where Spigot compatibility is expected.
RulesPlugin also declares passive compatibility with GeyserMC and Floodgate. If Geyser-Spigot or floodgate are installed, RulesPlugin loads after them and logs the detected compatibility state.
🛡️ Security Notes
RulesPlugin GUI items are internally tagged by the plugin. If a client desync, lag spike, creative interaction, drag action, or crafting-slot edge case moves a GUI item outside the menu, RulesPlugin detects the tag and removes the item automatically.
This protection runs during inventory events and through a periodic cleanup task for online players.
📜 License
RulesPlugin is distributed under the RulesPlugin Custom License Agreement (RPCLA).
Redistribution, re-uploading, selling, sublicensing, or distributing modified builds is not allowed unless explicitly authorized by Blix3r_.
License page: RulesPlugin License
🔗 Links
- Website: rulesplugin.netlify.app
- Modrinth: modrinth.com/plugin/rulesplugin
All Versions
+ Add VersionThis urgent stability update fixes two regressions reported by the community.
## 🔧 Fixed
- Fixed the accept button becoming invalid after navigating away from the first rules page.
- Players can now accept the rules correctly from any GUI page.
- Fixed incorrect update notifications reporting v1.3.1 while v1.3.2 was installed.
- Removed the outdated static version check through
latest.txt. - Removed the discontinued SpigotMC link from update notifications.
## 🔄 Update Checker
The update checker now uses the official Modrinth API and reads the
version_number field directly.Versions are compared numerically, preventing older releases from being incorrectly reported as updates.
If Modrinth cannot be reached, RulesPlugin displays a clear warning while continuing to work normally.
## ✅ Compatibility
Dedicated v1.3.3 builds are available for:
- Minecraft 1.21.x
- Minecraft 26.1.x
- Minecraft 26.2.x
- Minecraft 26.3.x
Download the JAR matching your Minecraft server version.
## ❤️ Special Thanks
Thanks to **Joëlle Tiehuis**, **Metsh**, and **Zack** for reporting and reproducing these issues.
📘 **Documentation:** [rulesplugin.netlify.app](https://rulesplugin.netlify.app)
⬇️ **Download:** Replace your previous RulesPlugin JAR with the correct v1.3.3 build and restart the server.
This urgent stability update fixes two regressions reported by the community.
## 🔧 Fixed
- Fixed the accept button becoming invalid after navigating away from the first rules page.
- Players can now accept the rules correctly from any GUI page.
- Fixed incorrect update notifications reporting v1.3.1 while v1.3.2 was installed.
- Removed the outdated static version check through
latest.txt. - Removed the discontinued SpigotMC link from update notifications.
## 🔄 Update Checker
The update checker now uses the official Modrinth API and reads the
version_number field directly.Versions are compared numerically, preventing older releases from being incorrectly reported as updates.
If Modrinth cannot be reached, RulesPlugin displays a clear warning while continuing to work normally.
## ✅ Compatibility
Dedicated v1.3.3 builds are available for:
- Minecraft 1.21.x
- Minecraft 26.1.x
- Minecraft 26.2.x
- Minecraft 26.3.x
Download the JAR matching your Minecraft server version.
## ❤️ Special Thanks
Thanks to **Joëlle Tiehuis**, **Metsh**, and **Zack** for reporting and reproducing these issues.
📘 **Documentation:** [rulesplugin.netlify.app](https://rulesplugin.netlify.app)
⬇️ **Download:** Replace your previous RulesPlugin JAR with the correct v1.3.3 build and restart the server.
This urgent stability update fixes two regressions reported by the community.
## 🔧 Fixed
- Fixed the accept button becoming invalid after navigating away from the first rules page.
- Players can now accept the rules correctly from any GUI page.
- Fixed incorrect update notifications reporting v1.3.1 while v1.3.2 was installed.
- Removed the outdated static version check through
latest.txt. - Removed the discontinued SpigotMC link from update notifications.
## 🔄 Update Checker
The update checker now uses the official Modrinth API and reads the
version_number field directly.Versions are compared numerically, preventing older releases from being incorrectly reported as updates.
If Modrinth cannot be reached, RulesPlugin displays a clear warning while continuing to work normally.
## ✅ Compatibility
Dedicated v1.3.3 builds are available for:
- Minecraft 1.21.x
- Minecraft 26.1.x
- Minecraft 26.2.x
- Minecraft 26.3.x
Download the JAR matching your Minecraft server version.
## ❤️ Special Thanks
Thanks to **Joëlle Tiehuis**, **Metsh**, and **Zack** for reporting and reproducing these issues.
📘 **Documentation:** [rulesplugin.netlify.app](https://rulesplugin.netlify.app)
⬇️ **Download:** Replace your previous RulesPlugin JAR with the correct v1.3.3 build and restart the server.
This urgent stability update fixes two regressions reported by the community.
## 🔧 Fixed
- Fixed the accept button becoming invalid after navigating away from the first rules page.
- Players can now accept the rules correctly from any GUI page.
- Fixed incorrect update notifications reporting v1.3.1 while v1.3.2 was installed.
- Removed the outdated static version check through
latest.txt. - Removed the discontinued SpigotMC link from update notifications.
## 🔄 Update Checker
The update checker now uses the official Modrinth API and reads the
version_number field directly.Versions are compared numerically, preventing older releases from being incorrectly reported as updates.
If Modrinth cannot be reached, RulesPlugin displays a clear warning while continuing to work normally.
## ✅ Compatibility
Dedicated v1.3.3 builds are available for:
- Minecraft 1.21.x
- Minecraft 26.1.x
- Minecraft 26.2.x
- Minecraft 26.3.x
Download the JAR matching your Minecraft server version.
## ❤️ Special Thanks
Thanks to **Joëlle Tiehuis**, **Metsh**, and **Zack** for reporting and reproducing these issues.
📘 **Documentation:** [rulesplugin.netlify.app](https://rulesplugin.netlify.app)
⬇️ **Download:** Replace your previous RulesPlugin JAR with the correct v1.3.3 build and restart the server.
This is a focused compatibility release for newer Minecraft servers and cross-play setups.
## Added
- Added a dedicated Minecraft 26.2.x build.
- Added passive GeyserMC detection.
- Added passive Floodgate detection.
- Added
softdependentries forGeyser-Spigotandfloodgate, so RulesPlugin loads after them when present. - Added startup log messages when GeyserMC or Floodgate are detected.
## Compatibility
RulesPlugin now provides separate builds for:
- Minecraft 1.21.x
- Minecraft 26.1.x
- Minecraft 26.2.x
Make sure to download the JAR that matches your server version.
## Notes
RulesPlugin does not require GeyserMC or Floodgate to run.
If they are installed, RulesPlugin will load after them and keep compatibility passive. This helps avoid startup ordering issues on cross-play servers without adding hard dependencies.
Bedrock inventory behavior may still differ from Java clients, so server owners using GeyserMC should test the rules GUI with a real Bedrock client.
## Download
Replace the old JAR with the correct v1.3.2 build for your Minecraft version, then restart your server.
This is a focused compatibility release for newer Minecraft servers and cross-play setups.
## Added
- Added a dedicated Minecraft 26.2.x build.
- Added passive GeyserMC detection.
- Added passive Floodgate detection.
- Added
softdependentries forGeyser-Spigotandfloodgate, so RulesPlugin loads after them when present. - Added startup log messages when GeyserMC or Floodgate are detected.
## Compatibility
RulesPlugin now provides separate builds for:
- Minecraft 1.21.x
- Minecraft 26.1.x
- Minecraft 26.2.x
Make sure to download the JAR that matches your server version.
## Notes
RulesPlugin does not require GeyserMC or Floodgate to run.
If they are installed, RulesPlugin will load after them and keep compatibility passive. This helps avoid startup ordering issues on cross-play servers without adding hard dependencies.
Bedrock inventory behavior may still differ from Java clients, so server owners using GeyserMC should test the rules GUI with a real Bedrock client.
## Download
Replace the old JAR with the correct v1.3.2 build for your Minecraft version, then restart your server.
This is a focused compatibility release for newer Minecraft servers and cross-play setups.
## Added
- Added a dedicated Minecraft 26.2.x build.
- Added passive GeyserMC detection.
- Added passive Floodgate detection.
- Added
softdependentries forGeyser-Spigotandfloodgate, so RulesPlugin loads after them when present. - Added startup log messages when GeyserMC or Floodgate are detected.
## Compatibility
RulesPlugin now provides separate builds for:
- Minecraft 1.21.x
- Minecraft 26.1.x
- Minecraft 26.2.x
Make sure to download the JAR that matches your server version.
## Notes
RulesPlugin does not require GeyserMC or Floodgate to run.
If they are installed, RulesPlugin will load after them and keep compatibility passive. This helps avoid startup ordering issues on cross-play servers without adding hard dependencies.
Bedrock inventory behavior may still differ from Java clients, so server owners using GeyserMC should test the rules GUI with a real Bedrock client.
## Download
Replace the old JAR with the correct v1.3.2 build for your Minecraft version, then restart your server.
This update focuses on fixing several issues reported by the community and improving the overall reliability of RulesPlugin.
## 🔧 Fixed
- ✅ Fixed GUI item movement through click, shift-click, number-key swaps, offhand swaps and drag actions
- ✅ Fixed leaked GUI items remaining in player inventories
- ✅ Fixed invalid
config.ymlvalues being silently accepted - ✅ Fixed
/rules reloadapplying broken configurations - ✅ Fixed compatibility issues caused by Paper-only API usage
- ✅ Fixed invalid material names such as
Sticky_pistonandDiamond_Sword
## 🛡 GUI Security Improvements
RulesPlugin now protects GUI items much more aggressively.
- 🔒 GUI items are automatically detected and removed if they somehow leave the menu
- 🔄 Added automatic cleanup for leaked GUI items
- ⚡ Protection covers desyncs, lag, creative interactions, drag actions and inventory edge cases
## 🧠 Improved Configuration Handling
- 📄
config.ymlis now validated before changes are applied - 🚫 Invalid YAML configurations are no longer silently accepted
- 🔧 Material names are normalized automatically when possible
- ♻ Safer reload process for
/rules reload
## ✅ Compatibility
- ✔ Compatible with Minecraft 26.1.x
- ✔ Compatible with Paper
- ✔ Compatible with Spigot
- ✔ Compatible with Bukkit
- ✔ Reduced dependency on Paper-specific APIs
## ❤️ Thanks
Huge thanks to:
- CarrFN
- Charlie
- Break_Cats
- Some one
- maihari
for reporting bugs and helping improve RulesPlugin.
Your feedback directly shaped this update ❤️
📘 Documentation: https://rulesplugin.netlify.app
⬇ Download: Replace the old JAR with this version and restart your server.
This update focuses on fixing several issues reported by the community and improving the overall reliability of RulesPlugin.
## 🔧 Fixed
- ✅ Fixed GUI item movement through click, shift-click, number-key swaps, offhand swaps and drag actions
- ✅ Fixed leaked GUI items remaining in player inventories
- ✅ Fixed invalid
config.ymlvalues being silently accepted - ✅ Fixed
/rules reloadapplying broken configurations - ✅ Fixed compatibility issues caused by Paper-only API usage
- ✅ Fixed invalid material names such as
Sticky_pistonandDiamond_Sword
## 🛡 GUI Security Improvements
RulesPlugin now protects GUI items much more aggressively.
- 🔒 GUI items are automatically detected and removed if they somehow leave the menu
- 🔄 Added automatic cleanup for leaked GUI items
- ⚡ Protection covers desyncs, lag, creative interactions, drag actions and inventory edge cases
## 🧠 Improved Configuration Handling
- 📄
config.ymlis now validated before changes are applied - 🚫 Invalid YAML configurations are no longer silently accepted
- 🔧 Material names are normalized automatically when possible
- ♻ Safer reload process for
/rules reload
## ✅ Compatibility
- ✔ Compatible with Minecraft 26.1.x
- ✔ Compatible with Paper
- ✔ Compatible with Spigot
- ✔ Compatible with Bukkit
- ✔ Reduced dependency on Paper-specific APIs
## ❤️ Thanks
Huge thanks to:
- CarrFN
- Charlie
- Break_Cats
- Some one
- maihari
for reporting bugs and helping improve RulesPlugin.
Your feedback directly shaped this update ❤️
📘 Documentation: https://rulesplugin.netlify.app
⬇ Download: Replace the old JAR with this version and restart your server.
This update **fixes a critical issue** affecting existing servers and players who joined **before the plugin was installed or before rules were changed**.
## 🔧 Fixed
- ✅ Fixed an issue where **existing players** were unable to see the Rules GUI on join
- ✅ Fixed cases where the **server owner / OP** was not prompted to accept the rules
- ✅ Fixed the Rules GUI **not opening when
data.ymlwas empty or inconsistent**
## 🆕 New System — Rules Versioning
RulesPlugin now uses a **rules version (hash)** generated from the current
config.yml.- 🔁 If the rules are modified and the plugin is reloaded, **all players are required to re-accept the rules**
- 🧾 Guarantees that players always accept **the latest version** of the rules
- 🧠 No manual resets, no log parsing, no hacks required
## 🧠 Improved Logic
The rules system now works correctly for:
- 👤 New players
- 👥 Existing players
- 🛡️ Server owners / OPs
Everything is handled **automatically and reliably**.
## ✅ Compatibility
- ✔ Fully compatible with **Paper / Spigot 1.21.x**
- ✔ Backwards compatible with **existing configurations**
- ✔ No config changes required (optional improvements only)
## 💬 Thanks
Huge thanks to everyone who reported the issue and helped improve the plugin.
Your feedback directly shaped this update ❤️
📘 **Documentation:** https://rulesplugin.netlify.app
⬇ **Download:** Replace the old JAR with this one and restart the server
### ✨ What's New
- 🔧 **Customizable pagination buttons!**
"Next Page" and "Previous Page" buttons directly from the config.yml.### 🛠 Configuration Additions
``
yaml
previous-page:
name: "§a< Previous Page"
item: ARROW
next-page:
name: "§aNext Page >"
item: ARROW
``💬 As always, thanks to the community for the feedback!
📚 Docs: [https://rulesplugin.netlify.app](https://rulesplugin.netlify.app)
### ✨ Added
- New **configurable accept button**:
- Block type and name can now be customized via
config.yml(accept-buttonsection). - Added **custom error messages** support:
- For no permission on
/rules reloadand/rules logs - For invalid
/rulesusage (e.g.,/rules something) - New customizable **logs header, prefix and footer**:
- Personalize the
/rules logsoutput directly fromconfig.yml.
### ⚙️ Changed
- All default messages have been moved to
config.ymlfor easier customization. - Improved internal structure for cleaner code and future flexibility.