1.3
Compatibility
Changes
v1.3 — The Stable Release
Released: 2026-04-24
This is the first stable release. It consolidates everything from the beta.3, beta.4, beta.5, and v1.0 milestones into one upload and marks JustPlugin's transition out of pre-release. Native Folia support is now official.
If you were running v1.2, this adds dozens of new features — Database backends (SQLite / MySQL / YAML), Jail, Kits, AFK, Mail, Nicknames, Tags, Player Vaults, Transaction History, Custom Events API, Maintenance Mode, Automated Messages, a new /permissions audit command, comprehensive staff logging with justplugin.log.* permissions, and a lot more.
Wiki & full docs: https://justplugin.liam.plus
Platform
- Native Folia support —
folia-supported: true, fullSchedulerUtilcompatibility layer, 75+Bukkit.getScheduler()calls migrated to Folia-safe variants, all synchronous teleports converted toteleportAsync(). Runs on Paper, Purpur, and Folia without config changes. - Java 21 required (unchanged).
New Features
Database
- Multi-backend storage — pick between SQLite, MySQL, or YAML in
database.yml. - HikariCP connection pooling (shaded and relocated).
- Switch backends without data loss — player data, economy, punishments, and more supported.
Player Vaults
/pv [number]— 54-slot virtual storage inventories separate from ender chests./pv <player> <number>— staff view of other players' vaults.- Configurable max vaults per player (default: 3), permission-based override (
justplugin.vaults.<number>). - Data saved on every close, quit, and auto-save. Disabled by default.
Transaction History
/transactions [player]— paginated GUI of every economy transaction.- Tracks 6 types: PAY, PAYNOTE_CREATE, PAYNOTE_REDEEM, ADDCASH, TRADE, API.
- Click a transaction for full details (time, amount, parties).
- Configurable retention (default 30 days) and max entries (default 500).
Jail System
/jail <player> [duration] [reason],/unjail,/setjail,/deljail,/jails,/jailinfo.- Multiple named jail locations, random selection, persistent across restarts.
- Works for offline players (jailed on next login).
- Full movement/command/interaction restriction while jailed.
Kit System
/kitGUI +/kitpreview,/kitcreate,/kitedit,/kitrename,/kitdelete.- Lifecycle management:
/kitpublish,/kitdisable,/kitenable,/kitarchive,/kitlist. - Per-kit permissions (
justplugin.kits.<name>), cooldowns, auto-equip armor. - Archive retention with configurable auto-delete.
AFK, Mail, Nicknames, Tags
/afktoggle + auto-AFK after idle timeout + optional idle kick./mail send|read|clear|clearall— offline mail with login notifications./nickwith MiniMessage formatting; granular color/format/rainbow permissions; min/max length validation.- Tag system with
/tagGUI,/tagcreate,/tagdelete,/taglist. Prefix or suffix positioning.
Backup & Export
/jpbackup export|import|list|delete— full plugin data snapshots.- All I/O runs asynchronously.
Offline Player Commands
/tpoff,/getposoff,/getdeathposoff,/invseeoff,/echestseeoff.
Skin System
/skin set|clearwith Mojang API lookup./skinban//skinunbanto block specific skin names.- Auto-applies stored skins on login; works for cracked players.
Maintenance Mode
- Full kick screen, MOTD override, server icon swap, LuckPerms group bypass.
- Cooldown with estimated end time and auto-disable option.
Automated Messages
- Broadcast rotating or single messages at intervals, specific times, or on-the-hour.
- 4 scheduling modes, per-message permission + world filters, custom prefix, sound effects, MiniMessage.
/automessage reload|list|toggle|send+automessages.ymlwith 8 examples.
Utility Commands
/near [radius]— staff command showing nearby players with distance, compass direction, coordinates, and clickable[TP](safe teleport). Excludes vanished players unless viewer hasjustplugin.vanish.see./repair [player]— repair item to full durability; separate self/other permissions./enchant <enchantment> [level]— apply enchantments, level 0 removes. Respects vanilla restrictions by default, bypassable via config or permission./permissions <player> [filter] [page]— staff debugging tool. Lists an online player's effective permissions, 10 per page, with clickable← Prev/Next →navigation, optional substring filter, and a hover tooltip identifying which plugin or attachment granted each permission. Permission:justplugin.permissions(defaultop).
Staff Action Logging
- New
justplugin.logparent permission (defaultop) grants all 14justplugin.log.*children — operators see every staff action in chat out of the box. - All 8
justplugin.announce.*punishment permissions flipped todefault: op— OPs see ban/mute/warn/kick/tempban announcements without needing a perms plugin. - Staff audit logging extended to previously silent admin commands:
/setjail,/deljail,/permissions,/jpbackup export|import|delete,/automessage reload|toggle|send,/tagcreate,/tagdelete, and every/kit*admin action. Every log entry includes the executing staff member, the action, and the full arguments.
AFK Notification Modes
- New
afk.announce-modeconfig option:everyone/staff/self/none. - Default is
self— AFK and return-from-AFK messages are private to the player. Change toeveryoneto restore public broadcasts. afk.auto-afk-secondsremains fully configurable (default 300s).- New
justplugin.afk.seepermission (defaultop) controls who receives notifications instaffmode. - Legacy
afk.broadcastboolean is still honored whenannounce-modeis unset (true → everyone, false → self).
Stats GUI
/stats— interactive stats inventory.
Spawn & Seed Protection
- Configurable spawn build radius (disabled by default, opt-in).
/seedblocking with staff notifications. Both bypassable via dedicated permissions.
Custom Join/Leave Messages
- 5 visibility modes: none, all, staff-only, op-only, group-based.
- Fully configurable templates.
Developer API
- 10 custom Bukkit events for add-on plugins — 6 cancellable (
PlayerBalanceChangeEvent,PlayerPunishEvent,PlayerTeleportRequestEvent,PlayerTradeEvent,PlayerJailEvent,KitClaimEvent) and 4 informational (PlayerUnjailEvent,PlayerAfkEvent,WarpCreateEvent,WarpDeleteEvent). - Defensive copies on all exposed data — no database access leaks.
- Full JavaDoc coverage.
Architecture
- Listener modularization — the monolithic
PlayerListenerwas split into 6 categorized sub-listeners (ConnectionListener,ChatListener,CombatListener,PlayerEventListener,ServerListener,InventoryListener). Zero behavioral changes;PlayerListeneritself is now just a shared state holder. ~710 lines → ~146 lines. - No duplicate event firing — the old monolith is no longer registered.
Performance & Security
- Async I/O — all file read/write operations run off the main thread.
- Thread safety throughout concurrent data access paths.
- Balance overflow protection in economy operations.
- Pay rate limiting to prevent spam abuse.
- Input sanitization on all user inputs.
- Teleport safety enhancements — improved hazard detection.
- IP ban subnets (CIDR) — ban entire ranges, e.g.
192.168.1.0/24. - Webhook retry logic — automatic retry with backoff on Discord webhook failures.
- Web editor CSRF protection — prevents cross-site request forgery.
- Web editor localhost-only by default with an auth token for API requests and rate limiting.
- Scoreboard flicker fix — eliminates flicker on updates.
- PlaceholderAPI cache optimization.
- Tab completion cache for better performance.
- Graceful shutdown — all data saved cleanly on stop.
Configuration
- New config files:
database.yml,automessages.yml, plustexts/kits.ymlandtexts/nick.yml. - New sections in
config.ymlforjail,kits,afk,mail,nick,tags,spawn-protection,seed-protection, and join/leave messages. - Config auto-migration — new settings are added automatically on load; existing user overrides are preserved.
Web Config Editor
- 25+ config files editable from the browser.
- All new configs (
database.yml,automessages.yml,texts/*.yml) included. - Localhost-binding + auth token + rate limiting + CSRF + sensitive-value redaction.
Fixes
- Fixed a stray character in the default
scoreboard.ymlthat causedInvalidConfigurationException: could not find expected ':'on first startup. plugin.ymlnow declareswebsite: https://justplugin.liam.plusso the wiki URL is discoverable via/plugins JustPlugin.
Previous releases
For the full history (what landed in 1.1, 1.2, and each beta), see CHANGELOG.md on the GitHub repository.
Thanks for running JustPlugin. Found a bug or want a feature? Open an issue on the GitHub repo or visit the wiki at justplugin.liam.plus.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:BNlQzN9d:laxhRy5d"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:BNlQzN9d:laxhRy5d"
}

