package sourcecoded.quantum.client.renderer.item;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.IItemRenderer;
import net.minecraftforge.client.model.AdvancedModelLoader;
import net.minecraftforge.client.model.IModelCustom;
import sourcecoded.quantum.Constants;
import sourcecoded.quantum.client.renderer.GlowRenderHandler;
import static org.lwjgl.opengl.GL11.*;
public class ItemSceptreRenderer implements IItemRenderer {
IModelCustom model = AdvancedModelLoader.loadModel(new ResourceLocation(Constants.MODID, "model/sceptre/sceptre.obj"));
ResourceLocation texDark = new ResourceLocation(Constants.MODID, "textures/blocks/infusedStone.png");
ResourceLocation texHaze = new ResourceLocation(Constants.MODID, "textures/blocks/haze.png");
ResourceLocation texBlank = new ResourceLocation(Constants.MODID, "textures/misc/blank.png");
String[] probes = new String[] {"Probe01", "Probe02", "Probe03", "Probe04", "Probe05", "Probe06", "Probe06", "Probe07", "Probe08"};
String[] caps = new String[] {"Cap1", "Cap1_5", "Cap2", "Cap2_5"};
@Override
public boolean handleRenderType(ItemStack item, ItemRenderType type) {
return true;
}
@Override
public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) {
return true;
}
@Override
public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
glPushMatrix();
//glTranslated(x + 0.5, y + 0.1, z + 0.5);
glTranslatef(0F, -0.5F, 0F);
glDisable(GL_LIGHTING);
float lastBrightX = OpenGlHelper.lastBrightnessX;
float lastBrightY = OpenGlHelper.lastBrightnessY;
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240f, 240f);
EntityLivingBase entity = null;
if ((type == IItemRenderer.ItemRenderType.EQUIPPED) || (type == IItemRenderer.ItemRenderType.EQUIPPED_FIRST_PERSON)) {
entity = (EntityLivingBase)data[1];
}
if (type == ItemRenderType.EQUIPPED_FIRST_PERSON) {
glTranslatef(1F, -1F, 0.3F);
useCheck(item, type, entity);
} else if (type == ItemRenderType.INVENTORY) {
glTranslatef(-0.45F, -0.1F, 0.45F);
glRotatef(45F, -1F, 0F, -1F);
} else if (type == ItemRenderType.ENTITY) {
glTranslatef(0F, 0.5F, 0F);
glRotatef(5F, 1F, 0F, 0F);
} else {
glTranslatef(1.7F, 0.6F, 1.7F);
glRotatef(55F, -1F, 0F, 1F);
useCheck(item, type, entity);
}
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
float scale = 0.15F;
if (type == ItemRenderType.INVENTORY) scale = 0.07F;
if (type == ItemRenderType.ENTITY) scale = 0.08F;
glScalef(scale, scale, scale);
Minecraft.getMinecraft().renderEngine.bindTexture(texDark);
model.renderPart("Core");
model.renderOnly(caps);
Minecraft.getMinecraft().renderEngine.bindTexture(texBlank);
float red = 0.8F;
float green = 0F;
float blue = 0.8F;
float alpha = 0.6F;
if (item.stackTagCompound != null && item.stackTagCompound.hasKey("colourData")) {
NBTTagCompound compound = item.stackTagCompound.getCompoundTag("colourData");
red = compound.getFloat("r");
green = compound.getFloat("g");
blue = compound.getFloat("b");
}
//glColor4f(red, green, blue, alpha);
glColor4f(red, green, blue, Math.min(GlowRenderHandler.instance().brightness, alpha));
model.renderOnly(probes);
model.renderPart("Box001");
glDisable(GL_BLEND);
glPopMatrix();
glEnable(GL_LIGHTING);
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, lastBrightX, lastBrightY);
}
public void useCheck(ItemStack item, ItemRenderType type, EntityLivingBase player) {
if (player != null && player instanceof EntityPlayer && ((EntityPlayer) player).getItemInUse() != null) {
if (type == ItemRenderType.EQUIPPED)
glRotatef(-25F, 1F, 0F, -1F);
else
glRotatef(-30F, 1F, 0F, 1F);
}
}
}