Package appeng.client.render.blocks

Source Code of appeng.client.render.blocks.RenderBlockController

package appeng.client.render.blocks;

import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.IBlockAccess;
import appeng.block.AEBaseBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.texture.ExtraBlockTextures;
import appeng.tile.networking.TileController;

public class RenderBlockController extends BaseBlockRender
{

  public RenderBlockController() {
    super( false, 20 );
  }

  @Override
  public boolean renderInWorld(AEBaseBlock blk, IBlockAccess world, int x, int y, int z, RenderBlocks renderer)
  {

    boolean xx = getTileEntity( world, x - 1, y, z ) instanceof TileController && getTileEntity( world, x + 1, y, z ) instanceof TileController;
    boolean yy = getTileEntity( world, x, y - 1, z ) instanceof TileController && getTileEntity( world, x, y + 1, z ) instanceof TileController;
    boolean zz = getTileEntity( world, x, y, z - 1 ) instanceof TileController && getTileEntity( world, x, y, z + 1 ) instanceof TileController;

    int meta = world.getBlockMetadata( x, y, z );
    boolean hasPower = meta > 0;
    boolean isConflict = meta == 2;

    ExtraBlockTextures lights = null;

    if ( xx && !yy && !zz )
    {
      if ( hasPower )
      {
        blk.getRendererInstance().setTemporaryRenderIcon( ExtraBlockTextures.BlockControllerColumnPowered.getIcon() );
        if ( isConflict )
          lights = ExtraBlockTextures.BlockControllerColumnConflict;
        else
          lights = ExtraBlockTextures.BlockControllerColumnLights;
      }
      else
        blk.getRendererInstance().setTemporaryRenderIcon( ExtraBlockTextures.BlockControllerColumn.getIcon() );

      renderer.uvRotateEast = 1;
      renderer.uvRotateWest = 1;
      renderer.uvRotateTop = 1;
      renderer.uvRotateBottom = 1;
    }
    else if ( !xx && yy && !zz )
    {
      if ( hasPower )
      {
        blk.getRendererInstance().setTemporaryRenderIcon( ExtraBlockTextures.BlockControllerColumnPowered.getIcon() );
        if ( isConflict )
          lights = ExtraBlockTextures.BlockControllerColumnConflict;
        else
          lights = ExtraBlockTextures.BlockControllerColumnLights;
      }
      else
        blk.getRendererInstance().setTemporaryRenderIcon( ExtraBlockTextures.BlockControllerColumn.getIcon() );

      renderer.uvRotateEast = 0;
      renderer.uvRotateNorth = 0;
    }
    else if ( !xx && !yy && zz )
    {
      if ( hasPower )
      {
        blk.getRendererInstance().setTemporaryRenderIcon( ExtraBlockTextures.BlockControllerColumnPowered.getIcon() );
        if ( isConflict )
          lights = ExtraBlockTextures.BlockControllerColumnConflict;
        else
          lights = ExtraBlockTextures.BlockControllerColumnLights;
      }
      else
        blk.getRendererInstance().setTemporaryRenderIcon( ExtraBlockTextures.BlockControllerColumn.getIcon() );

      renderer.uvRotateNorth = 1;
      renderer.uvRotateSouth = 1;
      renderer.uvRotateTop = 0;
    }
    else if ( (xx ? 1 : 0) + (yy ? 1 : 0) + (zz ? 1 : 0) >= 2 )
    {
      int v = (Math.abs( x ) + Math.abs( y ) + Math.abs( z )) % 2;
      renderer.uvRotateEast = renderer.uvRotateBottom = renderer.uvRotateNorth = renderer.uvRotateSouth = renderer.uvRotateTop = renderer.uvRotateWest = 0;

      if ( v == 0 )
        blk.getRendererInstance().setTemporaryRenderIcon( ExtraBlockTextures.BlockControllerInsideA.getIcon() );
      else
        blk.getRendererInstance().setTemporaryRenderIcon( ExtraBlockTextures.BlockControllerInsideB.getIcon() );
    }
    else
    {
      if ( hasPower )
      {
        blk.getRendererInstance().setTemporaryRenderIcon( ExtraBlockTextures.BlockControllerPowered.getIcon() );
        if ( isConflict )
          lights = ExtraBlockTextures.BlockControllerConflict;
        else
          lights = ExtraBlockTextures.BlockControllerLights;
      }
      else
        blk.getRendererInstance().setTemporaryRenderIcon( null );

    }

    boolean out = renderer.renderStandardBlock( blk, x, y, z );
    if ( lights != null )
    {
      Tessellator.instance.setColorOpaque_F( 1.0f, 1.0f, 1.0f );
      Tessellator.instance.setBrightness( 14 << 20 | 14 << 4 );
      renderer.renderFaceXNeg( blk, x, y, z, lights.getIcon() );
      renderer.renderFaceXPos( blk, x, y, z, lights.getIcon() );
      renderer.renderFaceYNeg( blk, x, y, z, lights.getIcon() );
      renderer.renderFaceYPos( blk, x, y, z, lights.getIcon() );
      renderer.renderFaceZNeg( blk, x, y, z, lights.getIcon() );
      renderer.renderFaceZPos( blk, x, y, z, lights.getIcon() );
    }

    blk.getRendererInstance().setTemporaryRenderIcon( null );
    renderer.uvRotateEast = renderer.uvRotateBottom = renderer.uvRotateNorth = renderer.uvRotateSouth = renderer.uvRotateTop = renderer.uvRotateWest = 0;
    return out;
  }

  private TileEntity getTileEntity(IBlockAccess world, int x, int y, int z)
  {
    if ( y >= 0 )
      return world.getTileEntity( x, y, z );
    return null;
  }
}
TOP

Related Classes of appeng.client.render.blocks.RenderBlockController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.