Skip to content

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

PropertyValue
Version1.0.0
artifactIdemaki-skills
Main Classemaki.jiuwu.craft.skills.EmakiSkillsPlugin
Root Command/emakiskills
Alias/eskills
Hard DependencyEmakiCoreLib
Soft DependenciesMythicMobs, 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 EmakiAttributeBridge service via EaBridge for resource and attribute checks

config.yml Full Format

yaml
# 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/DirectoryDescription
config.ymlMain configuration
skills/Skill definitions (1 default)
resources/Local resource definitions
gui/GUI configuration
lang/Language files
data/Runtime player data

Default Content

Content TypeCount
Skill Definitions2 (1 active + 1 passive)

Released under the GPL-3.0 License