package net.minecraft.src;

import java.util.Random;

public class PCco_Renderer {
	
	public static int crystalRenderer = 0;
	
	/**
	 * Render block by render type.<br>
	 * Works for swapTerrainRenderer and rotatedBoxRenderer
	 * 
	 * @param renderblocks block renderer
	 * @param blockAccess block access
	 * @param i x
	 * @param j y
	 * @param k z
	 * @param block the block
	 * @param rtype render type
	 * @return success
	 */
	public static boolean renderBlockByType(RenderBlocks renderblocks, IBlockAccess blockAccess, int i, int j, int k, Block block, int rtype) {
		if (rtype == crystalRenderer) {
			return renderBlockCrystal(renderblocks, blockAccess, i, j, k, block);
		}
		return false;
	}
	
	
	/**
	 * Render PowerCrystal block (must implement PC_ISwapTerrain)
	 * @param renderblocks block renderer
	 * @param blockAccess block access
	 * @param i x
	 * @param j y
	 * @param k z
	 * @param block the block
	 * @return success
	 */
	public static boolean renderBlockCrystal(RenderBlocks renderblocks, IBlockAccess iblockaccess, int i, int j, int k, Block block) {
		RenderEngine renderengine = ModLoader.getMinecraftInstance().renderEngine;
		Tessellator tessellator = Tessellator.instance;
		if (block instanceof PC_ISwapTerrain) {
			tessellator.draw();
			tessellator.startDrawingQuads();
			renderengine.bindTexture(renderengine.getTexture(((PC_ISwapTerrain) block).getTerrainFile()));

			boolean gf = RenderBlocks.cfgGrassFix;
			RenderBlocks.cfgGrassFix = false;

			Random posRand = new Random(i + i * j * k + k + iblockaccess.getBlockMetadata(i, j, k));

			for (int q = 3 + posRand.nextInt(2); q > 0; q--) {
				float x, y, z, a, b, c;

				x = posRand.nextFloat() * 0.6F;
				y = (q == 2 ? 0.001F : posRand.nextFloat() * 0.6F);
				z = posRand.nextFloat() * 0.6F;

				a = x + 0.3F + posRand.nextFloat() * (0.7F - x);
				b = y + 0.3F + posRand.nextFloat() * (0.7F - y);
				c = z + 0.3F + posRand.nextFloat() * (0.7F - z);

				block.setBlockBounds(x, y, z, a, b, c);
				renderblocks.renderStandardBlock(block, i, j, k);
			}
			block.setBlockBounds(0, 0, 0, 1, 1, 1);

			RenderBlocks.cfgGrassFix = gf;

			tessellator.draw();
			tessellator.startDrawingQuads();
			renderengine.bindTexture(renderengine.getTexture("/terrain.png"));

			return true;
		}
		return false;
	}
	
	
	
}
