Staff Runes Casting and Hand Safety 1.12.2 - Herbertofury/Advent-of-Ascension GitHub Wiki
Home ยท Rune production ยท Historical archerguns
Historical staves: rune costs, casting and hand safety
Minecraft 1.12.2 / AoA 3.3.6. All 57 staff registrations, 134 rune-cost entries and their constant damage getters are checked against released classes. This is a preparation reference, not a claim that all 57 spell effects have been fully documented or tested in a game.

Start with the right runes
- Find your staff in the table below and gather every rune type shown. Quantities are per-type base requirements, not a total shared among different runes.
- Use historical Runation production for the release's checked rune routes. The rune links in the staff's inventory panel lead to the corresponding rune portrait and recipe/drop searches.
- For this historical release, keep rune stacks in ordinary inventory slots, rather than either hand, while the hand-routing issue below remains unresolved. This avoids the specific swapped-hand path; it is not a guarantee that every other payment problem is absent.
- Check the spell's target/environment requirements. 29 staves declare custom precondition methods; the default method simply returns a non-null object. A rejected custom precondition can prevent the cast before rune payment.
- Do not hold a gun or blaster in your main hand while trying to use a staff in the offhand: the base staff use path explicitly rejects that pairing.
Read the per-staff casting requirements and troubleshooting guide.
What a successful base cast does
On the server, the base use method checks the precondition, then requests rune payment with buffs allowed. A null precondition or failed payment returns failure. After payment it may play the casting sound, then sets a 12-tick cooldown, records the use statistic, damages the staff by 1, and finally calls cast.
That order matters when restoring the mod: rune payment and wear happen before the specific spell's cast function. A rejected projectile spawn or a later failure inside that function is not automatically refunded by this base method. Twelve ticks is nominally 0.6 seconds at 20 TPS; it is not measured wall-clock timing or proof that no spell changes its cooldown.
Discounts and Greed
The selected shared helper bypasses rune payment for Creative players. With buffs allowed, each rune type's amount follows:
max(1, base quantity + 2 if Greed is present โ Archmage level โ 1 if wearing the full Nightmare set)
The +2 Greed change is triggered by any positive level, not +2 per level. The minimum is one of each required type; discounts do not make a listed rune type free. If allowBuffs is false, this helper copies the base map and bypasses both these discounts and its Greed adjustment.
| Base quantity | Archmage level | Full Nightmare set | Greed present | Requested per-type amount |
|---|---|---|---|---|
| 2 | 0 | No | No | 2 |
| 2 | 1 | No | No | 1 |
| 2 | 1 | Yes | No | 1 |
| 2 | 1 | Yes | Yes | 2 |
| 4 | 2 | No | Yes | 4 |
The accompanying 800-case arithmetic model explores these branches; it does not establish which enchantment levels are obtainable, permitted together or provided by other mods.
Hand-routing defect: exact scope
The released helper's collection phase records OFF_HAND as marker โ1 and MAIN_HAND as marker โ2. Its consumption phase reads MAIN_HAND for โ1 and OFF_HAND for โ2. Those are opposite hands.
For example, with a staff in the main hand and a sufficient required rune stack in the offhand, the collected โ1 marker leads the consumption path to fetch the staff and cast its item to RuneItem. This is a source-backed unsafe cast path. It has not been reproduced in a running game here, so it is recorded as a restoration defect/test target rather than a claim about your current Enderloom build.
A proper fix must keep collection and consumption tied to the same physical stack, account for hand/inventory aliases once, validate all required quantities before mutation, and test insufficient inventories without partial loss. Merely swapping variable names would not prove that every aliasing issue is resolved.
All 57 staff inputs
36 of these damage getters return zero. That does not mean their spells do nothing: effects, summons, healing and other behavior can live in cast/projectile/impact methods. Use the table for supplies and reference inputs, not a damage tier list.
| Staff and portrait | Damage getter | Durability | Base rune costs |
|---|---|---|---|
| Aquatic Staff | 10 | 1220 | 2 Wind Rune; 4 Water Rune; 1 Kinetic Rune |
| Atlantic Staff | 0 | 1250 | 1 Distortion Rune; 2 Energy Rune; 2 Storm Rune |
| Baron Staff | 12 | 1200 | 2 Wind Rune; 3 Power Rune |
| Candy Staff | 0 | 950 | 3 Kinetic Rune; 2 Storm Rune |
| Celestial Staff | 11 | 1150 | 1 Compass Rune; 2 Lunar Rune; 2 Energy Rune |
| Concussion Staff | 0 | 1150 | 4 Power Rune; 4 Storm Rune |
| Coral Staff | 0 | 950 | 2 Water Rune; 8 Kinetic Rune |
| Crystal Staff | 0 | 1230 | 2 Distortion Rune; 5 Life Rune |
| Crystik Staff | 0 | 1140 | 2 Distortion Rune; 1 Life Rune; 1 Water Rune |
| Cryston Staff | 0 | 1240 | 2 Distortion Rune; 4 Energy Rune |
| Destruction Staff | 0 | 1170 | 2 Power Rune; 2 Energy Rune |
| Ember Staff | 0 | 1400 | 1 Kinetic Rune; 1 Wind Rune; 1 Fire Rune |
| Everfight Staff | 0 | 1050 | 4 Kinetic Rune; 4 Power Rune |
| Evermight Staff | 0 | 1050 | 2 Distortion Rune; 4 Power Rune |
| Fire Staff | 5 | 850 | 2 Wind Rune; 2 Fire Rune |
| Firefly Staff | 11 | 1230 | 2 Wind Rune; 2 Strike Rune; 1 Fire Rune |
| Firestorm Staff | 16 | 990 | 1 Compass Rune; 2 Fire Rune; 2 Lunar Rune |
| Fungal Staff | 0 | 1130 | 5 Distortion Rune; 2 Life Rune |
| Ghoul Staff | 0 | 400 | 2 Wind Rune; 1 Distortion Rune; 2 Life Rune |
| Haunter's Staff | 13 | 1225 | 4 Wind Rune; 4 Energy Rune |
| Hive Staff | 0 | 1130 | 10 Energy Rune; 2 Life Rune |
| Joker Staff | 0 | 300 | 4 Wind Rune; 4 Kinetic Rune |
| Kaiyu Staff | 0 | 900 | 1 Kinetic Rune; 4 Energy Rune |
| Lightning Staff | 0 | 1070 | 1 Compass Rune; 4 Strike Rune; 4 Storm Rune |
| Lightshine | 0 | 700 | 3 Power Rune; 3 Life Rune; 2 Distortion Rune |
| Lunar Staff | 16 | 1250 | 1 Compass Rune; 2 Lunar Rune |
| Lyonic Staff | 0 | 1100 | 1 Energy Rune; 1 Wind Rune; 2 Wither Rune; 1 Strike Rune |
| Mecha Staff | 0 | 1110 | 2 Wind Rune; 1 Distortion Rune; 1 Power Rune |
| Meteor Staff | 14 | 1190 | 1 Compass Rune; 2 Lunar Rune; 2 Kinetic Rune |
| Moonlight Staff | 0 | 1130 | 1 Compass Rune; 2 Lunar Rune; 2 Kinetic Rune |
| Nature Staff | 0 | 1450 | 4 Life Rune; 2 Energy Rune |
| Nightmare Staff | 14 | 1200 | 1 Compass Rune; 2 Lunar Rune; 2 Poison Rune |
| Noxious Staff | 3.5 | 1210 | 2 Wind Rune; 2 Poison Rune; 2 Storm Rune |
| Phantom Staff | 12 | 1060 | 2 Wind Rune; 2 Distortion Rune |
| Poison Staff | 5 | 850 | 2 Wind Rune; 2 Poison Rune |
| Power Staff | 8 | 1010 | 2 Wind Rune; 2 Power Rune |
| Primordial Staff | 15 | 1230 | 2 Wind Rune; 2 Wither Rune |
| Reef Staff | 0 | 1230 | 2 Energy Rune; 1 Water Rune |
| Rejuvenation Staff | 0 | 870 | 4 Life Rune; 2 Energy Rune |
| Rosidian Staff | 10.5 | 1180 | 3 Wind Rune; 2 Water Rune; 1 Life Rune |
| Runic Staff | 0 | 1000 | 5 Distortion Rune |
| Shadowlord Staff | 0 | 1200 | 10 Wither Rune; 2 Life Rune |
| Show Staff | 0 | 900 | 3 Compass Rune; 3 Power Rune |
| Shyre Staff | 0 | 1380 | 3 Energy Rune; 3 Distortion Rune |
| Sky Staff | 0 | 1480 | 2 Wind Rune; 2 Kinetic Rune; 1 Energy Rune |
| Striker Staff | 0 | 850 | 2 Strike Rune |
| Sun Staff | 0 | 960 | 2 Fire Rune; 1 Storm Rune; 3 Lunar Rune |
| Surge Staff | 0 | 1270 | 4 Power Rune; 1 Energy Rune |
| Tangle Staff | 9 | 1140 | 2 Wind Rune; 2 Poison Rune; 1 Storm Rune |
| Ultimatum Staff | 0 | 750 | 5 Life Rune; 3 Power Rune; 8 Distortion Rune |
| Underworld Staff | 5 | 1140 | 1 Compass Rune; 3 Kinetic Rune |
| Warlock Staff | 0 | 1050 | 3 Power Rune; 2 Kinetic Rune |
| Water Staff | 5 | 850 | 2 Wind Rune; 2 Water Rune |
| Web Staff | 0 | 1420 | 4 Distortion Rune; 4 Energy Rune |
| Wind Staff | 5 | 850 | 3 Wind Rune |
| Wither Staff | 5 | 850 | 2 Wind Rune; 2 Wither Rune |
| Wizard's Staff | 0 | 800 | 3 Life Rune; 3 Power Rune; 3 Distortion Rune |
Restoration acceptance checklist
- Compare all 57 identities, durability inputs and 134 rune entries against this release before changing spell balance.
- Test plain inventory rune stacks, partial stacks, extra rune types, both hands and aliases to inventory slots.
- Test Creative, buffs disabled, Greed, Archmage and full/incomplete Nightmare sets independently.
- Verify custom precondition failures leave payment, wear and cooldown unchanged.
- Separately test a spell whose later spawn/action fails, because the base method pays first.
- Give every spell an individual effect review before claiming complete combat, utility or multiplayer coverage.
- Preserve rune-based casting in optional weapon remodels. A reload animation should not silently add a magazine requirement.
Released constructor, rune and casting evidence ยท Arithmetic and hand-routing models ยท Source-model crop provenance.