Install, staff-command, permission and configuration reference for the core plugin, EndlessLevelingCore. Every other Endless addon runs on top of it. For how levels, prestige and augments play, see the Endless Leveling gameplay guide.
- Plugin version: 14.1.2
- Jar:
EndlessLeveling.jar(the file name carries no version) - Data folder:
mods/Airijko_EndlessLevelingCore/
Requirements
| Plugin | Version | Type |
|---|---|---|
| Hytale Server | ≥ 0.7.0-pre.0, < 0.8.0 | Required |
| PartyPro | ≥ 0.8.0 | Optional (/party and party XP share) |
| EndlessDurability | ≥ 1.1.0 | Optional |
| TriggerVolumes | any | Optional (shared-dungeon triggers) |
| LuckPerms | any | Optional (prestige rank sync runs lp console commands) |
| PlaceholderAPI | any | Optional (%el_*% placeholders, see the Placeholder API page) |
| EndlessLink | any | Optional (titles, Discord log relay, raid reminders) |
EL-Core has no hard plugin dependencies. Some features need a Server Addon (a partner addon jar) as well. Any tier unlocks XP boosts, console use of most admin commands and raid slots in the Activity Director. The external MySQL store needs the SSS or Z tier, the campaign needs the Z tier, and cross-server raids need the Official (SSS) addon with an active license. Those rows are marked below.
Who counts as an admin
Most staff commands check for admin access when they run. A player has admin access when either of these is true:
- they are an engine operator, or in a permission group named
op,adminoradministrator; - they hold any of these nodes:
* op operator admin
hytale.* hytale.op hytale.operator hytale.admin
endlessleveling.* endlessleveling.op endlessleveling.operator endlessleveling.admin
- or they hold any node that ends in
.*, or that hasop,operator,admin,administratororowneras one of its parts (for exampleessentials.*orstaff.admin).
Grant broad wildcards carefully: they make that player an Endless Leveling admin.
Commands marked (engine node) below also carry the engine's generated command permission, airijko.endlesslevelingcore.command.<path>. For example, /lvl reload carries airijko.endlesslevelingcore.command.lvl.reload. A staff member who holds endlessleveling.admin but not * also needs that node, or the engine blocks the command before EL-Core's own check runs. Granting airijko.endlesslevelingcore.command.* covers all of them.
Command roots
The main root is /lvl. Its aliases are /el, /sk, /eskills, /level and /endlessleveling. If another mod already owns /lvl, EL-Core takes the first free alias and logs a warning.
These shortcut roots are registered as well: /profile (/profiles), /ps, /races (/race), /classes (/class), /priest, /augments (/augment, /aug, /a), /dungeons (/dungeon), /raid, /join, /leave, /upcoming (/nextevent, /whatsnext), /xpstats (/xps), /bounty, /eqrreload and /party (only when PartyPro is installed).
/leaveis also registered by Endless Rifts. When Rifts is installed, its/leavewins.
Player commands (/lvl prestige, /profile, /races, /classes, /augments reroll, /join, /leave, /lvl claim, and so on) need no permission and are covered in the gameplay guide.
Admin Commands: player data
All are /lvl <command>. [player] means you can leave the player out to target yourself.
| Command | Description |
|---|---|
setlevel [player] <level> | Set a player's level (engine node) |
setprestige <prestige> · setprestige <player> <prestige> [profile] | Set prestige (alias prestigeset) (engine node) |
checkprofile <player> | Inspect a player's profile (aliases profilecheck, checkprestige) (engine node) |
resetlevel [player] | Reset level on the active profile (engine node) |
resetprestige [player] | Reset prestige (alias prestigereset) (engine node) |
resetall [player] | Full profile reset (alias fullreset) (engine node) |
resetallplayers | Set every currently loaded player to level 1. Runs at once, with no confirm step. Offline players are not touched (engine node) |
resetskillpoints [player] | Refund all spent skill points (alias resetskills) (engine node) |
skillpointssync | Recompute skill points for everyone (alias spsync) (engine node) |
resetcooldowns | In-game only. Clear passive, augment and ability cooldowns for every player (aliases resetcds, cdreset) (engine node) |
syncraceclass confirm | Re-sync every player's race and class to the current definitions (engine node) |
syncplayerraceclass <player> confirm | Same, for one player (engine node) |
addswapsall <type> <count> | Give every profile of every player (online and offline) swaps. <type> is race, primary, secondary, class or all (engine node) |
/races addswap [player] <count> | Give race swaps (engine node) |
/classes addswap [player] <slot> <count> | Give class swaps for one class slot (engine node) |
resetcampaign [player] · resetcampaignall confirm | Reset campaign progress (engine node) |
resetraidcooldown [player] · resetraidcooldownall confirm | Clear the raid reward cooldown (engine node) |
xp give <player> <amount> [profile] | Grant XP |
rank resync <player> · rank resyncall · rank status [player] | Re-run the prestige rank sync (LuckPerms track) |
build apply <id> [player] · build view <id> [player] · build info <id> | Apply or inspect a saved build preset. apply and view need a Server Addon, and apply needs the target on a temp profile first (/lvl temp grant) |
restoreprofile list <player> · restoreprofile restore <player> <file> [--slot=<n>] [--confirm] [--force] [--force-addon] | Restore a deleted profile from the archive. The player must be online. It goes to the first empty slot unless --slot is given; an occupied slot needs --confirm |
temp grant <player> <prestige> <level> <hours> · temp revoke <player> · temp deleteall · temp status <player> | Temporary test profiles (see endlessleveling.temp) |
inv status [player] · inv migrate <player> <server> · inv cancel <player> · inv restore <player> <which> · inv nodes | Inventory migration and restore (see endlessleveling.inventory) |
sync set <player> <mode> · sync status | Network sync scope (see endlessleveling.sync) |
copyprofile player <player> [server] | Copy a player's profile from another network store (see endlessleveling.copyprofile). Players can run copyprofile from <server> on themselves while profile_copy.self_service is true (the default). Only active when a licensed Server Addon provides a source |
/priest admin remove <player_uuid> | Remove a player's Priest church (engine node) |
Augment admin (/augments …)
All carry the engine node.
| Command | Description |
|---|---|
addreroll <player> <type> <count> · addrerollall <type> <count> | Grant rerolls |
clearreroll <player> <type> · clearrerollall <type> | Remove rerolls of one type |
resetreroll <player> · resetrerollall | Reset rerolls to the earned amount |
rerolls <player> | Show a player's rerolls (aliases listrerolls, rerollinfo) |
refresh [player] | Refresh stored augment offers. Chosen augments are unchanged |
reset [player] · resetallplayers | Clear chosen augments |
resettier <tier> [player] · resetallplayerstier <tier> | Clear one tier |
resetcommon [player] · resetcommonall | Clear Common-tier picks |
trimall [confirm] | Trim excess augment slots and stale offers on every profile to match the current schedule. Without confirm it only previews |
Admin Commands: server and content
| Command | Description |
|---|---|
/lvl reload | Reload configs, races, classes and mob levels (engine node) |
/lvl overrides sync [apply] · /lvl overrides reset --confirm | Preview or merge new keys into server-overrides.json, or restore it to defaults |
/lvl import list · install|update|remove <name> [force|now] · info <name> | Manage drop-in content packs in imports/ (aliases imports, dlc; remove is also uninstall). /lvl import alone opens the import panel |
/lvl storage status · /lvl storage export | Show the active storage backend, export data (engine node) |
/lvl backup now · list · info <set> | Take or list suite backups (engine node) |
/lvl restore player <player> <set> · restore all <set> | Restore from a backup. Destructive, asks for a confirm token (engine node) |
/lvl restore only <slices> player <player> <set|latest> · restore only <slices> all <set|latest> | Restore only some data. <slices> from fates, augments, augments-missing, rerolls, ledger (engine node) |
/lvl director status · plan · next [raid|clear] · skip · force <kind> [id] · release · sync [apply] · reset --confirm | Activity Director: inspect, pin, skip or force the next scheduled activity |
/lvl dmgtrack start [name] · stop · delete <id> · guildpay <id> [confirm] | Run a damage leaderboard and pay its guilds |
/lvl dpsmeter [player] | Watch another player's DPS meter on your own HUD. off returns to your own; no argument toggles your meter |
/xpstats admin · refresh · feed | XP analytics panel and feed (engine node) |
/dungeons setjoinpoint · clearjoinpoint | Set where players arrive when joining a dungeon |
/lvl bounty place · remove · refresh | Manage bounty targets |
/lvl lang import <locale|all> | Copy a language file into lang/ for editing (operators and op/admin groups only). It overwrites an existing file in lang/ without a backup |
/eqrreload | Reload quests and rewards (aliases questsreload, eqreload) (engine node) |
/lvl waves · /lvl start | Wave maker panel; start the Outlander Bridge waves |
Raids (/raid …, also /lvl raid …)
join, time and netboard are open to players. Everything else is admin.
| Command | Description |
|---|---|
call <raid-id> [local|network] | Arm a raid now. From the console it needs a Server Addon |
test <raid-id> | Staff test run, no rewards |
start · stop · abort · restart · status · skip [waves] | Control the running raid |
allowlist · testallow <player> · testdeny <player> | Who may join staff test runs |
setjoinpoint · clearjoinpoint | Raid arrival point |
admin | Raid scheduling panel |
dailytime <HH:mm> · dailyraid <raid-id> | Built-in daily raid time and raid. Refused while a partner Activity Director controls scheduling; edit activity/activity-director.json instead |
sharding <true|false|auto|status> | Split large raids into shards |
bakeworld · sim · split · board | Raid world baking, simulation, shard split and board tools |
create | Points to the raid creator on the website. Drop the downloaded zip in imports/ and run /lvl import install <name> |
Shared dungeons and campaign
| Command | Description |
|---|---|
/lvl <dungeon> reset · start · door <door> <action> · spawnboss <boss> · tp <zone> · vaultreset · quests | Staff controls for a shared dungeon (mournhollow, evergreen, infernal-kingdom, upper-lower-city, eternal-realm, plus any pack ids) |
/lvl <dungeon> collectibles status|reset|reroll|open|skip|add <n>|set <n> | Collectible hunt controls (aliases hexcores, hunt) |
/lvl campaign start [chapter] · cutscene <id> · act <act> · skirmish <key> · waypoints · status | Campaign staff tools |
/lvl campaign enable|disable <chapter|all> | Open or close campaign chapters. all writes campaign_enabled into server-overrides.json |
/lvl quests zone pos1|pos2|box <id>|sphere <id> <radius>|remove <id>|list | Quest zones |
/lvl quests create · migrate <mode> · providers · credit <player> <key> [amount] · event trigger|clear|giver|givers | Quest tools and manual credit. create points to the Quest Maker on the website |
XP boosts (Server Addon only)
This subtree only exists when a Server Addon is installed.
| Command | Description |
|---|---|
/lvl xp boost global start <mult> <minutes> [name] · stop · status | Server-wide XP boost |
/lvl xp boost player start <player> <mult> <minutes> [name] · stop · status | One player's boost |
/lvl xp boost stacking [mode] | How overlapping boosts combine |
Debug and developer tools
/lvl debug …, /lvl spawn <boss> [level], /lvl telegraph …, /lvl augmenttest …, /lvl bossbar, /lvl applymodifiers and /lvl trim_instance <radius> <minY> are development tools. /lvl debug is gated only by its engine node, airijko.endlesslevelingcore.command.lvl.debug. trim_instance deletes chunks and blocks in the world you stand in. Keep these to developers.
Console use
These admin commands refuse the console unless a Server Addon is installed: setlevel, setprestige, resetlevel, resetprestige, resetall, resetallplayers, resetskillpoints, skillpointssync, syncraceclass, syncplayerraceclass, addswapsall, /races addswap, /classes addswap, resetcampaign, resetcampaignall, checkprofile, xp give, rank, the /augments admin commands, import, build, temp, storage, backup, restore, restoreprofile and xpstats refresh|feed. In-game admins are unaffected.
reload, overrides, director, inv, sync, copyprofile, resetraidcooldown, resetraidcooldownall, and the /raid and shared-dungeon commands accept the console. /raid call needs a Server Addon there. resetcooldowns, /raid admin, /priest admin remove and dungeon tp are in-game only.
Permissions
There are three kinds of node.
Explicit grant only
These match only the literal node. *, endlessleveling.*, op/admin groups and prefix wildcards do not grant them, so an admin never skips a cooldown by accident. Nobody has them by default.
| Node | Effect |
|---|---|
endlessleveling.dungeon.bypass_cooldown | Skip the reward-claim cooldown in every dungeon |
endlessleveling.dungeon.bypass_cooldown.<slug> | Skip it in one dungeon. <slug> is the dungeon's world name without the instance- prefix and -* suffix. Nodes are registered from dungeons.json on every reload, so they tab-complete |
endlessleveling.race.bypass_cooldown | Skip the race-swap cooldown |
endlessleveling.class.bypass_cooldown | Skip the class-swap cooldown |
endlessleveling.race.bypass_count | Unlimited race swaps |
endlessleveling.class.bypass_count | Unlimited class swaps |
endlessleveling.campaign.tester | Open the campaign for this player while campaign_enabled is false (still needs the Z Server Addon) |
Staff tool nodes
Admins and wildcards already pass these. Grant the node to give a non-admin staff member just that tool. The root node grants every sub-node.
| Node | Grants |
|---|---|
endlessleveling.inventory · .migrate · .status · .restore | /lvl inv |
endlessleveling.temp · .grant · .revoke · .deleteall · .status | /lvl temp |
endlessleveling.sync · .set · .status | /lvl sync |
endlessleveling.copyprofile · .others | /lvl copyprofile (.others acts on other players) |
Normal nodes
An exact grant or admin access passes these.
| Node | Effect |
|---|---|
endlessleveling.profile.bypass_cooldown | Skip the profile-creation cooldown |
endlessleveling.dungeon.bypass_level | Skip the dungeon level requirement. The node name is set by level_requirement.bypass_permission in dungeons.json |
endlessleveling.raid.bypass_prestige | Skip the raid minimum-prestige gate. Set by prestige_requirement.bypass_permission in raids/settings.json |
class required_permission | A class can name a node in its definition. Only holders (or admins) can pick that class. Unlocking the class in Endless Tower also counts |
Configuration & Tuning
All files live in mods/Airijko_EndlessLevelingCore/. Apply changes with /lvl reload.
Edit server-overrides.json, not the bundled files
Most bundled files are rewritten from the jar while their force_builtin_* flag in config.json is true (the default). config.json and leveling.json are re-synced every time they load, so a hand edit is reverted on the next /lvl reload as well as on restart. dungeons.json, world-settings/, races/, classes/, augments/ and passives/ are replaced when an update ships a newer bundled version. The old copy is archived to old/ first.
You have two supported options:
server-overrides.json(recommended). It is created once and never overwritten. Its values are laid over the loaded config at runtime, so updates keep working. Only the keys already listed in the file are honoured; an unknown key is logged as a warning and ignored. After an update, run/lvl overrides syncto preview./lvl overrides sync applyadds new keys, drops keys that no longer exist, refreshes the help text and saves a backup first. Your values are kept.- Turn a flag off. Set
force_builtin_config,force_builtin_leveling,force_builtin_dungeonsand so on tofalseinconfig.json. Those flags survive rewrites. The file then keeps your values and only gains new keys on update. You also stop getting balance fixes for that file.
Level-cap and prestige keys in leveling.json, and everything in dungeons.json except reward_commands_enabled, are not in the overrides list. Changing them means option 2.
Never overwritten, so edit them directly: server-overrides.json, world-settings/disabled-worlds.json, everything under raids/, and activity/activity-director.json.
Main files
| File | What it controls | Keys operators usually tune |
|---|---|---|
config.json | Feature switches and defaults | auto_update_imports (on), enable_races, enable_classes, default_race, choose_race_cooldown (3600 s), choose_class_cooldown (1800 s), default_race_swaps, default_class_swaps (-1 or ENDLESS = unlimited), starting_profiles (3), create_profile_cooldown (1800 s), leave_command_enabled, dungeons_page_enabled, quests_page_enabled, campaign_enabled (off), global_scaling, pvp_scaling, server_timezone, language.locale, deleted_profile_archive |
leveling.json | XP curve and caps | player_level_cap (50), absolute_level_cap_value (250), baseSkillPoints (10), skillPointsPerLevel (4), prestige.level_cap_increase_per_prestige (10), prestige.base_xp_increase_per_prestige (20), death_xp_penalty, party_xp_share, Mob_Leveling |
events.json | Console commands on level-up, prestige and schedules | prestige_level_up, player_level_up, prestige_rank_sync (LuckPerms track), scheduled (e.g. a weekend XP boost). Not overwritten unless force_builtin_events is true |
dungeons.json | Per-dungeon rules | level_requirement (tolerance 5, exempt_prestiged), entry_cooldown, progression.reset_hour, fragment_queue, matchmaking_defaults, per-dungeon xp_banking |
world-settings/disabled-worlds.json | Where Endless runs | Disabled_Worlds (Endless fully off), Blacklisted_Worlds (no XP, no mob levels), XP_Only_Blacklisted_Worlds (no XP, everything else on). Exact names or * globs |
world-settings/*.json | Per-world mob levels and XP rules | global.json plus one file per dungeon |
raids/settings.json | Rules for every raid | reward_cooldown_seconds (3600), max_raid_rewards_per_day (4), sharding.defaults, prestige_requirement |
raids/network.json | Cross-server raids | enabled (off; needs the Official (SSS) addon and a license) |
activity/activity-director.json | When raids, events and gates run | enabled, mode, window_start, window_hours, interval_minutes, composition. Per server: activity_director.enabled in server-overrides.json (auto, true, false) |
weapons.json | Weapon families | Merged on update by default |
imports/ | Drop-in content packs | Managed with /lvl import |
lang/<locale>.lang | Your own text overrides | Seed one with /lvl lang import <locale> |
Money rewards. Dungeon reward commands (xp_banking.reward_commands, for example eco give) can be switched off server-wide with reward_commands_enabled in server-overrides.json. Raid reward commands, set in each raid's rewards.json, have no such switch.
Imports on a busy server. Installing, updating or removing a pack applies live, but briefly freezes every world while assets re-register. Large installs and forced updates or removals are refused above imports.live_apply_max_online (10) players online; packs of 8 MiB or less still install. Removing a pack with players online hides it now and unloads it at the next restart. imports.live_apply_override skips the check. With auto_update_imports on, pack updates apply at boot.
Player data
Player data is SQLite at db/endlessleveling.db. Backups go to backups/suite/ and deleted profiles to backups/deleted-profiles/ (20 per player, kept 90 days). An external MySQL store needs the SSS or Z Server Addon.
If the data folder is read-only, EL-Core moves its data to a user-writable location and logs where.
JVM flags
| Flag | Effect |
|---|---|
-Dendless.prefabLibrary.enabled=false | Stop building the Endless pack in the prefab browser |
-Dendless.quests.modGate.enabled=false | Show quests even when the mod they need is missing |
-Dendless.ui.statIcons=false | Plain text instead of stat icons |
-Dendlessleveling.disableCrossServerRaids=true | Turn off cross-server raids |
-Dendlessleveling.disableRealmHeartbeat=true · -Dendlessleveling.disableRealmStatus=true | Stop reporting this server's heartbeat and status to the realm list |
-Del.raid_grant.enabled=false | Grant raid rewards in one go instead of spreading them over ticks (el.raid_grant.per_tick, default 6, and el.raid_grant.drip_ms, default 100, tune the spread) |
Integrations
- LuckPerms: no API hook.
prestige_rank_syncinevents.jsonand/lvl rank resyncrunlp user … promote/parent setconsole commands. - PlaceholderAPI: registers
%el_*%and%endlessleveling_*%. Token list on the Placeholder API page. - PartyPro: parties,
/party, party XP share. - EndlessLink: titles, Discord server-log relay, inbox, raid pre-reminders.
- Endless Skills, Fates, Elite Mobs, Tower: detected at runtime, never required. Tower can unlock classes and, through
tower_integrationinconfig.json, take over reroll and swap rewards. - Economy: EL-Core uses no economy API. Money comes from reward console commands (see above).
- OrbisGuard, SimpleClaims: Priest church placement respects their claims.