DynLight

dynamic lights -- held or dropped items, glowing or on-fire mobs, flaming arrows, etc. configurable and provides an API for other plugins

43

DynLight

A dynamic entity-based lighting plugin, which allows for integrations with other plugins.

Held items, dropped items, burning mobs, and other entities glow. Fully configurable, and other plugins can use the API or scoreboard tags to define their own custom glowing entities.

Features

Light Sources

- Scoreboard Tag Lights - Torches, lanterns, glowstone, and 40+ other items emit light when held - Scoreboard Tag Lights - Items on the ground emit their light level - Scoreboard Tag Lights - Any entity on fire glows with configurable intensity - Scoreboard Tag Lights - Arrows on fire, fireballs, and spectral arrows emit light - Scoreboard Tag Lights - Players wearing enchanted armor or holding enchanted items emit a subtle glow - Scoreboard Tag Lights - Blazes, Glow Squids, Magma Cubes, and Allays always emit light - Scoreboard Tag Lights - Any entity with a `dynlight:<level>` scoreboard tag emits light, enabling cross-plugin integration without compile-time dependencies

Special Mechanics

- Async Rendering - Fire-based items (torches, campfires) are extinguished underwater while waterproof items (glowstone, sea lanterns) continue to glow - Async Rendering - Light blocks are packet based, and don't modify the world. Inspired by Async Rendering - Async Rendering - Players can individually enable/disable dynamic lights client side - Async Rendering - Light calculations run asynchronously for minimal server impact

Configuration

Performance settings: ```yaml

Update interval in ticks (20 ticks = 1 second)

smaller values = more frequent updates = smoother light movement but higher CPU usage

update-interval: 1

Maximum distance to render dynamic lights (blocks)

render-distance: 96

How often to check for fire expiration on entities (ticks, 10 = 0.5 seconds)

fire-sweep-interval: 10 ```

Enable or disable specific light source types:

```yaml detection: held-items: true dropped-items: true burning-entities: true flaming-arrows: true enchanted-armor: true enchanted-items: true always-lit-entities: true tagged-entities: true ```

Configure light intensity for enchanted equipment:

```yaml light-levels: enchanted-armor: 3 enchanted-items: 3 ```

Configure how items emit light:

```yaml items: TORCH: light: 10 water-sensitive: true LANTERN: light: 12 water-sensitive: false ```

Water-sensitive items stop emitting light when submerged.

Configure how entities emit light when on fire:

```yaml entities:

Properties: base-light, fire-light, horizontal-radius, height

BLAZE: base-light: 8 # Always emits light fire-light: 15 ```

| Property | Description | Default | | ------------------- | ---------------------------------------------------- | ------- | | `base-light` | Light level when not on fire (0 = only when burning) | 0 | | `fire-light` | Light level when on fire | 12 | | `horizontal-radius` | Light column radius (0=1x1, 1=3x3, 2=5x5) | 1 | | `height` | Light column height in blocks | 2 |

The light column will once place one light block -- we search wider than you'd think to avoid obstacles, since light blocks can't be placed inside things like vines, tall grass, ladders, etc.

Commands

| Command | Description | Permission | | ------------------- | ----------------------------------- | ---------------- | | `/dynlight help` | Show available commands | - | | `/dynlight enable` | Enable dynamic lights for yourself | `dynlight.use` | | `/dynlight disable` | Disable dynamic lights for yourself | `dynlight.use` | | `/dynlight info` | Show active light source count | `dynlight.admin` | | `/dynlight stats` | Show detailed statistics | `dynlight.admin` | | `/dynlight reload` | Reload configuration | `dynlight.admin` | | `/dynlight regen` | Regenerate all light sources | `dynlight.admin` |

Scoreboard Tag Lights

Any entity with a scoreboard tag matching `dynlight:<level>` will emit light. No API dependency required — just add the tag via commands or another plugin.

Format: `dynlight:<level>` or `dynlight:<level>:<radius>:<height>`

| Parameter | Range | Description | |-----------|-------|-------------| | `level` | 1–15 | Light level | | `radius` | 0–5 | Horizontal search radius (optional, default from entity config) | | `height` | 1–10 | Vertical search height (optional, default from entity config) |

Examples: ``` /summon armor_stand ~ ~ ~ {Tags:["dynlight:15"]} /summon armor_stand ~ ~ ~ {Tags:["dynlight:10:3:5"]} ```

Note: the `/tag` command does not support colons in tag names — use NBT `Tags` when summoning, or add tags programmatically from another plugin.

ADS