FAQ
The questions that come up most, and the fixes.
Check the console line printed at startup:
[WandWorks] Price sources in use, in order: ...If that only says prices.yml, your shop plugin was not picked up. Either it is not installed, or its id is missing from prices.order in config.yml. The valid ids are shopguiplus, economyshopgui, ultimateshop, zshop, essentials and file.
If your shop is listed but a particular item still comes back unpriced, that item has no sell price in your shop. Add one there, or put it in prices.yml as a fallback. See Price sources.
Sell wands and shop mode builder wands both move money, so they need Vault plus an economy plugin registered with it. Install both and restart. Inventory mode builder wands work without either.
Check uses-per-action on that wand. Setting it to 0 gives a wand that deliberately never runs down, and it is easy to leave in by accident when copying a wand entry.
Also check uses-mode. On per-click the wand spends uses-per-action per click, so a wand with 250 uses and a length of 5 lasts 250 clicks, not 50.
Two different messages come out of that toggle, and they mean different things.
- "Bag use needs InfiniteBags, which is not installed" means WandWorks found no InfiniteBags at all, or
hooks.infinitebags.enabledisfalseinconfig.yml. - "Bag use needs InfiniteBags 1.3.0 or newer" means it is there but too old. Update it.
The console says the same thing at startup, so check there if you want it confirmed before touching a wand.
Several things cut a line short, and they are told apart by the message.
| Message | Cause |
|---|---|
| Placed N blocks, that is all you had | The player ran out of blocks |
| Placed N blocks for X, that is all you could afford | The player ran out of money |
| There was no room to place anything | Nothing along the line was on the replaceable list |
A position that is not replaceable is stepped over rather than ending the line, so a wall in the middle costs you one block, not the rest of them. A protection plugin refusing a block does the same.
In per-block mode the line is also cut to the uses left, so a wand with three uses places three blocks.
Add them to replaceable in config.yml. The shipped list is deliberately short:
replaceable:
- AIR
- CAVE_AIR
- SHORT_GRASS
- TALL_GRASS
- SNOW
- WATERThe block has to be on the containers list in config.yml. A sell wand ignores anything else completely, which is deliberate so players can still open other containers with the wand in hand.
SHULKER_BOX on that list covers all sixteen coloured ones, and a double chest counts as one container.
A builder wand fires a normal BlockPlaceEvent for every single block, so WorldGuard, Lands, GriefPrevention, Towny and anything else that listens can refuse it. A refused block is put back and skipped, and the player is charged for nothing they did not get.
For SuperiorSkyblock2 there is a hook that keeps wands to islands the player belongs to. See Configuration.
on-empty: break removes the wand at zero uses, with a sound and a message. Set it to keep if you would rather it stayed there doing nothing.
The other possibility is that the wand id was renamed or removed from wands.yml. The item keeps its stored id, and an id nothing matches does nothing. It does not vanish, but it stops working.
Yes. The uses count and the bag setting are written into the item itself, not into a database keyed on the wand id. Two wands of the same id in the same inventory can hold different values, and handing one over hands its state over with it.
/wandworks reload covers config.yml, wands.yml, prices.yml and the language file. Only storage settings need a restart, because they are read once at startup.
Wands already in inventories keep their old name and lore until they are next used, since the item is only rewritten when its uses change.
Yes. It is built against the Spigot API only, with no Paper specific code anywhere, so anything built on Spigot runs it.
Yes. One jar covers the whole range, and there is nothing to pick between. It is compiled against the 1.21 API and emits Java 21 bytecode, both of which a newer server runs without complaint.
Not in this release. There are no placeholders and no public API to build against.
WandWorks reports to ArrowStats, which writes plugins/ArrowStats/config.yml on first run with an anonymous server id and an enabled flag. Setting enabled: false there opts the server out of every ArrowStats plugin at once.
Still stuck? Support.