GlymeraRaces - Choose Your Race, Become Your Race
**An RP race system *_with a full RPG progression layer_* 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. Then level up, spend skill points, and ascend your race into stronger evolved forms as you play. Switch races again after a configurable cooldown.**
Don't miss my other exciting projects — take a look at GlymeraCraft's Profile Discord: https://discord.gg/s5NRFWfxgy
New in v4.0.0: account-wide levels & XP from hunting, per-race stat growth, a seven-attribute skill tree with respec, and a linear race ascension system that unlocks prestige forms through play. All account-wide, all config-tunable, existing worlds migrate automatically.
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
RPG Progression (v4.0.0)
GlymeraRaces is no longer just a one-time choice - your race grows with you. Progression is account-wide (kept when you switch race) and everything is tunable in config.json.
Levels & XP
- Account-wide levels with a configurable cap (default 50). Smooth XP curve (
xpToNext = xpBase * level^xpCurveExp).
- XP comes from hunting mobs, scaled by the target's max HP - tougher kills are worth more. Granted on the killing blow.
/grace info shows your level and XP; you get a level-up notice and skill points each level.
Per-race stat growth
- Each race levels up its own way: Trork stacks HP, Goblin gets faster, Skeleton and Wraith gain mana, Zombie and Tuluk harden their defense, and so on. Your starting race profile is just level 1 - it scales as you play.
Skill tree
- Earn skill points (default 10 at level 1, +4 per level) and spend them across seven attributes: Vitality (HP), Power (damage), Defense (all incoming damage), Agility (speed), Endurance (stamina), Arcane (mana), Warding (Fire/Ice/Poison resistance).
- An allocation cap (default 80% of your total points on any one attribute) keeps builds varied.
- Full respec any time. Open it all with
/grace progress - a clean UI with + / - buttons per attribute.
Race Ascension (evolution)
- Every race has a linear ascension ladder (base -> Ascended -> Exalted), gated by level.
- Ascending grants an escalating stat tier and a title - and unlocks extra "prestige" forms of your race that aren't available at the start. Earn new looks through play.
- Most variants are available immediately; only a few prestige forms sit behind ascension, so early variety is unchanged. Ascension progress is per-race and kept across switches.
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:
PlayerSettings record fields hideHelmet/Cuirass/Gauntlets/Pants set to true
- Periodic 2-second task re-clamps any drift
- Inbound
SyncPlayerPreferences packet 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, cooldown, level and XP |
/grace progress |
Everyone |
Open the progression UI (level, XP, skill allocation, ascension, respec) |
/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 |
/grace addxp <player> <amount> |
OP |
Give a player XP |
/grace setlevel <player> <level> |
OP |
Set a player's level |
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.jar in your server's mods/ folder
- Start (or restart) the server
- Done
Good to Know
- All 119 variants use real Hytale
ModelAsset keys - 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
EntitySource damage event from a player).
- Hytale has no "Magic" damage cause - the four resistances are Fire / Ice / Poison / Physical. "Frost" is internally called
Ice in 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