TRS Server Rules
TRS Server Rules is a free plugin and server mod. It tells the TRS Client what is allowed on your server: switch single modules off, force them on, or set and limit their settings – globally, per world or per backend server.
Download and install
All platforms are in one GitHub release: github.com/theredstonee/TRS-Launcher/releases/tag/server-plugin. Overview: For servers.
| Platform | File | Notes |
|---|---|---|
| Spigot, Paper, Purpur, Folia | trs-server-rules-bukkit-<version>.jar | One jar for Minecraft 1.8.8 up to the latest version. Rules per world. |
| Velocity 3.x | trs-server-rules-velocity-<version>.jar | Rules per backend server (servers:). |
| BungeeCord, Waterfall | trs-server-rules-bungee-<version>.jar | Rules per backend server (servers:). |
| Sponge (API 8 and newer) | trs-server-rules-sponge-<version>.jar | Rules per world. |
| Fabric 1.20.1, 1.21.1, 1.21.4, 1.21.11 | trs-server-rules-fabric-<mc>-<version>.jar | Server side only. Config config/trs-server-rules.yml. |
| NeoForge 1.21.1, 1.21.11 | trs-server-rules-neoforge-<mc>-<version>.jar | Server side only. Config config/trs-server-rules.yml. |
| Forge 1.20.1 | trs-server-rules-forge-1.20.1-<version>.jar | Server side only. Config config/trs-server-rules.yml. |
Download the jar
Pick the file for your server software from the release.
Install it
Put it into the plugins folder (plugins) or the mods folder (server mods) and start the server once. Players do
not need to install anything – the TRS Client already understands the rules.
Edit the config
Plugins create config.yml in their data folder (plugins/TRSServerRules/ on Spigot/Paper/Bungee, plugins/trs-server-rules/ on Velocity, config/trsserverrules/ on Sponge), server mods config/trs-server-rules.yml. Then run
/trsrules reload.
Configuration
# TRS Server Rules – control TRS Client features on your server.
# Note: members of the TRS team with the "serverrules.bypass" permission can override these rules
# after an in-game confirmation. This is documented on purpose.
modules: # global
minimap: false # false = forced off, true = forced on
fullbright: false
settings:
zoom.factor: {max: 4}
cinematic.freecamFairPlay: true
worlds: # Bukkit/Sponge/mods: per world; Velocity/Bungee: "servers:" per backend server
pvp_arena:
modules: {zoom: false, freelook: false}
message: "" # optional text shown once to TRS Client players
missing-client: # players whose client does not answer with a TRS Client hello
action: ignore # ignore | notify | kick
timeout-seconds: 10
notify-message: "This server works best with the TRS Client."
kick-message: "Please join with the TRS Client."
bypass-permission: trsrules.bypass # players with this server permission get no rules
Everything commented out (or missing) means: nothing is locked, the player decides.
modules
<module id>: true | false. false locks the module off, true forces it on. A module that is not listed
stays the player's choice. All IDs: Module IDs.
settings
<module id>.<setting id>: … – the setting IDs are the keys of a module in the TRS Client's own config file
config/trsclient.json (flags, numbers, choices).
| Form | Meaning | Example |
|---|---|---|
true / false, a number or a name | Force exactly this value (short form of {value: …}) | minimap.fairPlay: true |
{value: x} | Force a value – on/off, a number or a choice (by its name) | cinematic.smoothing: {value: SMOOTH} |
{min: a, max: b} | Clamp a number (one side is enough) | zoom.factor: {max: 4}, fullbright.level: {max: 200} |
Unknown modules or settings are ignored by the client, so a config also works with older and newer TRS Client versions.
worlds / servers
Rules for single worlds (Bukkit, Sponge, server mods: worlds:) or backend servers (Velocity, BungeeCord:
servers:), each with its own modules: and settings:. An entry there overrides the global entry with the same key;
everything else comes from the global part.
message
Optional text that the TRS Client shows once as a TRS notice when the rules arrive. Empty = no notice.
missing-client
What happens to players whose client does not answer with a TRS Client hello within timeout-seconds:
action | Effect |
|---|---|
ignore | Nothing (default). |
notify | The player gets notify-message in chat. |
kick | The player is kicked with kick-message. |
bypass-permission
Players with this server permission (default trsrules.bypass) get no rules at all – for your admins and builders.
bypass-players and bypass-op-level
bypass-players: []– names or UUIDs that get no rules, on every platform.bypass-op-level: 0– server mods only (Fabric/NeoForge/Forge have no permission plugins): operators with at least this level get no rules (0= off). On Fabric,bypass-permissionandtrsrules.adminalso work if LuckPerms or another mod with fabric-permissions-api is installed.
Commands
| Command | Effect |
|---|---|
/trsrules reload | Reload the config and send the new rules to all players. |
/trsrules status <player> | Shows whether the player uses the TRS Client and which rules apply. |
Permission trsrules.admin; on Fabric, NeoForge and Forge OP level 3.
TRS team bypass
Members of the TRS team whose role has the team permission serverrules.bypass can use a locked module or setting
anyway. When they try to change it, the TRS Client asks first: “This server locks “Minimap”. Use it anyway as TRS
team?”. Yes lifts this one lock until they leave the server.
- It exists so the team can test features and help players on any server.
- The game server is not told about it and cannot switch it off.
- It is documented on purpose: here, on the For servers page, in the README of the plugin and as a comment at the top of every generated config.
- Your own exception for your staff is the server permission from
bypass-permission– that one is fully under your control.
Protocol
For people who want to write their own implementation. Plugin messaging (custom payload), the content is UTF-8 JSON as raw bytes (no length prefix), at most 32 KiB.
| Direction | Minecraft 1.13 and newer | Minecraft 1.12 and older |
|---|---|---|
| Server → client (rules) | trsclient:rules | TRS|Rules |
| Client → server (hello) | trsclient:hello | TRS|Hello |
Servers register both names where the platform allows it (mixed versions behind ViaVersion).
Hello
The client registers the channels and sends hello after joining (play phase).
Rules
The server answers with rules – always, also when empty – and sends them again after a world change (proxy: server
change) and after /trsrules reload.
Replace and forget
Every rules message replaces the previous rule set completely. On disconnect the client drops all rules.
Hello (client → server):
{"v":1,"client":"trsclient","version":"0.20.0","mc":"1.21.11","loader":"fabric","modules":["fps","minimap","zoom"]}
Rules (server → client):
{"v":1,
"modules":{
"minimap":{"enabled":false},
"fullbright":{"enabled":false},
"zoom":{"settings":{"factor":{"max":4.0}}},
"cinematic":{"settings":{"freecamFairPlay":{"value":true}}},
"toggleSprint":{"enabled":true}
},
"message":"Optional text the client shows once"}
enabled: false= locked off,enabled: true= forced on, missing = the player decides.settings.<id>:{"value": x}forces a value (bool, number, or a choice by its enum name),{"min": a, "max": b}clamps a number.- Unknown modules and settings are ignored. With
vgreater than 1 the client only reads the fields it knows.
Module IDs
The IDs are the same in every Minecraft version. A module that does not exist in a version is simply ignored.
HUD
| ID | Name |
|---|---|
fps | FPS |
ping | Ping |
effects | Potion Effects |
clock | Clock |
memory | Memory |
packs | Active Resource Packs |
scoreboard | Scoreboard |
tabPing | Tab List Ping |
bossBar | Boss Bar |
titles | Titles |
warnings | Warnings |
hungerOverlay | Hunger Overlay |
pinnedNote | Pinned Note |
PvP
| ID | Name |
|---|---|
cps | CPS |
keystrokes | Keystrokes |
armor | Armor |
toggleSprint | Toggle Sprint |
toggleSneak | Toggle Sneak |
reach | Reach |
combo | Combo |
speed | Speed |
crosshair | Crosshair |
hitColor | Hit Color |
oldAnimations | 1.7 Animations |
lowFire | Low Fire |
shieldPosition | Shield Position |
hitboxes | Hitboxes |
noHurtCam | No Hurt Cam |
itemCounter | Item Counter |
hitFeedback | Hit Feedback |
World
| ID | Name |
|---|---|
coords | Coordinates |
server | Server Address |
minimap | Minimap |
worldMap | World map |
freelook | Freelook |
zoom | Zoom |
fullbright | Gamma |
autorefill | Auto-Refill |
blockOutline | Block Outline |
waypoints | Waypoints |
colors | Colors |
panorama | Panorama Screenshots |
notes | World Notes |
Chat
| ID | Name |
|---|---|
chat | Chat Improvements |
autoGg | Auto-GG |
textHotkeys | Text Hotkeys |
social | Social |
chatMentions | Mentions |
chatHeads | Chat Heads |
chatFilter | Chat Filter |
Redstone
| ID | Name |
|---|---|
redstoneSignal | Signal Strength |
redstoneOverlay | Signal Overlay |
redstoneClock | Clock Meter |
circuitLibrary | Circuit Library |
Performance
| ID | Name |
|---|---|
fpsBoost | FPS Boost |
dynamicFps | Dynamic FPS |
borderlessFullscreen | Borderless Fullscreen |
entityCulling | Entity Culling |
particles | Particles |
worldDetails | World Details |
builtinOptimizations | Built-in Optimizations |
netOptimize | Network Optimization |
lowLatency | Low Input Latency |
fastConnect | Fast Connect |
Misc
| ID | Name |
|---|---|
titleScreen | Title Screen |
menuStyle | Menu Style |
trsOnline | TRS Online Features |
capePhysics | Cape Physics |
emotes | Emotes |
clips | Clips & Recording |
cinematic | Camera Paths (incl. freecam) |
halloween | Halloween |
tooltips | Better Tooltips |
serverProfiles | Server Profiles |
screenshots | Screenshot Tools |
keySearch | Key Binding Search |
autoReconnect | Auto Reconnect |
queueAlerts | Queue & Alerts |
streamerMode | Streamer Mode |
Codes in chat or MOTD
Without a plugin, a server can still send invisible codes: each letter with a § in front, in a chat message or in
the MOTD. They stay valid until the player leaves the server and still work next to TRS Server Rules.
| Code | Effect |
|---|---|
§t§r§s§n§o§f§r§e§e§c§a§m (trsnofreecam) | Freecam off. |
§t§r§s§f§a§i§r§f§r§e§e§c§a§m (trsfairfreecam) | Freecam only with fair play (no camera through walls). |
§t§r§s§r§e§s§e§t§f§r§e§e§c§a§m (trsresetfreecam) | Clears the freecam codes again. |
§f§a§i§r§x§a§e§r§o (fairxaero) | Fair play for minimap and world map (also forces fair play for freecam). |
§n§o§m§i§n§i§m§a§p (nominimap) | No minimap. |
§r§e§s§e§t§x§a§e§r§o (resetxaero) | Clears the map codes (and the freecam codes). |
The map codes are the common ones of other map mods, so existing fair-play plugins work with the TRS Client too.