
Fairy Lights
A modern port of the beloved decorative hanging lights mod, bringing customizable string lights, bunting, and garlands to Minecraft 1.21.1.
- Загрузки
- 7K
- Подписчики
- 9
- Обновлён
- 2 мая 2026 г.
- Лицензия
- MIT
Опубликован 22 января 2026 г.
Illuminate your world with holiday cheer and cozy vibes! This expanded port of Fairy Lights brings the classic decorative mod to NeoForge 1.21.1, allowing you to craft and hang a wide variety of beautiful light strings, pennants, and garlands.
Whether you're decorating for Christmas with Tinsel Garlands, setting up a spooky Halloween vibe with Jack-o-Lantern lights, or just adding a warm glow to your base with standard hanging lights, this mod gives you complete creative control. Use the custom crafting system to design your own string patterns, mix and match colors, and even add text to bunting!
Key Features:
- Hanging Lights: Choose from various shapes like Fairy Lights, Paper Lanterns, Orbs, Flowers, and specialized holiday themes.
- Garlands & Bunting: Decorate with connection types like Tinsel, Vine, Pennant, and Letter Bunting.
- Customization: Craft intricate patterns by combining different lights on a single string.
- Letter Bunting: Write custom text messages to hang on your walls (now fully functional in 1.21.1!).
- Dynamic Physics: Ropes and strings sway gently and react to players.
Credits:
- Original Creator: pau101 (Huge thanks for creating the original masterpiece!)
- Source: Forked from the original Fairy Lights repository.
- Port Author: Imbavirus (Ported to NeoForge 1.21.1)
Ченджлог
8.0.10Релиз1.21.1 · 2 мая 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 bothEntityandBlockEntityoverloads. The code was callingClass.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 threwNoSuchMethodExceptionwhich is expensive to construct. - The
instanceofchecks forFastenerBlockEntity,FenceFastenerEntity, andPlayeralready covered all real use cases — the reflection fallbacks never succeeded.
Bug Fixes
Connection Item Matching (Connection.java)
- Fixed
matches()andreplace()using deadgetTag()reflection instead of the Data Components API.ItemStack.getTag()was removed in 1.20.5 — the reflection always failed and returnednull, causingmatches()to always returntruefor same-type items (preventing valid NBT comparison) andreplace()to always pass empty data (losing connection properties like color/pattern). Now correctly reads fromFLDataComponents.CONNECTION_LOGIC.
Dead Code Removal
FenceFastenerEntity.java
- Removed two useless reflection attempts for
NbtAccounter.unlimitedHeap()andNbtAccounter.createUnlimited(int)inreadSpawnData()— neither exists in 1.21.1. The correctNbtAccounter.create()was already the final fallback.
NetBuilder.java
- Removed dead reflection in
sendToClient()tryingPayloadRegistrar.send()andPayloadRegistrar.sendToPlayer()— neither method exists. The handler map fallback was the actual working code path.
ClientEventHandler.java
- Removed reflection-based
addVertexToBuffer()trying the oldVertexConsumer.vertex(double,double,double)chained API. This code path is unreachable (only called from commented-outdrawEntityHighlight).
ClientProxy.java
- Removed unused
getUvIndex()method containingVertexFormatElement.getUsage()reflection — never called from anywhere in the codebase.
8.0.9Релиз1.21.1 · 3 апреля 2026 г.
- Suppressed
FL_DEBUGandFL_DEBUG_CRITICALconsole spam.
8.0.8Релиз1.21.1 · 2 марта 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"inPennantBuntingRenderer - Updated
FenceFastenerRendererto use theMultiBufferSourceoverload - Removed excessive debug logging and
System.out.printlnstatements - Removed unnecessary depth offset hacks from all connection renderers
8.0.7Релиз1.21.1 · 7 февраля 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()anddisconnect()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
8.0.6Релиз1.21.1 · 5 февраля 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
8.0.5Релиз1.21.1 · 3 февраля 2026 г.
8.0.5
Fixed
- Server Crash: Fixed a crash that occurred when sending chunk data to players. The issue was caused by
LightBlockEntityattempting to save an emptyItemStackto NBT, which Minecraft 1.21.1 disallows. The block entity now only saves item data when the item stack is not empty, preventing theIllegalStateException: Cannot encode empty ItemStackcrash.
8.0.4Релиз1.21.1 · 3 февраля 2026 г.
8.0.4
Fixed
- Breaking: Breaking/disconnecting connections is now much easier and more reliable. Improved interaction handling and reach distance checks ensure connections can be broken consistently when attacking them.
- Colors: Fixed color persistence and display issues. Colors now properly use the new 1.21.1 Data Components system and will correctly save and load. Added fallback support for legacy color data to ensure compatibility with existing items.
8.0.3Релиз1.21.1 · 22 января 2026 г.
Fixed
- Recipes: Fixed the majority of recipes not showing up in JEI. All items should now be craftable and visible.
- Connections: Fixed an issue where hanging lights/bunting connection ropes would become invisible when standing close to them.
- Construction: Fixed a bug where you couldn't place the second point of a connection if you were using an item from the Creative Menu.
Комментарии
Загружаем…