Sueta

HomeLimiter

2.0

Automatically 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

·Plugin
  1. 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 issues
    Code
    - Replaced deprecated ChatColor API with Paper's Adventure API (LegacyComponentSerializer) - formatMessage() now returns Component instead of String - All sendMessage(String) calls updated to sendMessage(Component) - Added SECTION serializer for §-coded inline messages - Added AMPERSAND serializer for &-coded config messages - Added msg() helper for clean inline message construction
    Build
    - 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 - Updated maven-compiler-plugin: 3.11.0 → 3.13.0 - Fixed malformed <n> tag in pom.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+
    90 downloads
  2. 1.2HomeLimiter 1.2Apr 4, 2026

    Changelog

    UpdateChecker

    Bug Fix — Spurious updates on latest version
    parseVersion() now strips a leading v/V before parsing. Modrinth version strings like v1.2.3 were previously parsed as v1 → 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 the projectId instance field and its constructor assignment. The ID is now a private static final constant (PROJECT_ID = "eT7gbibF"). The dead isBlank() / "YOUR_MODRINTH_PROJECT_ID" guard in start() 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.
    14 downloads
  3. 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 /sethome on 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 IGNORE instead of INSERT 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 custom groups.* section in config.yml and picked the highest-weighted LuckPerms group. The new system reads directly from Essentials' own sethome-multiple config section and checks essentials.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 old enforce() 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=WAL and PRAGMA busy_timeout=5000 are 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 contextual QueryOptions (respecting world/gamemode contexts) when checking LuckPerms permissions, with a fallback to static options for offline players. - Re-enforce on LP data recalculate — LuckPerms' UserDataRecalculateEvent now triggers enforcement directly instead of going through a safeEnforce wrapper, simplifying the code path. - `/reload` now requires permission — the homelimiter.admin permission is checked before allowing a config reload. Previously any player could run it. - Tab completion now requires permission — tab completion for /hl reload is now gated behind homelimiter.admin as well. - Startup scan delay uses `long` — delay-ticks is now read as a long instead of int, preventing overflow on very large configured values.
    Code Cleanup
    - Removed unused findOfflineByName() helper method. - Removed unused import net.luckperms.api.model.group.Group. - Replaced the safeEnforce() wrapper with inline error handling in the async callback. - Replaced the LockedHome static class with a LockedHomeRecord record for DB mutation staging. - Orphan timestamp cleanup is now handled inline during enforcement instead of in a separate cleanupOrphans() method. - Added section comments throughout for readability.
    12 downloads
  4. 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 /sethome and /delhome * Protected homes support (e.g. default "home")

    Database

    * Stores home creation timestamps * Saves locked home locations safely * Automatically cleans up orphaned database entries
    29 downloads

Similar projects

Plugin →