Compatibility
Minecraft: Java Edition
Platforms
Links
Tags
Creators
Details
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
- Hold a supported chain item
- Right-click the first anchor
- Right-click the second anchor
Hang a lantern
- Hold a lantern
- Right-click a chain segment
Hang a banner
- Hold any banner
- Right-click a chain segment
Hang an end rod
- Hold an end rod
- Right-click a chain segment
Remove a decoration
- Hold shears
- Right-click the decorated segment
Installation
This is a server-side plugin for Purpur/Paper and is not required on the client.
- Place the plugin jar into your plugins folder
- Start the server
- Edit config.yml if needed
- 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."


