appeng.client.render.blocks.RenderBlockCrank.java Source code

Java tutorial

Introduction

Here is the source code for appeng.client.render.blocks.RenderBlockCrank.java

Source

/*
 * This file is part of Applied Energistics 2.
 * Copyright (c) 2013 - 2014, AlgorithmX2, All rights reserved.
 *
 * Applied Energistics 2 is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * Applied Energistics 2 is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with Applied Energistics 2.  If not, see <http://www.gnu.org/licenses/lgpl>.
 */

package appeng.client.render.blocks;

import org.lwjgl.opengl.GL11;

import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.item.ItemStack;
import net.minecraft.world.IBlockAccess;
import net.minecraftforge.client.IItemRenderer.ItemRenderType;
import net.minecraftforge.common.util.ForgeDirection;

import appeng.block.grindstone.BlockCrank;
import appeng.client.render.BaseBlockRender;
import appeng.tile.grindstone.TileCrank;

public class RenderBlockCrank extends BaseBlockRender<BlockCrank, TileCrank> {

    public RenderBlockCrank() {
        super(true, 60);
    }

    @Override
    public void renderInventory(final BlockCrank blk, final ItemStack is, final RenderBlocks renderer,
            final ItemRenderType type, final Object[] obj) {
        renderer.renderAllFaces = true;

        renderer.setRenderBounds(0.5D - 0.05, 0.5D - 0.5, 0.5D - 0.05, 0.5D + 0.05, 0.5D + 0.3, 0.5D + 0.05);
        super.renderInventory(blk, is, renderer, type, obj);

        renderer.setRenderBounds(0.70D - 0.15, 0.75D - 0.05, 0.5D - 0.05, 0.70D + 0.28, 0.75D + 0.05, 0.5D + 0.05);
        super.renderInventory(blk, is, renderer, type, obj);

        renderer.renderAllFaces = false;
    }

    @Override
    public boolean renderInWorld(final BlockCrank imb, final IBlockAccess world, final int x, final int y,
            final int z, final RenderBlocks renderer) {
        return true;
    }

    @Override
    public void renderTile(final BlockCrank blk, final TileCrank tile, final Tessellator tess, final double x,
            final double y, final double z, final float f, final RenderBlocks renderBlocks) {
        if (tile.getUp() == null || tile.getUp() == ForgeDirection.UNKNOWN) {
            return;
        }

        Minecraft.getMinecraft().getTextureManager().bindTexture(TextureMap.locationBlocksTexture);
        RenderHelper.disableStandardItemLighting();

        if (Minecraft.isAmbientOcclusionEnabled()) {
            GL11.glShadeModel(GL11.GL_SMOOTH);
        } else {
            GL11.glShadeModel(GL11.GL_FLAT);
        }

        GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);

        this.applyTESRRotation(x, y, z, tile.getForward(), tile.getUp());

        GL11.glTranslated(0.5, 0, 0.5);
        GL11.glRotatef(tile.getVisibleRotation(), 0, 1, 0);
        GL11.glTranslated(-0.5, 0, -0.5);

        tess.setTranslation(-tile.xCoord, -tile.yCoord, -tile.zCoord);
        tess.startDrawingQuads();
        renderBlocks.renderAllFaces = true;
        renderBlocks.blockAccess = tile.getWorldObj();

        renderBlocks.setRenderBounds(0.5D - 0.05, 0.5D - 0.5, 0.5D - 0.05, 0.5D + 0.05, 0.5D + 0.1, 0.5D + 0.05);

        renderBlocks.renderStandardBlock(blk, tile.xCoord, tile.yCoord, tile.zCoord);

        renderBlocks.setRenderBounds(0.70D - 0.15, 0.55D - 0.05, 0.5D - 0.05, 0.70D + 0.15, 0.55D + 0.05,
                0.5D + 0.05);

        renderBlocks.renderStandardBlock(blk, tile.xCoord, tile.yCoord, tile.zCoord);

        tess.draw();
        tess.setTranslation(0, 0, 0);
        RenderHelper.enableStandardItemLighting();
    }
}