Developers

TRS Server Rules

Plugin and server mod that locks, forces or limits TRS Client features on your server: platforms, config reference, protocol and all module IDs.

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.

TRS Server Rules only controls the TRS Client. It is not an anti-cheat: other clients ignore it, and a modified client can pretend to be a TRS Client.

Download and install

All platforms are in one GitHub release: github.com/theredstonee/TRS-Launcher/releases/tag/server-plugin. Overview: For servers.

PlatformFileNotes
Spigot, Paper, Purpur, Foliatrs-server-rules-bukkit-<version>.jarOne jar for Minecraft 1.8.8 up to the latest version. Rules per world.
Velocity 3.xtrs-server-rules-velocity-<version>.jarRules per backend server (servers:).
BungeeCord, Waterfalltrs-server-rules-bungee-<version>.jarRules per backend server (servers:).
Sponge (API 8 and newer)trs-server-rules-sponge-<version>.jarRules per world.
Fabric 1.20.1, 1.21.1, 1.21.4, 1.21.11trs-server-rules-fabric-<mc>-<version>.jarServer side only. Config config/trs-server-rules.yml.
NeoForge 1.21.1, 1.21.11trs-server-rules-neoforge-<mc>-<version>.jarServer side only. Config config/trs-server-rules.yml.
Forge 1.20.1trs-server-rules-forge-1.20.1-<version>.jarServer 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.

On a proxy (Velocity, BungeeCord) the proxy's rules take precedence over a TRS Server Rules plugin on the backend server.

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

FormMeaningExample
true / false, a number or a nameForce 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:

actionEffect
ignoreNothing (default).
notifyThe player gets notify-message in chat.
kickThe 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-permission and trsrules.admin also work if LuckPerms or another mod with fabric-permissions-api is installed.

Commands

CommandEffect
/trsrules reloadReload 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.

DirectionMinecraft 1.13 and newerMinecraft 1.12 and older
Server → client (rules)trsclient:rulesTRS|Rules
Client → server (hello)trsclient:helloTRS|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 v greater 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

IDName
fpsFPS
pingPing
effectsPotion Effects
clockClock
memoryMemory
packsActive Resource Packs
scoreboardScoreboard
tabPingTab List Ping
bossBarBoss Bar
titlesTitles
warningsWarnings
hungerOverlayHunger Overlay
pinnedNotePinned Note

PvP

IDName
cpsCPS
keystrokesKeystrokes
armorArmor
toggleSprintToggle Sprint
toggleSneakToggle Sneak
reachReach
comboCombo
speedSpeed
crosshairCrosshair
hitColorHit Color
oldAnimations1.7 Animations
lowFireLow Fire
shieldPositionShield Position
hitboxesHitboxes
noHurtCamNo Hurt Cam
itemCounterItem Counter
hitFeedbackHit Feedback

World

IDName
coordsCoordinates
serverServer Address
minimapMinimap
worldMapWorld map
freelookFreelook
zoomZoom
fullbrightGamma
autorefillAuto-Refill
blockOutlineBlock Outline
waypointsWaypoints
colorsColors
panoramaPanorama Screenshots
notesWorld Notes

Chat

IDName
chatChat Improvements
autoGgAuto-GG
textHotkeysText Hotkeys
socialSocial
chatMentionsMentions
chatHeadsChat Heads
chatFilterChat Filter

Redstone

IDName
redstoneSignalSignal Strength
redstoneOverlaySignal Overlay
redstoneClockClock Meter
circuitLibraryCircuit Library

Performance

IDName
fpsBoostFPS Boost
dynamicFpsDynamic FPS
borderlessFullscreenBorderless Fullscreen
entityCullingEntity Culling
particlesParticles
worldDetailsWorld Details
builtinOptimizationsBuilt-in Optimizations
netOptimizeNetwork Optimization
lowLatencyLow Input Latency
fastConnectFast Connect

Misc

IDName
titleScreenTitle Screen
menuStyleMenu Style
trsOnlineTRS Online Features
capePhysicsCape Physics
emotesEmotes
clipsClips & Recording
cinematicCamera Paths (incl. freecam)
halloweenHalloween
tooltipsBetter Tooltips
serverProfilesServer Profiles
screenshotsScreenshot Tools
keySearchKey Binding Search
autoReconnectAuto Reconnect
queueAlertsQueue & Alerts
streamerModeStreamer 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.

CodeEffect
§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.

TRS Launcher – The Redstone Launcher by TheRedstonee

Not an official Minecraft product. Not approved by or associated with Mojang or Microsoft.

© 2026 TheRedstonee · GPL-3.0