Description
GlymeraRaces - Choose Your Race, Become Your Race
An RP race system for Hytale. Every player picks a race on first join and physically morphs into the chosen mob model. 16 race groups, 119 humanoid mob variants, full stat profile per race - HP, damage, speed, stamina pool, defense, mana, and four damage resistances. Switch races again after a configurable cooldown.
What is GlymeraRaces?
When a new player joins, a non-dismissable selection page opens. They pick a race - say Trork, Skeleton, or Wraith - and from then on their player model is replaced by the chosen mob model. Other players see them as that mob. Their HP, stamina, damage output, movement speed, defense, and elemental resistances scale according to that race's stat profile. After a configurable cooldown (default 7 real-time days), the next login offers the chance to keep the current race ("Stay as you are") or switch.
Roleplay-friendly. Mechanical. Reversible.
How It Works
- First join - the race-selection page opens automatically and cannot be closed
- Pick a race group (Trork, Goblin, Skeleton, etc.)
- Pick a variant within that group (e.g. Skeleton_Knight vs Skeleton_Burnt_Praetorian)
- Optional preview - click "Preview (5s)" to morph temporarily, see yourself in the inventory avatar render, then auto-revert
- Confirm with "Become this" - the morph and stats apply permanently
- After cooldown the page reopens on next login with "Stay as you are" highlighted - keep or switch
Race Pool
16 race groups, 119 individually choosable humanoid variants. All variants are real Hytale ModelAsset keys (validated at server start).
| Group | Variants | Theme |
|---|---|---|
| Human | 1 | Vanilla baseline |
| Kweebec | 15 | Plant-folk, life stages and colours |
| Trork | 10 | Grey-green ork warriors |
| Outlander | 10 | Hardened humans, bandits, cultists |
| Goblin | 10 | Small, sneaky, scrappy |
| Feran | 7 | Winged demon-kin |
| Skeleton | 40 | Standard / Burnt / Frost / Sand / Pirate / Incandescent |
| Werewolf | 1 | Lycanthrope |
| Zombie | 8 | Standard, Burnt, Frost, Sand, Aberrant... |
| Ghoul | 1 | Pale flesh-eating undead |
| Shadow Knight | 1 | Dark armored knight |
| Wraith | 2 | Ghostly specters |
| Hedera | 1 | Vine-bound humanoid |
| Tuluk | 2 | Ancient stone-folk |
| Klops | 4 | One-eyed brutes (Gentleman, Merchant, Miner) |
| Scarak | 7 | Insectoid raiders |
Stat Profile Per Race
Each race has a stats block in config.json with these multipliers / bonuses:
| Stat | Type | Effect |
|---|---|---|
hpMultiplier |
Multiplicative on Max HP | 1.30 = +30% max HP |
damageMultiplier |
Multiplicative on outgoing damage | 1.20 = deal 20% more |
speedMultiplier |
Multiplicative on movement BaseSpeed | 1.10 = 10% faster |
staminaPoolMultiplier |
Multiplicative on Stamina max | 1.10 = larger stamina pool (regen rate stays Hytale-default) |
defenseMultiplier |
Multiplicative on incoming damage | 0.85 = take 15% less |
manaBonus |
Additive on Mana max | +50 means race gets 50 max mana |
resistances.fire/ice/poison/physical |
Damage-type-specific | 0.5 = take half from that type, 1.5 = take 50% more |
The HP and Stamina multipliers wrap the final value including armor bonuses (e.g. Trork at 1.30x with a +9 iron helm gets (100+9)*1.30 = 142 max HP). Defense stacks multiplicatively with armor and effect resistances. Damage-out is applied as the final scaling step before final apply.
Default Profiles
| Race | HP | DMG | SPD | STA | DEF | Mana+ | Fire | Ice | Poison | Phys |
|---|---|---|---|---|---|---|---|---|---|---|
| Human | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 0 | 1.00 | 1.00 | 1.00 | 1.00 |
| Kweebec | 0.85 | 1.05 | 1.10 | 1.10 | 1.00 | 20 | 1.00 | 0.85 | 0.90 | 1.10 |
| Trork | 1.30 | 1.20 | 0.90 | 0.95 | 0.85 | 0 | 1.00 | 1.10 | 1.00 | 1.00 |
| Outlander | 1.10 | 1.10 | 1.00 | 1.00 | 1.00 | 10 | 1.00 | 1.00 | 1.00 | 1.00 |
| Goblin | 0.70 | 0.90 | 1.20 | 1.10 | 1.10 | 0 | 1.00 | 1.00 | 0.90 | 1.00 |
| Feran | 1.00 | 1.20 | 1.10 | 1.00 | 0.95 | 50 | 0.80 | 1.00 | 1.00 | 1.00 |
| Skeleton | 0.90 | 1.00 | 1.00 | 1.00 | 1.00 | 40 | 1.30 | 0.50 | 0.30 | 1.00 |
| Werewolf | 1.20 | 1.30 | 1.20 | 1.10 | 0.90 | 0 | 1.00 | 1.00 | 1.00 | 1.00 |
| Zombie | 1.40 | 0.90 | 0.75 | 0.80 | 0.85 | 0 | 1.00 | 0.70 | 0.50 | 1.00 |
| Ghoul | 1.10 | 1.10 | 1.10 | 1.00 | 0.95 | 20 | 1.00 | 0.80 | 0.60 | 1.00 |
| ShadowKnight | 1.30 | 1.20 | 0.95 | 1.00 | 0.80 | 30 | 1.00 | 1.00 | 1.00 | 0.80 |
| Wraith | 0.80 | 1.10 | 1.20 | 1.20 | 0.85 | 80 | 1.00 | 0.50 | 0.50 | 0.50 |
| Hedera | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 40 | 0.80 | 1.00 | 1.20 | 1.00 |
| Tuluk | 1.20 | 1.10 | 0.90 | 1.00 | 0.85 | 0 | 1.00 | 1.20 | 1.00 | 1.00 |
| Klops | 1.40 | 1.20 | 0.80 | 0.90 | 0.85 | 0 | 1.00 | 1.00 | 1.00 | 1.00 |
| Scarak | 0.90 | 1.10 | 1.20 | 1.10 | 1.00 | 0 | 1.00 | 1.00 | 0.80 | 1.00 |
All values are tunable in config.json.
Armor Hide Layer
For non-Human races, equipped armor is automatically hidden visually so the mob model is not covered in mismatched plate. The armor remains in the inventory and all defensive stats stay active (HP bonus, damage resistances, durability loss). Only the visual rendering is suppressed. Three enforcement layers ensure the player cannot toggle armor visibility back on through the inventory UI:
PlayerSettingsrecord fieldshideHelmet/Cuirass/Gauntlets/Pantsset to true- Periodic 2-second task re-clamps any drift
- Inbound
SyncPlayerPreferencespacket filter rewrites client toggle attempts before they reach the server
Equipped weapons stay visible because hand items only render when actively drawn from the hotbar.
Live Preview Workflow
Each variant card has two buttons:
- Preview (5s) - applies the morph and stats temporarily, opens the native Hytale inventory page so the player sees themselves in the avatar render area, then auto-restores after 5 seconds and reopens the variant list
- Become this - confirms and saves the choice
The Inventory page blocks player movement and actions while open (Hytale-native behaviour), so the player cannot do anything during preview. Auto-restoration is triggered server-side - no commands needed to exit.
Death and Respawn
When a player dies, Hytale strips active effects. GlymeraRaces detects this within 2 seconds (periodic enforcer task) and re-applies the morph + stats + speed + hide-flags automatically. The player respawns and stays in their chosen race form.
Disconnect During Selection
If a player closes the client while the first-join page is open (or in the middle of a preview), the next login sees a clean state - any leftover preview morph effects are stripped before the selection UI opens again.
Commands
| Command | Who | Description |
|---|---|---|
/grace |
Everyone | Open the race-selection UI (or shows remaining cooldown) |
/grace info |
Everyone | Show your current race, variant, and remaining cooldown |
/grace set <player> <race> <variant> |
OP | Set a player's race directly (use - for default variant) |
/grace reload |
OP | Reload config.json and re-apply to all online players |
/grace cooldownReset <player> |
OP | Reset a player's race-change cooldown |
Configuration
File: mods/Glymera_GlymeraRaces/config.json (created on first start with sensible defaults).
| Setting | Default | Description |
|---|---|---|
cooldownDays |
7 | Real-time days a player must keep their race before being offered a change again on join |
races.<RaceName>.enabled |
true | Whether this race appears in the selection UI |
races.<RaceName>.description |
string | Short one-line description shown in the UI |
races.<RaceName>.variants[] |
list | Variant entries - each has id (mob model key) and displayName |
races.<RaceName>.stats |
object | The stat profile (see table above) |
After editing, run /grace reload to apply without a server restart. Online players are re-applied automatically.
Installation
- Place
GlymeraRaces-1.0.0.jarin your server'smods/folder - Start (or restart) the server
- Done
Good to Know
- All 119 variants use real Hytale
ModelAssetkeys - validated at server startup. Any reference error halts loading, so you cannot deploy a broken setup unnoticed. - Damage-out scaling fires for both melee and projectiles (any
EntitySourcedamage event from a player). - Hytale has no "Magic" damage cause - the four resistances are Fire / Ice / Poison / Physical. "Frost" is internally called
Icein Hytale. - Stamina-regen rate is asset-fixed and cannot be modified - only the pool size is scaled by
staminaPoolMultiplier. - Race choice is persistent across server restarts - per-player JSON in
mods/Glymera_GlymeraRaces/data/<uuid>.json. - The "Skipping pack at Glymera_GlymeraRaces: missing or invalid manifest.json" warning at startup is benign - effects and UI are still loaded (consistent with other Glymera plugins).
Made with care by Glymera for the Hytale community
