Content generated with AI — it may contain mistakes.

Configuring

Effects and categories

How effects.yml is written, the three triggers of a shot, and the 120 effects that ship.

The file

Two sections: the categories, and the effects that belong to them. An effect's effects block is a map of triggers, not a list.

effects.yml
categories:
  ember:
    material: BLAZE_POWDER
    name: 'Ember'
    priority: 1
 
arrow_effects:
  EMBER_TRAIL:
    category: ember
    tier: common
    name: "<gradient:#FFD08A:#C43A10><bold>EMBER TRAIL</bold></gradient>"
    material: BLAZE_ROD
    description: "Coals come off the shaft, {highlight}tumble, and burn out{neutral} behind it."
    priority: 1
    trail-interval: 1
    effects:
      trail:
        - '[DISPLAY] MAGMA_BLOCK;as:block;size:0.09;size_to:0.01;life:0.45;spin:1,1,1;gravity:2;light:15;glow:{warning}'
        - '[PARTICLE] FLAME;count:2;offset:0.04,0.04,0.04;speed:0.01'
      hit:
        - '[SOUND] BLOCK_FIRE_EXTINGUISH;0.7;1.3'
        - '[CIRCLE] MAGMA_BLOCK;as:block;radius:0.2;points:10;size:0.1,0.05,0.1;size_to:0.5,0.04,0.5;pull:-2;ease:out;life:0.45;y:0.05;light:15;glow:{warning}'
        - '[PARTICLE] FLAME;count:14;offset:0.4,0.2,0.4;speed:0.05'
KeyWhat it does
categoryWhich tab it appears under. Must be a key declared under categories.
tierHow rare it is. Must be a key declared under config.yml's tiers; without it the effect is common. It decides the colour it is named in, the odds of a crate landing on it, and what exyliarrows.tier.<id> grants.
nameWhat menus and placeholders call it.
materialThe item the row is drawn with.
descriptionA list is one line per entry; a single string breaks on <nl>.
priorityWhere it sits in its tab; lower comes first.
trail-intervalTicks between trail steps. 1 is every tick, 2 every other. Defaults to trail.default-interval.
effectsThe triggers, below.
bowsOptional. What it may be bound to.
projectilesOptional. Which projectiles it plays on; without it config.yml decides.

The triggers

TriggerWhen
launchThe shot leaving the bow.
trailAlong the flight, every trail-interval ticks.
hitWherever it lands, whatever it hit.
hit-entityOnly on something alive — falls back to hit.
hit-blockOnly on a block — falls back to hit.

hit-entity and hit-block are the same moment told apart: declare them when landing on a player and landing on the ground deserve different pictures. Written either way — hit-entity or hit_entity — because a hyphen is what every other Exylia file writes.

The trail is the one with a budget

An arrow lives about forty ticks, and four archers are four arrows in the air. Whatever trail writes is drawn on every one of those ticks, per shot: one or two small displays plus a particle line for the glow, and no sound. The impact is the payoff and is allowed to be one — under a second, a dozen displays at the very most.

bows

Only read while behaviour.mode reads bows. It accepts item names and families:

bows: [ CROSSBOW, TRIDENT ]
FamilyMatches
ANYAnything at all.
BOW, CROSSBOW, TRIDENTJust that item.
RANGEDBows, crossbows and tridents.

None of the shipped effects declares bows, so out of the box every one of them fits everything.

The effect id is the permission

EMBER_TRAIL is exyliarrows.effect.ember_trail. Renaming the key renames the node. Case is not part of it: ids are lowercased on the way in.

The catalogue

Twenty effects per category, 120 in total.

Ember — BLAZE_POWDER

EMBER_TRAIL INFERNO CINDERFALL MAGMA_CORE FIREBRAND SCORCH PYRE ASHFALL FORGE_STRIKE METEOR MOLTEN_RAIN EMBER_WINGS COALFALL FLINT_SPARK SUNFIRE CRIMSON_BLOOM TORCHLIGHT FURNACE_BLAST WILDFIRE PHOENIX

Frost — BLUE_ICE

FROSTBITE SNOWFALL ICE_SHARD BLIZZARD GLACIER HAILSTORM PERMAFROST FROZEN_CORE SLEET ICICLE FROST_NOVA DEEP_FREEZE AURORA DIAMOND_DUST COLD_SNAP FROSTED_GLASS CRYO_SHOT AVALANCHE WINTER_BLOOM ABSOLUTE_ZERO

Storm — LIGHTNING_ROD

THUNDERBOLT STATIC_CHARGE WIND_GUST SQUALL TEMPEST CHAIN_LIGHTNING SKYFALL CLOUDBURST DOWNPOUR CYCLONE THUNDERHEAD WIND_SHEAR STORM_SURGE IONISE GALE BREEZE_SHOT MONSOON STATIC_WEB UPDRAFT SKYBREAKER

Void — ECHO_SHARD

SOULBOUND VOID_TEAR SCULK_BLOOM WITHERING ENDER_RIFT SHADOW_STEP NECROTIC SHRIEKER ABYSS GRAVE_DUST WRAITH OBSIDIAN_TEAR DARK_MATTER SOUL_FIRE CATACOMB NULL REAPER PHANTASM DECAY EVENT_HORIZON

Prism — AMETHYST_SHARD

STARLIGHT AMETHYST ARCANE_BOLT SPECTRUM BEACON GILDED REFRACTION NOVA SANCTUM GLIMMER ECHO_CRYSTAL STARFALL LUMEN KALEIDOSCOPE SOLAR_FLARE CRYSTALLINE PRISM_ARROW HALO MIRROR CELESTIAL

Goofy — SLIME_BALL

BONK RUBBER_CHICKEN PIE CONFETTI BUBBLE SLIME_TIME CAKE_DROP DUCK ANGRY_BEE BOING SQUEAK TOAST BANANA TNT_PRANK SNOWBALL_FIGHT ANVIL_DROP OOF SAD_TRUMPET DISCO ROLL_CREDITS

NULL is an effect, not a mistake

The void category has one called NULL. YAML reads that key as nothing at all unless it is quoted, so leave it exactly as the file writes it if you are editing around it.

Writing your own

Add the entry

A new key under arrow_effects, with a category that exists and an effects block naming at least one trigger.

Spend where it shows

Keep the trail to a display or two; put the work in hit. The full step syntax is in Sequences.

Reload

/arrowsadmin reload.

Look at it

/arrows preview <id> plays it against an empty sky, then puts you back.

Grant it

exyliarrows.effect.<id in lowercase>, or the whole category.

Something missing on this page? Tell us on Discord