Blaster Energy Timing and Spark Exceptions 1.12.2 - Herbertofury/Advent-of-Ascension GitHub Wiki
Home · Weapon reference library · Staff rune costs
Historical blasters: energy, firing timing and Spark exceptions
Minecraft 1.12.2 / AoA 3.3.6. All 56 direct blaster registrations are joined to released constructor identities. Ten base methods, eight Spark-specific methods and the shared resource consumer support the behavior notes below. Inputs are not final damage, measured DPS or a runtime compatibility certificate.

First use and troubleshooting
- Equip the blaster in the main hand, which is the base weapon-hand result for these entries. The initial use check rejects a different hand.
- Let the player's cooled attack strength reach 1. The initial right-click path rejects a lower value.
- Check Energy. The initial server preflight calculates the modified cost and compares the current Energy balance before starting active use. The generic Creative bypass in the later tick calculation does not automatically bypass this earlier check.
- Hold use for the repeated firing path. A shot is attempted only on eligible countdown ticks and after the selected payment succeeds. Insufficient resources stop active use in the base tick path.
- Read the Spark exception below before interpreting a zero base Energy or damage input.
How the base Energy expression works
For the ordinary Survival tick path, the computed cost is:
(1 + 0.3 × Greed level) × base Energy input × max(0, 1 − 0.07 × Recharge level)
The full Ghoulish armor-set branch then multiplies this value by 0.7. The actual implementation uses float32 arithmetic; displayed decimal examples are rounded. The tick calculation uses zero for Creative before that armor factor.
This is the blaster's calculated request, not a guarantee of the final resource deduction. Its shared consumeResource helper can bypass payment when resources are disabled or for Creative, applies resource-fortitude buffs, checks the resulting amount and updates the resource map. The blaster's earlier balance checks use their calculated value before that helper adjustment.
| Base Energy | Greed | Recharge | Full Ghoulish | Calculated Survival request, approximately |
|---|---|---|---|---|
| 20 | 0 | 0 | No | 20 |
| 20 | 1 | 0 | No | 26 |
| 20 | 0 | 2 | No | 17.2 |
| 20 | 1 | 2 | No | 22.36 |
| 20 | 1 | 2 | Yes | 15.652 |
The 4,144-case independent model includes edge levels to test the clamp; it does not establish that those levels or enchantment combinations are legally obtainable. The selected shared Energy consumer also schedules the next regeneration time at current global tick +50; other regeneration behavior is outside this one method.
Countdown timing is not simply “wait one interval”
The selected tick gate is remaining + delay ≤ 72,000 and remaining % delay == 0. It uses the remaining-use counter, not an elapsed counter starting at zero. In the independent model elapsed = 72,000 − remaining, the first eligible elapsed value is therefore:
| Delay input | First eligible elapsed count in this model |
|---|---|
| 1 | 1 |
| 7 | 12 |
| 11 | 16 |
| 13 | 19 |
| 14 | 26 |
| 20 | 20 |
| 100 | 100 |
Later eligible points remain spaced by the delay. These are integer-expression examples, not a measurement of actual input latency, callback ordering or wall-clock firing time. The evidence includes 3,618 timing cases across 18 distinct delays.
Durability is deferred in the base path
The ordinary tick path does not simply call one damage point after every shot. After a successful payment and fire call, it compares (72,000 − count) / delay with remaining item durability and may pass that accumulated value to damageItem. On stop, the base callback separately passes (72,000 − useTicksRemaining − 1) / delay.
Test the actual callbacks before promising exact wear per successful projectile. Countdown lifetime, stopped use, cancelled spawns and the near-break branch are separate cases. The zero-elapsed/delay-one model produces a negative release argument; that is a boundary to test, not proof of a player-triggerable repair exploit.
Soul Spark and Light Spark are special
Both have zero ordinary damage and Energy registration inputs, but override the repeated-use and release callbacks. Their selected tick method fires on the countdown gate without calling the ordinary base Energy consumer, and their release callback is empty.
Their impact path first checks special exemptions and blaster immunity. For a non-Creative server-player shooter it then:
- Requires at least 200 Energy and 50 Soul according to the direct balance checks.
- Calls the shared resource consumer for each amount with
force = false. - Searches the active hand, then the other hand, for the same weapon; it can return false if neither matches.
- Damages the found weapon by 1.
- Calls the target's dead/removal method when the surrounding path reaches it.
The two resource-consumer boolean results are ignored in the inspected code. Resource calls also precede the same-weapon hand check. Those orderings are restoration test targets: do not claim a transaction-safe payment or a harmless/free Spark from the zero table inputs. This is not a promise that every mob is affected; exemption and immunity checks remain in front of the effect, and other game systems can change the outcome.
All 56 source-backed entries
Each name opens its source-model portrait and lazy historical blaster panel, with recipe and drop searches kept in the same release. Sixteen damage inputs are zero; special projectiles and effects need individual review. Four Energy inputs are zero: Confetti Cannon, Confetti Cluster, Light Spark and Soul Spark.
| Blaster and portrait | Damage input | Delay · ticks | Durability | Base Energy input |
|---|---|---|---|---|
| Apoco Shower | 0 | 10 | 3760 | 80 |
| Atomizer | 11 | 8 | 3150 | 15 |
| Beamer | 1 | 1 | 3240 | 3 |
| Blast Chiller | 4 | 6 | 1750 | 20 |
| Blood Drainer | 0.1 | 1 | 2750 | 2.5 |
| Bone Blaster | 6 | 6 | 2430 | 20 |
| Bubble Horn | 11 | 8 | 3200 | 15.5 |
| Colour Cannon | 45 | 40 | 1000 | 110 |
| Confetti Cannon | 0 | 10 | 1000 | 0 |
| Confetti Cluster | 0 | 5 | 1500 | 0 |
| Dark Destroyer | 0 | 100 | 3180 | 80 |
| Darkly Guster | 8 | 5 | 3790 | 7 |
| Death Ray | 19 | 12 | 3840 | 17 |
| Doom Bringer | 0 | 3 | 2820 | 15.5 |
| Eradicator | 1 | 1 | 2790 | 2 |
| Experiment W-801 | 37 | 50 | 5000 | 90 |
| Flowercorne | 2.5 | 4 | 2910 | 20 |
| Fragment | 3 | 2 | 3830 | 2.5 |
| Froster | 3.5 | 3 | 2800 | 7.5 |
| Gas Blaster | 0 | 1 | 2860 | 0.5 |
| Ghoul Gasser | 0 | 1 | 3210 | 1 |
| Gold Bringer | 0 | 3 | 3830 | 12.5 |
| Gravity Blaster | 4 | 1 | 600 | 120 |
| Hell Horn | 12.5 | 8 | 3800 | 11.5 |
| Illusion Revolver | 14 | 10 | 3200 | 20 |
| Illusion SMG | 4 | 3 | 3240 | 7 |
| Ion Blaster | 13 | 11 | 2810 | 28.5 |
| Iro Miner | 4 | 4 | 3060 | 7 |
| Laser Blaster | 1.2 | 1 | 2840 | 2.5 |
| Light Blaster | 22.5 | 14 | 3810 | 20.5 |
| Light Spark | 0 | 1 | 7 | 0 |
| Luna Blaster | 3 | 2 | 3200 | 4 |
| Mecha Blaster | 36 | 30 | 2770 | 80 |
| Mind Blaster | 19.5 | 14 | 3180 | 27.5 |
| Moon Destroyer | 0 | 100 | 3750 | 60 |
| Moon Shiner | 3.5 | 5 | 1810 | 17.5 |
| Odious | 1 | 1 | 3190 | 1.5 |
| Orb-O-Cron | 18.5 | 13 | 3230 | 26.5 |
| Paralyzer | 1.5 | 1 | 3900 | 1.5 |
| Party Popper | 1.5 | 1 | 2810 | 3 |
| Poison Plunger | 0 | 20 | 2600 | 50 |
| Power Ray | 12.5 | 12 | 2490 | 38.5 |
| Proton | 2.5 | 2 | 3000 | 4.5 |
| Reefer | 5 | 4 | 3600 | 7 |
| Revolution | 0 | 20 | 2800 | 66 |
| Sea-O-Cron | 20.5 | 13 | 3800 | 18.5 |
| Skullo Blaster | 3.5 | 2 | 3780 | 3 |
| Soul Drainer | 0.2 | 1 | 3770 | 2 |
| Soul Spark | 0 | 1 | 5 | 0 |
| Soul Storm | 1.5 | 1 | 3190 | 2 |
| Spirit Shower | 0 | 10 | 2870 | 100 |
| Swarm-O-Tron | 2 | 12 | 2400 | 33 |
| Toxic Terrorizer | 0 | 7 | 2760 | 22 |
| Vortex Blaster | 0 | 1 | 2870 | 130 |
| Whimsy Winder | 6 | 5 | 2830 | 13 |
| Wither's Wrath | 7.5 | 7 | 800 | 21 |
Restoration and optional remodel checklist
- Compare all 56 identity/input records; keep the two Spark callbacks separate from the 54 base-tick users.
- Test initial right-click preflight versus subsequent ticks, including Creative and low Energy.
- Compare Greed, Recharge, Ghoulish and resource-fortitude handling independently.
- Test first-shot timing for delays 7, 11, 13 and 14 as well as divisors of 72,000.
- Count successful effects, rejected spawns, resource changes and wear separately during long holds and release.
- For Sparks, test weapon switching, immunity, failed resource consumption and both hands without using valuable targets.
- Keep Energy/Soul semantics when adding an optional TaCZ-quality presentation; reloading remains optional.
Released inputs and selected methods · Float32 cost and countdown models · Source-model crop provenance.