ChainDecor
PluginGPL-3.0-only

ChainDecor

ChainDecor is a Purpur/Paper plugin that adds decorative hanging chains between blocks.

38
Downloads
1
Followers
2 months ago
Updated
📦
1
Versions

📖About ChainDecor

ChainDecor


ChainDecor is a Purpur/Paper plugin that adds decorative hanging chains between blocks. You can attach lanterns, banners, and end rods to the chains while preserving banner patterns and visual styling. It supports sagging chains, detailed config customization, individual decoration removal, attachment to multiple anchor types, and lanterns that provide real light to the surrounding area.

It is designed for builders and survival servers that want more detailed decorative options without requiring any client-side mods.


Key Features

  • Create decorative hanging chains between supported anchor blocks
  • Natural-looking chain sag with configurable physics
  • Attach lanterns, banners, and end rods to individual chain segments
  • Banner patterns are preserved from the item in the player’s hand
  • Shears can remove a specific decoration from a specific segment
  • Supports fences, walls, iron bars, copper bars, lightning rods, and optional all-block anchors
  • Fully server-side, not required on client

Decorations

Each chain segment can hold one decoration at a time:

  • Lanterns
  • Banners
  • End Rods

This allows patterns such as:

  • banner, lantern, banner, lantern
  • lantern, banner, end rod
  • alternating decorative layouts without overlapping on the same segment

Removal

Using shears on a decorated segment removes the decoration attached to that segment first.
If there is no decoration on that segment, the chain itself can be removed.


Configuration

Config File

  • Location: plugins/ChainDecor/config.yml
  • Reload command: /chains reload

Main Options

  • Chain sag strength and limits
  • Anchor support rules
  • Lantern offsets and connector size
  • Banner size, offset, and slope behavior
  • End rod position and slope behavior
  • Decoration spacing rules
  • Optional support for all blocks as anchors

Anchor Support

By default, chains can be attached to:

  • Fences
  • Walls
  • Iron bars
  • Copper bars
  • Lightning rods

You can also enable this option:

support-all-blocks: true

When enabled, chains may be attached to any block.


Commands

Command Description
/chains reload Reload the plugin configuration

Examples

Create a hanging chain

  1. Hold a supported chain item
  2. Right-click the first anchor
  3. Right-click the second anchor

Hang a lantern

  1. Hold a lantern
  2. Right-click a chain segment

Hang a banner

  1. Hold any banner
  2. Right-click a chain segment

Hang an end rod

  1. Hold an end rod
  2. Right-click a chain segment

Remove a decoration

  1. Hold shears
  2. Right-click the decorated segment

Installation

This is a server-side plugin for Purpur/Paper and is not required on the client.

  1. Place the plugin jar into your plugins folder
  2. Start the server
  3. Edit config.yml if needed
  4. Use /chains reload after config changes

Notes

  • Banner patterns are preserved from the item used when placing the banner
  • Decorations are stored per chain segment
  • Lanterns can provide light
  • End rods use chain-based slope behavior similar to banners, but are rendered as a single decoration
  • Decoration overlap on the same segment is prevented

ChainDecor Configuration


Language


Plugin language file.
Available by default: ru, en, de, es, tt, kk
Files are stored in plugins/ChainDecor/lang/
Example: language: ru

language: ru

Chain Settings


Maximum allowed distance between two anchor points.

max-distance: 24.0

How many visual chain segments are created per block of distance (Higher values = smoother chain, but more entities.)

segments-per-block: 1.25

Minimum amount of chain segments.

min-segments: 2

Maximum amount of chain segments.

max-segments: 64

Main sag multiplier (Higher values = stronger hanging curve.)

sag-factor: 0.06

Minimum sag, even for short chains.

min-sag: 0.015

Maximum sag limit for long chains.

max-sag: 1.0

Vertical anchor point inside the block.

anchor-height: 0.55

If true, the chain connects to the block center.

anchor-to-center: true

Horizontal inset used when not anchoring exactly to the center.

anchor-horizontal-inset: 0.12

Extra shortening near the chain ends.

endpoint-gap: 0.0

Thickness of the main chain display.

segment-thickness: 0.82

Height of the invisible interaction hitbox for each chain segment.

segment-hitbox-height: 0.45

Lantern Settings


How far below the chain the lantern hangs.

lantern-hang-offset: 0.78

Height of the small connector chain above the lantern.

lantern-connector-top-offset: 0.1

Thickness of the lantern connector chain.

lantern-connector-thickness: 0.62

Minimum distance between lanterns.

lantern-min-spacing: 1.5

Light level for normal lanterns.

lantern-light-level: 15

Light level for soul lanterns.

soul-lantern-light-level: 10

Drop the lantern item when removed with shears.

drop-lantern-on-remove: true

Banner Settings


How far below the chain the banner hangs.

flag-hang-offset: 0.95

Overall banner scale.

flag-scale: 1.7

Banner width multiplier.

flag-width-scale: 0.86

Banner height multiplier.

flag-height-scale: 0.92

Small side offset between the two rendered banner sides.

flag-side-offset: 0.0015

Extra vertical offset applied to banner rendering.

flag-vertical-nudge: -0.1

How strongly the banner follows the chain angle.

flag-slope-factor: 1

Maximum allowed slope angle in degrees.

flag-max-slope-degrees: 100.0

Extra forward lean applied to the banner.

flag-forward-lean-degrees: 0.0

Additional lean based on slope angle.

flag-extra-lean-per-slope-degree: 0.00

Moves the banner along the chain direction.

flag-along-tangent-offset: 0.0

Drop the banner item when removed with shears.

drop-flag-on-remove: true

End Rod Settings


How far below the chain the end rod hangs.

end-rod-hang-offset: 0.33

Overall end rod scale.

end-rod-scale: 1.6

Extra vertical offset for the end rod.

end-rod-vertical-nudge: -0.06

How strongly the end rod follows the chain angle.

end-rod-slope-factor: 1.0

Maximum allowed slope angle in degrees.

end-rod-max-slope-degrees: 100.0

Extra forward lean for the end rod.

end-rod-forward-lean-degrees: 0.0

Additional lean based on slope angle.

end-rod-extra-lean-per-slope-degree: 0.0

Moves the end rod along the chain direction.

end-rod-along-tangent-offset: 0.0

Drop the end rod item when removed with shears.

drop-end-rod-on-remove: true

Decoration Rules


How many neighbouring segments are blocked when placing a decoration.

 0 = only the same segment
 1 = same segment + adjacent segments
decoration-exclusion-radius-segments: 0

Anchor Support


Allow chains to connect to walls.

support-walls: true

Allow chains to connect to fences.

support-fences: true

Allow chains to connect to iron bars and copper bars.

support-bars: true

Allow chains to connect to all lightning rod variants.

support-lightning-rods: true

If enabled, chains can connect to any block (This overrides the specific support settings above.)

support-all-blocks: false

Removal Rules


Require sneaking when removing chain connections from anchors.

require-sneak-to-remove: true

Drop chain item when chain is removed.

drop-chain-on-remove: true

Messages


  • first-point: "First point selected. Right-click the second anchor with a chain."
  • link-created: "Chain created."
  • selection-cleared: "Selection cleared."
  • too-far: "Too far away."
  • same-anchor: "You must choose another anchor."
  • already-exists: "A chain already exists between these points."
  • invalid-anchor: "Chains can only be attached to fences, walls, bars, and lightning rods."
  • removed: "Chain removed."
  • nothing-to-remove: "There are no chains on this anchor."
  • lantern-created: "Lantern attached to the chain."
  • lantern-removed: "Lantern removed."
  • lantern-too-close: "Too close to another lantern."
  • lantern-place-failed: "You cannot place a lantern here."
  • flag-created: "Banner attached to the chain."
  • flag-removed: "Banner removed."
  • end-rod-created: "End rod attached to the chain."
  • end-rod-removed: "End rod removed."
  • mixed-decorations-not-allowed: "This segment is already occupied."
  • reloaded: "ChainDecor reloaded."
  • no-permission: "You do not have permission to use this command."