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.

Combat Systems

Mounted Guns and Deployable Emplacements

Configure plantable weapon platforms, seats, control schemes, persistence, and emplacement-specific damage behavior.

Mounted systems are their own Duck Shot family.

They are not the same as:

  • handheld guns
  • planted charges
  • airstrike callers
  • Sky Select support tools

A mounted emplacement is a placed weapon platform that the player directly operates.

What the mounted pattern actually combines

The example MOUNTED_MG.yml shows the real formula:

  • plantable decides how the rig is placed, packed, displayed, and persisted
  • mountable decides how the player sits on it and controls it
  • the normal weapon sections still decide ammo, fire, recoil, impact, and sounds

That separation is the reason mounted configs stay understandable.

The three big layers

1. Weapon behavior

This is still a real firing weapon:

  • ammo
  • reload
  • fire rate
  • projectile
  • damage
  • recoil

2. Plantable rig behavior

This decides:

  • where it can be placed
  • how it appears in the world
  • how it packs up
  • whether it persists across restart
  • whether it can be damaged while deployed

3. Mountable control behavior

This decides:

  • where the rider sits
  • aim limits
  • fire input
  • unmount input
  • mounted hotbar layout

The core mounted shape

YAML
plantable:
  enabled: true
  placement:
    allowed_faces: [up]
    max_range_blocks: 5
  display:
    material: SHEARS
    custom_model_data: 1156
    scale: 2.95
  persistence:
    enabled: true
    key: mounted_mg_alpha
 
mountable:
  enabled: true
  seat:
    offset:
      x: 0.0
      y: 0.96
      z: 0.0
  aim:
    yaw_limit_degrees: 360
    pitch_min: -5
    pitch_max: 5
  controls:
    fire: LEFT_CLICK
    unmount: SNEAK

plantable is the world-facing half

Use plantable to answer:

  • where the rig can stand
  • how far away the player can deploy it
  • whether anyone can pack it up
  • what its display model looks like
  • whether it persists across restarts
  • how assembly and pack-up feel

Important public knobs from the example mounted MG include:

  • placement.allowed_faces
  • placement.max_range_blocks
  • packup.interaction_range_blocks
  • display.scale
  • persistence.persist_across_restart
  • assembly.deploy_warmup_ticks
  • assembly.pack_warmup_ticks

mountable is the operator-facing half

Use mountable to answer:

  • where the seat sits
  • how far the gun can yaw and pitch
  • what input fires it
  • what input unmounts it
  • what control item appears while mounted
  • whether the mounted hotbar should be overridden

Important example knobs include:

  • seat.offset
  • aim.yaw_limit_degrees
  • aim.pitch_min
  • aim.pitch_max
  • controls.fire
  • controls.unmount
  • hotbar_override.layout
  • control_item.*

Copyable mounted-MG pattern

Use this when you want a straightforward emplacement gun.

YAML
ammo:
  type: HEAVY_RIFLE
  magazine_size: 200
 
fire:
  mode: AUTO
  shots_per_second: 11.2
  projectiles_per_shot: 1
 
plantable:
  enabled: true
  placement:
    allowed_faces: [up]
    max_range_blocks: 5
  display:
    material: SHEARS
    custom_model_data: 1156
    scale: 2.95
  persistence:
    enabled: true
    key: mounted_mg_alpha
    despawn_after_ticks: 72000
    persist_across_restart: true
 
mountable:
  enabled: true
  seat:
    offset:
      x: 0.0
      y: 0.96
      z: 0.0
  aim:
    yaw_limit_degrees: 360
    pitch_min: -5
    pitch_max: 5
  controls:
    fire: LEFT_CLICK
    unmount: SNEAK
  hotbar_override:
    enabled: true
    layout: mounted_mg

Why this works:

  • the rig can exist as a real world object
  • the player instantly understands how to operate it
  • the mounted control lane stays separate from the placement lane

Damage and destruction belong on the rig, not only the weapon

The example mounted MG also exposes a projectile_damage block under plantable.

That is important because the rig itself can:

  • have health
  • be damaged by projectiles
  • show a hitbox
  • return or pack on destruction
  • preserve or clear health when packed

That is part of the world-object fantasy, not just the firing fantasy.

Mounted guns should feel different from rifles

A mounted gun usually trades mobility for output.

To make that clear, lean on:

  • bigger magazine size
  • stronger lane-holding fire
  • tighter seat restrictions
  • limited pitch windows when appropriate
  • setup and pack-up time

If the item feels like a normal rifle that happens to sit on a stand, the mounted fantasy is not really landing yet.

Do not explain mounted systems like airstrikes

Mounted systems are direct-control weapons.

Sky Select support items are remote-call weapons.

Those are different player expectations:

  • mounted gun: hold this lane
  • airstrike caller: mark or choose that location

Keep those systems separate in the docs and in your content thinking.

Common mistakes

Forgetting seat readability

If the rider offset feels wrong, the whole emplacement feels broken even when the bullets work.

Giving the rig no assembly friction

A deployable platform usually feels better when setup and pack-up take real time.

Using the mounted pattern for a support device

If the player is not directly controlling fire, it probably belongs on the support-caller side instead.