From 1b820de08a05070909a267e17f033fcf58ac8710 Mon Sep 17 00:00:00 2001 From: NotAPenguin Date: Mon, 2 Sep 2024 23:17:17 +0200 Subject: The Great Renaming (#3014) * move kekztech to a single root dir * move detrav to a single root dir * move gtnh-lanthanides to a single root dir * move tectech and delete some gross reflection in gt++ * remove more reflection inside gt5u * delete more reflection in gt++ * fix imports * move bartworks and bwcrossmod * fix proxies * move galactigreg and ggfab * move gtneioreplugin * try to fix gt++ bee loader * apply the rename rules to BW * apply rename rules to bwcrossmod * apply rename rules to detrav scanner mod * apply rename rules to galacticgreg * apply rename rules to ggfab * apply rename rules to goodgenerator * apply rename rules to gtnh-lanthanides * apply rename rules to gt++ * apply rename rules to kekztech * apply rename rules to kubatech * apply rename rules to tectech * apply rename rules to gt apply the rename rules to gt * fix tt import * fix mui hopefully * fix coremod except intergalactic * rename assline recipe class * fix a class name i stumbled on * rename StructureUtility to GTStructureUtility to prevent conflict with structurelib * temporary rename of GTTooltipDataCache to old name * fix gt client/server proxy names --- .../render/items/CosmicNeutroniumRenderer.java | 10 +- .../common/render/items/DataStickRenderer.java | 42 ++++++ .../common/render/items/GT_DataStick_Renderer.java | 42 ------ .../render/items/GT_GeneratedItem_Renderer.java | 166 --------------------- .../items/GT_GeneratedMaterial_Renderer.java | 130 ---------------- .../items/GT_MetaGenerated_Item_Renderer.java | 85 ----------- .../common/render/items/GaiaSpiritRenderer.java | 12 +- .../common/render/items/GeneratedItemRenderer.java | 166 +++++++++++++++++++++ .../render/items/GeneratedMaterialRenderer.java | 130 ++++++++++++++++ .../common/render/items/GlitchEffectRenderer.java | 6 +- .../common/render/items/InfinityRenderer.java | 6 +- .../render/items/MetaGeneratedItemRenderer.java | 85 +++++++++++ .../render/items/TranscendentMetalRenderer.java | 10 +- .../common/render/items/UniversiumRenderer.java | 12 +- 14 files changed, 451 insertions(+), 451 deletions(-) create mode 100644 src/main/java/gregtech/common/render/items/DataStickRenderer.java delete mode 100644 src/main/java/gregtech/common/render/items/GT_DataStick_Renderer.java delete mode 100644 src/main/java/gregtech/common/render/items/GT_GeneratedItem_Renderer.java delete mode 100644 src/main/java/gregtech/common/render/items/GT_GeneratedMaterial_Renderer.java delete mode 100644 src/main/java/gregtech/common/render/items/GT_MetaGenerated_Item_Renderer.java create mode 100644 src/main/java/gregtech/common/render/items/GeneratedItemRenderer.java create mode 100644 src/main/java/gregtech/common/render/items/GeneratedMaterialRenderer.java create mode 100644 src/main/java/gregtech/common/render/items/MetaGeneratedItemRenderer.java (limited to 'src/main/java/gregtech/common/render/items') diff --git a/src/main/java/gregtech/common/render/items/CosmicNeutroniumRenderer.java b/src/main/java/gregtech/common/render/items/CosmicNeutroniumRenderer.java index acb830de58..eac929d047 100644 --- a/src/main/java/gregtech/common/render/items/CosmicNeutroniumRenderer.java +++ b/src/main/java/gregtech/common/render/items/CosmicNeutroniumRenderer.java @@ -1,6 +1,6 @@ package gregtech.common.render.items; -import static gregtech.common.render.GT_RenderUtil.colorGTItem; +import static gregtech.common.render.GTRenderUtil.colorGTItem; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.entity.RenderItem; @@ -14,9 +14,9 @@ import org.lwjgl.opengl.GL12; import com.gtnewhorizons.modularui.api.math.Pos2d; import gregtech.api.enums.Textures; -import gregtech.common.render.GT_RenderUtil; +import gregtech.common.render.GTRenderUtil; -public class CosmicNeutroniumRenderer extends GT_GeneratedMaterial_Renderer { +public class CosmicNeutroniumRenderer extends GeneratedMaterialRenderer { // spotless:off private static final Pos2d point0 = new Pos2d(0 - 10, 0 - 10); @@ -90,10 +90,10 @@ public class CosmicNeutroniumRenderer extends GT_GeneratedMaterial_Renderer { colorGTItem(item); if (type.equals(IItemRenderer.ItemRenderType.INVENTORY)) { - GT_RenderUtil.renderItemIcon(icon, 16.0D, 0.001D, 0.0F, 0.0F, -1.0F); + GTRenderUtil.renderItemIcon(icon, 16.0D, 0.001D, 0.0F, 0.0F, -1.0F); } else { GL11.glEnable(GL11.GL_DEPTH_TEST); - GT_RenderUtil.renderItem(type, icon); + GTRenderUtil.renderItem(type, icon); } GL11.glPopMatrix(); } diff --git a/src/main/java/gregtech/common/render/items/DataStickRenderer.java b/src/main/java/gregtech/common/render/items/DataStickRenderer.java new file mode 100644 index 0000000000..3411c24c83 --- /dev/null +++ b/src/main/java/gregtech/common/render/items/DataStickRenderer.java @@ -0,0 +1,42 @@ +package gregtech.common.render.items; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.renderer.entity.RenderItem; +import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; + +import org.lwjgl.input.Keyboard; +import org.lwjgl.opengl.GL11; + +import gregtech.api.util.AssemblyLineUtils; + +// borrow form ae2 + +public class DataStickRenderer implements IItemRenderer { + + private final RenderItem ri = new RenderItem(); + + @Override + public boolean handleRenderType(ItemStack item, ItemRenderType type) { + final boolean isShiftHeld = Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_RSHIFT); + return type == ItemRenderType.INVENTORY && isShiftHeld; + } + + @Override + public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { + return false; + } + + @Override + public void renderItem(ItemRenderType type, ItemStack item, Object... data) { + final ItemStack is = AssemblyLineUtils.getDataStickOutput(item); + final Minecraft mc = Minecraft.getMinecraft(); + + GL11.glPushAttrib(GL11.GL_ENABLE_BIT | GL11.GL_COLOR_BUFFER_BIT); + RenderHelper.enableGUIStandardItemLighting(); + this.ri.renderItemAndEffectIntoGUI(mc.fontRenderer, mc.getTextureManager(), is, 0, 0); + RenderHelper.disableStandardItemLighting(); + GL11.glPopAttrib(); + } +} diff --git a/src/main/java/gregtech/common/render/items/GT_DataStick_Renderer.java b/src/main/java/gregtech/common/render/items/GT_DataStick_Renderer.java deleted file mode 100644 index 668b1daa6c..0000000000 --- a/src/main/java/gregtech/common/render/items/GT_DataStick_Renderer.java +++ /dev/null @@ -1,42 +0,0 @@ -package gregtech.common.render.items; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.RenderHelper; -import net.minecraft.client.renderer.entity.RenderItem; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -import org.lwjgl.input.Keyboard; -import org.lwjgl.opengl.GL11; - -import gregtech.api.util.GT_AssemblyLineUtils; - -// borrow form ae2 - -public class GT_DataStick_Renderer implements IItemRenderer { - - private final RenderItem ri = new RenderItem(); - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - final boolean isShiftHeld = Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_RSHIFT); - return type == ItemRenderType.INVENTORY && isShiftHeld; - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return false; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - final ItemStack is = GT_AssemblyLineUtils.getDataStickOutput(item); - final Minecraft mc = Minecraft.getMinecraft(); - - GL11.glPushAttrib(GL11.GL_ENABLE_BIT | GL11.GL_COLOR_BUFFER_BIT); - RenderHelper.enableGUIStandardItemLighting(); - this.ri.renderItemAndEffectIntoGUI(mc.fontRenderer, mc.getTextureManager(), is, 0, 0); - RenderHelper.disableStandardItemLighting(); - GL11.glPopAttrib(); - } -} diff --git a/src/main/java/gregtech/common/render/items/GT_GeneratedItem_Renderer.java b/src/main/java/gregtech/common/render/items/GT_GeneratedItem_Renderer.java deleted file mode 100644 index 84045446c2..0000000000 --- a/src/main/java/gregtech/common/render/items/GT_GeneratedItem_Renderer.java +++ /dev/null @@ -1,166 +0,0 @@ -package gregtech.common.render.items; - -import static gregtech.api.enums.ItemList.Large_Fluid_Cell_Aluminium; -import static gregtech.api.enums.ItemList.Large_Fluid_Cell_Chrome; -import static gregtech.api.enums.ItemList.Large_Fluid_Cell_Iridium; -import static gregtech.api.enums.ItemList.Large_Fluid_Cell_Neutronium; -import static gregtech.api.enums.ItemList.Large_Fluid_Cell_Osmium; -import static gregtech.api.enums.ItemList.Large_Fluid_Cell_StainlessSteel; -import static gregtech.api.enums.ItemList.Large_Fluid_Cell_Steel; -import static gregtech.api.enums.ItemList.Large_Fluid_Cell_Titanium; -import static gregtech.api.enums.ItemList.Large_Fluid_Cell_TungstenSteel; -import static gregtech.api.enums.Mods.HodgePodge; - -import javax.annotation.Nullable; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.texture.TextureMap; -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 com.mitchej123.hodgepodge.textures.IPatchedTextureAtlasSprite; - -import gregtech.api.enums.ItemList; -import gregtech.api.enums.Textures; -import gregtech.api.items.GT_MetaGenerated_Item; -import gregtech.api.util.GT_Utility; -import gregtech.common.render.GT_RenderUtil; -import gregtech.loaders.ExtraIcons; - -public class GT_GeneratedItem_Renderer implements IItemRenderer { - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - return type == ItemRenderType.EQUIPPED || type == ItemRenderType.EQUIPPED_FIRST_PERSON - || type == ItemRenderType.INVENTORY - || type == ItemRenderType.ENTITY; - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return type == ItemRenderType.ENTITY && helper == ItemRendererHelper.ENTITY_BOBBING - || (helper == ItemRendererHelper.ENTITY_ROTATION && Minecraft.getMinecraft().gameSettings.fancyGraphics); - } - - @Override - public void renderItem(ItemRenderType type, ItemStack aStack, Object... data) { - short aMetaData = (short) aStack.getItemDamage(); - if (!(aStack.getItem() instanceof GT_MetaGenerated_Item aItem)) return; - - GL11.glEnable(GL11.GL_BLEND); - GL11.glColor3f(1.0F, 1.0F, 1.0F); - IIcon tIcon; - if (aItem.mIconList[(aMetaData - aItem.mOffset)].length > 1) { - Long[] tStats = aItem.mElectricStats.get(aMetaData); - - if ((tStats != null) && (tStats[3] < 0L)) { - long tCharge = aItem.getRealCharge(aStack); - - if (tCharge <= 0L) { - tIcon = aItem.mIconList[(aMetaData - aItem.mOffset)][1]; - } else { - - if (tCharge >= tStats[0]) { - tIcon = aItem.mIconList[(aMetaData - aItem.mOffset)][8]; - } else { - tIcon = aItem.mIconList[(aMetaData - aItem.mOffset)][(7 - - (int) Math.max(0L, Math.min(5L, (tStats[0] - tCharge) * 6L / tStats[0])))]; - } - } - } else { - tIcon = aItem.mIconList[(aMetaData - aItem.mOffset)][0]; - } - } else { - tIcon = aItem.mIconList[(aMetaData - aItem.mOffset)][0]; - } - - if (tIcon == null) tIcon = Textures.ItemIcons.RENDERING_ERROR.getIcon(); - - markNeedsAnimationUpdate(tIcon); - - ItemList largeFluidCell = getLargeFluidCell(aStack); - if (largeFluidCell != null) { - renderLargeFluidCellExtraParts(type, largeFluidCell, aStack); - } - - Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationItemsTexture); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GT_RenderUtil.renderItem(type, tIcon); - GL11.glDisable(GL11.GL_BLEND); - } - - @Nullable - private static ItemList getLargeFluidCell(ItemStack stack) { - if (isSame(Large_Fluid_Cell_Steel, stack)) return Large_Fluid_Cell_Steel; - if (isSame(Large_Fluid_Cell_Aluminium, stack)) return Large_Fluid_Cell_Aluminium; - if (isSame(Large_Fluid_Cell_TungstenSteel, stack)) return Large_Fluid_Cell_TungstenSteel; - if (isSame(Large_Fluid_Cell_StainlessSteel, stack)) return Large_Fluid_Cell_StainlessSteel; - if (isSame(Large_Fluid_Cell_Titanium, stack)) return Large_Fluid_Cell_Titanium; - if (isSame(Large_Fluid_Cell_Chrome, stack)) return Large_Fluid_Cell_Chrome; - if (isSame(Large_Fluid_Cell_Iridium, stack)) return Large_Fluid_Cell_Iridium; - if (isSame(Large_Fluid_Cell_Osmium, stack)) return Large_Fluid_Cell_Osmium; - if (isSame(Large_Fluid_Cell_Neutronium, stack)) return Large_Fluid_Cell_Neutronium; - - return null; - } - - private void renderLargeFluidCellExtraParts(IItemRenderer.ItemRenderType type, ItemList item, ItemStack stack) { - - IIcon inner = switch (item) { - case Large_Fluid_Cell_Steel -> ExtraIcons.steelLargeCellInner; - case Large_Fluid_Cell_Aluminium -> ExtraIcons.aluminiumLargeCellInner; - case Large_Fluid_Cell_StainlessSteel -> ExtraIcons.stainlesssteelLargeCellInner; - case Large_Fluid_Cell_Titanium -> ExtraIcons.titaniumLargeCellInner; - case Large_Fluid_Cell_TungstenSteel -> ExtraIcons.tungstensteelLargeCellInner; - case Large_Fluid_Cell_Iridium -> ExtraIcons.iridiumLargeCellInner; - case Large_Fluid_Cell_Osmium -> ExtraIcons.osmiumLargeCellInner; - case Large_Fluid_Cell_Chrome -> ExtraIcons.chromiumLargeCellInner; - case Large_Fluid_Cell_Neutronium -> ExtraIcons.neutroniumLargeCellInner; - default -> Textures.ItemIcons.RENDERING_ERROR.getIcon(); - }; - - // Empty inner side - Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationItemsTexture); - markNeedsAnimationUpdate(inner); - GT_RenderUtil.renderItem(type, inner); - - FluidStack fluidStack = GT_Utility.getFluidForFilledItem(stack, true); - - if (fluidStack != null && fluidStack.getFluid() != null) { - IIcon fluidIcon = fluidStack.getFluid() - .getIcon(fluidStack); - if (fluidIcon == null) { - fluidIcon = Textures.ItemIcons.RENDERING_ERROR.getIcon(); - } - int fluidColor = fluidStack.getFluid() - .getColor(fluidStack); - - Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationBlocksTexture); - markNeedsAnimationUpdate(fluidIcon); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glDepthFunc(GL11.GL_EQUAL); - GL11.glColor3ub((byte) (fluidColor >> 16), (byte) (fluidColor >> 8), (byte) fluidColor); - GT_RenderUtil.renderItem(type, fluidIcon); - - GL11.glColor3ub((byte) -1, (byte) -1, (byte) -1); - GL11.glDepthFunc(GL11.GL_LEQUAL); - } - } - - private static boolean isSame(ItemList item, ItemStack stack) { - ItemStack internal = item.getInternalStack_unsafe(); - if (GT_Utility.isStackInvalid(internal)) return false; - - return internal.getItem() == stack.getItem() && internal.getItemDamage() == stack.getItemDamage(); - } - - protected void markNeedsAnimationUpdate(IIcon icon) { - if (HodgePodge.isModLoaded() && icon instanceof IPatchedTextureAtlasSprite) { - ((IPatchedTextureAtlasSprite) icon).markNeedsAnimationUpdate(); - } - } -} 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 deleted file mode 100644 index a67d5512ed..0000000000 --- a/src/main/java/gregtech/common/render/items/GT_GeneratedMaterial_Renderer.java +++ /dev/null @@ -1,130 +0,0 @@ -package gregtech.common.render.items; - -import static gregtech.api.enums.Mods.HodgePodge; - -import net.minecraft.client.Minecraft; -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 com.mitchej123.hodgepodge.textures.IPatchedTextureAtlasSprite; - -import codechicken.lib.render.TextureUtils; -import gregtech.api.interfaces.IGT_ItemWithMaterialRenderer; -import gregtech.api.util.GT_Utility; -import gregtech.common.render.GT_RenderUtil; - -public class GT_GeneratedMaterial_Renderer implements IItemRenderer { - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - return type == ItemRenderType.EQUIPPED || type == ItemRenderType.EQUIPPED_FIRST_PERSON - || type == ItemRenderType.INVENTORY - || type == ItemRenderType.ENTITY; - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return type == ItemRenderType.ENTITY && helper == ItemRendererHelper.ENTITY_BOBBING - || (helper == ItemRendererHelper.ENTITY_ROTATION && Minecraft.getMinecraft().gameSettings.fancyGraphics); - } - - /** - * Handle special fluid display rendering. Return false if does not need such kind of handling. Note: annotations - * should not be rendered here. Only render the fluid texture. Parameters are values passed from - * {@link IItemRenderer#renderItem(ItemRenderType, ItemStack, Object...)} verbatim. Do not modify the argument. - *

- * While this is called, BLEND and ALPHA_TEST is on. It is expected that these remain enabled while exit. - * - * @return true if did special fluid display rendering. false otherwise. - */ - public boolean renderFluidDisplayItem(ItemRenderType type, ItemStack aStack, Object... data) { - return false; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack aStack, Object... data) { - short aMetaData = (short) aStack.getItemDamage(); - if (!(aStack.getItem() instanceof IGT_ItemWithMaterialRenderer aItem)) return; - - int passes = 1; - if (aItem.requiresMultipleRenderPasses()) { - passes = aItem.getRenderPasses(aMetaData); - } - - for (int pass = 0; pass < passes; pass++) { - IIcon tIcon = aItem.getIcon(aMetaData, pass); - 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 (tIcon != null) { - markNeedsAnimationUpdate(tIcon); - renderRegularItem(type, aStack, tIcon, aFluid == null, pass, data); - } - - 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); - } - } - - protected void renderRegularItem(ItemRenderType type, ItemStack aStack, IIcon icon, boolean shouldModulateColor, - int pass, Object... data) { - renderRegularItem(type, aStack, icon, shouldModulateColor); - } - - protected void renderRegularItem(ItemRenderType type, ItemStack aStack, IIcon icon, boolean shouldModulateColor) { - if (!(aStack.getItem() instanceof IGT_ItemWithMaterialRenderer aItem)) return; - - if (shouldModulateColor) { - short[] tModulation = aItem.getRGBa(aStack); - GL11.glColor3f(tModulation[0] / 255.0F, tModulation[1] / 255.0F, tModulation[2] / 255.0F); - } - - GT_RenderUtil.renderItem(type, icon); - } - - 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); - TextureUtils.bindAtlas(aFluid.getSpriteNumber()); - - GL11.glDepthFunc(GL11.GL_EQUAL); - GT_RenderUtil.renderItem(type, fluidIcon); - GL11.glDepthFunc(GL11.GL_LEQUAL); - } - - protected void renderItemOverlay(ItemRenderType type, IIcon overlay) { - GT_RenderUtil.renderItem(type, overlay); - } - - protected void markNeedsAnimationUpdate(IIcon icon) { - if (HodgePodge.isModLoaded() && icon instanceof IPatchedTextureAtlasSprite) { - ((IPatchedTextureAtlasSprite) icon).markNeedsAnimationUpdate(); - } - } -} diff --git a/src/main/java/gregtech/common/render/items/GT_MetaGenerated_Item_Renderer.java b/src/main/java/gregtech/common/render/items/GT_MetaGenerated_Item_Renderer.java deleted file mode 100644 index d7425c2fcb..0000000000 --- a/src/main/java/gregtech/common/render/items/GT_MetaGenerated_Item_Renderer.java +++ /dev/null @@ -1,85 +0,0 @@ -package gregtech.common.render.items; - -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; -import net.minecraftforge.client.MinecraftForgeClient; - -import gregtech.api.enums.ItemList; -import gregtech.api.enums.Materials; -import gregtech.api.interfaces.IGT_ItemWithMaterialRenderer; -import gregtech.api.objects.ItemData; -import gregtech.api.util.GT_OreDictUnificator; -import gregtech.api.util.GT_Utility; -import gregtech.common.render.GT_RenderUtil; - -public class GT_MetaGenerated_Item_Renderer implements IItemRenderer { - - private final IItemRenderer mItemRenderer = new GT_GeneratedItem_Renderer(); - private final IItemRenderer mMaterialRenderer = new GT_GeneratedMaterial_Renderer(); - - private final IItemRenderer mDataStickRenderer = new GT_DataStick_Renderer(); - - public GT_MetaGenerated_Item_Renderer() {} - - public void registerItem(T item) { - MinecraftForgeClient.registerItemRenderer(item, this); - } - - @Override - public boolean handleRenderType(ItemStack aStack, ItemRenderType aType) { - if ((GT_Utility.isStackInvalid(aStack)) || (aStack.getItemDamage() < 0) - || !(aStack.getItem() instanceof IGT_ItemWithMaterialRenderer) - || !((IGT_ItemWithMaterialRenderer) aStack.getItem()).shouldUseCustomRenderer(aStack.getItemDamage())) { - return false; - } - return getRendererForItemStack(aStack).handleRenderType(aStack, aType); - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType aType, ItemStack aStack, ItemRendererHelper aHelper) { - if (GT_Utility.isStackInvalid(aStack)) { - return false; - } - return getRendererForItemStack(aStack).shouldUseRenderHelper(aType, aStack, aHelper); - } - - @Override - public void renderItem(ItemRenderType type, ItemStack aStack, Object... data) { - GT_RenderUtil.applyStandardItemTransform(type); - - IItemRenderer itemRenderer = getRendererForItemStack(aStack); - itemRenderer.renderItem(type, aStack, data); - } - - private IItemRenderer getRendererForItemStack(ItemStack aStack) { - short aMetaData = (short) aStack.getItemDamage(); - IGT_ItemWithMaterialRenderer aItem = (IGT_ItemWithMaterialRenderer) aStack.getItem(); - - if (aItem != null && aItem.allowMaterialRenderer(aMetaData)) { - IItemRenderer aMaterialRenderer = aItem.getMaterialRenderer(aMetaData); - - // Handle fluid rendering. - if (aMaterialRenderer == null) { - ItemData itemData = GT_OreDictUnificator.getAssociation(aStack); - if (itemData != null) { - Materials material = itemData.mMaterial.mMaterial; - if (material.renderer != null) { - aMaterialRenderer = material.renderer; - } - } - } - - return aMaterialRenderer != null ? aMaterialRenderer : mMaterialRenderer; - } - - // handle data stick - if (aStack.getItem() == ItemList.Tool_DataStick.getItem() && aStack.hasTagCompound() - && aStack.getTagCompound() - .hasKey("output")) { - return mDataStickRenderer; - } - - return mItemRenderer; - } -} diff --git a/src/main/java/gregtech/common/render/items/GaiaSpiritRenderer.java b/src/main/java/gregtech/common/render/items/GaiaSpiritRenderer.java index 08663adf4d..9de4afbef0 100644 --- a/src/main/java/gregtech/common/render/items/GaiaSpiritRenderer.java +++ b/src/main/java/gregtech/common/render/items/GaiaSpiritRenderer.java @@ -7,21 +7,21 @@ import net.minecraft.util.IIcon; import org.lwjgl.opengl.GL11; -import gregtech.GT_Mod; -import gregtech.common.render.GT_RenderUtil; +import gregtech.GTMod; +import gregtech.common.render.GTRenderUtil; -public class GaiaSpiritRenderer extends GT_GeneratedMaterial_Renderer { +public class GaiaSpiritRenderer extends GeneratedMaterialRenderer { @Override protected void renderRegularItem(ItemRenderType type, ItemStack aStack, IIcon icon, boolean shouldModulateColor) { - long animationTicks = GT_Mod.gregtechproxy.getAnimationTicks(); - float partialTicks = GT_Mod.gregtechproxy.getPartialRenderTicks(); + long animationTicks = GTMod.gregtechproxy.getAnimationTicks(); + float partialTicks = GTMod.gregtechproxy.getPartialRenderTicks(); if (shouldModulateColor) { Color color = Color.getHSBColor((animationTicks % 360 + partialTicks) % 180 / 180f, 0.4f, 0.9f); GL11.glColor3f(color.getRed() / 255.0F, color.getGreen() / 255.0F, color.getBlue() / 255.0F); } - GT_RenderUtil.renderItem(type, icon); + GTRenderUtil.renderItem(type, icon); } } diff --git a/src/main/java/gregtech/common/render/items/GeneratedItemRenderer.java b/src/main/java/gregtech/common/render/items/GeneratedItemRenderer.java new file mode 100644 index 0000000000..880e4b11c9 --- /dev/null +++ b/src/main/java/gregtech/common/render/items/GeneratedItemRenderer.java @@ -0,0 +1,166 @@ +package gregtech.common.render.items; + +import static gregtech.api.enums.ItemList.Large_Fluid_Cell_Aluminium; +import static gregtech.api.enums.ItemList.Large_Fluid_Cell_Chrome; +import static gregtech.api.enums.ItemList.Large_Fluid_Cell_Iridium; +import static gregtech.api.enums.ItemList.Large_Fluid_Cell_Neutronium; +import static gregtech.api.enums.ItemList.Large_Fluid_Cell_Osmium; +import static gregtech.api.enums.ItemList.Large_Fluid_Cell_StainlessSteel; +import static gregtech.api.enums.ItemList.Large_Fluid_Cell_Steel; +import static gregtech.api.enums.ItemList.Large_Fluid_Cell_Titanium; +import static gregtech.api.enums.ItemList.Large_Fluid_Cell_TungstenSteel; +import static gregtech.api.enums.Mods.HodgePodge; + +import javax.annotation.Nullable; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.texture.TextureMap; +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 com.mitchej123.hodgepodge.textures.IPatchedTextureAtlasSprite; + +import gregtech.api.enums.ItemList; +import gregtech.api.enums.Textures; +import gregtech.api.items.MetaGeneratedItem; +import gregtech.api.util.GTUtility; +import gregtech.common.render.GTRenderUtil; +import gregtech.loaders.ExtraIcons; + +public class GeneratedItemRenderer implements IItemRenderer { + + @Override + public boolean handleRenderType(ItemStack item, ItemRenderType type) { + return type == ItemRenderType.EQUIPPED || type == ItemRenderType.EQUIPPED_FIRST_PERSON + || type == ItemRenderType.INVENTORY + || type == ItemRenderType.ENTITY; + } + + @Override + public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { + return type == ItemRenderType.ENTITY && helper == ItemRendererHelper.ENTITY_BOBBING + || (helper == ItemRendererHelper.ENTITY_ROTATION && Minecraft.getMinecraft().gameSettings.fancyGraphics); + } + + @Override + public void renderItem(ItemRenderType type, ItemStack aStack, Object... data) { + short aMetaData = (short) aStack.getItemDamage(); + if (!(aStack.getItem() instanceof MetaGeneratedItem aItem)) return; + + GL11.glEnable(GL11.GL_BLEND); + GL11.glColor3f(1.0F, 1.0F, 1.0F); + IIcon tIcon; + if (aItem.mIconList[(aMetaData - aItem.mOffset)].length > 1) { + Long[] tStats = aItem.mElectricStats.get(aMetaData); + + if ((tStats != null) && (tStats[3] < 0L)) { + long tCharge = aItem.getRealCharge(aStack); + + if (tCharge <= 0L) { + tIcon = aItem.mIconList[(aMetaData - aItem.mOffset)][1]; + } else { + + if (tCharge >= tStats[0]) { + tIcon = aItem.mIconList[(aMetaData - aItem.mOffset)][8]; + } else { + tIcon = aItem.mIconList[(aMetaData - aItem.mOffset)][(7 + - (int) Math.max(0L, Math.min(5L, (tStats[0] - tCharge) * 6L / tStats[0])))]; + } + } + } else { + tIcon = aItem.mIconList[(aMetaData - aItem.mOffset)][0]; + } + } else { + tIcon = aItem.mIconList[(aMetaData - aItem.mOffset)][0]; + } + + if (tIcon == null) tIcon = Textures.ItemIcons.RENDERING_ERROR.getIcon(); + + markNeedsAnimationUpdate(tIcon); + + ItemList largeFluidCell = getLargeFluidCell(aStack); + if (largeFluidCell != null) { + renderLargeFluidCellExtraParts(type, largeFluidCell, aStack); + } + + Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationItemsTexture); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + GTRenderUtil.renderItem(type, tIcon); + GL11.glDisable(GL11.GL_BLEND); + } + + @Nullable + private static ItemList getLargeFluidCell(ItemStack stack) { + if (isSame(Large_Fluid_Cell_Steel, stack)) return Large_Fluid_Cell_Steel; + if (isSame(Large_Fluid_Cell_Aluminium, stack)) return Large_Fluid_Cell_Aluminium; + if (isSame(Large_Fluid_Cell_TungstenSteel, stack)) return Large_Fluid_Cell_TungstenSteel; + if (isSame(Large_Fluid_Cell_StainlessSteel, stack)) return Large_Fluid_Cell_StainlessSteel; + if (isSame(Large_Fluid_Cell_Titanium, stack)) return Large_Fluid_Cell_Titanium; + if (isSame(Large_Fluid_Cell_Chrome, stack)) return Large_Fluid_Cell_Chrome; + if (isSame(Large_Fluid_Cell_Iridium, stack)) return Large_Fluid_Cell_Iridium; + if (isSame(Large_Fluid_Cell_Osmium, stack)) return Large_Fluid_Cell_Osmium; + if (isSame(Large_Fluid_Cell_Neutronium, stack)) return Large_Fluid_Cell_Neutronium; + + return null; + } + + private void renderLargeFluidCellExtraParts(IItemRenderer.ItemRenderType type, ItemList item, ItemStack stack) { + + IIcon inner = switch (item) { + case Large_Fluid_Cell_Steel -> ExtraIcons.steelLargeCellInner; + case Large_Fluid_Cell_Aluminium -> ExtraIcons.aluminiumLargeCellInner; + case Large_Fluid_Cell_StainlessSteel -> ExtraIcons.stainlesssteelLargeCellInner; + case Large_Fluid_Cell_Titanium -> ExtraIcons.titaniumLargeCellInner; + case Large_Fluid_Cell_TungstenSteel -> ExtraIcons.tungstensteelLargeCellInner; + case Large_Fluid_Cell_Iridium -> ExtraIcons.iridiumLargeCellInner; + case Large_Fluid_Cell_Osmium -> ExtraIcons.osmiumLargeCellInner; + case Large_Fluid_Cell_Chrome -> ExtraIcons.chromiumLargeCellInner; + case Large_Fluid_Cell_Neutronium -> ExtraIcons.neutroniumLargeCellInner; + default -> Textures.ItemIcons.RENDERING_ERROR.getIcon(); + }; + + // Empty inner side + Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationItemsTexture); + markNeedsAnimationUpdate(inner); + GTRenderUtil.renderItem(type, inner); + + FluidStack fluidStack = GTUtility.getFluidForFilledItem(stack, true); + + if (fluidStack != null && fluidStack.getFluid() != null) { + IIcon fluidIcon = fluidStack.getFluid() + .getIcon(fluidStack); + if (fluidIcon == null) { + fluidIcon = Textures.ItemIcons.RENDERING_ERROR.getIcon(); + } + int fluidColor = fluidStack.getFluid() + .getColor(fluidStack); + + Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationBlocksTexture); + markNeedsAnimationUpdate(fluidIcon); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + GL11.glDepthFunc(GL11.GL_EQUAL); + GL11.glColor3ub((byte) (fluidColor >> 16), (byte) (fluidColor >> 8), (byte) fluidColor); + GTRenderUtil.renderItem(type, fluidIcon); + + GL11.glColor3ub((byte) -1, (byte) -1, (byte) -1); + GL11.glDepthFunc(GL11.GL_LEQUAL); + } + } + + private static boolean isSame(ItemList item, ItemStack stack) { + ItemStack internal = item.getInternalStack_unsafe(); + if (GTUtility.isStackInvalid(internal)) return false; + + return internal.getItem() == stack.getItem() && internal.getItemDamage() == stack.getItemDamage(); + } + + protected void markNeedsAnimationUpdate(IIcon icon) { + if (HodgePodge.isModLoaded() && icon instanceof IPatchedTextureAtlasSprite) { + ((IPatchedTextureAtlasSprite) icon).markNeedsAnimationUpdate(); + } + } +} diff --git a/src/main/java/gregtech/common/render/items/GeneratedMaterialRenderer.java b/src/main/java/gregtech/common/render/items/GeneratedMaterialRenderer.java new file mode 100644 index 0000000000..8d7b05981f --- /dev/null +++ b/src/main/java/gregtech/common/render/items/GeneratedMaterialRenderer.java @@ -0,0 +1,130 @@ +package gregtech.common.render.items; + +import static gregtech.api.enums.Mods.HodgePodge; + +import net.minecraft.client.Minecraft; +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 com.mitchej123.hodgepodge.textures.IPatchedTextureAtlasSprite; + +import codechicken.lib.render.TextureUtils; +import gregtech.api.interfaces.IGT_ItemWithMaterialRenderer; +import gregtech.api.util.GTUtility; +import gregtech.common.render.GTRenderUtil; + +public class GeneratedMaterialRenderer implements IItemRenderer { + + @Override + public boolean handleRenderType(ItemStack item, ItemRenderType type) { + return type == ItemRenderType.EQUIPPED || type == ItemRenderType.EQUIPPED_FIRST_PERSON + || type == ItemRenderType.INVENTORY + || type == ItemRenderType.ENTITY; + } + + @Override + public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { + return type == ItemRenderType.ENTITY && helper == ItemRendererHelper.ENTITY_BOBBING + || (helper == ItemRendererHelper.ENTITY_ROTATION && Minecraft.getMinecraft().gameSettings.fancyGraphics); + } + + /** + * Handle special fluid display rendering. Return false if does not need such kind of handling. Note: annotations + * should not be rendered here. Only render the fluid texture. Parameters are values passed from + * {@link IItemRenderer#renderItem(ItemRenderType, ItemStack, Object...)} verbatim. Do not modify the argument. + *

+ * While this is called, BLEND and ALPHA_TEST is on. It is expected that these remain enabled while exit. + * + * @return true if did special fluid display rendering. false otherwise. + */ + public boolean renderFluidDisplayItem(ItemRenderType type, ItemStack aStack, Object... data) { + return false; + } + + @Override + public void renderItem(ItemRenderType type, ItemStack aStack, Object... data) { + short aMetaData = (short) aStack.getItemDamage(); + if (!(aStack.getItem() instanceof IGT_ItemWithMaterialRenderer aItem)) return; + + int passes = 1; + if (aItem.requiresMultipleRenderPasses()) { + passes = aItem.getRenderPasses(aMetaData); + } + + for (int pass = 0; pass < passes; pass++) { + IIcon tIcon = aItem.getIcon(aMetaData, pass); + IIcon tOverlay = aItem.getOverlayIcon(aMetaData, pass); + FluidStack aFluid = GTUtility.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 (tIcon != null) { + markNeedsAnimationUpdate(tIcon); + renderRegularItem(type, aStack, tIcon, aFluid == null, pass, data); + } + + 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); + } + } + + protected void renderRegularItem(ItemRenderType type, ItemStack aStack, IIcon icon, boolean shouldModulateColor, + int pass, Object... data) { + renderRegularItem(type, aStack, icon, shouldModulateColor); + } + + protected void renderRegularItem(ItemRenderType type, ItemStack aStack, IIcon icon, boolean shouldModulateColor) { + if (!(aStack.getItem() instanceof IGT_ItemWithMaterialRenderer aItem)) return; + + if (shouldModulateColor) { + short[] tModulation = aItem.getRGBa(aStack); + GL11.glColor3f(tModulation[0] / 255.0F, tModulation[1] / 255.0F, tModulation[2] / 255.0F); + } + + GTRenderUtil.renderItem(type, icon); + } + + 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); + TextureUtils.bindAtlas(aFluid.getSpriteNumber()); + + GL11.glDepthFunc(GL11.GL_EQUAL); + GTRenderUtil.renderItem(type, fluidIcon); + GL11.glDepthFunc(GL11.GL_LEQUAL); + } + + protected void renderItemOverlay(ItemRenderType type, IIcon overlay) { + GTRenderUtil.renderItem(type, overlay); + } + + protected void markNeedsAnimationUpdate(IIcon icon) { + if (HodgePodge.isModLoaded() && icon instanceof IPatchedTextureAtlasSprite) { + ((IPatchedTextureAtlasSprite) icon).markNeedsAnimationUpdate(); + } + } +} diff --git a/src/main/java/gregtech/common/render/items/GlitchEffectRenderer.java b/src/main/java/gregtech/common/render/items/GlitchEffectRenderer.java index f7e4413c97..b73a75f354 100644 --- a/src/main/java/gregtech/common/render/items/GlitchEffectRenderer.java +++ b/src/main/java/gregtech/common/render/items/GlitchEffectRenderer.java @@ -12,9 +12,9 @@ import org.lwjgl.opengl.GL11; import codechicken.lib.render.TextureUtils; import gregtech.api.interfaces.IGT_ItemWithMaterialRenderer; -import gregtech.api.util.GT_Utility; +import gregtech.api.util.GTUtility; -public class GlitchEffectRenderer extends GT_GeneratedMaterial_Renderer { +public class GlitchEffectRenderer extends GeneratedMaterialRenderer { public Random rand = new Random(); int[] red = new int[] { 255, 50, 50, 192 }; @@ -73,7 +73,7 @@ public class GlitchEffectRenderer extends GT_GeneratedMaterial_Renderer { IIcon itemIcon = itemRenderer.getIcon(metaData, pass); IIcon overlay = itemRenderer.getOverlayIcon(metaData, pass); - FluidStack aFluid = GT_Utility.getFluidForFilledItem(item, true); + FluidStack aFluid = GTUtility.getFluidForFilledItem(item, true); GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); diff --git a/src/main/java/gregtech/common/render/items/InfinityRenderer.java b/src/main/java/gregtech/common/render/items/InfinityRenderer.java index 3a98898b8a..c083024dd3 100644 --- a/src/main/java/gregtech/common/render/items/InfinityRenderer.java +++ b/src/main/java/gregtech/common/render/items/InfinityRenderer.java @@ -12,11 +12,11 @@ import org.lwjgl.opengl.GL11; import codechicken.lib.render.TextureUtils; import gregtech.api.enums.Textures; import gregtech.api.interfaces.IGT_ItemWithMaterialRenderer; -import gregtech.api.util.GT_Utility; +import gregtech.api.util.GTUtility; // TODO: Render effects outside inventory. -public class InfinityRenderer extends GT_GeneratedMaterial_Renderer { +public class InfinityRenderer extends GeneratedMaterialRenderer { public Random rand = new Random(); @@ -33,7 +33,7 @@ public class InfinityRenderer extends GT_GeneratedMaterial_Renderer { for (int pass = 0; pass < passes; pass++) { IIcon tIcon = aItem.getIcon(aMetaData, pass); IIcon tOverlay = aItem.getOverlayIcon(aMetaData, pass); - FluidStack aFluid = GT_Utility.getFluidForFilledItem(aStack, true); + FluidStack aFluid = GTUtility.getFluidForFilledItem(aStack, true); GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); diff --git a/src/main/java/gregtech/common/render/items/MetaGeneratedItemRenderer.java b/src/main/java/gregtech/common/render/items/MetaGeneratedItemRenderer.java new file mode 100644 index 0000000000..14d9b65e7f --- /dev/null +++ b/src/main/java/gregtech/common/render/items/MetaGeneratedItemRenderer.java @@ -0,0 +1,85 @@ +package gregtech.common.render.items; + +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; +import net.minecraftforge.client.MinecraftForgeClient; + +import gregtech.api.enums.ItemList; +import gregtech.api.enums.Materials; +import gregtech.api.interfaces.IGT_ItemWithMaterialRenderer; +import gregtech.api.objects.ItemData; +import gregtech.api.util.GTOreDictUnificator; +import gregtech.api.util.GTUtility; +import gregtech.common.render.GTRenderUtil; + +public class MetaGeneratedItemRenderer implements IItemRenderer { + + private final IItemRenderer mItemRenderer = new GeneratedItemRenderer(); + private final IItemRenderer mMaterialRenderer = new GeneratedMaterialRenderer(); + + private final IItemRenderer mDataStickRenderer = new DataStickRenderer(); + + public MetaGeneratedItemRenderer() {} + + public void registerItem(T item) { + MinecraftForgeClient.registerItemRenderer(item, this); + } + + @Override + public boolean handleRenderType(ItemStack aStack, ItemRenderType aType) { + if ((GTUtility.isStackInvalid(aStack)) || (aStack.getItemDamage() < 0) + || !(aStack.getItem() instanceof IGT_ItemWithMaterialRenderer) + || !((IGT_ItemWithMaterialRenderer) aStack.getItem()).shouldUseCustomRenderer(aStack.getItemDamage())) { + return false; + } + return getRendererForItemStack(aStack).handleRenderType(aStack, aType); + } + + @Override + public boolean shouldUseRenderHelper(ItemRenderType aType, ItemStack aStack, ItemRendererHelper aHelper) { + if (GTUtility.isStackInvalid(aStack)) { + return false; + } + return getRendererForItemStack(aStack).shouldUseRenderHelper(aType, aStack, aHelper); + } + + @Override + public void renderItem(ItemRenderType type, ItemStack aStack, Object... data) { + GTRenderUtil.applyStandardItemTransform(type); + + IItemRenderer itemRenderer = getRendererForItemStack(aStack); + itemRenderer.renderItem(type, aStack, data); + } + + private IItemRenderer getRendererForItemStack(ItemStack aStack) { + short aMetaData = (short) aStack.getItemDamage(); + IGT_ItemWithMaterialRenderer aItem = (IGT_ItemWithMaterialRenderer) aStack.getItem(); + + if (aItem != null && aItem.allowMaterialRenderer(aMetaData)) { + IItemRenderer aMaterialRenderer = aItem.getMaterialRenderer(aMetaData); + + // Handle fluid rendering. + if (aMaterialRenderer == null) { + ItemData itemData = GTOreDictUnificator.getAssociation(aStack); + if (itemData != null) { + Materials material = itemData.mMaterial.mMaterial; + if (material.renderer != null) { + aMaterialRenderer = material.renderer; + } + } + } + + return aMaterialRenderer != null ? aMaterialRenderer : mMaterialRenderer; + } + + // handle data stick + if (aStack.getItem() == ItemList.Tool_DataStick.getItem() && aStack.hasTagCompound() + && aStack.getTagCompound() + .hasKey("output")) { + return mDataStickRenderer; + } + + return mItemRenderer; + } +} diff --git a/src/main/java/gregtech/common/render/items/TranscendentMetalRenderer.java b/src/main/java/gregtech/common/render/items/TranscendentMetalRenderer.java index 8583033e0f..7f619f2df5 100644 --- a/src/main/java/gregtech/common/render/items/TranscendentMetalRenderer.java +++ b/src/main/java/gregtech/common/render/items/TranscendentMetalRenderer.java @@ -13,11 +13,11 @@ import net.minecraftforge.fluids.FluidStack; import org.lwjgl.opengl.GL11; import codechicken.lib.render.TextureUtils; -import gregtech.GT_Mod; +import gregtech.GTMod; import gregtech.api.interfaces.IGT_ItemWithMaterialRenderer; -import gregtech.api.util.GT_Util; +import gregtech.api.util.GTUtil; -public class TranscendentMetalRenderer extends GT_GeneratedMaterial_Renderer { +public class TranscendentMetalRenderer extends GeneratedMaterialRenderer { @Override public void renderItem(ItemRenderType type, ItemStack aStack, Object... data) { @@ -69,7 +69,7 @@ public class TranscendentMetalRenderer extends GT_GeneratedMaterial_Renderer { GL11.glPushMatrix(); Fluid fluid = fluidStack.getFluid(); - applyEffect(type, GT_Util.getRGBaArray(fluid.getColor()), true); + applyEffect(type, GTUtil.getRGBaArray(fluid.getColor()), true); TextureUtils.bindAtlas(fluid.getSpriteNumber()); GL11.glDepthFunc(GL11.GL_EQUAL); @@ -124,7 +124,7 @@ public class TranscendentMetalRenderer extends GT_GeneratedMaterial_Renderer { GL11.glTranslatef(0.5f, 0.5f, 0.0f); } - GL11.glRotatef((GT_Mod.gregtechproxy.getAnimationTicks() * 3.5f) % 360, 0.3f, 0.5f, 0.2f); + GL11.glRotatef((GTMod.gregtechproxy.getAnimationTicks() * 3.5f) % 360, 0.3f, 0.5f, 0.2f); GL11.glRotatef(180, 0.5f, 0.0f, 0.0f); if (type.equals(IItemRenderer.ItemRenderType.INVENTORY)) { diff --git a/src/main/java/gregtech/common/render/items/UniversiumRenderer.java b/src/main/java/gregtech/common/render/items/UniversiumRenderer.java index 92b86071cf..ecea6956de 100644 --- a/src/main/java/gregtech/common/render/items/UniversiumRenderer.java +++ b/src/main/java/gregtech/common/render/items/UniversiumRenderer.java @@ -22,10 +22,10 @@ import codechicken.lib.render.TextureUtils; import fox.spiteful.avaritia.render.CosmicRenderShenanigans; import gregtech.api.enums.ItemList; import gregtech.api.interfaces.IGT_ItemWithMaterialRenderer; -import gregtech.common.render.GT_RenderUtil; +import gregtech.common.render.GTRenderUtil; @SuppressWarnings("RedundantLabeledSwitchRuleCodeBlock") -public class UniversiumRenderer extends GT_GeneratedMaterial_Renderer { +public class UniversiumRenderer extends GeneratedMaterialRenderer { private static final float cosmicOpacity = 2.5f; @@ -112,7 +112,7 @@ public class UniversiumRenderer extends GT_GeneratedMaterial_Renderer { mc.getTextureManager() .bindTexture(resourcelocation); } else { - GT_RenderUtil.renderItem(type, tIcon); + GTRenderUtil.renderItem(type, tIcon); } GL11.glEnable(GL11.GL_BLEND); @@ -133,7 +133,7 @@ public class UniversiumRenderer extends GT_GeneratedMaterial_Renderer { GL11.glColor4d(1, 1, 1, 1); // Draw cosmic overlay - GT_RenderUtil.renderItem(type, tIcon); + GTRenderUtil.renderItem(type, tIcon); CosmicRenderShenanigans.releaseShader(); CosmicRenderShenanigans.inventoryRender = false; @@ -141,7 +141,7 @@ public class UniversiumRenderer extends GT_GeneratedMaterial_Renderer { GL11.glEnable(GL12.GL_RESCALE_NORMAL); } else { // RENDER ITEM - GT_RenderUtil.renderItem(type, tIcon); + GTRenderUtil.renderItem(type, tIcon); int program = GL11.glGetInteger(GL20.GL_CURRENT_PROGRAM); @@ -151,7 +151,7 @@ public class UniversiumRenderer extends GT_GeneratedMaterial_Renderer { CosmicRenderShenanigans.useShader(); // RENDER COSMIC OVERLAY - GT_RenderUtil.renderItem(type, tIcon); + GTRenderUtil.renderItem(type, tIcon); CosmicRenderShenanigans.releaseShader(); GL11.glDepthFunc(GL11.GL_LEQUAL); -- cgit