So i ty to drawn a transparent item in a gui, So i start with the basic itemRender.drawnItemAndEffectIntoGui(); and i put a GlStateManager.color(1F, 1F, 1F, 0.5F) But it's not worked, so I looked at the code inside and noticed that the OpenGl does not affect the drawing of the items. I decided to copy paste the code and change myself the transparency. However just by copying the code, without modifying anything, I have a pretty bizzare bug. I can not find the cause.
Yes it's the drawing items...
public void drawn(){
GlStateManager.pushMatrix();
GlStateManager.translate((float)xx, (float)yy, 100.0F + this.zLevel);
GlStateManager.translate(8.0F, 8.0F, 0.0F);
GlStateManager.scale(1.0F, -1.0F, 1.0F);
GlStateManager.scale(16.0F, 16.0F, 16.0F);
GlStateManager.translate(-0.5F, -0.5F, -0.5F);
GlStateManager.color(1, 1, 1, 0.2f);
IBakedModel model = itemRender.getItemModelWithOverrides(stack, mc.theWorld, mc.thePlayer);
int color = -1;
Tessellator tessellator = Tessellator.getInstance();
VertexBuffer vertexbuffer = tessellator.getBuffer();
vertexbuffer.begin(7, DefaultVertexFormats.ITEM);
for (EnumFacing enumfacing : EnumFacing.values())
{
this.renderQuads(vertexbuffer, model.getQuads((IBlockState)null, enumfacing, 0L), color, stack);
}
this.renderQuads(vertexbuffer, model.getQuads((IBlockState)null, (EnumFacing)null, 0L), color, stack);
tessellator.draw();
this.itemRender.renderItemOverlayIntoGUI(fontRendererObj, stack, xx, yy, Integer.toString(stack.stackSize));
GlStateManager.enableAlpha();
GlStateManager.popMatrix();
}
private void renderQuads(VertexBuffer renderer, List<BakedQuad> quads, int color, @Nullable ItemStack stack)
{
boolean flag = color == -1 && stack != null;
for(int i = 0; i < quads.size(); i++){
BakedQuad bakedquad = (BakedQuad)quads.get(i);
int k = color;
if (flag && bakedquad.hasTintIndex())
{
k = mc.getItemColors().getColorFromItemstack(stack, bakedquad.getTintIndex());
if (EntityRenderer.anaglyphEnable)
{
k = TextureUtil.anaglyphColor(k);
}
k = k | -16777216;
}
net.minecraftforge.client.model.pipeline.LightUtil.renderQuadColor(renderer, bakedquad, k);
}
}
So if you understand why it's do that or have a better way to make transparent item in a gui could you help me please