English
Accessory Sets
Accessory sets: which members make up a set, where each piece must be worn, and how many pieces trigger which tier. Accessory sets live under plugins/EmakiAccessory/sets/; the file name is not used for identification, and the set id comes from the id field inside the file
Accessory sets and EmakiItem equipment sets are independent mechanisms that do not affect each other: this one only counts pieces worn in accessory slots, while EmakiItem only counts the equipment slots. One item can belong to both sides at once, and each side counts independently
Only the enabled page contributes pieces: accessories on other pages never count, even when a full set sits there. When a player loses the enabled page's permission, that page contributes zero and the set deactivates
Full Example
yaml
id: "example_set"
display_name: "<gold>Trialist's Accessories</gold>"
pieces:
necklace:
item: "example_necklace"
slot: "necklace"
display: "<gray>Trialist's Necklace</gray>"
ring:
item: "example_ring"
slot: "ring"
display: "<gray>Trialist's Ring</gray>"
charm:
item: "example_charm"
slot: "charm"
display: "<gray>Trialist's Charm</gray>"
thresholds:
2:
effects:
- ea_attributes:
max_health: 4.0
defense: 2.0
3:
effects:
- ea_attributes:
max_health: 6.0
crit_chance: 0.05
es_skills:
- "example_dash"Top-Level and pieces Fields
| Field | Type | Required | Default | Allowed values | Description |
|---|---|---|---|---|---|
id | string | Yes | — | — | Set id; when it normalizes to blank the whole file is skipped |
display_name | string | No | "" | — | Set display name; MiniMessage is supported |
pieces | map<string, object> | Yes | — | — | Set members; with zero members the whole definition is skipped (accessory.set_without_pieces) |
pieces.<memberKey>.item | string | Yes | — | — | EmakiItem's item definition id; when it normalizes to blank the member is skipped (accessory.set_piece_invalid) |
pieces.<memberKey>.slot | string | No | empty (treated as all internally) | a part id / a slot instance id / empty | Where this accessory must be worn to count; a value that can never hit an accessory slot keeps the member at zero |
pieces.<memberKey>.display | string | No | "" | — | Text used when presenting this member in the window |
thresholds | map<integer, object> | No | {} | keys must be integers between 1 and the member count | Piece thresholds; when the section is missing or fully skipped, the set still exists but grants nothing |
The key names are only identifiers within the file; what actually matters is item and slot
Without EmakiItem the whole set is inactive: with no definition id, the system cannot decide "this is that accessory"
The Three Forms of slot
| Form | Meaning |
|---|---|
A part id, such as ring | Any cell of that part counts |
An instance id, such as ring_1 | Only that one cell counts |
| Empty | Any accessory slot counts (the internal value is all) |
thresholds — Piece Thresholds
The key is "how many pieces are worn" and must be an integer between 1 and the member count; non-numeric or out-of-range tiers are skipped and logged as accessory.set_threshold_not_numeric / accessory.set_threshold_out_of_range
Thresholds are cumulative, not exclusive: wearing 3 pieces activates both the 2-piece and 3-piece tiers. Take the example above: a player wearing 3 pieces receives max_health: 10.0 (4.0 + 6.0), defense: 2.0, crit_chance: 0.05 and the skill example_dash
effects
| Field | Type | Required | Default | Allowed values | Description |
|---|---|---|---|---|---|
thresholds.<count>.effects | list<object> | No | [] | — | Effects of that tier; across the entries of the list, same-named attributes are summed and skills deduplicated |
thresholds.<count>.effects[].ea_attributes | map<string, number> | No | {} | values must be finite numbers (NaN/Infinity are dropped) | A map from attribute name to value, feeding EmakiAttribute. Names that normalize to blank are dropped |
thresholds.<count>.effects[].es_skills | list<string> | No | [] | — | A list of skill ids, feeding EmakiSkills; duplicates are removed |
yaml
thresholds:
2:
effects:
- ea_attributes:
max_health: 4.0
defense: 2.0
3:
effects:
# several entries and several skills can stack on one tier
- ea_attributes:
max_health: 6.0
es_skills:
- "example_dash"
- es_skills:
- "example_leap"Attribute names and value semantics follow EmakiAttribute, and skill ids follow EmakiSkills. For how these connect to the respective modules, see Attributes and Skills
Piece Count Notifications
When a set's equipped piece count changes, AccessorySetBonusChangeEvent fires. It fires only at the moment the count changes, never repeats while the count stays the same, and cannot be cancelled; see Event API
Accessories in orphaned slots never count toward the total, so removing a part from parts.yml lowers the count reported here