EmakiSkills Overview
EmakiSkills is a skill system supporting both active and passive skills. Active skills are unlocked through equipment, bound to slots and triggers, and cast by pressing keys in cast mode. Passive skills are automatically triggered by game events (attack, damage, kill, etc.) without requiring cast mode or slot bindings. Skill effects are handled by MythicMobs; EmakiSkills manages when skills can be cast, how they're triggered, and what resources they consume.
Basic Information
| Property | Value |
|---|---|
| Version | 1.0.0 |
| artifactId | emaki-skills |
| Main Class | emaki.jiuwu.craft.skills.EmakiSkillsPlugin |
| Root Command | /emakiskills |
| Alias | /eskills |
| Hard Dependency | EmakiCoreLib |
| Soft Dependencies | MythicMobs, EmakiAttribute, PlaceholderAPI |
信息
EmakiSkills is a closed-source module, included in the build via the private-modules profile.
注意
EmakiSkills is the skill management layer; the actual skill effects are handled by MythicMobs configurations. Without MythicMobs, Skills can still be enabled, but actual skill casting will fail.
Core Responsibilities
- Collect unlocked skills from equipment PDC / Lore and external providers
- Maintain player skill slots, trigger bindings, and YAML profiles
- Provide Cast Mode, ActionBar refresh, and trigger event dispatching
- Active skills: check cooldowns, forced delays, and resource costs before calling MythicMobs
- Passive skills: listen to 22 game events (attack, damage, kill, arrow, etc.) and auto-trigger unlocked passive skills
- Cast skills via
MythicBridge, passing event target info for passive skills - Read
EmakiAttributeBridgeservice viaEaBridgefor resource and attribute checks
config.yml Full Format
# Config file version
config_version: "1.0.0"
# Language file identifier
language: zh_CN
# Whether to release default resources on first startup
release_default_data: true
# ============================================================
# Slot Configuration
# ============================================================
slots:
# Default number of skill slots per player
default_count: 3
# ============================================================
# Cast Mode Configuration
# ============================================================
cast_mode:
# Cast mode entry key — fixed to F key (PlayerSwapHandItemsEvent)
# The F key's original swap-hand function is intercepted by cast mode
entry_key: "f"
# Whether to restore the last cast mode state when a player rejoins
restore_last_state_on_join: true
# ============================================================
# Cast Timing Configuration
# ============================================================
cast_timing:
# Forced global cast delay (ticks), minimum interval between two casts
# 0 = no forced delay
forced_global_cast_delay_ticks: 0
# ============================================================
# ActionBar Configuration
# ============================================================
actionbar:
# Whether to enable ActionBar display
enabled: true
# Refresh interval (ticks)
refresh_interval_ticks: 10
# ActionBar template in cast mode
# Available variables: {slot_1} ~ {slot_N}, {slot_display}, {forced_delay}
template_cast_mode: "&aCast Mode &7| {slot_display}"
# ActionBar template outside cast mode
template_idle: "&7Idle"
# ============================================================
# Trigger Configuration
# Defines display names, enabled state, and conflict rules for all 15 triggers
# ============================================================
triggers:
left_click:
display_name: "[左键]"
enabled: true
incompatible_with:
- "shift_left_click"
right_click:
display_name: "[右键]"
enabled: true
incompatible_with:
- "shift_right_click"
shift_left_click:
display_name: "[Shift + 左键]"
enabled: true
incompatible_with:
- "left_click"
shift_right_click:
display_name: "[Shift + 右键]"
enabled: true
incompatible_with:
- "right_click"
drop_q:
display_name: "[Q 键]"
enabled: true
incompatible_with: []
hotbar_1:
display_name: "[数字键 1]"
enabled: true
incompatible_with: []
hotbar_2:
display_name: "[数字键 2]"
enabled: true
incompatible_with: []
hotbar_3:
display_name: "[数字键 3]"
enabled: true
incompatible_with: []
hotbar_4:
display_name: "[数字键 4]"
enabled: true
incompatible_with: []
hotbar_5:
display_name: "[数字键 5]"
enabled: true
incompatible_with: []
hotbar_6:
display_name: "[数字键 6]"
enabled: true
incompatible_with: []
hotbar_7:
display_name: "[数字键 7]"
enabled: true
incompatible_with: []
hotbar_8:
display_name: "[数字键 8]"
enabled: true
incompatible_with: []
hotbar_9:
display_name: "[数字键 9]"
enabled: true
incompatible_with: []
# ============================================================
# Passive Trigger Settings
# ============================================================
passive_trigger_settings:
# Check interval for the timer passive trigger (ticks)
timer_interval_ticks: 20
# ============================================================
# Passive Trigger Configuration
# Declared via passive_triggers in skill definitions; players cannot modify in GUI
# ============================================================
passive_triggers:
attack:
display_name: "[Attack Hit]"
enabled: true
incompatible_with: []
damaged:
display_name: "[Damaged]"
enabled: true
incompatible_with: []
damaged_by_entity:
display_name: "[Damaged by Entity]"
enabled: true
incompatible_with: []
death:
display_name: "[Death]"
enabled: true
incompatible_with: []
kill_entity:
display_name: "[Kill Entity]"
enabled: true
incompatible_with: []
kill_player:
display_name: "[Kill Player]"
enabled: true
incompatible_with: []
shoot_bow:
display_name: "[Shoot Bow]"
enabled: true
incompatible_with: []
arrow_hit:
display_name: "[Arrow Hit Entity]"
enabled: true
incompatible_with: []
arrow_land:
display_name: "[Arrow Land]"
enabled: true
incompatible_with: []
shoot_trident:
display_name: "[Throw Trident]"
enabled: true
incompatible_with: []
trident_hit:
display_name: "[Trident Hit Entity]"
enabled: true
incompatible_with: []
trident_land:
display_name: "[Trident Land]"
enabled: true
incompatible_with: []
break_block:
display_name: "[Break Block]"
enabled: true
incompatible_with: []
place_block:
display_name: "[Place Block]"
enabled: true
incompatible_with: []
drop_item:
display_name: "[Drop Item]"
enabled: true
incompatible_with: []
shift_drop_item:
display_name: "[Shift+Drop Item]"
enabled: true
incompatible_with: []
swap_items:
display_name: "[Swap Items]"
enabled: true
incompatible_with: []
shift_swap_items:
display_name: "[Shift+Swap Items]"
enabled: true
incompatible_with: []
login:
display_name: "[Login]"
enabled: true
incompatible_with: []
sneak:
display_name: "[Sneak]"
enabled: true
incompatible_with: []
teleport:
display_name: "[Teleport]"
enabled: true
incompatible_with: []
timer:
display_name: "[Timer]"
enabled: true
incompatible_with: []Tip
incompatible_with defines conflict relationships between triggers. When a player selects a trigger for a slot, options that conflict with already-selected triggers will be disabled. For example, left_click and shift_left_click are mutually exclusive because the Shift+Left-click event also triggers the left-click event.
Default Resource Directory
| File/Directory | Description |
|---|---|
config.yml | Main configuration |
skills/ | Skill definitions (1 default) |
resources/ | Local resource definitions |
gui/ | GUI configuration |
lang/ | Language files |
data/ | Runtime player data |
Default Content
| Content Type | Count |
|---|---|
| Skill Definitions | 2 (1 active + 1 passive) |