HomeLimiter
2.0Automatically enforces EssentialsX home limits when a player’s rank changes. If a player is downgraded and their new rank allows fewer homes, the plugin removes the most recently created homes to matc
2.0latestHomeLimiter 2.0Apr 4, 2026 v2.0 — Compatibility & Modernisation
Compatibility
- Raised minimum supported server version from 1.20 to 1.21 - Added support for MC 26.1 (Tiny Takeover) and newer year-based releases - Raised minimum Java version from 17 to 21 - Java 25 (required by MC 26.1) runs Java 21 bytecode without issuesCode
- Replaced deprecatedChatColorAPI with Paper's Adventure API (LegacyComponentSerializer) -formatMessage()now returnsComponentinstead ofString- AllsendMessage(String)calls updated tosendMessage(Component)- AddedSECTIONserializer for§-coded inline messages - AddedAMPERSANDserializer for&-coded config messages - Addedmsg()helper for clean inline message constructionBuild
- Updated Paper API dependency:1.20.4-R0.1-SNAPSHOT→1.21.4-R0.1-SNAPSHOT- Updated SQLite JDBC:3.45.1.0→3.47.1.0- Updatedmaven-compiler-plugin:3.11.0→3.13.0- Fixed malformed<n>tag inpom.xml(should have been<name>)Docs
- Updated plugin description to accurately reflect locking behaviour (homes are locked and restored, not permanently deleted) - Corrected description: oldest homes are locked, not newest - Clarified that limits are read from EssentialsX's config, not HomeLimiter's own - Updated requirements to reflect Java 21+ and Paper 1.21–26.1+1.2HomeLimiter 1.2Apr 4, 2026 Changelog
UpdateChecker
Bug Fix — Spurious updates on latest version
parseVersion()now strips a leadingv/Vbefore parsing. Modrinth version strings likev1.2.3were previously parsed asv1→0, making every release appear newer than the installed version and triggering a re-download even when already up to date.Refactor — Hardcoded Modrinth project ID
Removed theprojectIdinstance field and its constructor assignment. The ID is now aprivate static finalconstant (PROJECT_ID = "eT7gbibF"). The deadisBlank()/"YOUR_MODRINTH_PROJECT_ID"guard instart()was removed alongside it.Improvement — Side-by-side version log
Both the Modrinth version and the installed version are now logged before the comparison runs, making any future version string mismatches immediately visible in the console.1.1HomeLimiter 1.1Apr 3, 2026 HomeLimiter Changelog
---v1.1
Bug Fixes
- Fixed `/sethome` alias detection — the old version incorrectly listened for/ehome(which is the teleport alias) when tracking new home creation. It now correctly listens for/esethome. - Fixed home creation timestamps being overwritten — re-running/sethomeon an existing home used to reset its timestamp, which could cause the wrong homes to get locked when enforcing limits. The timestamp is now preserved on re-set (INSERT OR IGNOREinstead ofINSERT OR REPLACE). - Fixed locked home restoration losing original creation time — when a home was restored from the locked list, it was saved with the current time instead of the original creation time. The original timestamp is now carried through correctly. - Fixed `onDisable` not checking if connection is already closed — could throw an exception on shutdown in some cases.Improvements
- Overhauled home limit calculation — the old system read limits from a customgroups.*section inconfig.ymland picked the highest-weighted LuckPerms group. The new system reads directly from Essentials' ownsethome-multipleconfig section and checksessentials.sethome.multiple.<key>permissions in LuckPerms, making it fully compatible with existing Essentials setups without any extra configuration. - Enforcement is now fully async/main-thread safe — the oldenforce()ran entirely on the main thread, blocking it during DB reads. The new version choreographs work across threads: DB reads happen async, all Essentials API calls happen on the main thread, and DB writes are flushed async at the end. - Bulk DB timestamp loading — instead of querying the database once per home during enforcement, all timestamps for a player are now loaded in a single query upfront. - All DB mutations are batched — locking and restoration no longer write to the database mid-enforcement. Changes are collected and flushed in one async pass at the end, reducing DB contention. - SQLite WAL mode and busy timeout enabled —PRAGMA journal_mode=WALandPRAGMA busy_timeout=5000are now set on startup, allowing concurrent reads during writes and preventing instant failures on a locked write. - Context-aware permission queries — online players now use full contextualQueryOptions(respecting world/gamemode contexts) when checking LuckPerms permissions, with a fallback to static options for offline players. - Re-enforce on LP data recalculate — LuckPerms'UserDataRecalculateEventnow triggers enforcement directly instead of going through asafeEnforcewrapper, simplifying the code path. - `/reload` now requires permission — thehomelimiter.adminpermission is checked before allowing a config reload. Previously any player could run it. - Tab completion now requires permission — tab completion for/hl reloadis now gated behindhomelimiter.adminas well. - Startup scan delay uses `long` —delay-ticksis now read as alonginstead ofint, preventing overflow on very large configured values.Code Cleanup
- Removed unusedfindOfflineByName()helper method. - Removed unusedimport net.luckperms.api.model.group.Group. - Replaced thesafeEnforce()wrapper with inline error handling in the async callback. - Replaced theLockedHomestatic class with aLockedHomeRecordrecord for DB mutation staging. - Orphan timestamp cleanup is now handled inline during enforcement instead of in a separatecleanupOrphans()method. - Added section comments throughout for readability.1.0HomeLimiter 1.0Feb 21, 2026 Features
* Automatically enforces EssentialsX home limits based on LuckPerms group * Supports rank upgrades and downgrades instantly Excess homes are locked instead of permanently deleted* * Locked homes are automatically restored when rank is regained * SQLite database storage for safe persistence * Startup scan to enforce limits after server restart * Automatic config updater (adds new config options on update) * Supports/sethomeand/delhome* Protected homes support (e.g. default "home")Database
* Stores home creation timestamps * Saves locked home locations safely * Automatically cleans up orphaned database entries
Similar projects
Plugin →VeinMiner
Mine the whole vein on mining a single ore/block. Make the tedious mining experience to something satisfying and fun! FTB Ultimine alternative
99.3MSueta
Simple Voice Chat
A working voice chat in Minecraft!
76.8MSueta
Let Me Despawn
Improves performance by tweaking mob despawn rules. Say bye to pesky unintentional persistent mobs.
25MSueta
Chunky
Pre-generates chunks, quickly and efficiently
18.4MSueta
VeinMiner Enchantment
Veinminer Addon - Adds vineminer enchantment to enchanting tables. Only tools with the enchantment can veinmine
18MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta