Skip to main content
Duck Shot wiki

Wiki

Duck Shot Wiki

Public setup, weapon authoring, combat systems, particles, admin help, and troubleshooting for Duck Shot.

Getting Started

Start here for installation, first boot, and your first working Duck Shot weapon.

Example Library and Pack Planning

Separate the public starter pack, the deeper example library, and your own server-only content so the docs stay honest and useful.

Server Operations

Handle permissions, runtime tools, integrations, and real troubleshooting on live servers.

Weapon Authoring

Action Bar, Sounds, and Feedback

Polish weapon feel with action bar styling, staged sound design, and readable player feedback.

Duck Shot feels polished when the player always understands what the weapon is doing. The three biggest feedback layers are:

  • action bar state
  • staged sounds
  • impact and status feedback

Action bar basics

Duck Shot includes a flexible MiniMessage-driven action bar.

Example global template:

YAML
action_bar:
  enabled: true
  template: "{gun_display} <dark_gray>|</dark_gray> {ammo_display} {state} {status}"

Useful placeholders

Common action bar placeholders include:

  • {gun}
  • {gun_display}
  • {ammo}
  • {mag}
  • {bar}
  • {ammo_display}
  • {state}
  • {status}

These let you present a simple readout or a much more stylized combat HUD.

The action bar knobs that matter most

The global config already exposes the big layout controls:

  • template
  • ammo_display_mode
  • ammo_numeric_format
  • ammo_bar_segments
  • ammo_bar_symbol
  • state and status colors

ammo_display_mode

  • NUMERIC is cleaner for precision or tactical packs
  • BAR is more visual and game-like
  • BOTH is the most informative default

aux_text

This is especially useful for items that are not normal magazine-fed guns:

  • flashbangs
  • grapples
  • med kits
  • airstrike markers
  • C4

Good aux_text explains intent fast, like:

  • RMB throw
  • RMB plant / LMB detonate
  • RMB cast

Per-weapon action bar override

You can override the global behavior per weapon:

YAML
action_bar:
  enabled: true
  ammo_display_mode: NUMERIC
  ammo_numeric_format: "<gray>{ammo}</gray>/<gray>{mag}</gray>"
  aux_text: "<gray>RMB cast</gray>"

That is especially useful for tools, grapples, or thrown items that should not look like standard magazine-fed firearms.

Empty, reload, and no-ammo states

Duck Shot supports separate visual feedback for:

  • normal ready state
  • reloading
  • empty clicks
  • no ammo in inventory

This matters because those are not the same player problem:

  • empty means the magazine is dry
  • no ammo means the inventory cannot refill it
  • reloading means the state is already resolving

If those all look the same, the weapon feels worse than it actually is.

Throwable and utility feedback

Duck Shot also supports purpose-built feedback such as:

  • cook bars for throwables
  • "no uses left" messages for utility items
  • custom aux text for C4, grapples, or flashbangs

Use those to match the system instead of forcing every item into the same firearm layout.

Staged sound design

Duck Shot sound blocks can be simple or staged. Staged is usually better.

Simple example

YAML
sounds:
  shoot: "minecraft:entity.generic.explode"

Staged example

YAML
sounds:
  shoot:
    audience: WORLD
    stages:
      - time: 0
        key: "minecraft:entity.generic.explode"
        volume: 1.0
        pitch: 1.0
      - time: 2
        key: "minecraft:block.note_block.hat"
        volume: 0.6
        pitch: 1.8

That format lets you build layered weapon personality instead of a single flat noise.

Important sound lanes

A polished Duck Shot weapon usually thinks in layers:

  • shoot
  • empty
  • ads
  • impact
  • impact_underwater
  • flyby
  • reload or action-world events

shoot

This is the weapon's identity sound.

impact

This tells the player the shot actually connected with the world.

impact_underwater

This helps preserve readability when shots enter water or a waterlogged area.

flyby

This makes incoming rounds feel dangerous to nearby players even when they are not hit.

Audience rules

Use audience intentionally:

  • PLAYER for local handling sounds
  • WORLD for sounds other players should hear

This matters a lot for ADS clicks, reload layers, and empty-click feedback.

Good rule of thumb:

  • use PLAYER for handling sounds the shooter should own
  • use WORLD for report, impact, and combat-space feedback
  • use both carefully when the same event needs local feel and world presence

Spatial sound

Duck Shot includes a strong spatial sound system for near, mid, far, and distant-crack playback.

Example per-weapon override:

YAML
sounds:
  spatial:
    enabled: true
    near_max: 30.0
    mid_max: 65.0
    far_max: 90.0
    crack_min: 130.0
    crack_max: 500.0

This is what keeps large firefights from sounding flat or collapsing into the same short-range mix.

The spatial knobs that matter most

The global config and the current example weapon files expose the important battlefield-audio controls directly:

  • distance_cap
  • near_max
  • mid_max
  • far_max
  • crack_min
  • crack_max
  • source_pos_max_distance
  • secondary_stage_distance_cap

How to interpret them:

  • near_max, mid_max, and far_max decide where the weapon stops sounding like a close report and starts sounding like range or battlefield audio
  • crack_min and crack_max control when the distant crack can take over
  • source_pos_max_distance helps preserve directionality nearby before the system shifts toward listener-local playback
  • secondary_stage_distance_cap prevents delicate close-mechanical layers from traveling unrealistically far

How to read the spatial stack

Duck Shot uses several sound spaces:

  • near
  • mid
  • far
  • distant crack
  • muffled
  • indoor

Near / mid / far

These let one weapon feel believable at multiple ranges.

Distant crack

This is the long-range punctuation that makes a battlefield feel alive instead of muted.

Muffled

This helps when the shooter is behind structure or the sound should feel damped by environment.

Indoor

This is where you shape out-in, in-out, and in-in playback so interiors do not sound identical to open terrain.

World-event sound lanes

Duck Shot also supports "world event" audio that is not the same as the main shot report.

In the current spatial stack, that includes things like:

  • reload sounds heard nearby in the world
  • action or handling sounds heard nearby in the world
  • explosion world-event cues

Important knobs live under world_events:

  • reload_enabled
  • action_enabled
  • explosion_enabled
  • reload_distance_cap
  • action_distance_cap
  • explosion_distance_cap
  • mute_when_occluded
  • mute_underwater

Why this matters:

  • a reload should not sound like a full rifle report
  • nearby handling should still make a firefight feel alive
  • explosions often need their own distance caps from weapon-handling sounds

Sound limits and queueing

Duck Shot also includes protection layers so big firefights do not turn into audio spam.

The important global controls include:

  • shooter_priority
  • limits
  • queue

Interpretation:

  • shooter_priority protects the local player's own mix so it does not get buried by every remote shot
  • limits prevent floods of duplicate sound packets
  • queue smooths bursts of sound events instead of slamming everything into the same instant

That is not just technical cleanup. It is part of why the plugin can sound expensive instead of chaotic.

Example: why one sound setup feels better than another

If you only define one shoot sound, the weapon can work, but it often feels flat.

If you define:

  • a strong primary shot
  • a spatial stack
  • distant crack
  • muffled handling
  • indoor logic

the same weapon suddenly feels expensive and grounded.

Example: what a heavy weapon should sound like

The example M240.yml is a good example of how sound sells item identity.

Why it works:

  • the base report is loud and layered
  • the distant-crack range is pushed farther out than a lighter sidearm
  • muffled and indoor behavior stay defined
  • world-event reload and action sounds are still present, but limited

That is why the same plugin can make a pistol feel tight and a heavy weapon feel like it owns space.

Good feedback habits

Give every important state a sound

At minimum, most weapons benefit from:

  • shoot
  • empty
  • impact
  • impact_underwater
  • ads

Use action bar changes for clarity

If the player can reload, prime, detonate, cook, or cast, the action bar should help explain it.

Make special tools read differently

Grapples, C4, and flashbangs should not pretend to be normal rifles. Give them purpose-built action bar text and sound logic.

Match audio scale to item scale

Sidearm, rifle, heavy weapon, flashbang, mortar marker, and med kit should not all occupy the same sonic lane.

If the item fantasy changes, the sound language should change too.

Use action bar and sound together

The best Duck Shot items do not rely on just one feedback system.

For example:

  • a flashbang should show intent in the action bar and sound dangerous
  • a C4 charge should clearly advertise plant and detonate states
  • a grapple should feel like a traversal tool, not a dry rifle with weird stats