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
- Download the latest release from the releases page
- Place the
JemLives-x.x.x.jar file into your Hytale server's mods folder
- Start your server to generate the configuration file
- (Optional) Edit the
Jemsire_JemLives/LivesConfig.json file to customize settings
- 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).
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.
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.
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?