ChainDecor

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

9

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."

ADS