Hi,
I'm experiencing a problem with my TESR not rendering when looking in certain direction(Overridden render function not running). I'm writing a Stargate mod and my OBJ model is rendered via VBOs. It takes up space of 9x9 blocks(vertically) with the "base block" at the bottom-center of it. I've even tried to return INFINITE_EXTENT_AABB in getRenderBoundingBox() but it changes nothing. Please help.
StargateBaseTile.java
package mrjake.aunis.stargate.blocks.sgbase;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ITickable;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
public class StargateBaseTile extends TileEntity {
@Override
public AxisAlignedBB getRenderBoundingBox() {
// return new AxisAlignedBB(new BlockPos(-6, 0, -6), new BlockPos(7, 12, 7));
// return super.getRenderBoundingBox().expand(12, 12, 12);
return INFINITE_EXTENT_AABB;
}
@Override
public NBTTagCompound writeToNBT(NBTTagCompound compound) {
return super.writeToNBT(compound);
}
@Override
public void readFromNBT(NBTTagCompound compound) {
super.readFromNBT(compound);
}
}
StargateTESR.java
package mrjake.aunis.stargate;
import static org.lwjgl.opengl.GL11.*;
import mrjake.aunis.Aunis;
import mrjake.aunis.stargate.blocks.sgbase.StargateBaseTile;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.util.ResourceLocation;
public class StargateTESR extends TileEntitySpecialRenderer<StargateBaseTile> {
protected static void setLightingDisabled(boolean off) {
OpenGlHelper.setActiveTexture(OpenGlHelper.lightmapTexUnit);
if (off) glDisable(GL_TEXTURE_2D);
else glEnable(GL_TEXTURE_2D);
OpenGlHelper.setActiveTexture(OpenGlHelper.defaultTexUnit);
}
private float gateDiameter = 9.8469F;
// private float ringDiameter = 9.02849F;
private float centerOfRotation = 4.8656F;
// private float aboveZeroLevel = 0.40113F;
private void renderRing(double x, double y, double z, float angle) {
if (StargateNetwork.ringModel != null) {
glTranslatef((float) x, (float) y-0.05F, (float) z);
glRotatef(angle, 0, 0, 1);
// glTranslatef(0, -( (ringDiameter/2) + aboveZeroLevel ), 0);
glTranslatef(0, -centerOfRotation, 0);
Minecraft.getMinecraft().getTextureManager().bindTexture(new ResourceLocation("aunis:stargate/textures/texturering.png"));
StargateNetwork.ringModel.render();
}
}
private void renderGate(double x, double y, double z) {
if (StargateNetwork.gateModel != null) {
glTranslatef((float) x, (float) y - (gateDiameter/2), (float) z);
Minecraft.getMinecraft().getTextureManager().bindTexture(new ResourceLocation("aunis:stargate/textures/darkmetal2048.png"));
StargateNetwork.gateModel.render();
}
}
/* public StargateTESR() {
}*/
@Override
public void render(StargateBaseTile te, double x, double y, double z, float partialTicks, int destroyStage, float alpha) {
Aunis.logger.info("Render code running!");
GlStateManager.enableRescaleNormal();
GlStateManager.alphaFunc(GL_GREATER, 0.1f);
GlStateManager.enableBlend();
RenderHelper.enableStandardItemLighting();
GlStateManager.tryBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, 1, 0);
GlStateManager.pushMatrix();
setLightingDisabled(true);
x += 0.5;
y += 0.35 + (gateDiameter / 2);
z += 0.5;
float time = te.getWorld().getTotalWorldTime() + partialTicks;
renderRing(x,y,z, time*1.30f);
GlStateManager.popMatrix();
GlStateManager.pushMatrix();
renderGate(x,y,z);
setLightingDisabled(false);
GlStateManager.popMatrix();
GlStateManager.disableRescaleNormal();
GlStateManager.disableBlend();
}
}
I find more code irrevelant but if you need something please ask.