RPG Leveling
Player levels, spendable stat points, and level-scaled mobs — fully data-driven for modpack makers.
Inspired by PlayerEx, Mine and Slash and RPG attribute systems. Forge 1.20.1.
Features
- Player leveling — earn XP from kills, level up, get stat points
- Fullscreen stats UI — press
Kto view level, XP and spend points - Custom stats — Strength, Vitality, Defense, Agility, Luck by default; add your own via JSON, including attributes from other mods
- Mob scaling — mob health, damage and armor grow with player level and area level
- Rare mobs — Elite and Legendary mobs with random affixes (vampiric, fiery, thorny...), bonus XP and glowing outline
- Bosses — fixed levels: Ender Dragon 100, Wither 80, Warden 90 (configurable)
- Area levels — minimum mob level per dimension, biome and structure, plus growth with distance from spawn
- Datapack mob rules — blacklist, boss levels and multipliers via JSON with entity tag support, live
/reload - Anti mob-farm — options to skip mobs from spawners and spawn eggs
- Configurable XP curve — formula plus per-level overrides
- Shared kill XP — everyone who dealt 20%+ of the mob's max HP gets XP
For players
Kill mobs to gain XP and level up. Press K (rebindable) to open the stats screen and spend points. Refund points or full respec if the server allows it. The HUD shows your level, XP progress and current zone level. Mob names show their level colored by danger, with stars for Elite and Legendary mobs.
For modpack developers
Everything lives in config/rpgleveling/ (four TOML files plus stats.json) and in datapacks. No code, no rebuilds.
Custom stats (stats.json)
Stats are data, not code. One stat can drive several attributes, including modded ones:
[
{
"id": "spell_power",
"name": "Arcane",
"maxPoints": 50,
"modifiers": [
{ "attribute": "irons_spellbooks:spell_power", "perPoint": 0.02, "operation": "MULTIPLY_TOTAL" }
]
}
]
Operations: ADDITION, MULTIPLY_BASE, MULTIPLY_TOTAL. Manage in-game with /rpgstat add, /rpgstat remove, /rpgstat reload (with attribute autocomplete).
XP curve (player.toml)
xpBase = 50.0 # XP needed = xpBase * level ^ xpGrowth
xpGrowth = 1.5
xpLevelOverrides = ["49=250000"] # optional per-level overrides
pointsPerLevel = 2
statCostIncreaseEvery = 10
Kill XP formula: (xpKillBase + xpPerMobLevel * mobLevel) * rarityMultiplier * dimensionXpMultiplier
Mob scaling (mobs.toml)
Mob level = max(area level, nearest player level) with random variance, clamped by dimension minimum.
globalIntensity = 1.0 # master difficulty knob
healthPerLevel = 0.10 # +10% HP per level
ignoreSpawners = false # anti mob-farm
ignoreSpawnEggs = false
blocksPerAreaLevel = 500 # +1 area level per 500 blocks from spawn
Elite and Legendary chances, multipliers and the affix pool are in the same file.
Area levels (world.toml)
Build proper RPG zones:
dimensionMinLevels = ["minecraft:the_nether=30", "minecraft:the_end=60"]
biomeMinLevels = ["minecraft:deep_dark=45"]
structureMinLevels = ["minecraft:ancient_city=50"]
Datapack mob rules
Drop JSON files into any datapack at data/<your_namespace>/rpgleveling/mob_rules/:
{
"blacklist": ["minecraft:villager", "#minecraft:skeletons", "create:*"],
"boss_levels": { "cataclysm:ender_guardian": 85 },
"multipliers": { "#minecraft:raiders": 1.5 }
}
Supports exact ids, entity tags (#namespace:tag) and whole namespaces (mod_id:*). Rules merge with the config lists and reload live with /reload.
Commands (op)
/rpglevel get | set | addxp | addpoints | reset <player>— manage player levels/rpgstat list | add | remove | reload— manage stat definitions/rpgstat respec <player>— refund all points
Compatibility and performance
- Works with any mod's entities and any mod's attributes
- Mob data is stored in entity NBT — safe across chunk unloads and restarts
- Area-level lookups are cached per chunk section, heavy work happens once per mob spawn
- Required on both client and server
