XP Values Configuration

Customize XP per block, item, and weapon

Overview

XP values are stored in mods/mmoskilltree/xp-maps.json using an override-based system. The file only contains your customizations - defaults are built into the mod.

Pattern Matching

Block and item IDs use substring matching:

  • Ore_ matches ALL ores (Ore_Iron_, Ore_Diamond_, etc.)
  • Ore_Diamond_ matches only diamond ore variants
  • Wood_Log matches all log types

Modded Weapons: MMO_Weapon_Type Tag Fallback

Added in v1.0.3. Mod authors who ship new weapons can route them to a combat skill without requiring server admins to edit xp-maps.json by adding a single tag to their item JSON. When the regular xp-map lookup misses for a held item, the resolver checks the item's MMO_Weapon_Type raw tag and routes XP to the first listed value that matches a registered skill.

Where the tag goes

Add an MMO_Weapon_Type entry to the tags object at the top level of your item JSON, alongside the standard Hytale Type / Family entries. The value is a JSON array of strings — at least one must be the name of a registered skill (built-in or custom).

{
  "id": "Weapon_CustomBlade_Crystalsteel",
  "displayName": "Crystalsteel Blade",
  "quality": "Epic",
  "tags": {
    "Type": ["Weapon"],
    "Family": ["Longsword"],
    "MMO_Weapon_Type": ["POLEARMS"]
  }
}

Matching rules

  • Case-insensitive. ["PoleArms"], ["polearms"], and ["POLEARMS"] all route to the same POLEARMS skill.
  • First-match-wins on multi-value arrays. Given ["UNKNOWN_SKILL", "BLUNT"], the resolver skips UNKNOWN_SKILL (not registered) and routes to BLUNT. Use this to declare a primary skill with fallbacks.
  • Any registered skill is accepted — built-in (e.g. SWORDS, MAGIC, ARCHERY) or custom (added via custom-skills.json). No filter on combat-vs-gathering, so a modder could deliberately route a weapon to MINING for themed content.
  • Only fires when the xp-map lookup misses. If your item ID substring-matches an entry in any skill's xp-map (e.g. ID contains Weapon_Longsword_ which is in the SWORDS map), that wins — the tag is not consulted. Existing tagged-and-mapped weapons keep their xp-map routing.
  • Falls through to UNARMED if neither the xp-map nor any tag value matches a registered skill — same as the pre-1.0.3 behavior for unmapped weapons.

What the tag affects

Routing-only — once the resolver picks a skill, the rest of the system treats the tag-routed weapon exactly like any other weapon for that skill:

  • Damage-based combat XP (the damage_based and damage_plus_kill modes) routes 1:1 damage XP to the tagged skill. This is the primary win — modded weapons immediately earn XP for the right skill.
  • Weapon-gated damage rewards, lifesteal, and crit from the tagged skill's tree fire under that skill (e.g. POLEARMS-filtered forFullHp rewards, SWORDS Riposte capstone weapon gate).
  • Active ability cast predicates that require a specific weapon skill see the tagged skill (e.g. POLEARMS-locked abilities can be cast holding a tag-routed POLEARMS weapon).
  • The View XP page's "Equipped Weapon Skill" line displays the tagged skill name and shows the matching combat-stat buffs panel.

Routing does not change XP amounts. In per_hit mode and the kill-XP weapon-quality bonus (weaponXpScaling), tag-routed weapons award 0 XP / 0% bonus until you add an explicit item-ID entry to xp-maps.json for that weapon. Admins who want fine-grained per-weapon XP values for a tagged modded weapon can still add an entry — that entry takes priority over the tag fallback.

Commands

# Set XP for a pattern
/mmoconfig mining --args=Ore_Diamond_|150

# Set XP for all ores (wildcard)
/mmoconfig mining --args=Ore_|25

# View current values
/mmoconfig list --args=mining

# View only your customizations
/mmoconfig diff --args=mining

# Reset a pattern to default
/mmoconfig remove --args=mining|Ore_Diamond_

# Disable a pattern (no XP)
/mmoconfig disable --args=mining|Wood_Log

File Structure

{
  "schemaVersion": 1,
  "xpMaps": {
    "MINING": {
      "Ore_Iron_": 50,
      "Ore_Diamond_": 150,
      "Wood_Log": -1
    },
    "WOODCUTTING": {
      "Wood_Oak": 10
    }
  }
}

Special Values

  • -1 - Explicitly disable a pattern (no XP given)
  • 0 - Pattern gives zero XP (still processed)
  • Positive number - XP awarded for matching blocks/items

Decimal Values

XP values accept decimals — e.g. 0.5, 2.5, 12.75. Useful when you want weapon scaling (which multiplies weapon XP into mob-kill XP) to resolve to small, specific base amounts. Applies to both xp-maps.json and mob-kill-xp.json.

Reference Files

Check mods/mmoskilltree/_reference/defaults-xp-maps.json for all default values. This file is auto-generated and read-only.

Admin UI

Use /mmoadmin → "Edit XP Values" for a visual editor:

XP Overrides admin page showing pattern-based XP values with status indicators
  • Browse by category and skill
  • See default vs. current values
  • Status indicators: Default (green), Override (orange), Disabled (red)
  • Click pattern name to copy to text field

Best Practices

  • Use specific patterns before wildcards (more specific = higher priority)
  • Test with /mmoconfig list to verify patterns match correctly
  • Use /mmoconfig trim to remove redundant overrides
  • Back up your xp-maps.json before major changes