Power Level

A single scalar summarizing a player's overall progress

Overview

Power Level Since 1.5.0 folds combat level, claimed skill-tree stat rewards, unlocked abilities, ability mastery, and claimed achievements into a single clamped scalar per player. The mod computes and caches it; Power Level changes nothing visible by itself.

Power Level exists for a consumer, not for its own sake

Nothing in MMO Skill Tree itself reads a player's Power Level to change gameplay. It exists as a stable API surface for a separate consumer - most notably the optional MMO Mob Scaling companion mod, which reads it to scale mob difficulty. If you don't run a consumer mod, Power Level is computed and cached for nothing; that's fine, it's cheap.
Default mode
BALANCED
Clamp range
1 - 200
Pillars
6
Modes
3
Override configmods/mmoskilltree/power-level.jsonServer/MMOSkillTree/PowerLevel/*.json

The jar ships Server/MMOSkillTree/PowerLevel/Default.json as the base tuning. A pack can overlay a partial body; the owner file always wins. Every leaf folds independently - a partial file changes only the keys it mentions.

defaults<pack<owner

Modes

Power Level is computed under one of three named weight presets. DefaultMode in power-level.json (or a pack's PowerLevel asset) picks which one is active server-wide.

ModeWeighting
COMBAT_ONLYWeighs combat level and combat-relevant pillars heavily; ignores Achievements
BALANCED (default)Combat and stat rewards dominate, with smaller contributions from abilities, mastery, and achievements
COMPLETIONISTSpreads weight more evenly, giving achievements and mastery more relative influence

Pillars

Each pillar contributes provider.contribution(...) * weight(activeMode, pillarId) to the total, which is then clamped. Six pillars are built in; a sibling mod can register additional pillars, which become first-class weight targets in Modes automatically.

FieldTypeDefaultDescription
Combatobject { Factor }1.5Scales the player's combat level (the max level across combat skills).
StatRewardsobject { Factors: map }optionalA generic per-{stat key} factor map (e.g. STAT_HEALTH, DAMAGE_PCT, FLAT_DAMAGE) summing every claimed skill-tree + mastery stat reward. A stat with a gameplay ceiling (defense, crit chance, fall reduction) counts only up to that ceiling, so a pick past the cap earns no power, and STAT_HEALTH ships at 0 because the MaxHealth pillar scores health. Adding a new surfaced stat is a JSON line, not a codec change.
MaxHealthobject { BaseHealth, Factor }100 / 9.0Contributes ((maxHealth - BaseHealth) / BaseHealth) * Factor: only health above BaseHealth counts, so a fresh 100-health character earns nothing from it. Health from classes, gear and potions counts too.
Abilitiesobject { Factor }3.0Scales unlocked active abilities.
Masteryobject { Factor }4.5Scales claimed ability mastery nodes.
Achievementsobject { Factor }3.0Scales claimed achievement points.
* required

Clamp

FieldTypeDefaultDescription
MinPowerdouble1.0Floor of the scale; also the no-skill-data fallback returned by the API.
MaxPowerdouble200.0Ceiling of the scale.
BaseOffsetdouble0.0A flat offset added before clamping.
* required

The final value is clamp(pillarPower + BaseOffset, MinPower, MaxPower). A consumer mod that maps Power Level onto its own difficulty scale should read the live bounds from MMOSkillTreeAPI.getPowerLevelMin()/getPowerLevelMax() instead of hardcoding 1/200, so the two scales cannot silently drift apart when either config is retuned.

Current Tuning (1.7.0+)

Power was retuned in 1.7.0

Every server's power numbers moved in 1.7.0. Power is never saved, so nothing migrates: the first read after the update returns the new number. A power-level.json that re-authors a factor keeps working, but it was tuned against the old sums, so look at it again, and at any mob scaling you tuned by hand.
BuildPower Level (BALANCED)
A fresh character1
Three skills at level 100 (a specialist)about 86 to 92
Every skill around level 50about 90 to 100
Every skill at level 100, every tree taken200 (clamp ceiling)

Example Owner Override

A partial power-level.json only needs the keys you want to change - every other leaf inherits from the jar default (or a pack overlay under it):

mods/mmoskilltree/power-level.json
{
  "SchemaVersion": 2,
  "DefaultMode": "COMPLETIONIST",
  "Clamp": { "MaxPower": 250.0 },
  "Pillars": {
    "Achievements": { "Factor": 4.0 }
  }
}

This raises the ceiling to 250, switches the server default to COMPLETIONIST weighting, and bumps the Achievements factor - every other pillar and mode weight stays at the jar/pack default.

Pack Authoring

A content pack can ship its own Server/MMOSkillTree/PowerLevel/*.json asset using the same nested Clamp/Pillars/Modes schema as the jar default. Precedence resolves

defaults<pack<owner
per leaf: a pack can retune the jar default for its own content, and an owner's power-level.json always wins over both. A pack is a folder you zip and drop into Mods/ - see Building the zip.

API

For mod developers: a sibling mod reaches a player's power only through MMOSkillTreeAPI - never MMO Skill Tree's internals directly.

FieldTypeDefaultDescription
getPowerLevel(store, ref)doubleoptionalThe player's current Power Level, cached and recomputed only after a pillar-input mutation or a config reload.
getPowerLevelMin()doubleoptionalThe configured clamp minimum.
getPowerLevelMax()doubleoptionalThe configured clamp maximum.
getCombatLevel(store, ref)intoptionalThe cheap combat sub-input alone (max level across combat skills); returns 0 for a player with no skill data.
statRewardSum(store, ref, statKey)doubleoptionalThe sum of a player's skill-tree + mastery stat-reward contributions for one stat key; 0.0 for an unrecognized key.
* required

Consumers

MMO Mob Scaling

Companion Mod

Optional companion mod that scales mob difficulty using a player's Power Level and can cast abilities on non-player mobs through the same ability catalog. Replaces the removed built-in Elite Mobs system. Own CurseForge listing, own version numbers - it is not bundled with MMO Skill Tree or any of its content packs.