premium banner
Silently checks players join and notifies staff of known hackers, griefers, and bad actors without touching any local ban data. Exposes a clean event API for developers to hook into ban status checks.

Description


For issues or suggestions, please raise them in the HBL Nexus discord HERE

Buy Me a Coffee at ko-fi.com


HBLCore - Hytale Ban List Core

Simple passive ban-status awareness for Hytale servers. Know exactly who is joining & their history on networked servers - no bans applied, no local data touched.

If you want in-game notifications when a known bad actor joins - without wiring up a full ban system - this is the plugin for you.

If you are a developer building a moderation plugin, HBLCore gives you a clean event hook to receive ban status on every join without having to implement the API yourself.


Getting Started

1. Activate

Run /hblcore auth and click the magic link. Your server is registered.

Example 2. Grant notify permission (Optional)

Give the HBLCore.notify permission to any staff rank. They will receive an in-game notification every time a player joins, showing their HBL status.

3. That's it

HBLCore runs silently in the background. No bans are applied. No local files are written to. Staff with the notify permission stay informed.


What HBLCore Does NOT Do

It is important to be clear about this:

  • It does not kick or disconnect any player
  • It does not write to bans.json, whitelist.json, or any server file
  • It does not manage warnings, bans, or moderation history locally
  • It does not override or replace any native server commands

HBLCore is purely an information layer. What you do with that information is up to you or the plugins consuming its events.


In-Game Notifications

When notify: true is set in config, staff with the HBLCore.notify permission receive a notification popup on every player join:

Status Notification
Clear Green - "[HBLCore] PlayerName - Clear"
Banned Red - "[HBLCore] PlayerName - BANNED - {reason}"
Pending Ban Orange - "[HBLCore] PlayerName - PENDING BAN - {reason}"
Whitelisted Green - "[HBLCore] PlayerName - Whitelisted"

Notifications are silent to players without the HBLCore.notify permission.


Configuration

Config is created automatically at HBLCore/config.json on first run.

{
  "APIKey": "YOUR_API_KEY_HERE",
  "notify": true,
  "BanReports": true
}
Field Type Default Description
APIKey string "YOUR_API_KEY_HERE" Your hytalebanlist.org API key. Set via /hblcore auth.
notify boolean true Send in-game status notifications to staff with HBLCore.notify.
BanReports boolean true Enable the /hblcore report command.

Commands

/hblcore auth

Registers this server with hytalebanlist.org. Opens a magic link - click it in your browser to complete activation. The API key is saved automatically.

Requires: HBLCore.auth

/hblcore report {time} {username}

Submits a report for a player without a reason. The API returns a magic link - open it to add reasoning, evidence, and complete the submission via the web UI. Nothing is applied locally.

Requires: HBLCore.report and BanReports: true in config.

Duration examples: 30m 2h 7d 2w 1mo 1y perm

/hblcore report 7d SomePlayer
> Report submitted for SomePlayer. Complete it at:
> https://hytalebanlist.org/report/...

Permissions

Permission Who to give it to What it does
HBLCore.auth Server admins Run /hblcore auth
HBLCore.report Staff who submit reports Run /hblcore report
HBLCore.notify Staff / moderators Receive in-game join status notifications

For Plugin Developers - Event Hooks

HBLCore exposes a static event API that any plugin can hook into with a single line. You receive the ban status of every joining player without having to implement the hytalebanlist.org API yourself.

Registering a listener

import org.hblcore.HBLCorePlugin;
import org.hblcore.event.HBLStatusEvent;
import org.hblcore.event.HBLStatusEvent.PlayerStatus;

// In your plugin's setup():
HBLCorePlugin.registerStatusListener(event -> {
    if (event.getStatus() == PlayerStatus.BANNED) {
        // kick, log, alert - your call
    }
});

Available event data

event.getUsername()   // String  - the joining player's username
event.getUuid()       // String  - the joining player's UUID
event.getStatus()     // PlayerStatus - CLEAR | BANNED | LOCAL_BAN | WHITELISTED
event.getReason()     // String  - ban reason (null if CLEAR or WHITELISTED)
event.getAppealUrl()  // String  - appeal URL (null if not applicable)
event.getExpiresAt()  // Instant - ban expiry (null if permanent or not applicable)

Status values

Status Meaning
CLEAR No ban on record. Player is clean.
BANNED Active ban confirmed by hytalebanlist.org.
LOCAL_BAN Ban exists on hytalebanlist.org but is pending review (not yet confirmed).
WHITELISTED Player is whitelisted on hytalebanlist.org.

Handling all statuses

HBLCorePlugin.registerStatusListener(event -> {
    switch (event.getStatus()) {
        case BANNED -> {
            // Active ban confirmed - kick, log, restrict, etc.
            String reason = event.getReason();
            String appeal = event.getAppealUrl();
        }
        case LOCAL_BAN -> {
            // Ban exists but is pending review - not yet confirmed
        }
        case WHITELISTED -> {
            // Explicitly whitelisted - clear any local restrictions
        }
        case CLEAR -> {
            // Clean player - no action needed
        }
    }
});

Declaring HBLCore as a dependency

In your plugin's manifest.json:

{
  "Dependencies": {
    "HBLCore": "*"
  }
}

Important notes for developers

  • HBLCore never kicks players. Your listener decides what action to take.
  • Listeners are called asynchronously. Avoid blocking operations inside the callback.
  • Exceptions are caught per listener. A crash in your code will not affect other listeners or the join flow.
  • Registration is load-order safe. Call registerStatusListener any time in your plugin's setup().

Full developer documentation: plugin-event-usage.md


Useful Links