import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.IBlockAccess;
import net.minecraftforge.client.model.AdvancedModelLoader;
import net.minecraftforge.client.model.IModelCustom;
import org.lwjgl.opengl.GL11;
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
public class RenederBlockObjAlt implements ISimpleBlockRenderingHandler {
public static final IModelCustom model =
AdvancedModelLoader.loadModel(new ResourceLocation(ModBlockObjAlt.MODID, "obj/block.obj"));
public static final ResourceLocation texture = new ResourceLocation(ModBlockObjAlt.MODID, "textures/blocks/model_obj.png");
final int id;
public RenederBlockObjAlt(int block_obj_alt_renderID) {
id = block_obj_alt_renderID;
}
@Override
//Рендер в инвентаре (и как-бы в руке).
public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) {
GL11.glPushMatrix();
GL11.glTranslatef(0.5F, 0.0F, 0.5F);
Minecraft.getMinecraft().renderEngine.bindTexture(texture);
model.renderAll();
GL11.glPopMatrix();
}
@Override
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) {
Tessellator tessellator = Tessellator.instance;
renderer.renderStandardBlock(block, x, y, z);//Не помню зачем писал.
tessellator.draw();//Да тут мы завершаем стандартный рендер квадратов
tessellator.setBrightness(world.getLightBrightnessForSkyBlocks(x, y, z, block.getLightValue(world, x, y, z)));
tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F);//Не помню зачем писал.
GL11.glPushMatrix();
GL11.glTranslated(x, y, z);
GL11.glTranslatef(0.5F, 0.0F, 0.5F);
Minecraft.getMinecraft().renderEngine.bindTexture(texture);//Бинд нашей текстуры
model.renderAll();//Рендер модели
GL11.glPopMatrix();
tessellator.startDrawingQuads();//А тут мы начинаем, чтобы дальнейшие квадраты тоже рендерились
Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationBlocksTexture);//Если не применить это, то дальнейшие квадраты примут текстуру от нашей модели
return true;
}
@Override
public boolean shouldRender3DInInventory(int modelId) {
return true;//Хотите-ли чтобы рендерилась эта модель в инвентаре (не используя дополнительный класс для рендера его как предмета)
}
@Override
public int getRenderId() {
return id;
}
}