Welcome to the Hangar Open Beta. Please report any issue you encounter on GitHub!
Modern Essentials. Fully customizable with powerful admin tools and a modular system. One plugin to replace them all.
This release is focused on bugfixes around /rtp, localization, and quit-time resource leaks. It also ships a versioned config upgrader and optional anonymous telemetry.
Bugfixes
/rtp
- Failed searches no longer hammer the server. Retries now run via
runTaskLaterwith a configurable delay instead of immediate recursion. findSafeLocationoperates on the chunk that was already loaded async. No more sync chunk loads during search.RTP.MaxTriesdefault lowered from 20 to 8 (matches the new, more honest retry logic).- New config key
RTP.RetryDelayTicks(default 5).
Teleports & Homes
/homeand/tpacountdowns are now properly cancelled when a player quits. Previously the scheduler task kept running and produced "player not online" spam in the log.- Cooldown maps are cleaned up on quit (no more memory leak after many reconnects).
- Home-load errors now go through the plugin logger instead of
printStackTrace(). Cleaner log files.
MOTD / Join message
- If neither
ServerListMOTD.Enablednor the legacyServerMOTD.Enabledis set, the MOTD code path is fully skipped. Previously the server could push an empty MOTD line. - Empty
JoinMessage.Linesare no longer sent to players.
Localization
- HackDetection kicks and staff alerts now come from
messages.yml. Previously the strings were hardcoded and ignored the player's language. getClientName()returns a localized "Unknown" instead of a hardcoded "Unbekannt".- Maintenance kick, ban kick, outdated-client kick, server-full kick and whitelist kick all use the affected player's locale instead of the server default.
- Setup banner for the first OP join, StarterKit welcome and every home message now route through the per-player locale path.
- BAN console logs are normalized to English (previously a mix of German and English).
AutoUpdater
- Logger strings normalized to English.
- New reminder: while an update is pending, the plugin writes a warning to the log every
Update.PendingReminderMinutes(default 60). Stops a found update from being forgotten.
New
Versioned config upgrader
config.yml,messages-*.yml, anddata.ymlnow carry aConfigVersion. On startup theConfigUpgradermigrates older files automatically.- First migration: the old hardcoded default names for StarterKit items (German "Starter-Schwert" etc.) are removed so the new localized
nameKeynames take effect. - A backup of each config is written before any migration runs.
StarterKit
- Items now support
nameKeyfor localized display names. Staticnameis still accepted as a fallback. - The default kit no longer carries hardcoded German names.
Anonymous telemetry
- Optional heartbeat (default on,
Telemetry.Enabled): once per hour the plugin sends anonymous usage data (version, player count, uptime). No player data, no IPs, no content. Can be opted out at any time via config. - Optional error reporting (default off,
ErrorReporting.Enabled): when enabled, MuteEssentials stack traces are anonymized (UUIDs, IPs, hostnames stripped) and sent to the maintainer. Rate-limited to one report per error class per hour.
Config diff
ConfigVersion: 1
ErrorReporting:
Enabled: false
Telemetry:
Enabled: true
RTP:
MaxTries: 8 # was 20
RetryDelayTicks: 5 # new
Update:
PendingReminderMinutes: 60 # new
Upgrade notes
Drop in the new jar and restart the server. The ConfigUpgrader pulls existing configs forward automatically and writes backups as config.yml.bak-<timestamp> before touching anything. No manual edits required.
Information
| Published on | May 17, 2026 |
|---|---|
| Downloads | 1 |
Platforms
Paper (1.21-26.1.2)
Dependencies
Paper