Cannon Projectile Behavior 1.20.1 - Herbertofury/Advent-of-Ascension GitHub Wiki

Cannon Projectile Behavior · 1.20.1

Cannon crafting guide · Weapon overhaul

AoA 3.7.1 / Minecraft 1.20.1: all 50 registered cannons, 41 referenced projectile classes. This is a released-class census, not captured native flight. It exists to prevent an upgrade from accidentally flattening different weapons into one generic cannon behavior.

Important differences to preserve

The projectile gravity method is not uniformly 0.1. Ghoul Cannon uses 0.05; several specialist projectiles use 0.015, 0.06 or 0.075. Fifteen projectile classes inherit BaseBullet’s zero-return method. A zero gravity return does not prove a motionless projectile, a hitscan attack or absence of other movement logic. Constructor velocity, drag, update methods, collision and server behavior still require separate inspection.

Five cannon weapon classes inherit their projectile factory directly from BaseCannon. The other 45 declare a factory. This census verifies those direct superclass relationships rather than assuming all missing methods resolve to the same class.

Projectile-class distribution

Counts below count unique projectile classes, not weapons; several weapons can share a projectile.

Resolved gravity-method return Unique projectile classes
0 15
0.015 4
0.05 3
0.06 2
0.075 2
0.1 15

These values are game-code parameters, not metres per second squared or a measured travel arc.

Every cannon and its projectile

Sprites are the actual released item images. Profile links lead to weapon-specific research where available. “BaseBullet inherited” means the direct projectile superclass supplies the zero-return method; it does not mean the entire projectile behavior is identical.

Cannon Projectile class Gravity return Gravity implementation
Ancient Bomber Ancient Bomber GrenadeEntity 0.075 Direct override
Ancient Discharger Ancient Discharger TriDischargeShotEntity 0 BaseBullet inherited
Aqua Cannon Aqua Cannon HeavyBlueCannonballEntity 0.1 Direct override
Balloon Bomber Balloon Bomber BalloonBombEntity 0.1 Direct override
Big Blast Big Blast CannonballEntity 0 BaseBullet inherited
Blast Cannon Blast Cannon StickyCoolBombEntity 0 BaseBullet inherited
Blissful Blast Blissful Blast SmileyCannonballEntity 0 BaseBullet inherited
Bomb Launcher Bomb Launcher StickyRedBombEntity 0 BaseBullet inherited
Boom Boom Boom Boom VolatileCannonballEntity 0.05 Direct override
Boom Cannon Boom Cannon GrenadeEntity 0.075 Direct override
Boulder Bomber Boulder Bomber CannonballEntity 0 BaseBullet inherited
Bozo Blaster Bozo Blaster BozoBallEntity 0.1 Direct override
Bulb Cannon Bulb Cannon HeavyWitherBallEntity 0.1 Direct override
Carrot Cannon Carrot Cannon CarrotBallEntity 0.1 Direct override
Clown Cannon Clown Cannon ClownBallEntity 0.1 Direct override
Clowno-Pulse Clowno-Pulse CannonballEntity 0 BaseBullet inherited
Coral Cannon Coral Cannon HeavyBlueCannonballEntity 0.1 Direct override
Discharge Cannon Discharge Cannon DischargeShotEntity 0 BaseBullet inherited
Energy Cannon Energy Cannon EnergyShotEntity 0 BaseBullet inherited
Erebon Stickler Erebon Stickler ErebonSticklerShotEntity 0.015 Direct override
Floro RPG Floro RPG FloroRPGEntity 0 BaseBullet inherited
Flower Cannon Flower Cannon FlowerBallEntity 0.1 Direct override
Fungal Cannon Fungal Cannon FungalBallEntity 0.1 Direct override
Ghast Blaster Ghast Blaster HeavyShadowballEntity 0.1 Direct override
Ghoul Cannon Ghoul Cannon GhoulBallEntity 0.05 Direct override
Giga Cannon Giga Cannon GigaGreenBallEntity 0 BaseBullet inherited
Golder Bomber Golder Bomber GoldenCannonballEntity 0.05 Direct override
Hive Blaster Hive Blaster HiveBallEntity 0.1 Direct override
Hive Howitzer Hive Howitzer HeavyRedCannonballEntity 0.1 Direct override
Iro Cannon Iro Cannon OrangeCannonballEntity 0.1 Direct override
Jack Funger Jack Funger FungalRockFragmentEntity 0.06 Direct override
Jack Rocker Jack Rocker RockFragmentEntity 0.06 Direct override
Luxon Stickler Luxon Stickler LuxonSticklerShotEntity 0.015 Direct override
Mecha Cannon Mecha Cannon OrangeCannonballEntity 0.1 Direct override
Mini Cannon Mini Cannon MiniGreenBallEntity 0 BaseBullet inherited
Missile Maker Missile Maker MultiplyingGrenadeEntity 0.075 Direct override
Moon Cannon Moon Cannon MoonShotEntity 0 BaseBullet inherited
Pluton Stickler Pluton Stickler PlutonSticklerShotEntity 0.015 Direct override
Predatorian Blaster Predatorian Blaster HeavyBoneCannonballEntity 0.1 Direct override
Pulse Cannon Pulse Cannon CannonballEntity 0 BaseBullet inherited
RPG RPG RPGEntity 0 BaseBullet inherited
Selyan Stickler Selyan Stickler SelyanSticklerShotEntity 0.015 Direct override
Shadow Blaster Shadow Blaster HeavyShadowballEntity 0.1 Direct override
Shyre Blaster Shyre Blaster CannonballEntity 0 BaseBullet inherited
Smile Blaster Smile Blaster SmileBlasterEntity 0.1 Direct override
Super Cannon Super Cannon SuperGreenBallEntity 0 BaseBullet inherited
Ultra Cannon Ultra Cannon UltraGreenBallEntity 0 BaseBullet inherited
Vox Cannon Vox Cannon VoxCannonEntity 0 BaseBullet inherited
Water-Balloon Bomber Water-Balloon Bomber WaterBalloonBombEntity 0.1 Direct override
Wither Cannon Wither Cannon HeavyWitherBallEntity 0.1 Direct override

Upgrade regression requirements

  • Match each original projectile class and inherited method before choosing an upgraded visual.
  • Capture original travel, fall, impacts and lifetime in the target release; separate native footage from concept art.
  • Preserve collision/hitbox and damage semantics unless a gameplay-bearing attachment explicitly changes them.
  • Check velocity, drag, per-tick custom movement, lifetime, piercing, split/spawn behavior and server ownership; this gravity table alone is insufficient.
  • Use time-based visual particle budgets while retaining original effect identity, rather than coupling emissions to render frequency.
  • Test multiplayer, low/high frame rates, slow server ticks, unloaded chunks and relevant compatibility targets.

Evidence and limits

Released class census and hashes records every factory method, weapon-class hash, projectile-class hash and resolved gravity owner. Reproducible extraction and tests requires the separately obtained official AoA JAR and a Java development kit. It does not bundle the mod.

The extractor only accepts simple two-instruction float-return overrides for this summary. More complex methods must be inspected instead of taking the first constant as a result. The baseline is one pinned release; newer versions remain separate work. Native testing is not inferred.