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