Configuration
HackedServer uses TOML configuration files for all settings. After the first launch, configuration files are generated in the plugin’s data folder.
Configuration Files Overview
| File | Purpose |
|---|---|
config.toml | Main plugin settings |
actions.toml | Define what happens when clients are detected |
generic.toml | Configure client/mod detection rules |
lunar.toml | Lunar Client Apollo integration settings |
forge.toml | Forge/NeoForge mod detection settings |
languages/english.toml | Customizable messages |
Main Configuration (config.toml)
[settings]
# Name of a language file without extension, english.toml by default
language = "english"
# Enable logging of all CustomPayload packets for debugging purposes
debug = false
# If the same payload is sent twice, only the first triggers a check
skip_duplicates = false
# Automatically download required dependencies (like ProtocolLib) if not present
auto_download_dependencies = true
# Delay in ticks before executing actions after a check is triggered
action_delay_ticks = 20Settings
| Option | Type | Default | Description |
|---|---|---|---|
language | string | "english" | Language file to use (without .toml extension) |
debug | boolean | false | Log all custom payload packets for debugging |
skip_duplicates | boolean | false | Skip duplicate payload messages from same player |
auto_download_dependencies | boolean | true | Automatically download ProtocolLib if not installed |
action_delay_ticks | integer | 20 | Delay in ticks before executing actions (helps with Purpur compatibility) |
Enable debug mode to see all incoming custom payload packets in the console. This is helpful when adding custom checks.
If you prefer to manage ProtocolLib manually, set auto_download_dependencies to false. The action_delay_ticks setting ensures players are fully connected before kicks or commands execute, which resolves issues on some server forks like Purpur.
Actions Configuration (actions.toml)
Actions define what happens when HackedServer detects a modified client. You can create multiple actions and reference them in your checks.
[alert]
send_alert = "<red><player> <gray>just logged in using <red><name><gray> !"
[alert.commands]
console = []
player = []
opped_player = []Action Properties
| Property | Description |
|---|---|
send_alert | Message sent to staff with hackedserver.alert permission |
commands.console | Commands executed as console |
commands.player | Commands executed as the player |
commands.opped_player | Commands executed as the player with OP permissions |
Placeholders
Use these placeholders in alert messages and commands:
| Placeholder | Description |
|---|---|
<player> | The player’s name |
<name> | The detected client/mod name |
Example: Kick and Alert
[kick_alert]
send_alert = "<red><player> <gray>was kicked for using <red><name><gray>!"
[kick_alert.commands]
console = ["kick <player> Hacked clients are not allowed!"]
player = []
opped_player = []
[silent_alert]
send_alert = "<yellow><player> <gray>is using <yellow><name><gray> (no action taken)"
[silent_alert.commands]
console = []
player = []
opped_player = []Generic Checks (generic.toml)
The generic checks file configures what clients and mods HackedServer detects. Each check monitors specific plugin message channels.
# Enable/disable all generic checks
enabled = true
[labymod_v3]
actions = ["alert"]
channels = ["labymod3:main"]
name = "Labymod v3"
[forge]
actions = ["alert"]
channels = ["MC|Brand", "minecraft:brand"]
message_has = "forge"
name = "Forge"Check Properties
| Property | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Display name shown in alerts |
channels | array | Yes | Plugin message channels to monitor |
message_has | string | No | Only trigger if message contains this text |
actions | array | Yes | List of action IDs to execute |
Pre-configured Checks
HackedServer comes with detection for many popular clients and mods:
Clients
Hacked Clients:
- Cracked Vape
- Easy Minecraft Client
- Winterware
PvP Clients:
- Lunar Client
- Badlion Client
- Feather Client
- PvPLounge Client
- Hyperium
Utility Clients:
- Labymod (v1, v2, v3)
- 5zig Mod
- Remix
Lunar Client Integration (lunar.toml)
HackedServer 3.12.1 adds native Lunar Client support. This enables detection of all mods installed through Lunar Client, including their versions and types.
# Mark players using Lunar Client
mark_lunar_client = true
# Mark players using Fabric mods via Lunar
mark_fabric = true
# Mark players using Forge mods via Lunar
mark_forge = true
# Actions to execute when Lunar Client is first detected
actions = ["alert"]
# Per-mod actions - configure specific actions for individual mods
[mod_actions]
# "sodium" = ["alert"]
# "litematica" = ["kick"]Lunar Configuration Options
| Option | Type | Default | Description |
|---|---|---|---|
mark_lunar_client | boolean | true | Track Lunar Client usage |
mark_fabric | boolean | true | Track Fabric mods loaded via Lunar |
mark_forge | boolean | true | Track Forge mods loaded via Lunar |
actions | array | ["alert"] | Actions triggered on Lunar detection |
mod_actions | table | {} | Per-mod action configuration |
For detailed configuration including per-mod actions and advanced usage, see the dedicated Lunar Client page.
Forge/NeoForge Mod Detection (forge.toml)
HackedServer 3.13.0 detects Forge and NeoForge mods using a fake Forge handshake.
# Enable Forge/NeoForge mod detection
enabled = true
[settings]
mark_forge = true
mark_neoforge = true
show_mods_in_check = true
show_mod_versions = false
[actions]
forge = []
neoforge = []
[mod_actions]
# "forgewurst" = ["alert", "kick"]
[category.whitelisted]
color = "<green>"
mods = ["betterfoliage", "sodium", "iris", "optifine"]
[category.blacklisted]
color = "<red>"
mods = ["forgewurst", "forgehax", "wurst", "baritone"]Forge Configuration Options
| Option | Type | Default | Description |
|---|---|---|---|
enabled | boolean | true | Enable Forge/NeoForge detection |
mark_forge | boolean | true | Mark players using Forge |
mark_neoforge | boolean | true | Mark players using NeoForge |
show_mods_in_check | boolean | true | Show mod list in /hs check output |
actions.forge | array | [] | Actions when Forge is detected |
actions.neoforge | array | [] | Actions when NeoForge is detected |
mod_actions | table | {} | Per-mod action configuration |
For detailed configuration including per-mod actions and example setups, see the dedicated Forge/NeoForge page.
Language Files (languages/*.toml)
Customize all plugin messages by editing the language file. The default is english.toml.
[general]
prefix = "<gradient:#2F80ED:#FFCAC9>HackedServer <#282B3F>| "
[logs]
loaded = "<prefix><#55ffa4>Successfully enabled"
debug_message = "<#93291E>HS-Debug <#282B3F>| <#facc43><player> <#b8bbc2>channel<#6f737d>: \"<#facc43><channel><#6f737d>\", <#b8bbc2>message<#6f737d>: \"<#facc43><message><#6f737d>\""
[commands]
help = """
<prefix><#b8bbc2>Available commands
<hover:show_text:\"<gray>fill reload command\"><click:SUGGEST_COMMAND:/hackedserver reload ><#6f737d>/hs \
<#b8bbc2>reload</click></hover> <#6f737d>»<#b8bbc2> reload the plugin<reset>
<hover:show_text:\"<gray>fill give command\"><click:SUGGEST_COMMAND:/hackedserver check ><#6f737d>/hs \
<#b8bbc2>check <#43c9fa>target</click></hover> <#6f737d>»<#b8bbc2> check player detected mods<reset>
<hover:show_text:\"<gray>fill list command\"><click:SUGGEST_COMMAND:/hackedserver list ><#6f737d>/hs \
<#b8bbc2>list</click></hover> <#6f737d>»<#b8bbc2> list all spotted players<reset>
"""
reload_success = "<prefix><#55ffa4>Successfully reloaded"
check_no_mods = "<prefix><#55ffa4> No mods detected"
check_mods = "<prefix><#55ffa4> Detected mods:"
mod_list_format = "<#6f737d>- <#facc43><mod>"
check_players = "<prefix><#55ffa4> Spotted players:"
check_players_empty = "<prefix><#55ffa4> No chocolate players spotted"
player_list_format = "<#6f737d>- <#facc43><player>"MiniMessage Format
HackedServer uses MiniMessage for rich text formatting. Supported features include:
- Colors:
<red>,<blue>,<#RRGGBB> - Gradients:
<gradient:#color1:#color2> - Hover text:
<hover:show_text:"text"> - Click actions:
<click:SUGGEST_COMMAND:/command> - Formatting:
<bold>,<italic>,<reset>
Reloading Configuration
After editing any configuration file, use /hs reload to apply changes without restarting the server.
The reload command re-reads all TOML files and re-registers all players. This ensures changes take effect immediately.