minecraft-server/docs/PLUGIN_ALTERNATIVES.md
s8n-ru 0dad38e02e Initial commit: racked.ru Minecraft server config snapshot
Captures live config state of nullstone Purpur 1.21.11 server:
- docker-compose.yml (itzg/minecraft-server image, MODRINTH_PROJECTS + PLUGINS lists)
- All plugin configs under live-server/plugins/ (no DBs, no jars, no world data)
- Server core: bukkit.yml, spigot.yml, purpur.yml, paper-global.yml, paper-world-defaults.yml, server.properties

Excluded via .gitignore:
- World data (world/, world_nether/, world_the_end/, auth_limbo/)
- Sensitive: AuthMe DB (password hashes), Lands DB, CoreProtect DB, Essentials userdata
- Jars (auto-fetched), logs, caches, .paper-remapped
2026-04-30 18:33:38 +01:00

22 KiB

Plugin alternatives — FOSS-alignment audit

Goal: for every plugin, evaluate against the vision (FOSS, privacy-first, no telemetry, no Microsoft-account dependency, active maintenance, GH-source-of-truth, attribution-respecting). Identify swaps where a more aligned alternative exists.

Scoring axes:

  • L — License (GPL/MIT/Apache > LGPL > custom-FOSS > closed)
  • S — Source visibility (GH > Hangar > Modrinth-only > Spigot-only > closed)
  • T — Telemetry (none > opt-in > opt-out > forced)
  • M — Maintenance (active commits in last 90 days > stale > archived > dead)
  • D — Dependency footprint (no native, no proprietary deps > requires ProtocolLib/Vault > requires premium)

1. LuckPerms (perms)

Field Value
Current LuckPerms by Luck (lucko)
License MIT
Source https://github.com/LuckPerms/LuckPerms
Vision fit Excellent — author is FOSS-native, MIT, GH-primary, no telemetry

Alternatives:

  • PermissionsEx — abandoned, security holes
  • GroupManager (Essentials) — bundled, weaker
  • GoPerms — newer, less battle-tested

Verdict: Keep. Industry standard, perfect alignment.


2. PlaceholderAPI (placeholder framework)

Field Value
Current PlaceholderAPI by HelpChat / extended-clip
License GPL-3.0
Source https://github.com/PlaceholderAPI/PlaceholderAPI
Vision fit Excellent — GPL, GH, ubiquitous

Alternatives:

Verdict: Keep PlaceholderAPI for now, evaluate MiniPlaceholders as a future swap if our other plugins start using Adventure components — it's lighter and avoids legacy color codes.


3. EssentialsX (utility kitchen sink)

Field Value
Current EssentialsX
License GPL-3.0
Source https://github.com/EssentialsX/Essentials
Vision fit Strong — GPL, GH, but huge surface area, slow to adopt new APIs

Alternatives:

Verdict: Keep EssentialsX short-term. Long-term: split by domain — HuskHomes for teleport (better UX), keep EssentialsX for the rest until evaluated. Document as Phase 4 in ROADMAP.


4. WorldEdit (world editing)

Field Value
Current WorldEdit by EngineHub
License GPL-3.0
Source https://github.com/EngineHub/WorldEdit
Vision fit Excellent — GPL, GH, gold standard

Alternatives:

Verdict: Swap to FAWE. Same API, much faster, FOSS, actively maintained. Bonus: handles big edits without freezing the server.


5. Simple Voice Chat (voice)

Field Value
Current Simple Voice Chat by henkelmax
License LGPL-3.0
Source https://github.com/henkelmax/simple-voice-chat
Vision fit Excellent — LGPL, GH, no telemetry, self-hosted

Alternatives:

  • Plasmo Voice — separate ecosystem, mod-side requirement, less plugin-friendly
  • Mumble integration — heavy, breaks one-click goal

Verdict: Keep. Best-in-class for our use case.


6. MiniMOTD (server-list MOTD)

Field Value
Current MiniMOTD by jpenilla
License MIT
Source https://github.com/jpenilla/MiniMOTD
Vision fit Excellent — MIT, GH

Alternatives:

  • ServerListPlus — older, more features, GPL
  • Native paper-api MOTD — code yourself, no plugin

Verdict: Keep. Lightweight, modern, no reason to swap.


7. SkinsRestorer (offline-mode skins)

Field Value
Current SkinsRestorer
License GPL-3.0
Source https://github.com/SkinsRestorer/SkinsRestorer
Vision fit Strong — GPL, GH, but proxies skin lookup through Mojang API by default

Concern: "Microsoft-free" goal vs. Mojang skin API. Workaround: SkinsRestorer supports custom skin URLs / MineSkin alternative.

Alternatives:

  • MineSkin (https://api.mineskin.org) — community skin server, can be self-hosted
  • NameMC mirror APIs — third-party
  • Self-hosted skin server — most aligned, requires setup

Verdict: Keep SkinsRestorer. Phase 2 follow-up: configure to point at self-hosted skin server (or MineSkin) to fully cut Mojang dependency. Document in docs/SKIN_HOSTING.md (TBD).


8. CoreProtect / CoreProtect-CE (logging / rollback)

Field Value
Current CoreProtect-CE 23.1 (community fork)
License Source-available, "all rights reserved" — readable but not OSI-FOSS
Source https://github.com/PlayPro/CoreProtect (orig), https://github.com/Intelli/CoreProtect (CE fork)
Vision fit Mixed — license isn't OSI-FOSS, but operationally is the most reliable rollback plugin in the ecosystem

Operator priority (explicit): solid logs from day one, easy per-player rollback matters more than license purity for this specific plugin.

Comparison vs Prism (the FOSS alternative):

Feature CoreProtect-CE Prism
Per-player rollback (/co rollback u:Foo t:7d r:50) rock solid, 13+ years tuned supported, less battle-tested
Inspector tool (/co i → click block) gold standard UX works, less polished
Sign/container/entity restoration clean, robust edge-case bugs reported
At-scale performance (100+ players) proven less proven
Rollback safety on huge edits proven newer codebase
API surface for other plugins wide ecosystem support smaller ecosystem
License source-available, "all rights reserved" MIT
Source readable yes (GH public) yes (GH public)
Active dev yes (CE fork: Intelli) yes (Prism v3+)

Why this is the principled exception:

  • License is source-available (readable + auditable + forkable in practice), not OSI-FOSS (no explicit redistribution grant).
  • Operational reliability for player protection outweighs license purity for this one plugin.
  • Server's trust model depends on rollback being airtight; Prism's gotchas (sign/container restoration edge cases) would mean failed grief reports.
  • CoreProtect's inspector tool UX is so dominant that swapping costs admin productivity.

Verdict: Keep CoreProtect-CE. Document this as the one acknowledged license exception in MISSION.md. Revisit when Prism reaches feature parity on signs/containers/entity rollback at scale.

Alternatives evaluated:

  • Prism v3+ — MIT, modern, active. Strong on paper, gaps in field-tested rollback edge cases. Reconsider in 12-18 months.
  • LogBlock — abandoned, drop.
  • CoreProtect 22.x — earlier Apache-2.0 version; outdated, missing features.

9. GrimAC (anti-cheat)

Field Value
Current GrimAC by MWHunter
License GPL-3.0
Source https://github.com/GrimAnticheat/Grim
Vision fit Excellent — GPL, GH, no telemetry, transparent detection logic

Alternatives:

  • Vulcan — paid, closed → reject
  • Matrix — paid → reject
  • NoCheatPlus — abandoned upstream, reincarnated as CMI-NCP, free but old
  • Spartan AC — paid, closed → reject

Verdict: Keep. GrimAC is the only FOSS anti-cheat that matters in 2026.


10. spark (profiler)

Field Value
Current spark by Luck (lucko)
License GPL-3.0
Source https://github.com/lucko/spark
Vision fit Excellent — GPL, GH, no telemetry beyond opt-in heap-share

Alternatives:

  • Timings — Paper built-in, deprecated upstream
  • Pufferfish profiler — server-fork-specific

Verdict: Keep. Only credible profiler.


11. DiscordSRV (Discord bridge)

Field Value
Current DiscordSRV by Scarsz
License GPL-3.0
Source https://github.com/DiscordSRV/DiscordSRV
Vision fit Mixed — DiscordSRV itself is GPL/FOSS, but Discord is the opposite of our values (proprietary, closed, telemetry-heavy, Microsoft-adjacent via MS GitHub stack). Bridges player chat to a closed platform.

Alternatives:

  • MatrixSRV / matrix-bridge — bridge to Matrix instead of/alongside Discord
  • Telegraph — Telegram bridge
  • RevoltSRV — bridge to Revolt (FOSS Discord-alike), https://github.com/Frosty-The-Dev/RevoltSRV
  • Custom Matrix bridge — write your own to existing Tuwunel homeserver (memory: txt.s8n.ru is yours)

Verdict: Keep DiscordSRV for player reach, but add a Matrix bridge as the primary FOSS-aligned channel. Discord is where players are; Matrix is where principles are. Operate both. You already run a Tuwunel homeserver (txt.s8n.ru) — natural home for the FOSS-aligned bridge. Action: deploy mc-matrix-bridge alongside.


12. LandClaimPlugin (claims) — recently swapped from Lands

Field Value
Current LandClaimPlugin (Modrinth)
License TBD (verify on Modrinth + GH)
Source https://modrinth.com/plugin/landclaimplugin
Vision fit Strong if FOSS confirmed, Verify before celebrating

Alternatives:

Operator decision (confirmed): Keep LandClaimPlugin. Rationale:

  • Chunk-based claims = vanilla-feel. Players see chunk borders via F3+G (built-in vanilla) — no client mod, no resource pack, no extra UI required to know where claims are.
  • GriefPrevention's free-form rectangle claims feel less native and require a separate visualization tool/plugin for boundary display.
  • Keeping vanilla-aligned mechanics is mission-aligned: minimum surface area, maximum native feel.

Outstanding TODO: verify LandClaimPlugin's license. If proprietary, fork or replace with another chunk-based FOSS claim plugin (chunk-claim plugins exist on Modrinth, e.g. chunkclaim, simplechunkclaim).

Alternatives kept on file as fallback:

  • GriefPrevention — free-form, FOSS, but loses the chunk-feel.
  • ChunkClaim — chunk-based, FOSS-likely; fallback if LCP license fails.

13. TAB (tablist / scoreboard / nametags)

Field Value
Current TAB by NEZNAMY
License verify — listed on GH but check
Source https://github.com/NEZNAMY/TAB
Vision fit Strong — GH-primary, no telemetry, free

Alternatives:

  • FeatherBoard — paid, closed → reject
  • AnimatedTabs / TabPrefix — feature subset only
  • MyScoreboard — scoreboard only

Verdict: Keep. Best feature/license tradeoff.


14. ProtocolLib (protocol library)

Field Value
Current ProtocolLib by dmulloy2 + contributors
License GPL-2.0
Source https://github.com/dmulloy2/ProtocolLib
Vision fit Strong — GPL, GH, but heavy; many plugins demand it

Alternatives:

Verdict: Evaluate dropping ProtocolLib in favor of PacketEvents. GrimAC already uses PacketEvents. If we can find PacketEvents-based forks of plugins currently demanding ProtocolLib, we shrink the dep tree. Phase 4 task.


15. Vault (economy/perms abstraction)

Field Value
Current Vault by MilkBowl
License LGPL-3.0
Source https://github.com/MilkBowl/Vault
Vision fit Strong — LGPL, GH, but old (2016 era API)

Alternatives:

Verdict: Swap to VaultUnlocked. Fork with same API surface but modernized. Treasury alone won't cover non-econ plugins demanding Vault.


16. LoginSecurity (offline-mode auth)

Field Value
Current LoginSecurity 3.3.1 (lenis0012 archived; Sytm fork)
License GPL-3.0
Source original archived; forks unclear
Vision fit Weak — upstream dead, fork unclear, security-critical

Critical feature requirement (from operator): plugin must teleport unauthenticated players to spawn during login. Reason: prevents base-coord leaks via screenshot/glance/screen-share by anyone who joins w/ a stolen username before typing /login. This is non-negotiable for cracked-server gameplay safety.

Alternatives evaluated against this requirement:

Plugin Teleports unauth → spawn? License Active Notes
AuthMe Reloaded YesteleportUnAuthedToSpawn: true config option GPL-3.0 active https://github.com/AuthMe/AuthMeReloaded
FastLogin No (premium-passthrough flow) LGPL-3.0 active Different use case
xAuth Yes (old impl) abandoned dead reject
nLogin Yes closed n/a reject
LibreLogin Yes (proxy-side) GPL-3.0 active https://github.com/kyngs/LibreLogin — Velocity/BungeeCord focused; may be overkill for single-server but FOSS-aligned

AuthMe-specific config to match LoginSecurity behavior:

# config.yml
restrictions:
  teleportUnAuthedToSpawn: true       # the critical feature
  ProtectInventoryBeforeLogIn: true   # extra safety
  allowMovement: false                # block all movement until /login
  noTeleport: true                    # block /tp until authed
  timeout: 60                          # kick after 60s of no /login

Verdict: Swap to AuthMe Reloaded. Same critical feature, active maintenance, FOSS, security-audited. LoginSecurity is end-of-life and forks are murky. High priority because this is auth + base-coord protection.


17. ComfyWhitelist (whitelist)

Field Value
Current ComfyWhitelist by etil2jz
License TBD — verify
Source TBD — likely Hangar/GH
Vision fit Conditional Keep if license verifies as FOSS

Critical feature requirement (from operator): plugin must apply whitelist changes without server restart or /reload, and must work on cracked/offline-mode servers without Mojang API lookups.

Why native /whitelist is insufficient on this server:

Vanilla /whitelist add <name> on an offline-mode server:

  1. Tries to look up the player's UUID via Mojang API.
  2. If Mojang lookup fails (network blip, Mojang down, player has no premium account): server may store wrong UUID, no UUID, or refuse to add.
  3. Cracked players have offline-derived UUIDs (OfflinePlayer:<name> hash), which don't match Mojang's online UUID. Whitelist comparison fails on join.
  4. Some Paper/Purpur configs require restart to fully apply whitelist changes when UUID lookup is involved.

ComfyWhitelist (and similar name-based whitelist plugins) sidestep all of the above:

  • Whitelist by name string, not UUID.
  • No Mojang API calls — fully local, fully offline-safe.
  • Changes apply instantly, no restart, no /reload.
  • Aligns w/ "Microsoft-free" mission (no Mojang dependency for whitelist auth).

Alternatives that also satisfy these constraints:

Plugin Name-based? No Mojang call? Hot-reload? License Source
ComfyWhitelist yes yes yes TBD TBD
Native /whitelist no (UUID) no partial n/a n/a
AdvancedWhitelist varies varies yes GPL Hangar
Whitelist (by mxstr) yes yes yes MIT https://github.com/mxstr/Whitelist
Custom 50-line plugin yes yes yes MIT self-host

Verdict: Keep ComfyWhitelist — features (name-based + hot-reload + offline-safe) are mission-critical. TODO: verify ComfyWhitelist license is FOSS. If proprietary or unclear → swap to a confirmed-FOSS name-based whitelist plugin (like the mxstr one) preserving all three features.

Note for documentation: add to docs/plugins/comfywhitelist.md an explicit "why we use this over native" rationale so future maintainers don't drop it.


18. MarriageMaster (social)

Field Value
Current MarriageMaster by DerFlash
License TBD (likely Spigot resource license)
Source https://www.spigotmc.org/resources/marriagemaster.19273/ — Spigot only
Vision fit Weak — Spigot-only acquisition, no GH presence found, license unclear

Alternatives:

  • SimpleMarriage (FOSS, less feature) — find GPL alternative
  • Ditch entirely — niche feature, low priority

Verdict: Audit: is this feature widely used by your players? If yes, find a GPL alternative or fork DerFlash's plugin under FOSS license (if license permits). If no, drop.


19. PhantomSMP (phantom rebalance)

Field Value
Current PhantomSMP by Lielay9
License TBD (Spigot resource)
Source Spigot only
Vision fit Weak

Alternatives:

  • PhantomLight — alternative Spigot resource, license TBD
  • Native Paper config — paper-world-defaults.yml has phantom-spawn knobs
  • DataPack — vanilla solution, no plugin needed

Verdict: Replace with native Paper config + datapack. Removes plugin dep entirely. Your players won't notice the difference if tuned well.


20. HelpCommand (custom /help)

Field Value
Current HelpCommand by Slimerblue22
License TBD
Source Spigot only
Vision fit Weak — easy to drop

Alternatives:

  • Native Bukkit /help — built-in
  • HelpCMD — alternative
  • commands.yml — Bukkit's built-in alias system covers most use cases

Verdict: Drop. Use native /help + customize via commands.yml (already in repo).


21. ProAntiTab (tab-completion filter)

Field Value
Current ProAntiTab by RayzsYT
License GPL-2.0-or-later (verified via Modrinth 2026-04-27)
Source https://github.com/RayzsYT/ProAntiTab
Modrinth https://modrinth.com/plugin/proantitab
Vision fit Excellent — GPL, GH-primary, free, supports Paper/Purpur/Velocity/Folia

Earlier note corrected: Initially flagged as "likely premium BoomEaro" — that was wrong. Real author is RayzsYT, plugin is FOSS, free, well-maintained.

Features that justify keeping:

  • Hide commands from tab-complete based on permission
  • Block plugin-detection hacks (spoofing, namespace probing)
  • Custom F3 server brand (cosmetic, no info leak)
  • Whitelist/blacklist command modes
  • Sub-argument blocking (granular command visibility)
  • PlaceholderAPI integration, MiniMessage formatting
  • Group-based permission system

Verdict: Keep ProAntiTab. No swap needed. Aligned with mission, GPL FOSS, GH source-of-truth, free.


Already removed (vision-aligned)

Plugin Reason Replacement
Lands Paid, closed-ish LandClaimPlugin (verify FOSS)
LitePlaytimeRewards Dead upstream TBD or drop
CosmicGuard Premium continuous GrimAC covers anti-cheat

Summary table

# Plugin Status Action
1 LuckPerms Keep
2 PlaceholderAPI Keep Evaluate MiniPlaceholders Phase 4
3 EssentialsX Keep Long-term: split into modular FOSS (HuskHomes etc)
4 WorldEdit Swap → FAWE High pri (perf + still GPL)
5 Simple Voice Chat Keep
6 MiniMOTD Keep
7 SkinsRestorer Keep Phase 2: self-hosted skin server
8 CoreProtect-CE Keep (acknowledged license exception) Reliability > purity per operator decision
9 GrimAC Keep
10 spark Keep
11 DiscordSRV Keep + add Matrix bridge High pri (FOSS comm channel)
12 LandClaimPlugin Verify license, possibly swap → GriefPrevention High pri
13 TAB Keep (verify license) Med pri verify
14 ProtocolLib Keep, evaluate PacketEvents-only future Phase 4
15 Vault Swap → VaultUnlocked Med pri
16 LoginSecurity Swap → AuthMe Reloaded High pri (auth)
17 ComfyWhitelist Drop → native /whitelist Low pri
18 MarriageMaster Audit usage, drop or replace Low pri
19 PhantomSMP Drop → native config + datapack Low pri
20 HelpCommand Drop → native /help Low pri
21 ProAntiTab Keep (GPL-2.0-or-later, FOSS, free, GH)

High-priority swap order (proposed)

  1. LoginSecurity → AuthMe Reloaded — security-critical, dead upstream
  2. Verify ProAntiTab + LandClaimPlugin licenses — drop/swap if non-FOSS
  3. WorldEdit → FAWE — perf win, drop-in
  4. Vault → VaultUnlocked — modernization
  5. Add Matrix bridge for chat — uses existing Tuwunel homeserver
  6. CoreProtect-CE → Prism — license cleanup (do after world stable, harder migration)
  7. Drop ComfyWhitelist, HelpCommand, PhantomSMP — consolidate to native
  8. Phase 4 deep refactor: EssentialsX split, ProtocolLib evaluation, MiniPlaceholders eval

Each swap = a PR + a docs/migrations/<from>-to-<to>.md doc.