resonant-induction/archive/java/resonantinduction/mechanical/render/MechanicalBlockRenderingHandler.java
2014-01-11 17:44:07 +08:00

133 lines
5.3 KiB
Java

package resonantinduction.mechanical.render;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.IBlockAccess;
import org.lwjgl.opengl.GL11;
import resonantinduction.core.Reference;
import resonantinduction.mechanical.Mechanical;
import resonantinduction.old.client.model.ModelConveyorBelt;
import resonantinduction.old.client.model.ModelCrusher;
import resonantinduction.old.client.model.ModelGrinder;
import resonantinduction.old.client.model.ModelManipulator;
import resonantinduction.old.client.model.ModelRejectorPiston;
import resonantinduction.old.core.recipe.RecipeLoader;
import resonantinduction.old.transport.hopper.BlockAdvancedHopper;
import cpw.mods.fml.client.FMLClientHandler;
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
import cpw.mods.fml.client.registry.RenderingRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT)
public class MechanicalBlockRenderingHandler implements ISimpleBlockRenderingHandler
{
public static MechanicalBlockRenderingHandler INSTANCE = new MechanicalBlockRenderingHandler();
public static final int BLOCK_RENDER_ID = RenderingRegistry.getNextAvailableRenderId();
private ModelConveyorBelt modelConveyorBelt = new ModelConveyorBelt();
private ModelRejectorPiston modelEjector = new ModelRejectorPiston();
private ModelManipulator modelInjector = new ModelManipulator();
private ModelCrusher modelCrushor = new ModelCrusher();
private ModelGrinder grinderModel = new ModelGrinder();
@Override
public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer)
{
if (block == Mechanical.blockConveyorBelt)
{
GL11.glPushMatrix();
GL11.glTranslatef(0.0F, 1.3F, 0.0F);
GL11.glRotatef(180f, 0f, 0f, 1f);
FMLClientHandler.instance().getClient().renderEngine.bindTexture(new ResourceLocation(Reference.DOMAIN, Reference.MODEL_PATH + "belt/frame0.png"));
modelConveyorBelt.render(0.0625F, 0, false, false, false, false);
GL11.glPopMatrix();
}
else if (RecipeLoader.blockRejector != null && block.blockID == RecipeLoader.blockRejector.blockID)
{
FMLClientHandler.instance().getClient().renderEngine.bindTexture(new ResourceLocation(Reference.DOMAIN, Reference.MODEL_DIRECTORY + "rejector.png"));
GL11.glPushMatrix();
GL11.glTranslatef(0.6F, 1.5F, 0.6F);
GL11.glRotatef(180f, 0f, 0f, 1f);
GL11.glRotatef(-90f, 0f, 1f, 0f);
modelEjector.render(0.0625F);
modelEjector.renderPiston(0.0625F, 1);
GL11.glPopMatrix();
}
else if (RecipeLoader.blockManipulator != null && block.blockID == RecipeLoader.blockManipulator.blockID)
{
FMLClientHandler.instance().getClient().renderEngine.bindTexture(new ResourceLocation(Reference.DOMAIN, Reference.MODEL_DIRECTORY + "manipulator1.png"));
GL11.glPushMatrix();
GL11.glTranslatef(0.6F, 1.5F, 0.6F);
GL11.glRotatef(180f, 0f, 0f, 1f);
GL11.glRotatef(-90f, 0f, 1f, 0f);
modelInjector.render(0.0625F, true, 0);
GL11.glPopMatrix();
}
/*else if (RecipeLoader.blockArmbot != null && block.blockID == RecipeLoader.blockArmbot.blockID)
{
FMLClientHandler.instance().getClient().renderEngine.bindTexture(new ResourceLocation(Reference.DOMAIN, Reference.MODEL_DIRECTORY + RenderArmbot.TEXTURE));
GL11.glPushMatrix();
GL11.glTranslatef(0.4f, 0.8f, 0f);
GL11.glScalef(0.7f, 0.7f, 0.7f);
GL11.glRotatef(180f, 0f, 0f, 1f);
GL11.glRotatef(-90f, 0f, 1f, 0f);
RenderArmbot.MODEL.render(0.0625F, 0, 0);
GL11.glPopMatrix();
}*/
else if (RecipeLoader.processorMachine != null && block.blockID == RecipeLoader.processorMachine.blockID && metadata == 0)
{
FMLClientHandler.instance().getClient().renderEngine.bindTexture(new ResourceLocation(Reference.DOMAIN, Reference.MODEL_DIRECTORY + "CrusherBlock.png"));
GL11.glPushMatrix();
GL11.glTranslatef(0f, 1f, 0f);
GL11.glRotatef(180f, 0f, 0f, 1f);
GL11.glRotatef(-90f, 0f, 1f, 0f);
this.modelCrushor.renderBody(0.0625f);
this.modelCrushor.renderPiston(0.0625f, 4);
GL11.glPopMatrix();
}
else if (RecipeLoader.processorMachine != null && block.blockID == RecipeLoader.processorMachine.blockID && metadata == 4)
{
FMLClientHandler.instance().getClient().renderEngine.bindTexture(new ResourceLocation(Reference.DOMAIN, Reference.MODEL_DIRECTORY + "GrinderBlock.png"));
GL11.glPushMatrix();
GL11.glTranslatef(0f, 1f, 0f);
GL11.glRotatef(180f, 0f, 0f, 1f);
GL11.glRotatef(-90f, 0f, 1f, 0f);
this.grinderModel.renderBody(0.0625f);
this.grinderModel.renderRotation(0.0625f, 0);
GL11.glPopMatrix();
}
/*else if (RecipeLoader.blockSteamGen != null && block.blockID == RecipeLoader.blockSteamGen.blockID)
{
ModelMachine model = RenderSteamGen.getModel(metadata);
FMLClientHandler.instance().getClient().renderEngine.bindTexture(RenderSteamGen.getTexture(metadata));
GL11.glTranslatef(0.0F, 1.1F, 0.0F);
GL11.glRotatef(180f, 0f, 0f, 1f);
model.render(0.0625F);
}*/
}
@Override
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer)
{
if (block instanceof BlockAdvancedHopper)
{
return true;
}
return false;
}
@Override
public boolean shouldRender3DInInventory()
{
return true;
}
@Override
public int getRenderId()
{
return BLOCK_RENDER_ID;
}
}