package ttftcuts.physis.client.render.item;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
import ttftcuts.physis.common.helper.PhysisRenderHelper;
import ttftcuts.physis.common.helper.TextureHelper;
import net.minecraft.client.renderer.ItemRenderer;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.entity.RenderItem;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraftforge.client.IItemRenderer;
public class RenderItemAlpha implements IItemRenderer {
@SuppressWarnings("unused")
private RenderItem renderItem = new RenderItem();
@Override
public boolean handleRenderType(ItemStack item, ItemRenderType type) {
switch (type)
{
case ENTITY:
case EQUIPPED:
case EQUIPPED_FIRST_PERSON:
case INVENTORY:
return true;
default:
return false;
}
}
@Override
public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) {
//return type == ItemRenderType.ENTITY || type == ItemRenderType.INVENTORY;
if (type == ItemRenderType.ENTITY) {
return true;
}
return false;
}
@Override
public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
Tessellator t = Tessellator.instance;
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glEnable(GL11.GL_DEPTH_TEST);
switch (type)
{
case ENTITY:
GL11.glPushMatrix();
GL11.glDisable(GL11.GL_CULL_FACE);
GL11.glTranslatef(-0.5F, 0F, 0F);
renderItem(ItemRenderType.EQUIPPED, item, data);
GL11.glEnable(GL11.GL_CULL_FACE);
GL11.glPopMatrix();
break;
case EQUIPPED:
case EQUIPPED_FIRST_PERSON:
int passes = item.getItem().getRenderPasses(item.getItemDamage());
for (int i = 0; i < passes; i++) {
IIcon icon = item.getItem().getIcon(item, i);
int col = item.getItem().getColorFromItemStack(item, i);
int r = TextureHelper.red(col);
int g = TextureHelper.green(col);
int b = TextureHelper.blue(col);
float a = TextureHelper.alpha(col) / 255.0f;
boolean trans = false;
if (!(a == 0 || a == 1)) {
trans = true;
} else {
a = 1.0f;
}
GL11.glColor4f(r/255.0f, g/255.0f, b/255.0f, a);
if (trans) {
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glEnable(GL11.GL_BLEND);
GL11.glDisable(GL11.GL_ALPHA_TEST);
}
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
ItemRenderer.renderItemIn2D(t, icon.getMaxU(), icon.getMinV(), icon.getMinU(), icon.getMaxV(), icon.getIconWidth(), icon.getIconHeight(), 1F / 16F);
GL11.glDisable(GL12.GL_RESCALE_NORMAL);
if (trans) {
GL11.glEnable(GL11.GL_ALPHA_TEST);
GL11.glDisable(GL11.GL_BLEND);
}
}
break;
case INVENTORY:
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
PhysisRenderHelper.renderItemStack(item, 0, 0, false, false);
GL11.glDisable(GL11.GL_BLEND);
break;
default:
}
}
}