diff options
author | miozune <miozune@gmail.com> | 2023-02-18 03:09:38 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-17 19:09:38 +0100 |
commit | e64166c670b7f4e2c37e3cfffb3b4d0a0e7b9f79 (patch) | |
tree | e7a3a4b1884554973721c8417224928654ee78d1 /src/main/java/gregtech/common/render | |
parent | 61f625feacb5282bb5dcb2c0998d2adfe8a86c93 (diff) | |
download | GT5-Unofficial-e64166c670b7f4e2c37e3cfffb3b4d0a0e7b9f79.tar.gz GT5-Unofficial-e64166c670b7f4e2c37e3cfffb3b4d0a0e7b9f79.tar.bz2 GT5-Unofficial-e64166c670b7f4e2c37e3cfffb3b4d0a0e7b9f79.zip |
Add Hodgepodge compat (#1752)
* Add Hodgepodge compat
* cleanup
* Fix for fluid inside large cell
Diffstat (limited to 'src/main/java/gregtech/common/render')
6 files changed, 31 insertions, 89 deletions
diff --git a/src/main/java/gregtech/common/render/CosmicItemRendererGT.java b/src/main/java/gregtech/common/render/CosmicItemRendererGT.java deleted file mode 100644 index cea0fd684f..0000000000 --- a/src/main/java/gregtech/common/render/CosmicItemRendererGT.java +++ /dev/null @@ -1,74 +0,0 @@ -package gregtech.common.render; - -import java.util.*; - -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.MinecraftForgeClient; -import net.minecraftforge.oredict.OreDictionary; - -import fox.spiteful.avaritia.render.CosmicItemRenderer; - -public class CosmicItemRendererGT extends CosmicItemRenderer { - - private static CosmicItemRendererGT sInstance = null; - public static HashMap<Item, List<Integer>> sCosmicItemRendererGtMapping = new HashMap<Item, List<Integer>>(); - private static boolean sInit = false; - - public static void registerItemWithMeta(Item aItem, List<Integer> aMeta) { - if (aItem != null) { - if (aMeta == null || aMeta.isEmpty()) { - ArrayList<Integer> aWildCard = new ArrayList<Integer>(); - aWildCard.add(OreDictionary.WILDCARD_VALUE); - sCosmicItemRendererGtMapping.put(aItem, aWildCard); - } else { - sCosmicItemRendererGtMapping.put(aItem, aMeta); - } - } - } - - public static void registerItemWithMeta(Item aItem, int aMeta) { - if (aItem != null) { - ArrayList<Integer> aSingleMeta = new ArrayList<Integer>(); - aSingleMeta.add(aMeta); - sCosmicItemRendererGtMapping.put(aItem, aSingleMeta); - } - } - - public static void init() { - if (sInstance == null) { - sInstance = new CosmicItemRendererGT(); - } - if (!sInit) { - for (Item aItem : sCosmicItemRendererGtMapping.keySet()) { - MinecraftForgeClient.registerItemRenderer(aItem, sInstance); - } - sInit = true; - } - } - - private boolean isSupported(ItemStack aStack) { - List<Integer> aMeta = sCosmicItemRendererGtMapping.get(aStack.getItem()); - if (aMeta != null && !aMeta.isEmpty()) { - - for (int meta : aMeta) { - if (meta == OreDictionary.WILDCARD_VALUE) { - return true; - } else { - if (aStack.getItemDamage() == meta) { - return true; - } - } - } - } - return false; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - if (!isSupported(item)) { - return; - } - super.renderItem(type, item, data); - } -} diff --git a/src/main/java/gregtech/common/render/items/CosmicNeutroniumRenderer.java b/src/main/java/gregtech/common/render/items/CosmicNeutroniumRenderer.java index 5a67abf85a..125c692353 100644 --- a/src/main/java/gregtech/common/render/items/CosmicNeutroniumRenderer.java +++ b/src/main/java/gregtech/common/render/items/CosmicNeutroniumRenderer.java @@ -34,6 +34,7 @@ public class CosmicNeutroniumRenderer extends GT_GeneratedMaterial_Renderer { return; } + markNeedsAnimationUpdate(haloFuzzy); GL11.glPushMatrix(); // Ideally this magic haloColour number should scale depending on the # of transparent pixels, 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 index 7559580f96..436b9c4422 100644 --- a/src/main/java/gregtech/common/render/items/GT_GeneratedItem_Renderer.java +++ b/src/main/java/gregtech/common/render/items/GT_GeneratedItem_Renderer.java @@ -16,6 +16,9 @@ import net.minecraftforge.fluids.FluidStack; import org.lwjgl.opengl.GL11; +import com.mitchej123.hodgepodge.textures.IPatchedTextureAtlasSprite; + +import gregtech.api.GregTech_API; import gregtech.api.enums.ItemList; import gregtech.api.enums.Textures; import gregtech.api.items.GT_MetaGenerated_Item; @@ -71,6 +74,8 @@ public class GT_GeneratedItem_Renderer implements IItemRenderer { if (tIcon == null) tIcon = Textures.ItemIcons.RENDERING_ERROR.getIcon(); + markNeedsAnimationUpdate(tIcon); + ItemList largeFluidCell = getLargeFluidCell(aStack); if (largeFluidCell != null) { renderLargeFluidCellExtraParts(type, largeFluidCell, aStack); @@ -109,8 +114,7 @@ public class GT_GeneratedItem_Renderer implements IItemRenderer { return null; } - private static void renderLargeFluidCellExtraParts(IItemRenderer.ItemRenderType type, ItemList item, - ItemStack stack) { + private void renderLargeFluidCellExtraParts(IItemRenderer.ItemRenderType type, ItemList item, ItemStack stack) { IIcon inner; if (item == Large_Fluid_Cell_Steel) inner = ExtraIcons.steelLargeCellInner; @@ -125,6 +129,7 @@ public class GT_GeneratedItem_Renderer implements IItemRenderer { // Empty inner side Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationItemsTexture); + markNeedsAnimationUpdate(inner); if (type.equals(ItemRenderType.INVENTORY)) { GT_RenderUtil.renderItemIcon(inner, 16.0D, -0.001D, 0.0F, 0.0F, -1.0F); } else { @@ -146,6 +151,7 @@ public class GT_GeneratedItem_Renderer implements IItemRenderer { 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); @@ -174,4 +180,10 @@ public class GT_GeneratedItem_Renderer implements IItemRenderer { return internal.getItem() == stack.getItem() && internal.getItemDamage() == stack.getItemDamage(); } + + 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/GT_GeneratedMaterial_Renderer.java b/src/main/java/gregtech/common/render/items/GT_GeneratedMaterial_Renderer.java index 46d6a13469..e0ff69e216 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 @@ -11,6 +11,10 @@ import net.minecraftforge.fluids.FluidStack; import org.lwjgl.opengl.GL11; import codechicken.lib.render.TextureUtils; + +import com.mitchej123.hodgepodge.textures.IPatchedTextureAtlasSprite; + +import gregtech.api.GregTech_API; import gregtech.api.interfaces.IIconContainer; import gregtech.api.items.GT_MetaGenerated_Item; import gregtech.api.util.GT_Utility; @@ -36,7 +40,7 @@ public class GT_GeneratedMaterial_Renderer implements IItemRenderer { * {@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) { @@ -63,12 +67,14 @@ public class GT_GeneratedMaterial_Renderer implements IItemRenderer { 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); } @@ -77,6 +83,7 @@ public class GT_GeneratedMaterial_Renderer implements IItemRenderer { if (tOverlay != null) { 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 { @@ -140,4 +147,10 @@ public class GT_GeneratedMaterial_Renderer implements IItemRenderer { } GL11.glDepthFunc(GL11.GL_LEQUAL); } + + 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/GT_MetaGenerated_Item_Renderer.java b/src/main/java/gregtech/common/render/items/GT_MetaGenerated_Item_Renderer.java index b255fbab9c..19b14e7d6d 100644 --- 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 @@ -16,7 +16,7 @@ import gregtech.api.util.GT_Utility; public class GT_MetaGenerated_Item_Renderer implements IItemRenderer { - private final IItemRenderer mItemRenderer = new GT_GeneratedItem_Renderer();; + private final IItemRenderer mItemRenderer = new GT_GeneratedItem_Renderer(); private final IItemRenderer mMaterialRenderer = new GT_GeneratedMaterial_Renderer(); public GT_MetaGenerated_Item_Renderer() { diff --git a/src/main/java/gregtech/common/render/items/UniversiumRenderer.java b/src/main/java/gregtech/common/render/items/UniversiumRenderer.java index d7b1aced36..ff5171b998 100644 --- a/src/main/java/gregtech/common/render/items/UniversiumRenderer.java +++ b/src/main/java/gregtech/common/render/items/UniversiumRenderer.java @@ -267,17 +267,7 @@ public class UniversiumRenderer extends GT_GeneratedMaterial_Renderer { } break; } - case EQUIPPED: { - EntityLivingBase ent = (EntityLivingBase) (data[1]); - if (ent != null) { - CosmicRenderStuffs.setLightFromLocation( - ent.worldObj, - MathHelper.floor_double(ent.posX), - MathHelper.floor_double(ent.posY), - MathHelper.floor_double(ent.posZ)); - } - break; - } + case EQUIPPED: case EQUIPPED_FIRST_PERSON: { EntityLivingBase ent = (EntityLivingBase) (data[1]); if (ent != null) { |