Fairy lights are crafted by a horizontal combination of iron ingot, string or stick, iron ingot, along with any combination of lights to specify a pattern (left-right, top-down). If glowstone is included the hanging lights will twinkle. If string is used there will be slack in the connection and if a stick is used the connection will be straight. The hanging lights item will only show the first four light colors, but the most lights that can be crafted is eight by placing a hanging lights in a crafting table with eight lights.

Here are the light recipes where the red dye in the recipes can be any dye.

Spooky Lights

Example Hanging Lights recipes

Vine & Tinsel Garland

Pennant, Step-ladder, Letter bunting

Pennant bunting is made by first crafting pennants that can be any dye color.

Here are some example pennant bunting recipes.

Fairy Lights Usage

Right click the hanging lights, garland, or bunting on the side of a block, or an existing fastener to place a fastener, now there will be a connection from the fastener to you. From then you right click on another side of a block, or an existing fastener, to complete the connection. The maximum length of a fairy light strand is 32 blocks.

The slack of hanging lights, garland, or bunting can be increased by right clicking it with string and decreased by right clicking with a stick. Hanging lights can be turned on and off by right clicking.

cpw.mods.fml.relauncher.ReflectionHelper$UnableToFindFieldException: java.lang.NoSuchFieldException: currentFrustum at cpw.mods.fml.relauncher.ReflectionHelper.findField(ReflectionHelper.java:94) at com.pau101.fairylights.client.renderer.ConnectionRenderer.<init>(ConnectionRenderer.java:57) at com.pau101.fairylights.proxy.ClientProxy.initRenders(ClientProxy.java:69) at com.pau101.fairylights.FairyLights.init(FairyLights.java:72) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:532) at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) at com.google.common.eventbus.EventBus.post(EventBus.java:275) at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:212) at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:190) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) at com.google.common.eventbus.EventBus.post(EventBus.java:275) at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119) at cpw.mods.fml.common.Loader.initializeMods(Loader.java:737) at cpw.mods.fml.client.FMLClientHandler.finishMinecraftLoading(FMLClientHandler.java:311) at net.minecraft.client.Minecraft.func_71384_a(Minecraft.java:552) at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:878) at net.minecraft.client.main.Main.main(SourceFile:148) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) at net.minecraft.launchwrapper.Launch.main(Launch.java:28) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.multimc.onesix.OneSixLauncher.launchWithMainClass(OneSixLauncher.java:236) at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java:297) at org.multimc.EntryPoint.listen(EntryPoint.java:162) at org.multimc.EntryPoint.main(EntryPoint.java:53)Caused by: java.lang.NoSuchFieldException: currentFrustum at java.lang.Class.getDeclaredField(Unknown Source) at cpw.mods.fml.relauncher.ReflectionHelper.findField(ReflectionHelper.java:85) ... 47 more

Can you do something about it or do we really have to choose between your mod and latest optifine versions ?