▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
Моды/Fairy Lights
Fairy Lights

Fairy Lights

A modern port of the beloved decorative hanging lights mod, bringing customizable string lights, bunting, and garlands to Minecraft 1.21.1.

5.1K
9

v8.0.10

release2 мая 2026 г.

Fairy Lights 8.0.10 - Performance: Remove Dead Reflection Code

Performance Fixes

CapabilityHandler (~16% render thread overhead eliminated)

  • Removed per-tick reflection calls in getFastenerCapability() for both Entity and BlockEntity overloads. The code was calling Class.getMethod() / Method.invoke() every tick trying to find old Forge API methods (getCapability, getData, setData, addCapability, getOrCreateCapability) that don't exist in NeoForge 1.21.1. Each call threw NoSuchMethodException which is expensive to construct.
  • The instanceof checks for FastenerBlockEntity, FenceFastenerEntity, and Player already covered all real use cases — the reflection fallbacks never succeeded.

Bug Fixes

Connection Item Matching (Connection.java)

  • Fixed matches() and replace() using dead getTag() reflection instead of the Data Components API. ItemStack.getTag() was removed in 1.20.5 — the reflection always failed and returned null, causing matches() to always return true for same-type items (preventing valid NBT comparison) and replace() to always pass empty data (losing connection properties like color/pattern). Now correctly reads from FLDataComponents.CONNECTION_LOGIC.

Dead Code Removal

FenceFastenerEntity.java

  • Removed two useless reflection attempts for NbtAccounter.unlimitedHeap() and NbtAccounter.createUnlimited(int) in readSpawnData() — neither exists in 1.21.1. The correct NbtAccounter.create() was already the final fallback.

NetBuilder.java

  • Removed dead reflection in sendToClient() trying PayloadRegistrar.send() and PayloadRegistrar.sendToPlayer() — neither method exists. The handler map fallback was the actual working code path.

ClientEventHandler.java

  • Removed reflection-based addVertexToBuffer() trying the old VertexConsumer.vertex(double,double,double) chained API. This code path is unreachable (only called from commented-out drawEntityHighlight).

ClientProxy.java

  • Removed unused getUvIndex() method containing VertexFormatElement.getUsage() reflection — never called from anywhere in the codebase.

v8.0.9

release3 апреля 2026 г.
  • Suppressed FL_DEBUG and FL_DEBUG_CRITICAL console spam.

v8.0.8

release2 марта 2026 г.

Fairy Lights 8.0.8 - Letter & Pennant Bunting Rendering Fix

Major Fixes

Letter Bunting Rendering

  • Fixed letters not appearing on string: Letters now render correctly on letter bunting after entering text in the dialog. The root cause was a broken manual vertex extraction approach — replaced with Minecraft's native putBulkData() method for rendering BakedQuads.

Pennant Bunting Rendering

  • Fixed pennants not appearing on string: Pennants now render correctly. The model lookup was using the wrong variant ("inventory" instead of "standalone"), causing all models to return the missing model.
  • Fixed pennants off-center: Added proper centering translation to align pennants under their attachment points on the string.

Rendering Pipeline

  • Fixed texture atlas mismatch: BakedQuad rendering was using the mod's custom entity texture atlas, but the quad UV coordinates reference the block texture atlas. Switched to Sheets.cutoutBlockSheet() for correct rendering.

Technical Improvements

  • Replaced ~120 lines of broken manual vertex extraction and reflection-based rendering with a single putBulkData() call
  • Fixed model variant from "inventory" to "standalone" in PennantBuntingRenderer
  • Updated FenceFastenerRenderer to use the MultiBufferSource overload
  • Removed excessive debug logging and System.out.println statements
  • Removed unnecessary depth offset hacks from all connection renderers

v8.0.7

release7 февраля 2026 г.

Fairy Lights 8.0.7 - Connection Placement & Item Drop Fixes

Major Fixes

Connection Placement System

  • Fixed placement after breaking: Hanging lights can now be placed at different distances after breaking the first fastener. Previously, the connection would remain in the player's hand and block new placements.
  • Fixed reconnection logic: When placing a connection at a different distance, the system now properly handles reconnecting to a new destination or creating a new connection if the old destination is invalid.
  • Improved connection validation: The placement system now correctly ignores removed or invalid connections, allowing new placements even when stale connection data exists.

Item Drop System

  • Fixed swapped light drops: When breaking a hanging lights connection, all individual lights from the pattern (including any lights you swapped in) are now properly dropped as items. Previously, swapped-in lights would be lost.
  • Fixed drop behavior: Pattern items are now dropped both when manually disconnecting a connection and when breaking the fastener block, ensuring you always get your lights back.

Technical Improvements

  • Enhanced connection type matching to allow reconnection when types match
  • Improved handling of stale connections in player capability
  • Better null safety checks in connection removal code
  • Fixed item dropping to occur in both onRemove() and disconnect() methods

Notes

  • Breaking a hanging lights connection now returns all lights that were placed in the pattern
  • You can now freely place connections at different distances without being blocked by previous placements
  • The connection system now properly cleans up invalid connections automatically

v8.0.6

release5 февраля 2026 г.

Fairy Lights 8.0.6 - Hanging Lights Interaction & On/Off Toggle Fixes

Major Fixes

Hanging Lights Interaction System

  • Fixed individual light swapping: Lights can now be individually replaced by clicking on them with a different light item in hand. Each light maintains its own state and can be changed independently.
  • Fixed light shape changes: Swapping lights now correctly changes both the color AND shape of the light, not just the color.
  • Fixed interaction detection: Improved client-side interaction detection to reliably detect clicks on individual lights, fasteners, and the rope itself.

On/Off Toggle System

  • Fixed on/off state persistence: Lights now correctly maintain their on/off state and properly toggle when clicked with an empty hand.
  • Fixed state synchronization: The on/off state now correctly synchronizes from server to client, ensuring all players see the same state.
  • Fixed light block removal: When lights are turned off, the light blocks (that emit actual light) are now properly removed on both server and client, so the area becomes dark as expected.
  • Fixed toggle behavior: Lights only toggle on/off when clicking with an empty hand. Swapping lights no longer triggers the toggle.

Technical Improvements

  • Improved network synchronization for connection state updates
  • Enhanced client-side state management for hanging lights
  • Better handling of light block placement and removal
  • Fixed duplicate interaction handling to prevent double-toggles

Notes

  • The on/off toggle requires an empty hand - holding an item will swap the light instead
  • Individual lights can be swapped by clicking on them with a different light item
  • Light blocks are automatically removed when lights are turned off, restoring normal lighting

Совместимость

Minecraft: Java Edition

1.21.x

Платформы

Поддерживаемые окружения

Клиент и сервер

Создатели

Детали

Лицензия:MIT
Опубликован:3 месяца назад
Обновлён:4 дня назад
Главная