Mod Whitelist Forge NeoForge
Modby klaus_ferrano
Checks the client's mod list on login and kicks if disallowed mods are present or required mods are missing.
Type
Mod
CurseForge Downloads
4,838
CurseForge ID
1337933
Last Updated
Aug 15, 2026
Description
Mods Whitelist
A secure modpack enforcement mod for Minecraft Forge and NeoForge.
This description currently only applies to Minecraft 1.21.1-2.0.0 and 1.20.1-3.0.0 . Other versions will be updated gradually to match the same feature and config structure over time.
Due to changes in modern Minecraft networking, reliable client mod verification is no longer possible using a server-only approach.
This project therefore uses a server + lightweight client verification model to provide accurate and tamper-resistant mod checks.
✨ Features
- Both-side required mods
Enforce mods that must exist on both server and client. - Client-only required mods
Require specific client-side mods even when they are not installed on the server. - Client-only optional mods
Allow selected client-side mods such as performance, QoL, or visual mods without making them mandatory. - Server-only mod separation
Keep server-only mods documented separately so they do not end up in the required client list. - Denied mods and files
Instantly reject players using forbidden mods or blocked jar files. - Strict mode
When enabled, only explicitly allowed mods and files are accepted. - File integrity verification (SHA-256)
Optional hardcore mode that verifies exact filenames and hashes. - Controlled collect workflow
Automatically classify mods and files using a trusted reference client. - Legacy config migration
Automatically migrates old single-file configs to the new multi-file structure. - Configurable kick messages
Supports custom messages, clickable pack links, and clearer formatted kick reasons. - Server-authoritative
All decisions are enforced by the server. No analytics, tracking, or third-party services.
📁 Config Structure
Modwhitelist uses a multi-file config layout:
config/modwhitelist/ settings.json both_side_required.json client_required.json client_optional.json server_only.json deny.jsonFile overview
settings.json
Global settings such as:
- strict
- strictFiles
- collectMode
- collectWhitelist
- customMessage
- packLink
both_side_required.json
Mods and files that must exist on both server and client.
client_required.json
Client-only mods and files that are still required.
client_optional.json
Client-only mods and files that are allowed but optional.
server_only.json
Mods and files that are only used on the server.
deny.json
Hard blacklist for forbidden mods and files.
🔒 Privacy / Data Protection
- Only technical mod identifiers and optional file hashes are transmitted
- No personal data is collected or stored
- No tracking, analytics, or third-party services
- Server logs only contain minimal moderation information such as kick reasons
🛠 Recommended Setup / Collect Workflow
Modwhitelist includes a controlled collect mode to help generate the initial config structure safely.
1. Start the server once
On first start, Modwhitelist creates the config folder and the required JSON files automatically.
2. Add a trusted admin UUID
Open config/modwhitelist/settings.json and add the UUID of a trusted admin to collectWhitelist.
Example:
{ "collectWhitelist": [ "1696566b-f0c6-473c-89b0-0f16d41a9608" ] }Only players listed there are allowed to join while collect mode is active.
3. Enable collect mode
Run:
/modwhitelist collect onThis temporarily disables strict mode and allows the trusted setup client to join.
4. Join with the reference client pack
Join the server once with the exact client setup you want to use as your baseline.
During this process, Modwhitelist compares:
- server mods/files
- client mods/files
5. Automatic classification
After the trusted client joins successfully, Modwhitelist automatically classifies entries into:
- both_side_required.json
- client_optional.json
- server_only.json
6. Review client-only entries
Any client-only mods detected during collect are placed into client_optional.json by default.
If some of these client-only mods should be mandatory, move them manually from:
- client_optional.json
to:
- client_required.json
This is intentional, because only the server admin can decide which client-only mods should actually be required.
7. Collect mode finishes automatically
After a successful collect run:
- collectMode is disabled automatically
- strict is restored automatically
Recommended setup logic
Use the files like this:
- both_side_required.json for mods required on both sides
- client_required.json for client-only mandatory mods
- client_optional.json for client-only allowed mods
- server_only.json for documentation and separation of server-only mods
- deny.json for mods or files that should never be allowed
📜 Commands
All commands require operator permissions.
/modwhitelist reload
Reloads all config files from disk.
Use this after manually editing the JSON files.
/modwhitelist init
Creates the multi-file config structure if it does not exist yet.
In most cases this is only needed for fresh setups. If configs already exist or were migrated automatically, you usually do not need this command.
/modwhitelist collect on
Enables collect mode and temporarily disables strict mode.
/modwhitelist collect off
Disables collect mode.
/modwhitelist collect clear
Clears the automatically collected manifests:
- both_side_required.json
- client_optional.json
- server_only.json
This does not clear client_required.json.
🚫 deny.json
deny.json is the hard blacklist.
Everything listed here is always blocked, even when strict=false.
Use it for:
- cheat mods
- xray mods
- incompatible mods
- specific jar files you never want on the server
Format
{ "mods": [], "files": [] }Block mods by mod ID
{ "mods": [ "xray", "freecam", "example*" ], "files": [] }Notes:
- xray blocks exactly that mod ID
- example* blocks everything starting with example
- wildcard matching with * is supported
Block files by filename
{ "mods": [], "files": [ { "name": "badmod.jar", "sha256": "*" } ] }This blocks the file by filename only.
Block one exact file version
{ "mods": [], "files": [ { "name": "badmod-1.0.0.jar", "sha256": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" } ] }This only blocks that exact file version.
Recommended usage
- Use mods for normal blacklist entries
- Use files with sha256: "*" if you want to block by jar filename
- Use a real SHA-256 hash only if you want to block one exact file version
deny.json is checked before normal whitelist and strict handling.
That means:
- matching entries are rejected immediately
- this also applies when strict=false
Notes
- Old single-file configs are migrated automatically on first start
- Auto-collect overwrites:
- both_side_required.json
- client_optional.json
- server_only.json
- client_required.json is intentionally kept manual so admins can decide which client-only mods are truly required
- Colored kick messages help players immediately see what is missing, blocked, or not allowed
Recommended Gear
AffiliateHardware and extras that pair well with this mod.
As an Amazon Associate I earn from qualifying purchases.
Similar Mods
Stretchy Leash
Leashes are less likely to break from normal usage, and make noise when they do break.
Dramatic Trees
Dynamic Trees fork with a little extra edge!
Material Elements: Decorative
Material Elements Decorative adds new decorative blocks and items for your world.
THE BOILED ONE
a funny looking dweller
ETERNULL
Explore the Corruption and fight The Null!
QuickCopy
Let you quickly copy the ID of an item