TDRules
TDRules is a client-and-server rule acceptance and enforcement mod for multiplayer NeoForge servers. It guides players through the current server rules, stores every decision per world, and keeps normal gameplay restricted until the active rules version has been accepted.
The mod includes its own guided acceptance interface, a bundled German Patchouli rulebook, and an in-game administration dashboard. Enforcement and all persistent decisions remain server-authoritative.
Player experience
When a player joins with no valid acceptance for the current rules version, TDRules automatically opens a guided rules screen. Before accepting, the player must open the rulebook and confirm that it has been read. If the server uses password protection, the same screen also provides a masked password field.
The interface may be closed without accepting, but the server-side restrictions remain active. A clickable chat message and /rules open allow the player to return to it at any time. /rules show opens the Patchouli rulebook directly.
Players can also decline through a separate confirmation screen. A confirmed decline is stored and disconnects the player. They may reconnect later and accept the rules after all.
Restrictions before acceptance
While rule enforcement is active, players without a current acceptance can be prevented from:
- Breaking, placing, modifying, or interacting with blocks
- Interacting with entities or using normal items
- Attacking, dealing damage, taking damage, or receiving knockback
- Picking up, dropping, or moving items
- Opening containers or changing inventories
- Crafting, trading, editing books, or using restricted inventory packets
- Losing hunger, saturation, or exhaustion
- Running commands that are not explicitly allowed
Normal chat remains available. TDRules commands and any additional command roots configured by the server are still usable. Blocked-action messages are rate-limited to avoid chat spam.
New, reset, and previously declined players are limited to a configurable three-dimensional sphere around the current Overworld spawn. Other dimensions count as outside that area.
If an already accepted player becomes outdated because the rules version was increased, TDRules saves the player's current dimension, position, and view direction. The player is held at that location while online instead of being moved immediately to spawn. After acceptance, the mod searches for a safe return position near the saved location and falls back to spawn if no safe return is possible.
Players with permission level 2 or higher bypass gameplay restrictions without changing their stored decision or receiving the starter kit automatically.
Main features
- Guided rules screen with rulebook hand-off, read confirmation, optional password entry, and a separate decline confirmation
- Persistent UUID-based decisions and decision history stored separately for each world
- Versioned rules that can require every affected player to accept updated terms
- Bundled German Patchouli rulebook with no KubeJS or external resource pack required
- German and English interfaces and system messages, with English used as the UI fallback for other client languages
- Configurable three-dimensional movement radius around the Overworld spawn
- Server-side restrictions for movement, interaction, items, inventories, combat, damage, hunger, and commands
- Configurable command allowlist for restricted players
- Optional password protection with protected storage, failed-attempt tracking, and temporary lockout
- One-time starter kit generated from a configurable loot table after the player's first successful acceptance
- Safe return handling after accepting an updated rules version
- In-game administration dashboard plus command-based administration
- Permission-based operator bypass and permission-gated administrative actions
- Dedicated JSON Lines audit logs with automatic 30-day retention
- Optional Curios and Sophisticated Backpacks integration for accessible rulebook detection
In-game administration
/rules admin opens a server-backed dashboard for users with permission level 2 or higher. It contains four sections:
- Overview: active rules version, enforcement state, movement radius, player records, accepted-player count, and open starter-kit deliveries
- Settings: movement radius, command allowlist, starter-kit loot table, enforcement toggle, and password management
- Players: searchable and filterable player records with decision state, accepted version, online state, reset controls, and confirmed starter-kit reissue
- Starter Kits: pending or uncertain deliveries with guarded recovery actions
Permission level 2 provides status and dashboard access, level 3 enables resets, reloads, and starter-kit operations, and level 4 enables configuration changes. Every dashboard request is validated again on the server.
The rules acceptance version is intentionally read-only in the dashboard because it is embedded in the TDRules JAR. Server administrators can continue to use the equivalent /rules administration commands when preferred.
Rule versions
Rule acceptance is tied to a dedicated integer version stored inside the mod file at data/tdrules/rules/version.json. Version 0 disables acceptance enforcement for a fresh or not-yet-configured build. Positive versions activate the system.
Increasing the embedded rules version makes older acceptances outdated and starts the reacceptance flow. The version cannot be lowered after activation. Temporarily disabling enforcement is handled through the administration settings instead.
Minor spelling, formatting, or equivalent wording corrections can be released without increasing the rules version when renewed acceptance is not intended. A changed mod JAR still requires a higher mod version and must be distributed to both server and clients.
Rulebook handling
TDRules uses Patchouli to display its bundled rulebook. While a player still needs to accept the rules, the mod can ensure that one accessible copy is available.
The following inventories are supported:
- Standard player inventory, armor slots, and offhand
- Curios slots when Curios is installed
- Directly carried Sophisticated Backpacks when the required optional mods are installed
External storage networks such as Applied Energistics 2 are intentionally not searched or modified. Nested or remotely stored backpacks are not recursively scanned. If no accessible inventory slot is available, no permanent world item is spawned; players can still open the rulebook safely with /rules show.
Starter kits
The configurable starter kit is planned automatically only after a player's first successful acceptance. Reaccepting a newer rules version, reconnecting, resetting the rules decision, or resuming an interrupted delivery does not automatically grant another full kit.
Administrators with permission level 3 or higher can recover interrupted deliveries. They may also deliberately reissue the current full starter kit to an online player through a separate confirmation dialog that warns about possible duplicate items. Kit planning, progress, recovery, and manual reissue operations are audited.
Storage and audit logging
All mutable TDRules state is stored with the affected world. This includes enforcement settings, movement radius, password verifier, player decisions, known player names, decision history, starter-kit progress, password lockouts, and saved return positions. Player identity is tracked by UUID.
TDRules creates a separate JSON Lines audit log for every server session under logs/tdrules. Logged events include login state, rule display, acceptance and decline, blocked actions, password failures, configuration changes, resets, teleports, returns, and starter-kit operations.
Plain-text passwords, password hashes, and password salts are not written to the audit logs. TDRules audit files older than 30 days are removed automatically.
Requirements
- Minecraft 1.21.1
- NeoForge 21.1.248 or newer for Minecraft 1.21.1
- Java 21
- Patchouli 1.21.1-93 or newer
TDRules must be installed on the server and on every connecting client. Client and server must use the same TDRules version.
Optional compatibility
- Curios 9.5.1 or newer
- Sophisticated Core 1.4.90 or newer
- Sophisticated Backpacks 3.25.78 or newer
These optional mods are only accessed when installed. TDRules does not require KubeJS.
Important notes
TDRules does not add custom blocks, signs, decorative structures, or world generation. Spawn signs and other server decorations must be created separately by the server team.
The bundled rulebook and its acceptance version are part of the TDRules JAR. Server and clients must be fully restarted after replacing the mod; /reload is not sufficient for a new JAR. Backing up the world before major configuration or rules-version changes is strongly recommended.
TDRules is currently licensed as All Rights Reserved.

