Content generated with AI — it may contain mistakes.

Reference

Configuration

Every block of config.yml, with its defaults.

config.yml is written from a schema: comments are regenerated on every start, unknown keys are dropped, and a key you delete comes back with its default.

behaviour

behaviour:
  mode: both
  consume-token: true
  consume-remover: true
  require-permission: true
  hide-without-permission: false
KeyDefaultWhat it does
modebothplayer, bow or both. See Modes and tokens.
consume-tokentrueWhether the token is spent when it is bound.
consume-removertrueWhether the remover is spent when it unbinds.
require-permissiontrueWhether playing an effect needs its node. Commands and the API are never limited by it.
hide-without-permissionfalseWhether locked effects are hidden in the menu instead of shown locked.

projectiles

Which launched projectiles carry an effect at all.

projectiles:
  all-types: true
  default-allowed-types:
    - ARROW
    - SPECTRAL_ARROW
    - TRIDENT
    - EGG
    - SNOWBALL
    - WIND_CHARGE
    - ENDER_PEARL
KeyDefaultWhat it does
all-typestrueEvery launched projectile carries the effect.
default-allowed-typesseven typesRead only while all-types is false and the effect names no projectiles of its own.

trail

trail:
  default-interval: 1
  max-duration: 10
  max-active: 200
KeyDefaultWhat it does
default-interval1Ticks between trail steps for an effect that sets no trail-interval.
max-duration10Seconds a trail may live before it is cancelled — an arrow lost in an unloaded chunk would otherwise draw forever.
max-active200How many trails may be drawing at once on the whole server. Shots over the limit still play their launch and impact; they simply leave no trail. 0 removes the limit.
max-active is what a crossbow volley is for

A trail is a repeating task and a burst of packets per tick. A full lobby firing crossbows is the case the ceiling exists for, and losing a trail is a great deal less visible than losing the tick rate.

token-item, remover-item and key-item

token-item:
  material: FIREWORK_STAR
  name: "{primary}&lARROW EFFECT &8» %effect%"
  lore:
    - "{secondary}Information:"
    - " {letters_black}▎ {letters}Drop this onto a bow to"
    - " {letters_black}▎ {letters}{highlight}bind the effect {letters}to it. The bow"
    - " {letters_black}▎ {letters}keeps everything it had."
    - ""
    - "{secondary}Fits:"
    - " {letters_black}▎ {info}%bows%"
    - ""
    - "{warning}➥ Drop onto a bow to bind"
    - ""
  glow: true
 
remover-item:
  material: SCRAPE_POTTERY_SHERD
  name: "{primary}&lEFFECT REMOVER"
  glow: true
 
key-item:
  material: TRIPWIRE_HOOK
  name: "{primary}&lCRATE KEY"
  glow: true

%effect% is the effect's name, %bows% what it fits. material is only used when the effect sets no icon of its own — a token is normally drawn as the effect's own material.

key-item is the key a player holds: right click a crate block with one and it opens. See The crate.

bow-lore

bow-lore:
  enabled: true
  lines:
    - "{secondary}Arrow Effect:"
    - " {letters_black}▎ {highlight}%effect%"

Drawn under a bound bow's own lore, on packets only. The item itself never carries these lines.

tiers

The rarities effects are sorted into, and how often each one comes out of a crate. Add, rename or delete any of them — the key is the id effects.yml writes as tier.

tiers:
  common:
    name: "Common"
    material: GRAY_DYE
    color: "{muted}"
    chance: 60.0
    priority: 1
  rare:
    name: "Rare"
    material: LIGHT_BLUE_DYE
    color: "{info}"
    chance: 25.0
    priority: 2
  epic:
    name: "Epic"
    material: PINK_DYE
    color: "{accent}"
    chance: 12.0
    priority: 3
  legendary:
    name: "Legendary"
    material: ORANGE_DYE
    color: "{highlight}"
    chance: 3.0
    priority: 4
KeyDefaultWhat it does
nameper rarityWhat menus and placeholders call it.
materialper rarityThe item the rarity is drawn with in the crate.
colorper rarityThe colour its name and its effects are written in.
chance60, 25, 12, 3A weight, not a percentage: the shares are worked out from the weights, so deleting a rarity re-spreads its odds.
priority1-4Where it sits in menus; lower comes first.

Each rarity is also a permission node, exyliarrows.tier.<id>. See Rarities and the crate.

crate

crate:
  enabled: true
  start-keys: 0
  duplicate-refund: 1
  reward: UNLOCK
  blocks: []
  max-at-once: 4
  spin-frames: 34
  stagger-seconds: 2.0
  on-spin:
    sound:
      name: BLOCK_NOTE_BLOCK_HAT
      pitch: 1.6
  on-win:
    sound:
      name: ENTITY_PLAYER_LEVELUP
      pitch: 1.2
  on-duplicate:
    sound:
      name: BLOCK_NOTE_BLOCK_BASS
      pitch: 0.8
KeyDefaultWhat it does
enabledtrueWhether the crate can be opened at all. Off, its button says so instead of opening.
start-keys0Keys a player is given the first time they are seen, written once when their row is created.
duplicate-refund1Keys handed back when a crate lands on an effect they already own.
rewardUNLOCKWhat a crate hands over. UNLOCK keeps the effect on the account, ITEM hands over only its token, BOTH does both. ITEM and BOTH want behaviour.mode set to bow or both.
blocksemptyThe blocks that open the crate when clicked. Bind them with /arrowsadmin crate block add rather than by hand.
max-at-once4How many crates may be opened in one go. The opening screen fits seven.
spin-frames34How many faces the first reel runs through before it stops. Capped at 200, about eleven seconds.
stagger-seconds2.0How long after one reel stops the next one does. 0 stops them together.
on-spin / on-win / on-duplicatesoundsFull ExyliaLib effect blocks: title, action bar, boss bar, sound, particle and firework. on-win and on-duplicate play once per reel, as it lands.

preview

Where /arrows preview and the menu's right click play an effect. The player is moved to the stage, the effect plays in front of them where only they can see it, and they are put back exactly where they were.

preview:
  location: ""
  distance: 5.0
  settle-ticks: 4
  linger-ticks: 20
  max-ticks: 600
KeyDefaultWhat it does
locationemptyWhere the player stands, as server,world,x,y,z,yaw,pitch. Set it in game with /arrowsadmin preview location.
distance5.0How far in front of them the effect plays, in blocks.
settle-ticks4How long to wait after the move, so the client has the new position before the first particle.
linger-ticks20How long the stage is held after the effect finishes.
max-ticks600The longest a preview may last, whatever goes wrong.
Previews are unavailable until a stage is set

There is no sensible default — a guess puts the player inside terrain. Until location is filled in, /arrows preview and the menu's right click say so instead of playing anything.

menu:
  empty: "{muted}Nothing"
  tab-open: "{success}✔ You are here"
  tab-closed: "{warning}➥ Click to open"
  bows-any: "Any bow"
  favourites-name: "Favourites"
  favourites-icon: "AMETHYST_SHARD"
  favourite-on: "{highlight}★ In your favourites"
  favourite-off: "{muted}☆ Not in your favourites"
  random-name: "{highlight}Random"
  random-on: "{success}✔ Every shot is a surprise"
  random-off: "{warning}➥ Click to surprise yourself"

random-name is what the random choice is called wherever the effect a player carries is drawn; random-on and random-off are the line its button shows.

The screens themselves are menus/effects.yml, menus/crate.yml and menus/crate_open.yml — see The menu and Rarities and the crate.

feedback

feedback:
  on-bind:
    sound:
      name: BLOCK_ENCHANTMENT_TABLE_USE
      volume: 1.0
      pitch: 1.2
  on-unbind:
    sound:
      name: BLOCK_GRINDSTONE_USE

Full ExyliaLib effect blocks: title, action bar, boss bar, sound, particle and firework are all available on each. on-bind plays when an effect is bound to a bow or chosen in the menu.

particles

particles:
  default-visibility: "ALL"
  name-all: "All"
  name-none: "None"
  name-self-only: "Self Only"
  name-others-only: "Others Only"

default-visibility is what a player starts with. The four names are what menus and placeholders call each mode.

placeholders

placeholders:
  none: "None"

What every %exyliarrows_...% placeholder answers when there is no value.

messages

Every line the plugin sends. prefix is {primary}&lE-ARROWS &8•&r and every other message starts with %prefix%.

KeySent when
boundAn effect is bound to a bow.
unboundAn effect is unbound and returned.
chosenAn effect is chosen in the menu.
clearedThe effect is taken off.
not-a-bowThe item is not something an effect can be bound to.
wrong-bowThe effect does not fit that bow.
unknown-effectThe id names nothing the file declares.
already-boundThe bow already carries an effect.
no-effectThe bow carries none.
inventory-fullA remover needs a free slot.
no-permissionThe player does not own the effect.
empty-handA hand-held subcommand with nothing in hand.
given / given-remover / given-keyTokens, removers or crate keys were given.
list-header / list-entry / list-empty/arrowsadmin list.
visibility-setVisibility changed.
refreshedrefresh or validate finished.
menu-disabledThe menu was opened on a bow server.
favourite-added / favourite-removed / favourites-cleared / favourites-emptyThe shortlist.
random-chosenEvery shot was set to draw a different effect.
crate-won / crate-duplicate / crate-no-keysA crate landed on something new, on something owned, or could not be paid for.
crate-busy / crate-empty / crate-disabledA crate is already falling, has nothing to hand over, or is turned off.
keys-received / keys-taken / keys-givenKeys changed hands.
unlock-granted / unlock-already / unlock-revoked / unlocks-cleared/arrowsadmin unlocks.
crate-block-added / crate-block-removed / crate-block-already / crate-block-missing / crate-block-none/arrowsadmin crate block.
preview-location-set / preview-unavailable / preview-unavailable-adminThe preview stage.

Placeholders in messages: %effect%, %amount%, %id%, %visibility%, %keys%, %player%, %location%, plus %prefix%.

Something missing on this page? Tell us on Discord