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.

Four historical blaster source-model portraits showing distinct energy and delay inputs

First use and troubleshooting

  1. 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.
  2. Let the player's cooled attack strength reach 1. The initial right-click path rejects a lower value.
  3. 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.
  4. 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.
  5. 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:

  1. Requires at least 200 Energy and 50 Soul according to the direct balance checks.
  2. Calls the shared resource consumer for each amount with force = false.
  3. Searches the active hand, then the other hand, for the same weapon; it can return false if neither matches.
  4. Damages the found weapon by 1.
  5. 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.