Java tutorial
/** * Copyright (c) Lambda Innovation, 2013-2016 * This file is part of the AcademyCraft mod. * https://github.com/LambdaInnovation/AcademyCraft * Licensed under GPLv3, see project root for more information. */ package cn.academy.core.client.render; import cn.academy.core.AcademyCraft; import cn.academy.core.entity.EntityBlock; import cn.lambdalib.util.client.RenderUtils; import cn.lambdalib.util.generic.MathUtils; 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.entity.Render; import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.entity.Entity; import net.minecraft.util.ResourceLocation; import org.lwjgl.opengl.GL11; /** * @author WeAthFolD */ public class RenderEntityBlock extends Render { public static RenderBlocks renderBlocks = RenderBlocks.getInstance(); @Override public void doRender(Entity e, double x, double y, double z, float pt, float b) { EntityBlock entity = (EntityBlock) e; if (entity.block != null) { GL11.glPushMatrix(); { Tessellator tes = Tessellator.instance; tes.setColorOpaque_F(1.0F, 1.0F, 1.0F); renderBlocks.blockAccess = e.worldObj; { if (Minecraft.isAmbientOcclusionEnabled()) { GL11.glShadeModel(GL11.GL_SMOOTH); } else { GL11.glShadeModel(GL11.GL_FLAT); } RenderHelper.disableStandardItemLighting(); RenderUtils.loadTexture(TextureMap.locationBlocksTexture); //x += b * entity.motionX; //y += b * entity.motionY; //z += b * entity.motionZ; int ix = (int) entity.posX, iy = (int) entity.posY, iz = (int) entity.posZ; GL11.glTranslated(x, y, z); GL11.glRotatef(MathUtils.lerpf(entity.lastYaw, entity.yaw, pt), 0, 1, 0); GL11.glRotatef(MathUtils.lerpf(entity.lastPitch, entity.pitch, pt), 1, 0, 0); GL11.glTranslated(-ix - 0.5, -iy - 0.5, -iz - 0.5); tes.startDrawingQuads(); renderBlocks.renderBlockAllFaces(entity.block, ix, iy, iz); tes.setTranslation(0, 0, 0); tes.draw(); RenderHelper.enableStandardItemLighting(); } } GL11.glPopMatrix(); } if (entity.tileEntity != null) { entity.tileEntity.blockType = entity.block; TileEntitySpecialRenderer tesr = TileEntityRendererDispatcher.instance .getSpecialRenderer(entity.tileEntity); if (tesr != null) { try { tesr.renderTileEntityAt(entity.tileEntity, x - 0.5, y, z - 0.5, pt); } catch (Exception ex) { AcademyCraft.log.error("Error handling EntityBlock TE rendering: " + tesr.getClass()); ex.printStackTrace(); } } } } @Override protected ResourceLocation getEntityTexture(Entity p_110775_1_) { return null; } }