premium banner
A fully configurable system that prevents combat logging and ensures fair play by punishing players who disconnect mid-fight.

Description

This mod prevents players from combat logging on a Hytale server. When a player takes damage from another player, a mob, or the environment, they are tagged for a configurable duration. If they disconnect while tagged, they are instantly killed.

Discord

Join the server to report bugs, suggest features, or just chat: >> Join Discord <<

Features

  • Customizable Combat Timer – Set how long players stay in combat.
  • Damage Source Control – Choose if combat triggers from players (PvP), mobs (PvE), or environmental damage (fall, fire, drowning, etc.).
  • Fully Customizable Messages – Change the alerts for entering and leaving combat (supports Hex Colors #FFAA00 and Markdown **text**).
  • Live Combat HUD – Shows your active combat timer directly on the HUD (toggleable via config).
  • Disconnect Punishment – Automatically kill the player or execute a command if they log out during combat.
  • Command Blacklist – Block specific commands (e.g., /tpa, /home) during combat.

Permissions

  • combatlog.bypass – Players with this permission will not be tagged in combat.
  • combatlog.admin – Allows use of /combatlog and all subcommands (enable, disable, reload, clear).

Commands

  • /combatlog or /cl – Shows mod status and version.
  • /combatlog enable – Enables the mod.
  • /combatlog disable – Disables the mod and clears all tags.
  • /combatlog reload – Reloads configuration from file.
  • /combatlog clear – Removes all active combat tags globally.

Image

Supported Languages

  • English (en_US)
  • Brazilian Portuguese (pt_BR) - Translated by ab3g7ph_39718

Want to add your language? Join the Discord!

Configuration

All settings are configured in the mods/Devify_CombatLog/config.json file.

Note: If you don't see the new settings in your config file after updating, simply delete the old file. The mod will generate a fresh one with the latest options automatically.

Feel free to use in your server or modpack.

Developer API

Query Methods (org.combatlog.plugin.api.CombatLogApi) (Soft-failing: Returns safe defaults like false, 0, or empty info instead of throwing exceptions if the mod is unavailable.)

  • isAvailable(): Returns true if CombatLog is loaded and active.
  • isTagged(UUID playerUuid): Returns true if the player is in combat.
  • getRemainingMillis(UUID playerUuid): Returns remaining combat time in milliseconds.
  • getTagInfo(UUID playerUuid): Returns a CombatTagInfo object with detailed data.

Events (org.combatlog.plugin.api.event.*)

  • CombatTagStartedEvent
    • Properties: playerUuid, cause, attackerName, attackerIsPlayer
    • Causes: PVP, PVE, ENVIRONMENT, UNKNOWN
  • CombatTagEndedEvent
    • Properties: playerUuid, reason, lastCause, lastAttackerName, lastAttackerIsPlayer
    • Reasons: EXPIRED, DEATH, DISCONNECT, CLEARED, MOD_DISABLED, MANUAL

Example Usage

import org.combatlog.plugin.api.CombatLogApi;
import org.combatlog.plugin.api.event.CombatTagStartedEvent;
import org.combatlog.plugin.api.event.CombatTagEndedEvent;

// Check combat status
if (CombatLogApi.isAvailable() && CombatLogApi.isTagged(playerUuid)) {
    long remaining = CombatLogApi.getRemainingMillis(playerUuid);
    // Handle tagged player logic
}

// Listen to events
getEventRegistry().registerGlobal(CombatTagStartedEvent.class, event -> {
    // Combat started logic
});

getEventRegistry().registerGlobal(CombatTagEndedEvent.class, event -> {
    // Combat ended logic
});