promotional bannermobile promotional banner

No Original Trains (Server side)

Block MTR's built-in trains from the server side with /mtrnot commands, synced to clients. Fabric + Forge.
Back to Files

mtr_no_original_trains_server-fabric-1.0.0.jar

File namemtr_no_original_trains_server-fabric-1.0.0.jar
Uploader
ChengYouHangChengYouHang
Uploaded
Nov 5, 2026
Downloads
8
Size
49.3 KB
Mod Loaders
Fabric
File ID
9453742
Type
R
Release
Supported game versions
  • 1.20.1

Curse Maven Snippet

Fabric

modImplementation "curse.maven:no-original-trains-server-side-1785009:9453742"

Learn more about Curse Maven

What's new

No Original Trains (Server side) 1.0.0 — Fabric
File: mtr_no_original_trains_server-fabric-1.0.0.jar
Minecraft 1.20.1 · Fabric Loader 0.14.21+


ABOUT THIS VERSION

Initial release. This is the server half of No Original Trains: it lets an admin pick which of MTR's built-in trains are blocked, and pushes that list to every player who runs the matching client build, No Original Trains (Client side). The server decides; the client applies.

The server build has no GUI and needs no client mod to function. It does not even need MTR installed — it carries a bundled catalog of MTR 4.0.5's 378 built-in vehicles, grouped into 36 families, and searches against that.


WHAT IT DOES

- PICK TRAINS WITH COMMANDS. `/mtrnot block SP1900` adds that whole family — 24 cars — to the block list. Search first with `/mtrnot search`, review with `/mtrnot list`.
- THE LIST IS PUSHED ON JOIN. Every player who connects receives the current list on a dedicated channel. After every change the list is re-sent to everyone online, so nobody has to reconnect.
- CLIENTS WITHOUT THE MOD ARE SKIPPED SILENTLY. A player who does not run the client build joins normally and sees vanilla MTR trains. No error, no chat message, no log spam.
- BUILT-IN TRAINS ONLY, BY CONSTRUCTION. The block list can only contain IDs from the bundled catalog. There is no addon option anywhere in this mod — an addon vehicle ID cannot even be expressed in the commands.


COMMANDS

All commands need permission level 2 (op).

- `/mtrnot` or `/mtrnot status` — show whether blocking is on, how many cars are blocked, and the catalog size.
- `/mtrnot search <terms>` — search the catalog by family name, vehicle name or ID. Spaces mean AND: `london 1995` matches only trains containing both terms. Numbers stay whole: a pure number only matches at a word boundary, so `2` does not match the digits inside `R211`. Long model numbers still resolve: `1900` finds `SP1900`, `1141` finds `C1141A`. The prefixes `mtr_custom_train_` and `mtr:` are stripped, so a raw ID pasted from a log still resolves.
- `/mtrnot block <terms or id>` — add every matching family to the block list and push the update.
- `/mtrnot unblock <terms or id>` — remove matching families and push the update.
- `/mtrnot list [page]` — page through the current list, grouped by family.
- `/mtrnot clear` — empty the list and push the update.
- `/mtrnot reload` — re-read the config file and push it to everyone online.

Every command name, argument and reply is in English.


CONFIG

config/mtr_no_original_trains_server.json is generated on first start:

  { "enabled": true, "blockedIds": ["sp1900_trailer", "..."] }

Edit it by hand and run /mtrnot reload, or use the commands — both write the same file. A server pack can ship this file pre-filled so players never see a chosen set of trains.


COMPATIBILITY

- The network channel accepts any version on both sides, and the Forge build sets displayTest="IGNORE_ALL_VERSION" — a client without this mod joins fine, and version mismatch is never compared. (Fabric performs no mod-list check at all.)
- No mandatory dependency points at the client build. Forge never reports a missing required mod.
- This mod is separate from the client-side No Original Trains — different mod ID, different file. They can coexist on the same machine and in the same mods folder.
- Nothing here can get a player kicked by the loader handshake.


KNOWN LIMITS

- The server only decides and delivers. Removing trains is the client build's job — players without it still see every train.
- The catalog is a snapshot of MTR 4.0.5's built-ins. Trains added in a future MTR release will not appear in search results until this mod is updated.
- Changes reach players instantly, but the client applies them at its next launch — that is by design, to avoid a resource reload mid-session.


TESTED

- Started on a real Fabric dedicated server: loaded with "36 families in catalog", Done in 4.6s.
- Full command matrix exercised from the console: status, search sp1900 (1 family / 24 cars), block SP1900 (24 IDs written), duplicate block (0 new), block of a non-existent name, search with no hits, a second family, unblock (24 removed), blocking by a single car ID (whole family), clear, list on an empty list, reload — every reply matched the expected result.
- Restart persistence: hand-wrote a 3-entry config (2 built-in IDs + 1 bogus addon ID), restarted, status read 3, list grouped the bogus ID under an unknown family, unblock left 2 and wrote them back to disk.
- Core logic: 101 assertions pass (catalog integrity, search boundaries, protocol round-trip, config corruption tolerance).


INSTALL

- Drop mtr_no_original_trains_server-fabric-1.0.0.jar into the server's mods/ folder and restart. No dependencies, no MTR required.
- Pair it with No Original Trains (Client side) on players' clients for the list to take effect.
- Do not install this jar on Forge — use the Forge build. Do not install this jar together with the client-side No Original Trains on the same side; they are separate projects.

This mod has no additional files