
PunisherX
PunisherX: Advanced penalty system for Minecraft servers with warnings, mutes, jail, and bans.
PunisherX 1.6.1-SNAPSHOT
release31 января 2026 г.Changelog
Functional changes
- Added 2 new placeholders
punishment_history_listandactive_punishments_list - Added support for /reload and /minecraft:reload commands
- Added customization for Discord Webhook (#62)
# Discord webhook settings.
webhook:
discord:
enabled: false
url: "YOUR_WEBHOOK_URL_HERE"
username: ""
avatar-url: "" # URL, Minecraft nick/UUID (mc-heads), or base64 PNG data
colors:
# Accepts integers (Discord decimal), hex with #/0x, or common names like red/orange/blue/black/white.
ban: 9447935
mute: 15158332
warn: 16753920
kick: 16776960
jail: 9447935
default: 8421504
embed:
title: "Event Title"
description: "Administrator {operator} {type} {player} for {reason} for {time}"
url: "https://example.com"
timestamp: "" # ISO-8601 or "now" for current time
thumbnail-url: "" # URL, Minecraft nick/UUID, or base64 PNG data
image-url: "" # URL, Minecraft nick/UUID, or base64 PNG data
author:
name: "Author Name"
icon-url: "" # URL, Minecraft nick/UUID, or base64 PNG data
footer:
text: "Footer text"
icon-url: "" # URL, Minecraft nick/UUID, or base64 PNG data
fields:
- name: "Player"
value: "{player}"
inline: true
- name: "Operator"
value: "{operator}"
inline: true
- name: "Type"
value: "{type}"
inline: true
- name: "Reason"
value: "{reason}"
inline: false
- name: "Time"
value: "{time}"
inline: true
- name: "ID"
value: "{id}"
inline: true
- Added basics placeholders to Discord webhooks
- Added penalty ID to notification message
- Added server-scoped punishment filtering - full support
# If your server is on a server network, such as Velocity,
# set the mode name to associate any penalties issued with that specific server.
# This means that a penalty received on a server like Survival will not be applied to games like SkyBlock, etc.
# The default setting is "network" and means that the penalty received will apply to all servers on the network.
server: "network"
Technical changes:
- Added LeavesMC support
- Added the ability to restore cache entries for jail from the database.
- Added backup for MC-Head without access
- Refactor duplicated code in command files
- Added protection against unfinished database connection
- Fixed
addPunishmentargument in DatabaseHandler - Updated all dependencies and libraries
Bug fixes:
- HOTFIX: Fixed jail system unjailing issue (#65)
- HOTFIX: Fixed warning limit configuration (#66)
- HOTFIX: Fixed IllegalStateException error
- HOTFIX: Fixed unexpected error on
/prx reload - HOTFIX: Fixed issue with command re-registration after
/prx reload - HOTFIX: Fixed
/prx reloadcommand on Folia - HOTFIX: Fixed webhook<->permissions correlations
- Fixed argument suggestions for punishes commands
- Fixed permission key for panel command access
Experimental:
- Access to experimental commands has been completely removed until further work is done.
PunisherX 1.6.0
release9 декабря 2025 г.Changelog
Functional changes:
- Added full support for Minecraft 1.21.11.
- Extended configuration for releasing players after a sentence.
/setspawnwas replaced with/setunjailto avoid conflicts with EssentialsX, FoliEssentials, and similar plugins.config.ymlnow lets you choose one of five spawn modes:unjail– coordinates defined inunjail_location(via/setunjail).last_location– the player position before receiving the punishment.bed– the player's last bed.essx– spawn point from EssentialsX/FoliEssentials (/setspawn).world– the default world spawn (/setworldspawn).
- New configuration layout:
unjail: unjail_location: world: "world" x: 0.0 y: 64.0 z: 0.0 yaw: 0.0 pitch: 0.0 spawn_type_select: set: unjail
- Expanded automatic actions that can run when a punishment ends.
/warnnow executes commands based on the warning count:actions: kicked: - "eco take {player} 1000" mute: - "eco take {player} 500" warn: count: 3: "kick {player} You have received your 3rd warning." 4: "ban {player} 30m You have received your 4th warning." 5: "ban {player} 5h You have received your 5th warning." 6: "ban {player} 7d You have received your 6th warning." 7: "ban {player} 30d You have received your {warn_no}th warning." 10: "ban {player} You have received your 10th warning."
- Added an action-bar countdown for active punishments (mute/jail) with configurable settings:
notifications: punishment_bar: # Show the countdown in the action bar. enabled: true # Update frequency (20 ticks = 1 second). period_ticks: 20 - Protected
ModernLoginListener.onPreLoginfrom overwriting whitelist decisions. - Improved compatibility with Folia forks.
- Added a new language file translated by Not QauT (https://github.com/vQauT).
- Moved heavy operations off the main thread:
- GeoIP lookups are now async.
PunishmentCheckerperforms async queries.- Folia reload runs in an async task.
- Added new API methods.
- Added Sync-Bridge modules for both BungeeCord and Velocity.
- Introduced a diagnostic command.
- Version 1.6.0 debuts an automatic
config.ymlmigration system:- The plugin checks the config version on startup and upgrades it if needed.
- Custom administrator values are preserved.
- Missing options are added with defaults, and deprecated ones are removed.
- Note: a backup of the original config is created automatically before any change.
Technical changes:
DatabaseHandlernow targets SyntaxCore 1.2.5-SNAPSHOT.- Supports asynchronous database operations.
- Improved error handling and logging.
- Optimized queries to reduce overhead.
- Added MSSQL support.
- Added a server-type detection utility.
- Migrated to the standalone
pl.syntaxdevteam:messageHandlercomponent. - Centralized the warning system into a dedicated class.
- Implemented shared platform components and a safe teleport service.
- Extracted material logic into its own class.
- Punishment commands now rely on placeholders and execute configured actions.
- Libraries and dependencies updated to the latest versions.
Bug fixes:
- HOTFIX: fixed argument suggestions for all commands.
- HOTFIX: corrected the usage message for
/setunjail. - HOTFIX: resolved teleport logic issues and unsafe destination handling.
- HOTFIX: removed a critical
/whitelistissue (duplicateevent.allow()inModernLoginListener). - HOTFIX: repaired H2 database connections.
- HOTFIX: fixed a bug that removed a mute too early.
- Eliminated an occasional unknown registry key error.
- Fixed sporadic plugin library loading problems.
- Removed duplicate entries for online/offline players in the GUI.
- Corrected IP and geolocation displays.
- Solved Folia vs. Paper API dependency conflicts.
- Fixed
UninitializedPropertyAccessExceptionduring reload.
Experimental (testing phase):
- Added a graphical interface for managing punishments (kick, ban, mute, etc.).
- Data is loaded asynchronously to avoid GUI-induced lag.
- Includes a player nickname search.
- Supports sorting by online/offline/punishment status.
- Added /report command
PunisherX 1.5.2
release13 ноября 2025 г.Changes:
- HOTFIX: Fixed critical error loading plugin libraries
- HOTFIX: Fixed a major whitelist conflict bug
- Added additional security measures in ModernLoginListener.onPreLogin in case of overriding whitelist decisions
- Fixed logic errors for teleportation
- Corrections have been made for further development for 1.6.0
PunisherX 1.5.1
release9 октября 2025 г.Changes:
- Added support for 1.21.10
- Libraries and dependencies updated to the latest versions.
Caution!
If you are upgrading from a version other than 1.5.0, be sure to read the important changes related to language file support! CLICK!
PunisherX 1.5.0
release8 октября 2025 г.What's Changed
Functional changes:
-
Added support for the latest version 1.21.9
- Added version compatibility management
- Added appropriate checks and methods to maintain compatibility between Minecraft versions 1.20.6 and 1.21.9
-
Updated placeholder formatting in language files (messages_xx.yml) Changed from
{}to<>-
Twice the messaging performance by using the built-in TagResolver for the MiniMessage format
-
Attention! Due to the use of the MiniMessage format for Placeholders, it is necessary to work with the previous version of the language files.
After starting the server, the following commands are required:
/langfix- for a quick update to the new version of the messages_xx.yml file/prx reloador restart the server to reload the correct placeholders- You can also skip the previous steps and simply delete the
langfolder from the PunisherX directory. The plugin will generate a default file with the latest version.
Using
/prx reloaddoes not guarantee reloading messages downloaded "permanently" at plugin startupNever use
/reloadcommands to attempt to reload a plugin. This can cause serious performance issues for the plugin and the entire server.
-
-
Added "all" argument for use instead of player name in
/kickcommand to kick all players at once. -
The config.yml file has been rebuilt to be more intuitive and adapted to the latest improvements.
-
Added the ability to set an alias for the setspawn command
-
Full integration with the getSmartMessage method providing greater flexibility in notification settings for kick, mute, ban, jail, etc. commands.
Usage example in messages_en.yml:
broadcast: "<dark_gray>Player <gray><player></gray> was jailed for <gray><reason></gray> for <gray><time></gray></dark_gray>"lub
broadcast: - "<dark_gray>*************** Your Server Name *************** </dark_gray>" - "" - "<red> Player <white><player></white> was jailed</red>" - " Reason: <white><reason></white>" - " Duration: <white><time></white>" - "" - "<dark_gray>*************************************************** </dark_gray>" -
Restored functionality for "auto-download"
- Added search for the latest version in several locations.
- Added the ability to set where to search for and download the latest plugin version.
New settings structure in config.yml:
update: check-for-updates: true auto-download: false hangar: true github: true modrinth: true -
Player cache data can now be stored in the database.
- Settings have been added to config.
playerCache: # Choose where player IP information is stored: "file" or "database" storage: "file" -
Improved handling of teleporting to and from prison.
- Added a check to ensure the destination is safe, and the entire process is fully asynchronous.
-
Added support for UK, IT and PT languages
Technical changes:
- Redesigned
/banipcommand handling logic (improved performance and efficiency) - Added plugin initialization in a separate class to improve code clarity and performance
- Improved plugin reload logic for the
/prx reloadcommand - Refactored PlayerJoinEvent handling and minor corrections
- Optimized login checks with asynchronous UUID cache
- Improved handling of teleporting to and from prison.
- Added a check to ensure the destination is safe, and the entire process is fully asynchronous.
- Refactored UUIDManager usage to Paper/Bukkit
- HOTFIX: "Failed to decrypt data" error
- HOTFIX: Fixed teleportation logic in jail commands
- HOTFIX: Fixed teleportation after jail sentence
- HOTFIX: Fixed a critical bug that blocked penalty escalations after using
/warn - FIXED: "The player had access to commands despite his prison sentence."
- FIXED: Fixed duplicate player exit messages on UNJAIL
- Updated all dependencies and libraries to their latest versions
- Many minor and major code fixes to improve plugin performance.
Other changes:
- Update actions/checkout action to v5 by @renovate[bot] in #39
- Update dependency gradle to v9 by @renovate[bot] in #40
- Update gradle/actions action to v5 by @renovate[bot] in #42
In testing phase (experimental – full functionality in a future version):
- Added GUI for managing players and punishments (kick, ban, mute, etc.
- Asynchronous data downloads minimize latency.
- Ability to search for players by nickname.
- Ability to sort players (online, offline, banned, muted, etc.).
- The DatabaseHandler class has been adapted to use the latest version of the SyntaxCore 1.2.5-SNAPSHOT authoring library.
- Added support for asynchronous database operations to minimize server lag.
- Improved error handling and logging for better debugging and maintenance.
- Optimized database queries for better performance and efficiency.
- Added support MSSQL database type
- Added migrateDatabase method
-
(Highly experimental) Added the ability to migrate from one database type to another
prx migrate <from> <to>. Supported types:sqlite,mysql,mariadb,postgresql,mssqlExample:
/prx migrate sqlite mysql
-
Full Changelog: https://github.com/SyntaxDevTeam/PunisherX/compare/v1.4.3...v1.5.0