mtr_no_original_trains_server-forge-1.0.0.jar
Curse Maven Snippet
What's new
No Original Trains (Server side) 1.0.0 — Forge
File: mtr_no_original_trains_server-forge-1.0.0.jar
Minecraft 1.20.1 · Forge 47.x
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.) The Forge build registers its channel only on the logical server, so no client class is loaded on a dedicated server.
- 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 Forge dedicated server (47.4.26): loaded with "36 families in catalog", Done in 3.5s.
- Same command matrix run from the console, with byte-for-byte identical replies to the Fabric build: status, search, block, duplicate block, non-existent name, second family, unblock, blocking by a single car ID, clear.
- Restart persistence verified on Forge too: a hand-written 2-entry config was read back after restart, and list rendered both families correctly.
- Core logic: 101 assertions pass (shared with the Fabric build, same classes).
INSTALL
- Drop mtr_no_original_trains_server-forge-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 Fabric — use the Fabric 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

