diff options
author | miozune <miozune@gmail.com> | 2023-02-21 16:39:47 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-21 08:39:47 +0100 |
commit | a732473a538106963f0b56bc02a3e58a0db2bbc3 (patch) | |
tree | fd04d750ff485cc87598589c93af32ea3a673cca /src/main/java/gregtech/common | |
parent | a4141b9f20b854f7c0ae3bfe6f4ef886780e9631 (diff) | |
download | GT5-Unofficial-a732473a538106963f0b56bc02a3e58a0db2bbc3.tar.gz GT5-Unofficial-a732473a538106963f0b56bc02a3e58a0db2bbc3.tar.bz2 GT5-Unofficial-a732473a538106963f0b56bc02a3e58a0db2bbc3.zip |
Fix some issues with custom material renderers (#1755)
Diffstat (limited to 'src/main/java/gregtech/common')
6 files changed, 175 insertions, 210 deletions
diff --git a/src/main/java/gregtech/common/render/items/CosmicNeutroniumRenderer.java b/src/main/java/gregtech/common/render/items/CosmicNeutroniumRenderer.java index c4d82efda3..5577e41d30 100644 --- a/src/main/java/gregtech/common/render/items/CosmicNeutroniumRenderer.java +++ b/src/main/java/gregtech/common/render/items/CosmicNeutroniumRenderer.java @@ -66,7 +66,7 @@ public class CosmicNeutroniumRenderer extends GT_GeneratedMaterial_Renderer { } @Override - public void renderRegularItem(ItemRenderType type, ItemStack item, IIcon icon, boolean shouldModulateColor, int pass) { + protected void renderRegularItem(ItemRenderType type, ItemStack item, IIcon icon, boolean shouldModulateColor, int pass, Object... data) { RenderItem r = RenderItem.getInstance(); GL11.glPushMatrix(); diff --git a/src/main/java/gregtech/common/render/items/GT_GeneratedMaterial_Renderer.java b/src/main/java/gregtech/common/render/items/GT_GeneratedMaterial_Renderer.java index e01df95f05..faa0d70c7c 100644 --- a/src/main/java/gregtech/common/render/items/GT_GeneratedMaterial_Renderer.java +++ b/src/main/java/gregtech/common/render/items/GT_GeneratedMaterial_Renderer.java @@ -68,7 +68,7 @@ public class GT_GeneratedMaterial_Renderer implements IItemRenderer { if (tIcon != null) { markNeedsAnimationUpdate(tIcon); - renderRegularItem(type, aStack, tIcon, aFluid == null, pass); + renderRegularItem(type, aStack, tIcon, aFluid == null, pass, data); } if (tOverlay != null && aFluid != null && aFluid.getFluid() != null) { @@ -84,31 +84,19 @@ public class GT_GeneratedMaterial_Renderer implements IItemRenderer { GL11.glColor3f(1.0F, 1.0F, 1.0F); TextureUtils.bindAtlas(aItem.getSpriteNumber()); markNeedsAnimationUpdate(tOverlay); - if (type.equals(IItemRenderer.ItemRenderType.INVENTORY)) { - GT_RenderUtil.renderItemIcon(tOverlay, 16.0D, 0.001D, 0.0F, 0.0F, -1.0F); - } else { - ItemRenderer.renderItemIn2D( - Tessellator.instance, - tOverlay.getMaxU(), - tOverlay.getMinV(), - tOverlay.getMinU(), - tOverlay.getMaxV(), - tOverlay.getIconWidth(), - tOverlay.getIconHeight(), - 0.0625F); - } + renderItemOverlay(type, tOverlay); } GL11.glDisable(GL11.GL_BLEND); } } - public void renderRegularItem(ItemRenderType type, ItemStack aStack, IIcon icon, boolean shouldModulateColor, - int pass) { + protected void renderRegularItem(ItemRenderType type, ItemStack aStack, IIcon icon, boolean shouldModulateColor, + int pass, Object... data) { renderRegularItem(type, aStack, icon, shouldModulateColor); } - public void renderRegularItem(ItemRenderType type, ItemStack aStack, IIcon icon, boolean shouldModulateColor) { + protected void renderRegularItem(ItemRenderType type, ItemStack aStack, IIcon icon, boolean shouldModulateColor) { if (!(aStack.getItem() instanceof IGT_ItemWithMaterialRenderer)) return; IGT_ItemWithMaterialRenderer aItem = (IGT_ItemWithMaterialRenderer) aStack.getItem(); @@ -132,7 +120,7 @@ public class GT_GeneratedMaterial_Renderer implements IItemRenderer { } } - public void renderContainedFluid(ItemRenderType type, FluidStack aFluidStack, IIcon fluidIcon) { + protected void renderContainedFluid(ItemRenderType type, FluidStack aFluidStack, IIcon fluidIcon) { Fluid aFluid = aFluidStack.getFluid(); int tColor = aFluid.getColor(aFluidStack); GL11.glColor3f((tColor >> 16 & 0xFF) / 255.0F, (tColor >> 8 & 0xFF) / 255.0F, (tColor & 0xFF) / 255.0F); @@ -155,6 +143,22 @@ public class GT_GeneratedMaterial_Renderer implements IItemRenderer { GL11.glDepthFunc(GL11.GL_LEQUAL); } + protected void renderItemOverlay(ItemRenderType type, IIcon overlay) { + if (type.equals(IItemRenderer.ItemRenderType.INVENTORY)) { + GT_RenderUtil.renderItemIcon(overlay, 16.0D, 0.001D, 0.0F, 0.0F, -1.0F); + } else { + ItemRenderer.renderItemIn2D( + Tessellator.instance, + overlay.getMaxU(), + overlay.getMinV(), + overlay.getMinU(), + overlay.getMaxV(), + overlay.getIconWidth(), + overlay.getIconHeight(), + 0.0625F); + } + } + protected void markNeedsAnimationUpdate(IIcon icon) { if (GregTech_API.mHodgepodge && icon instanceof IPatchedTextureAtlasSprite) { ((IPatchedTextureAtlasSprite) icon).markNeedsAnimationUpdate(); diff --git a/src/main/java/gregtech/common/render/items/GaiaSpiritRenderer.java b/src/main/java/gregtech/common/render/items/GaiaSpiritRenderer.java index 25ab13bd25..5f226f6c98 100644 --- a/src/main/java/gregtech/common/render/items/GaiaSpiritRenderer.java +++ b/src/main/java/gregtech/common/render/items/GaiaSpiritRenderer.java @@ -15,7 +15,7 @@ import gregtech.common.render.GT_RenderUtil; public class GaiaSpiritRenderer extends GT_GeneratedMaterial_Renderer { @Override - public void renderRegularItem(ItemRenderType type, ItemStack aStack, IIcon icon, boolean shouldModulateColor) { + protected void renderRegularItem(ItemRenderType type, ItemStack aStack, IIcon icon, boolean shouldModulateColor) { long animationTicks = GT_Mod.gregtechproxy.getAnimationTicks(); float partialTicks = GT_Mod.gregtechproxy.getPartialRenderTicks(); diff --git a/src/main/java/gregtech/common/render/items/InfinityRenderer.java b/src/main/java/gregtech/common/render/items/InfinityRenderer.java index 6a5bea393d..7450ff8fdb 100644 --- a/src/main/java/gregtech/common/render/items/InfinityRenderer.java +++ b/src/main/java/gregtech/common/render/items/InfinityRenderer.java @@ -2,35 +2,23 @@ package gregtech.common.render.items; import java.util.Random; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.ItemRenderer; -import net.minecraft.client.renderer.RenderHelper; 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; import net.minecraftforge.fluids.FluidStack; import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL12; import codechicken.lib.render.TextureUtils; import gregtech.api.enums.Textures; import gregtech.api.interfaces.IGT_ItemWithMaterialRenderer; import gregtech.api.util.GT_Utility; -import gregtech.common.render.GT_RenderUtil; public class InfinityRenderer extends GT_GeneratedMaterial_Renderer { public Random rand = new Random(); @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - return type == ItemRenderType.INVENTORY; - } - - @Override public void renderItem(ItemRenderType type, ItemStack aStack, Object... data) { short aMetaData = (short) aStack.getItemDamage(); if (!(aStack.getItem() instanceof IGT_ItemWithMaterialRenderer)) return; @@ -46,34 +34,49 @@ public class InfinityRenderer extends GT_GeneratedMaterial_Renderer { IIcon tOverlay = aItem.getOverlayIcon(aMetaData, pass); FluidStack aFluid = GT_Utility.getFluidForFilledItem(aStack, true); + GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); GL11.glEnable(GL11.GL_ALPHA_TEST); - if (pass == 0) { - renderHalo(); + if (type == ItemRenderType.INVENTORY) { + if (pass == 0) { + renderHalo(); + } + renderPulse(tOverlay, tIcon); } - if (tOverlay != null) { - GL11.glColor3f(1.0F, 1.0F, 1.0F); - TextureUtils.bindAtlas(aItem.getSpriteNumber()); - if (type.equals(IItemRenderer.ItemRenderType.INVENTORY)) { - GT_RenderUtil.renderItemIcon(tOverlay, 16.0D, 0.001D, 0.0F, 0.0F, -1.0F); - } else { - ItemRenderer.renderItemIn2D( - Tessellator.instance, - tOverlay.getMaxU(), - tOverlay.getMinV(), - tOverlay.getMinU(), - tOverlay.getMaxV(), - tOverlay.getIconWidth(), - tOverlay.getIconHeight(), - 0.0625F); - } + // Workaround for cell and comb: + // 1. BW capsule needs `renderContainedFluid` call as it doesn't have + // `materialicons/CUSTOM/infinity/capsuleMolten` + // 2. Without these 2 GL calls fluid texture leaks out of the cell / capsule + // 3. Comb texture doesn't like depth enabled + if (passes == 1) { + GL11.glEnable(GL11.GL_DEPTH_TEST); } + GL11.glEnable(GL11.GL_ALPHA_TEST); if (tIcon != null) { + markNeedsAnimationUpdate(tIcon); renderRegularItem(type, aStack, tIcon, aFluid == null); } + + if (tOverlay != null && aFluid != null && aFluid.getFluid() != null) { + IIcon fluidIcon = aFluid.getFluid().getIcon(aFluid); + if (fluidIcon != null) { + markNeedsAnimationUpdate(fluidIcon); + // Adds colour to a cells fluid. Does not colour full fluid icons as shown in NEI etc. + renderContainedFluid(type, aFluid, fluidIcon); + } + } + + if (tOverlay != null) { + GL11.glColor3f(1.0F, 1.0F, 1.0F); + TextureUtils.bindAtlas(aItem.getSpriteNumber()); + markNeedsAnimationUpdate(tOverlay); + renderItemOverlay(type, tOverlay); + } + + GL11.glDisable(GL11.GL_BLEND); } } @@ -107,49 +110,28 @@ public class InfinityRenderer extends GT_GeneratedMaterial_Renderer { GL11.glPopMatrix(); } - @Override - public void renderRegularItem(ItemRenderType type, ItemStack item, IIcon icon, boolean shouldModulateColor) { - - RenderItem r = RenderItem.getInstance(); - Minecraft mc = Minecraft.getMinecraft(); + private void renderPulse(IIcon... icons) { Tessellator t = Tessellator.instance; - - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - RenderHelper.enableGUIStandardItemLighting(); - - GL11.glDisable(GL11.GL_ALPHA_TEST); - GL11.glDisable(GL11.GL_DEPTH_TEST); - - GL11.glPushMatrix(); - double scale = (rand.nextGaussian() * 0.15) + 0.95; + double random = rand.nextGaussian(); + double scale = (random * 0.15) + 0.95; double offset = (1.0 - scale) / 2.0; - GL11.glEnable(GL11.GL_BLEND); - GL11.glTranslated(offset * 16.0, offset * 16.0, 1.0); - GL11.glScaled(scale, scale, 1.0); - - t.startDrawingQuads(); - t.setColorRGBA_F(1.0f, 1.0f, 1.0f, 0.6f); - t.addVertexWithUV(0 - offset, 0 - offset, 0, icon.getMinU(), icon.getMinV()); - t.addVertexWithUV(0 - offset, 16 + offset, 0, icon.getMinU(), icon.getMaxV()); - t.addVertexWithUV(16 + offset, 16 + offset, 0, icon.getMaxU(), icon.getMaxV()); - t.addVertexWithUV(16 + offset, 0 - offset, 0, icon.getMaxU(), icon.getMinV()); - t.draw(); - - GL11.glPopMatrix(); - - r.renderItemIntoGUI(mc.fontRenderer, mc.getTextureManager(), item, 0, 0, true); - GL11.glEnable(GL11.GL_ALPHA_TEST); - GL11.glEnable(GL12.GL_RESCALE_NORMAL); - GL11.glEnable(GL11.GL_DEPTH_TEST); - - r.renderWithColor = true; - - GL11.glDisable(GL11.GL_BLEND); - RenderHelper.enableGUIStandardItemLighting(); - - GL11.glPopMatrix(); + for (IIcon icon : icons) { + if (icon == null) continue; + GL11.glPushMatrix(); + GL11.glEnable(GL11.GL_BLEND); + GL11.glTranslated(offset * 16.0, offset * 16.0, 1.0); + GL11.glScaled(scale, scale, 1.0); + + t.startDrawingQuads(); + t.setColorRGBA_F(1.0f, 1.0f, 1.0f, 0.6f); + t.addVertexWithUV(0 - offset, 0 - offset, 0, icon.getMinU(), icon.getMinV()); + t.addVertexWithUV(0 - offset, 16 + offset, 0, icon.getMinU(), icon.getMaxV()); + t.addVertexWithUV(16 + offset, 16 + offset, 0, icon.getMaxU(), icon.getMaxV()); + t.addVertexWithUV(16 + offset, 0 - offset, 0, icon.getMaxU(), icon.getMinV()); + t.draw(); + + GL11.glPopMatrix(); + } } } diff --git a/src/main/java/gregtech/common/render/items/TranscendentMetalRenderer.java b/src/main/java/gregtech/common/render/items/TranscendentMetalRenderer.java index a7ad2cd19c..866c426e59 100644 --- a/src/main/java/gregtech/common/render/items/TranscendentMetalRenderer.java +++ b/src/main/java/gregtech/common/render/items/TranscendentMetalRenderer.java @@ -5,11 +5,15 @@ import net.minecraft.client.renderer.Tessellator; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraftforge.client.IItemRenderer; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidStack; import org.lwjgl.opengl.GL11; +import codechicken.lib.render.TextureUtils; import gregtech.GT_Mod; -import gregtech.api.items.GT_MetaGenerated_Item; +import gregtech.api.interfaces.IGT_ItemWithMaterialRenderer; +import gregtech.api.util.GT_Util; import gregtech.common.render.GT_RenderUtil; public class TranscendentMetalRenderer extends GT_GeneratedMaterial_Renderer { @@ -37,8 +41,48 @@ public class TranscendentMetalRenderer extends GT_GeneratedMaterial_Renderer { } @Override - public void renderRegularItem(ItemRenderType type, ItemStack aStack, IIcon icon, boolean shouldModulateColor) { + protected void renderRegularItem(ItemRenderType type, ItemStack aStack, IIcon icon, boolean shouldModulateColor) { GL11.glPushMatrix(); + applyEffect(type, ((IGT_ItemWithMaterialRenderer) aStack.getItem()).getRGBa(aStack), shouldModulateColor); + super.renderRegularItem(type, aStack, icon, false); + GL11.glPopMatrix(); + } + + @Override + protected void renderContainedFluid(ItemRenderType type, FluidStack aFluidStack, IIcon fluidIcon) { + GL11.glPushMatrix(); + + Fluid fluid = aFluidStack.getFluid(); + applyEffect(type, GT_Util.getRGBaArray(fluid.getColor()), true); + + TextureUtils.bindAtlas(fluid.getSpriteNumber()); + GL11.glDepthFunc(GL11.GL_EQUAL); + if (type.equals(IItemRenderer.ItemRenderType.INVENTORY)) { + GT_RenderUtil.renderItemIcon(fluidIcon, 16.0D, 0.001D, 0.0F, 0.0F, -1.0F); + } else { + ItemRenderer.renderItemIn2D( + Tessellator.instance, + fluidIcon.getMaxU(), + fluidIcon.getMinV(), + fluidIcon.getMinU(), + fluidIcon.getMaxV(), + fluidIcon.getIconWidth(), + fluidIcon.getIconHeight(), + 0.0625F); + } + GL11.glDepthFunc(GL11.GL_LEQUAL); + GL11.glPopMatrix(); + } + + @Override + protected void renderItemOverlay(ItemRenderType type, IIcon overlay) { + GL11.glPushMatrix(); + applyEffect(type, null, false); + super.renderItemOverlay(type, overlay); + GL11.glPopMatrix(); + } + + private void applyEffect(ItemRenderType type, short[] modulation, boolean shouldModulateColor) { long animationTicks = GT_Mod.gregtechproxy.getAnimationTicks(); int frameCurrent = frameIndex[(int) (animationTicks / 2 % frameIndex.length)]; int frameNext = frameIndex[(int) ((animationTicks + 2) / 2 % frameIndex.length)]; @@ -55,33 +99,15 @@ public class TranscendentMetalRenderer extends GT_GeneratedMaterial_Renderer { } else { GL11.glTranslatef(-0.5f, -0.5f, 0.0f); } - GT_MetaGenerated_Item aItem = (GT_MetaGenerated_Item) aStack.getItem(); if (shouldModulateColor) { - short[] tModulation = aItem.getRGBa(aStack); GL11.glColor4f( - tModulation[0] / 255.0F, - tModulation[1] / 255.0F, - tModulation[2] / 255.0F, + modulation[0] / 255.0F, + modulation[1] / 255.0F, + modulation[2] / 255.0F, linearInterpolation(frameAlpha, frameCurrent, frameNext, partialTicks)); } else { GL11.glColor4f(1f, 1f, 1f, linearInterpolation(frameAlpha, frameCurrent, frameNext, partialTicks)); } - - if (type.equals(IItemRenderer.ItemRenderType.INVENTORY)) { - GT_RenderUtil.renderItemIcon(icon, 16.0D, 0.001D, 0.0F, 0.0F, -1.0F); - } else { - ItemRenderer.renderItemIn2D( - Tessellator.instance, - icon.getMaxU(), - icon.getMinV(), - icon.getMinU(), - icon.getMaxV(), - icon.getIconWidth(), - icon.getIconHeight(), - 0.0625F); - } - - GL11.glPopMatrix(); } } diff --git a/src/main/java/gregtech/common/render/items/UniversiumRenderer.java b/src/main/java/gregtech/common/render/items/UniversiumRenderer.java index 8a88e580eb..b5caa6f59e 100644 --- a/src/main/java/gregtech/common/render/items/UniversiumRenderer.java +++ b/src/main/java/gregtech/common/render/items/UniversiumRenderer.java @@ -7,11 +7,10 @@ import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.entity.RenderItem; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.util.MathHelper; -import net.minecraftforge.client.IItemRenderer; +import net.minecraft.util.ResourceLocation; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; @@ -21,18 +20,12 @@ import codechicken.lib.render.TextureUtils; import gregtech.api.GregTech_API; import gregtech.api.enums.ItemList; import gregtech.api.interfaces.IGT_ItemWithMaterialRenderer; -import gregtech.common.render.GT_RenderUtil; public class UniversiumRenderer extends GT_GeneratedMaterial_Renderer { private static final float cosmicOpacity = 2.5f; @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - return true; - } - - @Override public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { return helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING; } @@ -41,8 +34,9 @@ public class UniversiumRenderer extends GT_GeneratedMaterial_Renderer { public boolean renderFluidDisplayItem(ItemRenderType type, ItemStack aStack, Object... data) { magicRenderMethod( type, - ItemList.Emitter_UEV.get(1), + ItemList.Emitter_UEV.get(1), // hack to make it render correctly aStack.getItem().getIconFromDamage(aStack.getItemDamage()), + true, data); return true; } @@ -66,53 +60,46 @@ public class UniversiumRenderer extends GT_GeneratedMaterial_Renderer { GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); GL11.glEnable(GL11.GL_ALPHA_TEST); + if (tIcon != null) { + markNeedsAnimationUpdate(tIcon); + magicRenderMethod(type, aStack, tIcon, false, data); + } + + GL11.glDisable(GL11.GL_LIGHTING); + if (tOverlay != null) { GL11.glColor3f(1.0F, 1.0F, 1.0F); TextureUtils.bindAtlas(aItem.getSpriteNumber()); - if (type.equals(IItemRenderer.ItemRenderType.INVENTORY)) { - GT_RenderUtil.renderItemIcon(tOverlay, 16.0D, 0.001D, 0.0F, 0.0F, -1.0F); - } else { - ItemRenderer.renderItemIn2D( - Tessellator.instance, - tOverlay.getMaxU(), - tOverlay.getMinV(), - tOverlay.getMinU(), - tOverlay.getMaxV(), - tOverlay.getIconWidth(), - tOverlay.getIconHeight(), - 0.0625F); - } + markNeedsAnimationUpdate(tOverlay); + renderItemOverlay(type, tOverlay); } GL11.glDisable(GL11.GL_BLEND); - - if (tIcon != null) { - magicRenderMethod(type, aStack, getTrueIcon(aStack), data); - } } } - private void magicRenderMethod(ItemRenderType type, ItemStack tmpItem, IIcon tIcon, Object... data) { + private void magicRenderMethod(ItemRenderType type, ItemStack aStack, IIcon tIcon, boolean fluidDisplay, + Object... data) { if (!GregTech_API.mEternalSingularity) return; RenderItem r = RenderItem.getInstance(); Minecraft mc = Minecraft.getMinecraft(); Tessellator t = Tessellator.instance; - this.processLightLevel(type, tmpItem, data); + processLightLevel(type, data); switch (type) { case ENTITY: { GL11.glPushMatrix(); - if (tmpItem.isOnItemFrame()) GL11.glTranslatef(0F, -0.3F, 0.01F); - render(tmpItem, null); + if (aStack.isOnItemFrame()) GL11.glTranslatef(0F, -0.3F, 0.01F); + render(tIcon); GL11.glPopMatrix(); break; } case EQUIPPED: case EQUIPPED_FIRST_PERSON: { - render(tmpItem, data[1] instanceof EntityPlayer ? (EntityPlayer) data[1] : null); + render(tIcon); break; } case INVENTORY: { @@ -124,18 +111,15 @@ public class UniversiumRenderer extends GT_GeneratedMaterial_Renderer { GL11.glDisable(GL11.GL_ALPHA_TEST); GL11.glDisable(GL11.GL_DEPTH_TEST); - r.renderItemIntoGUI(mc.fontRenderer, mc.getTextureManager(), tmpItem, 0, 0, true); - - GL11.glEnable(GL11.GL_ALPHA_TEST); - GL11.glEnable(GL12.GL_RESCALE_NORMAL); - GL11.glEnable(GL11.GL_DEPTH_TEST); - - r.renderWithColor = true; - - GL11.glDisable(GL11.GL_BLEND); - GL11.glPopMatrix(); + if (fluidDisplay) { + // this somehow makes shader render correctly + ResourceLocation resourcelocation = mc.getTextureManager() + .getResourceLocation(aStack.getItemSpriteNumber()); + mc.getTextureManager().bindTexture(resourcelocation); + } else { + r.renderItemIntoGUI(mc.fontRenderer, mc.getTextureManager(), aStack, 0, 0, true); + } - GL11.glPushMatrix(); GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); RenderHelper.enableGUIStandardItemLighting(); @@ -143,20 +127,15 @@ public class UniversiumRenderer extends GT_GeneratedMaterial_Renderer { GL11.glDisable(GL11.GL_ALPHA_TEST); GL11.glDisable(GL11.GL_DEPTH_TEST); - r.renderItemIntoGUI(mc.fontRenderer, mc.getTextureManager(), tmpItem, 0, 0, true); - - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - RenderHelper.enableGUIStandardItemLighting(); - - GL11.glDisable(GL11.GL_ALPHA_TEST); - GL11.glDisable(GL11.GL_DEPTH_TEST); + if (fluidDisplay) { + GL11.glDisable(GL11.GL_BLEND); + } CosmicRenderStuffs.cosmicOpacity = cosmicOpacity; CosmicRenderStuffs.inventoryRender = true; CosmicRenderStuffs.useShader(); - GL11.glColor4d(0, 1, 1, 1); + GL11.glColor4d(1, 1, 1, 1); float minu = tIcon.getMinU(); float maxu = tIcon.getMaxU(); @@ -180,6 +159,7 @@ public class UniversiumRenderer extends GT_GeneratedMaterial_Renderer { r.renderWithColor = true; + GL11.glDisable(GL11.GL_BLEND); GL11.glPopMatrix(); break; } @@ -188,54 +168,35 @@ public class UniversiumRenderer extends GT_GeneratedMaterial_Renderer { } } - public void render(ItemStack item, EntityPlayer player) { - int passes = 1; - if (item.getItem().requiresMultipleRenderPasses()) { - passes = item.getItem().getRenderPasses(item.getItemDamage()); - } - + private void render(IIcon icon) { GL11.glPushMatrix(); GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); GL11.glColor4f(1F, 1F, 1F, 1F); - IIcon icon; float f, f1, f2, f3; float scale = 1F / 16F; - for (int i = 0; i < passes; i++) { - icon = this.getTrueIcon(item, i); - - f = icon.getMinU(); - f1 = icon.getMaxU(); - f2 = icon.getMinV(); - f3 = icon.getMaxV(); - - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - - // RENDER ITEM IN HAND - ItemRenderer.renderItemIn2D( - Tessellator.instance, - f1, - f2, - f, - f3, - icon.getIconWidth(), - icon.getIconHeight(), - scale); - } + f = icon.getMinU(); + f1 = icon.getMaxU(); + f2 = icon.getMinV(); + f3 = icon.getMaxV(); + + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + + // RENDER ITEM IN HAND + ItemRenderer + .renderItemIn2D(Tessellator.instance, f1, f2, f, f3, icon.getIconWidth(), icon.getIconHeight(), scale); GL11.glDisable(GL11.GL_ALPHA_TEST); GL11.glDepthFunc(GL11.GL_EQUAL); CosmicRenderStuffs.cosmicOpacity = cosmicOpacity; CosmicRenderStuffs.useShader(); - IIcon cosmicIcon = getTrueIcon(item); - - float minu = cosmicIcon.getMinU(); - float maxu = cosmicIcon.getMaxU(); - float minv = cosmicIcon.getMinV(); - float maxv = cosmicIcon.getMaxV(); + float minu = icon.getMinU(); + float maxu = icon.getMaxU(); + float minv = icon.getMinV(); + float maxv = icon.getMaxV(); // RENDER COSMIC OVERLAY IN HAND ItemRenderer.renderItemIn2D( @@ -244,8 +205,8 @@ public class UniversiumRenderer extends GT_GeneratedMaterial_Renderer { minv, minu, maxv, - cosmicIcon.getIconWidth(), - cosmicIcon.getIconHeight(), + icon.getIconWidth(), + icon.getIconHeight(), scale); CosmicRenderStuffs.releaseShader(); GL11.glDepthFunc(GL11.GL_LEQUAL); @@ -257,7 +218,7 @@ public class UniversiumRenderer extends GT_GeneratedMaterial_Renderer { GL11.glColor4f(1F, 1F, 1F, 1F); } - public void processLightLevel(ItemRenderType type, ItemStack item, Object... data) { + private void processLightLevel(ItemRenderType type, Object... data) { switch (type) { case ENTITY: { EntityItem ent = (EntityItem) (data[1]); @@ -291,12 +252,4 @@ public class UniversiumRenderer extends GT_GeneratedMaterial_Renderer { } } } - - public IIcon getTrueIcon(ItemStack stack, int pass) { - return ((IGT_ItemWithMaterialRenderer) stack.getItem()).getIcon(stack.getItemDamage(), pass); - } - - public IIcon getTrueIcon(ItemStack stack) { - return getTrueIcon(stack, 0); - } } |