Skip to content

EmakiLevel

EmakiLevel is the Emaki Series level and multi-experience-type plugin. It stores long-term player progression separately from vanilla experience and can manage multiple level tracks such as main, combat, mining, fishing, crafting, brewing, smelting, and taming.

It integrates level types, experience sources, requirements, rewards, attribute contributions, PlaceholderAPI, CoreLib actions, and MythicMobs drops into one runtime plugin.

Module facts

ItemValue
Module version1.4.0
Runtime plugin jarEmakiLevel-1.4.0.jar
Developer API jaremaki-level-api-1.4.0.jar
Main classemaki.jiuwu.craft.level.EmakiLevelPlugin
Main command/emakilevel
Aliases/elv, /elevel
Hard dependencyEmakiCoreLib
Soft dependenciesMythicMobs, EmakiAttribute, EmakiCooking, EmakiForge, PlaceholderAPI
Main permissionsemakilevel.use (default true), emakilevel.levelup (true), emakilevel.top (true), emakilevel.reload (op), emakilevel.debug (op), emakilevel.admin (op)
Data storageplugins/EmakiLevel/data/<uuid>.yml
Java / platformJava 25 project baseline, api-version: 1.21.8, folia-supported: true

Installation

Install only runtime plugin jars on the server:

text
plugins/
├─ EmakiCoreLib-*.jar
└─ EmakiLevel-1.4.0.jar

Do not put emaki-level-api-*.jar into the server plugins/ directory. The API jar is only for third-party developers as a Maven provided or Gradle compileOnly dependency. The runtime plugin jar shades its own API.

Optional plugins enable additional features:

Optional pluginEnabled capability
PlaceholderAPIRegisters %emakilevel_*% placeholders.
MythicMobsEnables MythicMob kill sources and emakilevel_exp / elv_exp intangible drops.
EmakiAttributeConverts attributes.values from level types into attribute contributions.
EmakiCooking / EmakiForgeCan grant level experience through CoreLib actions from recipes or processes.

Features

  • Multiple level types: each types/*.yml file defines one level type. Defaults include main, combat, mining, fishing, crafting, brewing, smelting, and taming.
  • Per-player YAML data: one file per player storing level, exp, total_exp, and update time for every level type.
  • Layered requirements: required experience resolves from type overrides, then requirement groups, then global defaults. Exact values and formulas are both supported.
  • Automatic and manual level-up: each type can control auto-upgrade, manual /elv levelup, economy costs, material costs, item rewards, and action phases.
  • Experience listeners: vanilla kills, MythicMobs kills, block breaking, mature crop harvest, fishing, crafting, brewing, furnace extraction, and taming.
  • Anti-abuse helpers: tracks player-placed blocks and recent damagers.
  • CoreLib actions: other Emaki plugins, scripts, or third-party integrations can add/remove exp or levels.
  • PDC sync: online players receive PDC values for level, exp, total exp, required exp, and progress.
  • Attribute bridge: when EmakiAttribute is installed, level formulas can contribute attributes.

Runtime folder

On first startup, default resources are released by the CoreLib Bootstrap flow:

text
plugins/EmakiLevel/
├─ config.yml
├─ requirements.yml
├─ types/
│  ├─ main.yml
│  ├─ combat.yml
│  ├─ mining.yml
│  └─ ...
├─ sources/
│  ├─ combat.yml
│  ├─ block_actions.yml
│  ├─ mythicmobs.yml
│  └─ ...
├─ gui/
│  ├─ level_gui.yml
│  └─ top_gui.yml
├─ lang/
│  ├─ zh_CN.yml
│  └─ en_US.yml
└─ data/
   └─ <uuid>.yml

config.yml > release_default_data: true controls whether missing bundled data files such as requirements.yml, types/, sources/, and gui/ should be released. Customized existing files are not overwritten by normal restarts.

Default level types

Type IDPurposeMax levelRequirement groupDefault upgrade modeDefault attributes
mainMain progression100mainauto + manualattribute_power = %level% * 0.5
combatVanilla and MythicMobs combat80combatauto + manualphysical_attack, physical_crit_rate
miningMining60miningmanual, auto disabled by defaultmining_power = %level% * 0.2
loggingLog chopping60loggingauto + manualdisabled
gatheringPlant gathering60gatheringauto + manualdisabled
farmingMature crop harvest60farmingauto + manualdisabled
fishingFishing60fishingauto + manualdisabled
tamingEntity taming60tamingauto + manualdisabled
craftingCrafting60craftingauto + manualdisabled
brewingBrewing stand completion60brewingauto + manualdisabled
smeltingFurnace extraction60smeltingauto + manualdisabled
cookingReserved for cooking gameplay60cookingauto + manualdisabled
forgingReserved for forging gameplay60forgingauto + manualdisabled

Default types are templates. You may add, remove, disable, or rename types/*.yml entries, but commands, placeholders, source rules, and actions must reference the same type ID.

Basic workflow

  1. Install and start EmakiCoreLib and EmakiLevel.
  2. Review plugins/EmakiLevel/types/ and keep only the level types you need.
  3. Configure requirement curves in requirements.yml.
  4. Configure experience sources in sources/*.yml.
  5. If manual level-up should cost money or materials, edit types/<type>.yml > upgrade.cost.
  6. If EmakiAttribute is installed, configure types/<type>.yml > attributes.values.
  7. Run /elv reload.
  8. Verify with /elv info, /elv debug requirement <type> <level>, and PlaceholderAPI.

Player data overview

yaml
schema_version: 1
uuid: "00000000-0000-0000-0000-000000000000"
name: "PlayerName"
levels:
  main:
    level: 1
    exp: 0.0
    total_exp: 0.0
    updated_at: 1730000000000

Level-up flow:

  1. Resolve the level type and ensure it is enabled.
  2. Add current-level exp and total_exp.
  3. Execute upgrade.actions.gain.
  4. If auto-upgrade is allowed, try level-ups up to level.max_auto_upgrade_steps.
  5. Check requirement exp, max level, manual/auto switches, money costs, and material costs.
  6. On success, consume requirement exp, increase level, grant rewards, and execute upgrade.actions.success.
  7. On failure, execute upgrade.actions.failure with failure_reason.
  8. Sync PDC and refresh EmakiAttribute contributions when available.

Documentation pages

  • Commands: player/admin commands, permissions, and examples.
  • Placeholders: all %emakilevel_*% placeholders and leaderboard placeholders.
  • Configuration: main config, level types, requirements, costs, rewards, PDC, and attributes.
  • Experience Sources: sources/*.yml triggers, match fields, formula variables, and anti-abuse behavior.
  • MythicMobs Integration: MythicMob kill exp and custom drops.
  • CoreLib Actions: actions EmakiLevel registers in the CoreLib action registry.
  • API: developer API, CoreLib actions, static facade, and provider helper usage.
  • Events: Bukkit events in emaki.jiuwu.craft.level.api.event and their cancellability.
  • JavaScript: the emaki.module("level") facade, exp rules, and level-up hooks.