COWMODSКаталог модов

HomeLimiter

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 match the EssentialsX limits.

Автор: itsogge2301обновлён 4 апр. 2026 г.
УправлениеУтилиты

Описание

HomeLimiter

Overview

HomeLimiter works with EssentialsX and LuckPerms to automatically enforce player home limits based on their highest active permission group. When a player is promoted or downgraded, the plugin checks how many homes their new rank allows and adjusts accordingly. This ensures players never exceed the number of homes permitted by their current rank — and if their limit increases again later, their homes are automatically restored. HomeLimiter also supports existing servers — all players are validated on startup to make sure their home count matches their rank.


How It Works

  • Home limits are read directly from EssentialsX's sethome-multiple config (no duplicate configuration needed)
  • The plugin checks the player's highest matching LuckPerms permission (essentials.sethome.multiple.<key>)
  • When a player's rank changes, their new limit is applied instantly
  • On server startup, all players are automatically validated
  • If a player exceeds their limit, the oldest homes are locked — the most recently created homes are always kept

Smart & Safe Locking

  • Oldest homes are locked first; newest homes are always preserved
  • Homes without timestamps (set before installation) are sorted Z → A as a tiebreaker
  • Protected home names (like home) are never locked
  • Locked homes are stored and restored automatically if the player's limit increases again

Only the exact number of excess homes are locked — nothing more, nothing less.


Example

If the VIP rank allows 5 homes and a player is downgraded to a rank that allows only 2 homes, the 3 oldest homes are locked automatically. If the player is later re-promoted to VIP, those same 3 homes are restored — no data is lost. No manual action required.


Why Use This Plugin?

  • Prevents abuse of temporary ranks
  • Fully automatic — no staff intervention needed
  • Locked homes are safely restored if a player's rank increases again
  • Works on already established servers with no migration needed
  • Keeps progression balanced and fair
  • Lightweight and performance-friendly
  • Designed specifically for EssentialsX home systems

Perfect for servers that use EssentialsX for rank-based perks and want reliable, hands-free home limit enforcement.


Requirements

  • EssentialsX 2.20+
  • LuckPerms 5.4+
  • Java 21+
  • Spigot / Paper 1.21–26.1+

Галерея

Banner

Последние версии

Все версии →
release

HomeLimiter 2.0

2.0
4 апр. 2026 г.137Minecraft: 1.21, 1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 26.1, 26.1.1, 26.1.2, 26.2paper, purpur, spigot
Скачать
Что нового
## 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+
release

HomeLimiter 1.2

1.2
4 апр. 2026 г.32Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9paper, purpur, spigot
Скачать
Что нового
# 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.
release

HomeLimiter 1.1

1.1
3 апр. 2026 г.20Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9paper, purpur, spigot
Скачать
Что нового
# 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.
release

HomeLimiter 1.0

1.0
21 февр. 2026 г.40Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9paper, purpur, spigot
Скачать
Что нового
## 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