promotional bannermobile promotional banner
premium banner
A limited lives/Semi-Hardcore type system. Inspired by the 3rd life series from Grian.

Description

A Hytale server plugin that implements a limited lives system. Players start with a set amount of lives and lose them upon death. Once they run out of lives, they are penalized (e.g., kicked) until their lives regenerate.


BETA!!!! - Not a ton of testing just yet and unfinished features!

Use at your own risk!


Features

  • Limited Lives System: Players start with a configurable number of lives (fixed or randomized).
  • Life Loss on Death: Players lose a life when they die. Configurable to trigger on all deaths or PVP deaths only.
  • PVP Rewards[Unfinished]: Optional chance to gain a life when killing another player.
  • Lives Regeneration: Automatically restores lives after a configurable cooldown period.
  • Enhanced Death Messages: Broadcasts death messages globally with the player's remaining life count.
  • Local Notifications: Sends private messages to players upon death with their current status.
  • Rich Text Support: Fully customizable messages with colors, gradients, and styles via TinyMsg.
  • Hot Reload: Reload configuration without restarting the server using /jemlives reload.

Installation

  1. Download the latest release from the releases page
  2. Place the JemLives-x.x.x.jar file into your Hytale server's mods folder
  3. Start your server to generate the configuration file
  4. (Optional) Edit the Jemsire_JemLives/LivesConfig.json file to customize settings
  5. In-game type /jemlives reload to reload the config if you made changes

Configuration

After first launch, a configuration file will be created at Jemsire_JemLives/LivesConfig.json:

{
  "InitialLivesMin": 3,
  "InitialLivesMax": 3,
  "LoseLivesFromPvpOnly": false,
  "GainLivesFromKills": false,
  "GainLifeChance": 0.1,
  "ZeroLivesAction": "KICK",
  "RegenTimeMinutes": 60,
  "LogLevel": "INFO",
  "DeathAnnouncementFormat": "<orange>{player} <red>has died and now has <orange>{lives} <red>lives.",
  "LocalDeathMessage": "<red>You died! You have <orange>{lives} <red>lives left.",
  "LivesCommandMessage": "<green>You have {lives} lives left.",
  "KickMessage": "You have run out of lives! Come back in {time}.",
  "DeathCauseReplacement": "was",
  "ShowLivesHud": true,
  "HudIconPath": "Hud/Essense.gif"
}

Configuration Options

  • InitialLivesMin / InitialLivesMax: The range for starting lives. If they are equal, players start with that fixed amount.
  • LoseLivesFromPvpOnly[Unfinished]: If true, players only lose lives when killed by another player.
  • GainLivesFromKills[Unfinished]: If true, players have a chance to gain a life when they kill another player.
  • GainLifeChance[Unfinished]: The probability (0.0 to 1.0) of gaining a life on a PVP kill.
  • ZeroLivesAction: Action taken when a player reaches 0 lives (e.g., KICK).
  • RegenTimeMinutes: Time in minutes before a player's lives are restored after reaching zero.
  • LogLevel: Logging level for the plugin (INFO, DEBUG, WARN, SEVERE).
  • DeathAnnouncementFormat: Format for the global death message.
    • Placeholders: {player}, {playerName}, {deathCause}, {rawDeathCause}, {lives}
  • LocalDeathMessage: Private message sent to the player who died.
  • LivesCommandMessage: Message shown when a player uses the /lives command.
  • KickMessage: Message shown when a player is kicked for having 0 lives.
    • Placeholders: {time} (remaining time until regen)
  • DeathCauseReplacement: Replaces "You were" in the default Hytale death messages.
  • ShowLivesHud: If true, shows the lives HUD near the hotbar.
  • HudIconPath: Path to the icon image, relative to Common/UI/Custom/ (e.g. "Hud/Essense.gif" or "JemLives/heart.png").

Using images in the HUD

Images in Hytale UI use a Group with Background: PatchStyle(TexturePath: "path"). The path is relative to your plugin’s Common/UI/Custom/ folder (same place as .ui files).

  1. Add your image
    Sadly .gif is not supported that I have found

    Put your PNG (e.g. Essense.png) in src/main/resources/Common/UI/Custom/Hud/ (or a subfolder). It will be bundled in the plugin JAR.

  2. Reference it in the .ui file
    In a .ui file, use:

    Group #hudIcon {
      Anchor: (Width: 32, Height: 32);
      Background: PatchStyle(TexturePath: "Hud/Essense.gif", Border: 0);
    }
    

    Border: 0 stretches the image to the Anchor size. Use a positive Border (e.g. 12) for 9-slice scaling.

  3. Config
    Set HudIconPath to the path relative to Common/UI/Custom/ (e.g. "Hud/Essense.gif" or "JemLives/heart.png"). The default icon path is Hud/Essense.gif.

Color Formatting

All message strings support advanced color formatting using tags or legacy color codes. The plugin uses TinyMsg for rich text formatting.

Supported Color Formats:

  • Named Color Tags: <red>, <blue>, <green>, <yellow>, <gold>, <orange>, etc.
  • Hex Color Tags: <color:#FF0000> or <#FF0000>
  • Legacy Color Codes: &a, &c, &e, etc.

Advanced Formatting Features:

  • Gradients: <gradient:#FF0000:#00FF00>Rainbow text</gradient>
  • Text Styles: <bold>, <italic>, <underline>, <monospace>

Commands

  • /lives - Check your remaining lives (same as /jemlives check)
  • /jemlives check - Check your remaining lives
  • /jemlives info - Open the lives info UI
  • /jemlives reload - Reload the plugin configuration (admin)

Permissions

Permission Description
jemlives.check Use /lives and /jemlives check
jemlives.info Use /jemlives info (open lives info page)
jemlives.reload Use /jemlives reload (reload config)

If a player lacks the required permission, they see a red "You do not have permission to perform this command!" message.

This project is open-source:

Feel free to contribute or spin it into your own system! Check out the Github

Want to get updates for all my projects?

Join the Discord! Join Now!