mods.railcraft.client.render.RenderTrackBuffer.java Source code

Java tutorial

Introduction

Here is the source code for mods.railcraft.client.render.RenderTrackBuffer.java

Source

/* 
 * Copyright (c) CovertJaguar, 2014 http://railcraft.info
 * 
 * This code is the property of CovertJaguar
 * and may only be used with explicit written
 * permission unless otherwise specified on the
 * license page at http://railcraft.info/wiki/info:license.
 */
package mods.railcraft.client.render;

import mods.railcraft.client.render.models.ModelSimple;
import mods.railcraft.client.render.models.tracks.ModelBufferStop;
import mods.railcraft.common.blocks.tracks.TileTrack;
import mods.railcraft.common.blocks.tracks.TrackBufferStop;
import mods.railcraft.common.core.RailcraftConstants;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.opengl.GL11;

/**
 *
 * @author CovertJaguar <http://www.railcraft.info>
 */
public class RenderTrackBuffer extends TileEntitySpecialRenderer {

    //    private static final RenderInfo board, bumper1, bumper2, baseBig, baseSmall;
    //
    //    static {
    //        IIcon[] icons = TrackTextureLoader.INSTANCE.getTrackIcons(EnumTrack.BUFFER_STOP.getTrackSpec());
    //        float pix = RenderTools.PIXEL;
    //        board = new RenderInfo();
    //        board.texture = new IIcon[]{icons[2]};
    //        board.minX = pix * 2;
    //        board.minY = pix * 6;
    //        board.minZ = pix * 4;
    //        board.maxX = pix * 14;
    //        board.maxY = pix * 10;
    //        board.maxZ = pix * 6;
    //
    //        bumper1 = new RenderInfo();
    //        bumper1.texture = new IIcon[]{icons[4]};
    //        bumper1.minX = pix * 3;
    //        bumper1.minY = pix * 7;
    //        bumper1.minZ = pix * 3;
    //        bumper1.maxX = pix * 5;
    //        bumper1.maxY = pix * 9;
    //        bumper1.maxZ = pix * 4;
    //
    //        bumper2 = new RenderInfo();
    //        bumper2.texture = new IIcon[]{icons[4]};
    //        bumper2.minX = pix * 11;
    //        bumper2.minY = pix * 7;
    //        bumper2.minZ = pix * 3;
    //        bumper2.maxX = pix * 13;
    //        bumper2.maxY = pix * 9;
    //        bumper2.maxZ = pix * 4;
    //
    //        baseBig = new RenderInfo();
    //        baseBig.texture = new IIcon[]{icons[4]};
    //        baseBig.minX = pix * 4;
    //        baseBig.minY = pix * 0;
    //        baseBig.minZ = pix * 5;
    //        baseBig.maxX = pix * 12;
    //        baseBig.maxY = pix * 9;
    //        baseBig.maxZ = pix * 9;
    //
    //        baseSmall = new RenderInfo();
    //        baseSmall.texture = new IIcon[]{icons[4]};
    //        baseSmall.minX = pix * 5;
    //        baseSmall.minY = pix * 0;
    //        baseSmall.minZ = pix * 9;
    //        baseSmall.maxX = pix * 11;
    //        baseSmall.maxY = pix * 7;
    //        baseSmall.maxZ = pix * 13;
    //    }
    //
    //    public static void render(RenderBlocks render, TrackBufferStop track, IBlockAccess world, int x, int y, int z, int meta) {
    //
    ////        if (meta == 0) {
    ////            if (!track.isReversed()) {
    ////                board.reverseZ();
    ////                bumper1.reverseZ();
    ////                bumper2.reverseZ();
    ////                baseBig.reverseZ();
    ////                baseSmall.reverseZ();
    ////            }
    ////        } else {
    ////            board.texture = new int[]{68, 68, 69, 69, 69, 69};
    ////            board.rotate();
    ////            bumper1.rotate();
    ////            bumper2.rotate();
    ////            baseBig.rotate();
    ////            baseSmall.rotate();
    ////
    ////            if (track.isReversed()) {
    ////                board.reverseX();
    ////                bumper1.reverseX();
    ////                bumper2.reverseX();
    ////                baseBig.reverseX();
    ////                baseSmall.reverseX();
    ////            }
    ////        }
    //
    //        GL11.glPushMatrix();
    //        Tessellator tess = Tessellator.instance;
    //        tess.draw();
    //        tess.startDrawingQuads();
    //        GL11.glTranslatef(-8, 0, -8);
    //        GL11.glRotatef(90, 0, 1, 0);
    //        GL11.glTranslatef(8, 0, (float) y % 16);
    //        RenderFakeBlock.renderBlock(board, world, x, y, z, true, false);
    //        RenderFakeBlock.renderBlock(bumper1, world, x, y, z, true, false);
    //        RenderFakeBlock.renderBlock(bumper2, world, x, y, z, true, false);
    //        RenderFakeBlock.renderBlock(baseBig, world, x, y, z, true, false);
    //        RenderFakeBlock.renderBlock(baseSmall, world, x, y, z, true, false);
    //        tess.draw();
    //        tess.startDrawingQuads();
    //        GL11.glPopMatrix();
    //    }
    private static ModelSimple model = new ModelBufferStop();
    private static ResourceLocation TEXTURE = new ResourceLocation(
            RailcraftConstants.TESR_TEXTURE_FOLDER + "track_buffer_stop.png");

    @Override
    public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float time) {
        if (tile instanceof TileTrack) {
            if (((TileTrack) tile).getTrackInstance() instanceof TrackBufferStop) {
                TrackBufferStop track = (TrackBufferStop) ((TileTrack) tile).getTrackInstance();
                GL11.glPushMatrix();
                GL11.glPushAttrib(GL11.GL_ENABLE_BIT);
                GL11.glEnable(GL11.GL_LIGHTING);
                GL11.glDisable(GL11.GL_BLEND);
                GL11.glEnable(GL11.GL_CULL_FACE);
                GL11.glColor3f(1, 1, 1);
                GL11.glTranslatef((float) x, (float) y, (float) z);

                model.resetRotation();

                int meta = tile.getBlockMetadata();
                if (meta == 1) {
                    model.rotateY((float) (Math.PI / 2.0));
                }

                if (meta == 0 != track.isReversed()) {
                    model.rotateY((float) Math.PI);
                }

                bindTexture(TEXTURE);
                model.render(1f / 16f);
                GL11.glPopAttrib();
                GL11.glPopMatrix();
            }
        }
    }

}