SiegeCannon
PluginMIT

SiegeCannon

Ridable single-operator TNT siege cannon for Paper 1.21.11 cooperative PvE servers. Mount, aim within a fan arc, left-click to fire.

17
Downloads
0
Followers
1 months ago
Updated
📦
1
Versions

📖About SiegeCannon

What it does

SiegeCannon is a ridable TNT siege cannon designed for cooperative PvE servers.

Unlike most cannon plugins which lean on redstone build kits and multi-player loading crews, SiegeCannon takes the opposite stance: one player, one cannon, one trigger, with a fan-shaped firing arc that rewards positioning over aimbots. Right-click to mount, sneak to dismount, left-click to fire.

Features

  • Mount-and-fire — right-click to ride, left-click to shoot, sneak to dismount
  • ±45° fan arc — turn your body to aim, the cannon doesn't pivot for you
  • Breakable durability — cannons take damage from explosions and mobs; destroyed cannons explode dramatically
  • Two-stage ignition — left-click triggers a fuse window; TNT actually launches after a configurable delay (default 1s)
  • Block partitioning — explosion blocks split into "fly as falling block / vanilla destroy / preserve" buckets for battlefield rubble feel
  • Mob-only AoE damage — friendly fire is suppressed by default
  • Recoil feedback — view kick + cannon-body kickback on every shot
  • TPS-aware — global FallingBlock spawn cap protects servers from many-cannon volleys
  • Resource pack optional — works with vanilla TNT model out of the box; custom model auto-loaded if your pack provides siegecannon:cannon_tnt
  • Bilingualzh_CN / en_US shipped, auto-resolves by player client locale
  • Public APICannonFireEvent (cancellable) + CannonDestroyEvent for third-party hooks

Installation

  1. Drop siegecannon-1.0.0.jar into your server's plugins/ folder
  2. Start the server. plugins/SiegeCannon/config.yml and lang/{zh_CN,en_US}.yml are generated
  3. Run /cannon spawn (any player has it by default)

⚠️ Cannons are in-memory only in 1.0.0. Server restart wipes spawned cannons. Persistence is on the roadmap.

Commands

Command Permission Description
/cannon spawn siegecannon.use (default true) Spawn a cannon at your feet
/cannon spawn <x> <y> <z> [world] siegecannon.admin Spawn at explicit coordinates
/cannon remove siegecannon.use Remove the nearest cannon (within 6 blocks)
/cannon list siegecannon.admin List all spawned cannons
/cannon removeall siegecannon.admin Remove every cannon in the world
/cannon reload siegecannon.admin Reload config.yml

Aliases: /sc, /siegecannon.

Configuration

Most servers only need to tune four "core" parameters:

cannon:
  tnt:
    cooldown-seconds: 2.5      # fire cooldown
    yaw-limit-deg: 45.0        # fan arc half-angle
    damage-multiplier: 1.0     # vs mobs
    hp: 100.0                  # cannon durability
    protect-blocks: false      # true = explosions don't damage map
  model:
    use-custom: true           # false = vanilla TNT model only
language:
  default: en_US

Out-of-range values are clamped to safe bounds at load time and logged as warnings — the plugin won't crash your server because of a config typo.

API

// Cancel firing inside a no-fire zone
@EventHandler
public void onFire(CannonFireEvent event) {
    if (isInsideSafeZone(event.getMuzzle())) {
        event.setCancelled(true);
    }
}

// Tally destroyed cannons
@EventHandler
public void onDestroy(CannonDestroyEvent event) {
    statsService.recordCannonLoss(event.getLocation());
}

Resource pack

The plugin uses the vanilla TNT model by default. To use a custom model: ship a resource pack with a model at assets/siegecannon/models/item/cannon_tnt.json and set cannon.model.use-custom: true. Clients without the pack fall back to vanilla TNT seamlessly. A community resource pack is on the roadmap.

Metrics

This plugin uses bStats for anonymous install / version statistics. Opt-out via plugins/bStats/config.yml.

Roadmap

  • Bundled resource pack with custom cannon model
  • Persistence: cannons survive server restart
  • Demo GIF / video
  • CannonRegistry: third-party plugins register custom cannon types
  • PlaceholderAPI integration
  • WorldGuard region flag (siegecannon-allowed)
  • Multi-cannon variants (heavy / light / piercing)
  • More languages (community translations welcome)

License

MIT — fork, modify, redistribute. Attribution appreciated but not required.

Source code

github.com/Yangzhiganlu7/siegecannon — issues / PRs welcome.