English
EmakiLevel
What the EmakiLevel plugin does, how to install it, which files it releases by default, and which level types ship with it are described below
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
| Item | Value |
|---|---|
| Module version | 1.6.9 |
| Runtime plugin jar | EmakiLevel-1.6.9.jar |
| Developer API jar | emaki-level-api-1.6.6.jar |
| Main class | emaki.jiuwu.craft.level.EmakiLevelPlugin |
| Main command | /emakilevel |
| Aliases | /elv, /elevel |
| Hard dependency | EmakiCoreLib |
| Soft dependencies | MythicMobs, EmakiAttribute, EmakiCooking, EmakiForge, PlaceholderAPI |
| Main permissions | emakilevel.use (default true), emakilevel.levelup (true), emakilevel.top (true), emakilevel.reload (op), emakilevel.debug (op), emakilevel.admin (op) |
| Data storage | plugins/EmakiLevel/data/<uuid>.yml |
| Java / platform | Java 25 project baseline, api-version: 26.1, folia-supported: true |
Installation
Install only runtime plugin jars on the server:
text
plugins/
├─ EmakiCoreLib-*.jar
└─ EmakiLevel-1.6.9.jarDo 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 plugin | Enabled capability |
|---|---|
| PlaceholderAPI | Registers %emakilevel_*% placeholders |
| MythicMobs | Enables MythicMob kill sources and emakilevel_exp / elv_exp intangible drops |
| EmakiAttribute | Converts attributes.values from level types into attribute contributions |
| EmakiCooking / EmakiForge | Can grant level experience through CoreLib actions from recipes or processes |
Features
- Multiple level types: each
types/*.ymlfile defines one level type. Defaults includemain,combat,mining,fishing,crafting,brewing,smelting, andtaming - 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 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 (the boot-time initialization sequence):
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>.ymlconfig.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 ID | Purpose | Max level | Requirement group | Default upgrade mode | Default attributes |
|---|---|---|---|---|---|
main | Main progression | 100 | main | auto + manual | attribute_power = %level% * 0.5 |
combat | Vanilla and MythicMobs combat | 80 | combat | auto + manual | physical_attack, physical_crit_rate |
mining | Mining | 60 | mining | manual, auto disabled by default | mining_power = %level% * 0.2 |
logging | Log chopping | 60 | logging | auto + manual | disabled |
gathering | Plant gathering | 60 | gathering | auto + manual | disabled |
farming | Mature crop harvest | 60 | farming | auto + manual | disabled |
fishing | Fishing | 60 | fishing | auto + manual | disabled |
taming | Entity taming | 60 | taming | auto + manual | disabled |
crafting | Crafting | 60 | crafting | auto + manual | disabled |
brewing | Brewing stand completion | 60 | brewing | auto + manual | disabled |
smelting | Furnace extraction | 60 | smelting | auto + manual | disabled |
cooking | Reserved for cooking gameplay | 60 | cooking | auto + manual | disabled |
forging | Reserved for forging gameplay | 60 | forging | auto + manual | disabled |
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
Work through these steps in order to get the level system running:
- Install and start
EmakiCoreLibandEmakiLevel - Review
plugins/EmakiLevel/types/and keep only the level types you need - Configure requirement curves in
requirements.yml - Configure experience sources in
sources/*.yml - If manual level-up should cost money or materials, edit
types/<type>.yml > upgrade.cost - If EmakiAttribute is installed, configure
types/<type>.yml > attributes.values - Run
/elv reload - 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: 1730000000000Level-up flow:
- Resolve the level type and ensure it is enabled
- Add current-level
expandtotal_exp - Execute
upgrade.actions.gain - If auto-upgrade is allowed, try level-ups up to
level.max_auto_upgrade_steps - Check requirement exp, max level, manual/auto switches, money costs, and material costs
- On success, consume requirement exp, increase level, grant rewards, and execute
upgrade.actions.success - On failure, execute
upgrade.actions.failurewithfailure_reason - 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/*.ymltriggers, 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.eventand their cancellability