// Path: src/main/java/romelo333/notenoughwands/ModRenderers.java
// public final class ModRenderers {
// 
//     public static void init() {
//         LightRenderer.register();
//     }
// 
//     public static void renderBillboardQuad(double scale, float vAdd1, float vAdd2) {
//         GlStateManager.pushMatrix();
// 
//         rotateToPlayer();
// 
//         Tessellator tessellator = Tessellator.getInstance();
//         BufferBuilder buffer = tessellator.getBuffer();
//         buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX);
//         buffer.pos(-scale, -scale, 0).tex(0, 0 + vAdd1).endVertex();
//         buffer.pos(-scale, +scale, 0).tex(0, 0 + vAdd1 + vAdd2).endVertex();
//         buffer.pos(+scale, +scale, 0).tex(1, 0 + vAdd1 + vAdd2).endVertex();
//         buffer.pos(+scale, -scale, 0).tex(1, 0 + vAdd1).endVertex();
//         tessellator.draw();
//         GlStateManager.popMatrix();
//     }
// 
//     public static void rotateToPlayer() {
//         RenderManager renderManager = Minecraft.getMinecraft().getRenderManager();
//         GlStateManager.rotate(-renderManager.playerViewY, 0.0F, 1.0F, 0.0F);
//         GlStateManager.rotate(renderManager.playerViewX, 1.0F, 0.0F, 0.0F);
//     }
// }
// 
// Path: src/main/java/romelo333/notenoughwands/NotEnoughWands.java
// @Mod(modid = NotEnoughWands.MODID, name="Not Enough Wands",
//         dependencies =
//                     "required-after:mcjtylib_ng@[" + NotEnoughWands.MIN_MCJTYLIB_VER + ",);" +
//                     "after:forge@[" + NotEnoughWands.MIN_FORGE11_VER + ",);" +
//                     "after:redstoneflux@[" + NotEnoughWands.MIN_COFH_VER + ",)",
//         acceptedMinecraftVersions = "[1.12,1.13)",
//         version = NotEnoughWands.VERSION)
// public class NotEnoughWands implements ModBase {
//     public static final String MODID = "notenoughwands";
//     public static final String VERSION = "1.8.1";
//     public static final String MIN_FORGE11_VER = "13.19.0.2176";
//     public static final String MIN_COFH_VER = "2.0.0";
//     public static final String MIN_MCJTYLIB_VER = "3.5.0";
// 
//     @SidedProxy(clientSide="romelo333.notenoughwands.setup.ClientProxy", serverSide="romelo333.notenoughwands.setup.ServerProxy")
//     public static IProxy proxy;
//     public static ModSetup setup = new ModSetup();
// 
//     @Mod.Instance("NotEnoughWands")
//     public static NotEnoughWands instance;
// 
//     /**
//      * Run before anything else. Read your config, create blocks, items, etc, and
//      * register them with the GameRegistry.
//      */
//     @Mod.EventHandler
//     public void preInit(FMLPreInitializationEvent e) {
//         setup.preInit(e);
//         proxy.preInit(e);
//     }
// 
//     /**
//      * Do your mod setup. Build whatever data structures you care about. Register recipes.
//      */
//     @Mod.EventHandler
//     public void init(FMLInitializationEvent e) {
//         setup.init(e);
//         proxy.init(e);
//     }
// 
//     /**
//      * Handle interaction with other mods, complete your setup based on this.
//      */
//     @Mod.EventHandler
//     public void postInit(FMLPostInitializationEvent e) {
//         setup.postInit(e);
//         proxy.postInit(e);
//     }
// 
//     @Override
//     public String getModId() {
//         return NotEnoughWands.MODID;
//     }
// 
//     @Override
//     public void openManual(EntityPlayer player, int bookindex, String page) {
//         // @todo
//     }
// }


import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.client.registry.ClientRegistry;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import org.lwjgl.opengl.GL11;
import romelo333.notenoughwands.ModRenderers;
import romelo333.notenoughwands.NotEnoughWands;
package romelo333.notenoughwands.blocks;



@SideOnly(Side.CLIENT)
public class LightRenderer extends TileEntitySpecialRenderer {
    ResourceLocation texture = new ResourceLocation(NotEnoughWands.MODID.toLowerCase(), "textures/blocks/light.png");

    @Override
    public void render(TileEntity tileEntity, double x, double y, double z, float time, int destroyStage, float alpha) {
        bindTexture(texture);

        GlStateManager.pushMatrix();
        GlStateManager.enableRescaleNormal();
        GlStateManager.color(1.0f, 1.0f, 1.0f);

        GlStateManager.enableBlend();

        GlStateManager.translate((float) x + 0.5F, (float) y + 0.5F, (float) z + 0.5F);
        GlStateManager.blendFunc(GL11.GL_ONE, GL11.GL_ONE);

        long t = System.currentTimeMillis() % 6;
        ModRenderers.renderBillboardQuad(0.6f, t * (1.0f / 6.0f), (1.0f / 6.0f));

        GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
        GlStateManager.popMatrix();
    }

// Path: src/main/java/romelo333/notenoughwands/ModRenderers.java
// public final class ModRenderers {
// 
//     public static void init() {
//         LightRenderer.register();
//     }
// 
//     public static void renderBillboardQuad(double scale, float vAdd1, float vAdd2) {
//         GlStateManager.pushMatrix();
// 
//         rotateToPlayer();
// 
//         Tessellator tessellator = Tessellator.getInstance();
//         BufferBuilder buffer = tessellator.getBuffer();
//         buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX);
//         buffer.pos(-scale, -scale, 0).tex(0, 0 + vAdd1).endVertex();
//         buffer.pos(-scale, +scale, 0).tex(0, 0 + vAdd1 + vAdd2).endVertex();
//         buffer.pos(+scale, +scale, 0).tex(1, 0 + vAdd1 + vAdd2).endVertex();
//         buffer.pos(+scale, -scale, 0).tex(1, 0 + vAdd1).endVertex();
//         tessellator.draw();
//         GlStateManager.popMatrix();
//     }
// 
//     public static void rotateToPlayer() {
//         RenderManager renderManager = Minecraft.getMinecraft().getRenderManager();
//         GlStateManager.rotate(-renderManager.playerViewY, 0.0F, 1.0F, 0.0F);
//         GlStateManager.rotate(renderManager.playerViewX, 1.0F, 0.0F, 0.0F);
//     }
// }
// 
// Path: src/main/java/romelo333/notenoughwands/NotEnoughWands.java
// @Mod(modid = NotEnoughWands.MODID, name="Not Enough Wands",
//         dependencies =
//                     "required-after:mcjtylib_ng@[" + NotEnoughWands.MIN_MCJTYLIB_VER + ",);" +
//                     "after:forge@[" + NotEnoughWands.MIN_FORGE11_VER + ",);" +
//                     "after:redstoneflux@[" + NotEnoughWands.MIN_COFH_VER + ",)",
//         acceptedMinecraftVersions = "[1.12,1.13)",
//         version = NotEnoughWands.VERSION)
// public class NotEnoughWands implements ModBase {
//     public static final String MODID = "notenoughwands";
//     public static final String VERSION = "1.8.1";
//     public static final String MIN_FORGE11_VER = "13.19.0.2176";
//     public static final String MIN_COFH_VER = "2.0.0";
//     public static final String MIN_MCJTYLIB_VER = "3.5.0";
// 
//     @SidedProxy(clientSide="romelo333.notenoughwands.setup.ClientProxy", serverSide="romelo333.notenoughwands.setup.ServerProxy")
//     public static IProxy proxy;
//     public static ModSetup setup = new ModSetup();
// 
//     @Mod.Instance("NotEnoughWands")
//     public static NotEnoughWands instance;
// 
//     /**
//      * Run before anything else. Read your config, create blocks, items, etc, and
//      * register them with the GameRegistry.
//      */
//     @Mod.EventHandler
//     public void preInit(FMLPreInitializationEvent e) {
//         setup.preInit(e);
//         proxy.preInit(e);
//     }
// 
//     /**
//      * Do your mod setup. Build whatever data structures you care about. Register recipes.
//      */
//     @Mod.EventHandler
//     public void init(FMLInitializationEvent e) {
//         setup.init(e);
//         proxy.init(e);
//     }
// 
//     /**
//      * Handle interaction with other mods, complete your setup based on this.
//      */
//     @Mod.EventHandler
//     public void postInit(FMLPostInitializationEvent e) {
//         setup.postInit(e);
//         proxy.postInit(e);
//     }
// 
//     @Override
//     public String getModId() {
//         return NotEnoughWands.MODID;
//     }
// 
//     @Override
//     public void openManual(EntityPlayer player, int bookindex, String page) {
//         // @todo
//     }
// }


// Path: src/main/java/romelo333/notenoughwands/blocks/LightRenderer.java
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.client.registry.ClientRegistry;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import org.lwjgl.opengl.GL11;
import romelo333.notenoughwands.ModRenderers;
import romelo333.notenoughwands.NotEnoughWands;

package romelo333.notenoughwands.blocks;



@SideOnly(Side.CLIENT)
public class LightRenderer extends TileEntitySpecialRenderer {
    ResourceLocation texture = new ResourceLocation(NotEnoughWands.MODID.toLowerCase(), "textures/blocks/light.png");

    @Override
    public void render(TileEntity tileEntity, double x, double y, double z, float time, int destroyStage, float alpha) {
        bindTexture(texture);

        GlStateManager.pushMatrix();
        GlStateManager.enableRescaleNormal();
        GlStateManager.color(1.0f, 1.0f, 1.0f);

        GlStateManager.enableBlend();

        GlStateManager.translate((float) x + 0.5F, (float) y + 0.5F, (float) z + 0.5F);
        GlStateManager.blendFunc(GL11.GL_ONE, GL11.GL_ONE);

        long t = System.currentTimeMillis() % 6;
        ModRenderers.renderBillboardQuad(0.6f, t * (1.0f / 6.0f), (1.0f / 6.0f));

        GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
        GlStateManager.popMatrix();
    }

    public static void register() {