March 16, 201610 yr I have a item that uses a semi-transparent texture, however the texture is only semi-transparent in the inventory, not in my hand or on the ground. I know I need to make custom Item Renderer and enable GL_BLEND. I've made a item renderer but what do I put in it to render the item normally, but with GL_BLEND enabled? Here is my current IItemRenderer: @SideOnly(Side.CLIENT) public class SemiTransparentRenderer implements IItemRenderer { private Item item; public SemiTransparentRenderer(Item item) { this.item = item; } @Override public boolean handleRenderType(ItemStack item, ItemRenderType type) { if (type != ItemRenderType.INVENTORY) { return true; } else { return false; } } @Override public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { return true; } @Override public void renderItem(ItemRenderType type, ItemStack item, Object... data) { GL11.glEnable(GL11.GL_BLEND); GL11.glDisable(GL11.GL_BLEND); } }
March 16, 201610 yr Author Ok, so I got most of it to work. The transparent texture now works perfectly, but for some reason when I pick the item up, it briefly turns white. Why would it do that? Here is my new code: @SideOnly(Side.CLIENT) public class SemiTransparentRenderer implements IItemRenderer { @Override public boolean handleRenderType(ItemStack item, ItemRenderType type) { return type != ItemRenderType.INVENTORY; } @Override public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { return helper == ItemRendererHelper.ENTITY_BOBBING || helper == ItemRendererHelper.ENTITY_ROTATION; } @Override public void renderItem(ItemRenderType type, ItemStack item, Object... data) { IIcon icon = item.getIconIndex(); Tessellator tessellator = Tessellator.instance; GL11.glPushMatrix(); if (type == ItemRenderType.ENTITY) { GL11.glTranslatef(-0.5F, -0.25F, 0.0F); } GL11.glEnable(GL11.GL_BLEND); ItemRenderer.renderItemIn2D(tessellator, icon.getMaxU(), icon.getMinV(), icon.getMinU(), icon.getMaxV(), icon.getIconWidth(), icon.getIconHeight(), 0.0625F); GL11.glDisable(GL11.GL_BLEND); GL11.glPopMatrix(); } }
March 17, 201610 yr @Override public boolean handleRenderType(ItemStack item, ItemRenderType type) { if (type != ItemRenderType.INVENTORY) { return true; } else { return false; *true } } I'm new to coding so sorry if i'm wrong but... Your telling it to only render if the render type is the player's inventory, not anywhere else? Switch this* to true I think. eKoop Creator: http://lumtech.byethost33.com/mods/eKoop/modinfo.html
March 17, 201610 yr Author != means if type is not equal to inventory and == means if type is equal to inventory. So if (type != ItemRenderType.INVENTORY) { return true; } else { return false; } } Means that if type is not equal to inventory then return true, else return false.
March 17, 201610 yr OH! LOL OOPS eKoop Creator: http://lumtech.byethost33.com/mods/eKoop/modinfo.html
March 18, 201610 yr If we already discuss this piece of java code, you should consider the oracle java code conventions paragraph 10.5.2 That states: if (type != ItemRenderType.INVENTORY) { return true; } else { return false; } } should be written as return type != ItemRenderType.INVENTORY; Also i am sorry that i cannot help you with your problem, but anyway in 1.8 IItemRenderer is deprecated/removed (depending on which version of forge you use) You can contact me here: [email protected] (this is not an email)
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.