promotional bannermobile promotional banner

CBC Enchanced Shells [Create Big Cannons]

Adds 50 enhanced munition variants (Mk.I–V) to Create Big Cannons: 9 shell types with escalating damage, armor penetration & explosive power, plus 5 powder charges with increased muzzle velocity. Tiered crafting, unique colors & balanced progression.

File Details

CBCmoreshells-1.1.1.jar

  • R
  • May 20, 2026
  • 966.73 KB
  • 4.0K
  • 1.21.1
  • NeoForge

File Name

CBCmoreshells-1.1.1.jar

Supported Versions

  • 1.21.1

Curse Maven Snippet

NeoForge

implementation "curse.maven:cbc-enchanced-shells-create-big-cannons-1489732:8119580"
Curse Maven does not yet support mods that have disabled 3rd party sharing

Learn more about Curse Maven

CBC Enhanced Shells — v1.1.1 Changelog

  Rocket Breech

  - Hand-loading now works. Right-clicking the back face with a munition (shell, powder, or launchpad) loads it into the
   cannon. The block was registered as a registerSimpleBlockItem, so its place() never called BigCannonBlock.onPlace —
  the breech's cannonBehavior connections to the adjacent barrel were never wired up, the cannon assembly failed
  silently, and onInteractWhileAssembled (where loading happens) never fired. Fixed by switching the item registration
  to BigCannonBlockItem.
  - Sliding breechblock + lever now render. Registered a Flywheel visual (QuickfiringBreechVisual) on top of the
  existing BER (QuickfiringBreechBlockEntityRenderer). Without the visual the BER's if (supportsVisualization) return;
  short-circuit hid everything when Flywheel was active.
  - Cascade-loading up to N shells. The stock Quick-Firing breech only shifts the existing round one slot forward,
  capping practical loads at two. The rocket breech overrides onInteractWhileAssembled to walk the bore, find the first
  empty chamber, and shift the entire stack toward the muzzle in a single right-click. A 5-chamber barrel holds 5
  rounds.
  - Removed a latent infinite-recursion path in RocketBreechBlockEntity.canLoadBlock (never triggered in practice —
  nothing was ever loaded into the breech itself).

  Rocket — Cannon-Fired Path

  - Launchpad is now a ProjectileBlock<RocketEntity>. It can be hand-loaded through any CBC breech as a munition, and
  CBC's firing-loop accepts it in the projectile chain instead of falling into the else { fail() } branch.
  - Detection pattern simplified to [launchpad, shell]. The cannon's own powder is consumed by CBC's propellant branch
  and no longer needs to appear in the projectile chain. The rocket gets a fixed built-in fuel reserve
  (CANNON_LAUNCH_POWDER = 2) for its post-launch self-thrust.
  - Load order: shell → powder(s) → launchpad. Final bore (breech → muzzle) is launchpad → powder → shell. The firing
  scan sees the launchpad first (chain starts, isComplete = false), consumes powder, then sees the shell (isComplete =
  true) and getProjectile returns a RocketEntity via RocketLoadingHelper.tryBuildRocket.
  - Removed the broken getExpectedSize = MAX_STACK (5) override on all 16 shell blocks — it was tripping CBC's cleanup
  phase and breaking normal (non-rocket) firing.
  - Blockstate JSON for rocket_base converted to multipart so the inherited WATERLOGGED property doesn't need explicit
  variants.

  Rocket Entity — Spawn Invulnerability

  - 15-tick spawn grace window (SPAWN_GRACE_TICKS, ≈0.75 s). For the first stretch after spawn the rocket:
    - treats every block as penetrable (calculateBlockPenetration → PENETRATE),
    - cannot hit entities (canHitEntity → false),
    - skips the manual front-tip block probe,
    - no-ops in onImpact as a safety net.
  - Fixes immediate self-detonation against the cannon mount, the contraption entity, the spent launchpad block, or
  surrounding terrain on a flat ground launch (which used to occasionally blow up the cannon).

  Fuze Model Rendering

  - The fuze top model now appears on all our fuzed shells (HE, AP, Shrapnel, Smoke, Drop Mortar, Nuke, H-Bomb, Plasma,
  Gravitational, Vortex, Disintegration, Singularity, Cluster, Bunker Buster — Mk.I-V) when a fuze is attached. CBC's
  FuzedBlockEntityRenderer and FuzedBlockVisual were only registered for CBC's own BlockEntityType; ours is a separate
  type, so neither path was hitting our shells. Both are now wired up to CBCESBlockEntities.FUZED_BLOCK.

  Loot Tables

  - Added the 25 missing loot tables for the shader shells (Plasma, Gravitational, Vortex, Disintegration, Singularity ×
   Mk.I-V). Without them Minecraft 1.21 dropped nothing when these blocks were broken — neither with a pickaxe nor via
  the Create wrench (which routes the drop through the same loot table). 71 → 96 loot tables, matching the 96 registered
   blocks. Each new entry preserves the createbigcannons:tracer and createbigcannons:fuze components plus the renamed
  item.

  Tooltips

  - Powder Charges now show (under Shift) the rocket-relevant numbers:
    - Rocket Thrust — +1.5 s burn per charge (= THRUST_TICKS_PER_POWDER / 20).
    - Vertical burn range — ~75 / 185 / 325 blocks (1 / 2 / 3 charges), computed from the rocket physics constants
  (thrust accel 0.10/tick, gravity −0.04/tick, drag 1%/tick). Range scales super-linearly because drag asymptotes
  terminal velocity to ~5.94 b/tick.
    - Applies to launchpad-launched rockets. Cannon-launched rockets currently use a fixed 2-charge thrust reserve
  regardless of how many powders the cannon ate; the cannon powder still contributes to the initial muzzle velocity,
  just not to the post-launch burn