diff --git a/src/main/java/com/glodblock/github/client/gui/GuiFluidTerminal.java b/src/main/java/com/glodblock/github/client/gui/GuiFluidTerminal.java index 5a6b4d9c..31209e17 100644 --- a/src/main/java/com/glodblock/github/client/gui/GuiFluidTerminal.java +++ b/src/main/java/com/glodblock/github/client/gui/GuiFluidTerminal.java @@ -10,6 +10,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; @@ -22,7 +23,9 @@ import com.glodblock.github.inventory.InventoryHandler; import com.glodblock.github.inventory.gui.GuiType; import com.glodblock.github.network.CPacketFluidUpdate; import com.glodblock.github.util.Ae2ReflectClient; +import com.glodblock.github.util.ModAndClassUtil; import com.glodblock.github.util.Util; +import com.mitchej123.hodgepodge.textures.IPatchedTextureAtlasSprite; import appeng.api.storage.ITerminalHost; import appeng.api.storage.data.IAEFluidStack; @@ -94,20 +97,26 @@ public class GuiFluidTerminal extends GuiFluidMonitor { } private void drawWidget(int posX, int posY, Fluid fluid) { + if (fluid == null) return; + IIcon icon = fluid.getIcon(); + if (icon == null) return; + + if (ModAndClassUtil.HODGEPODGE && icon instanceof IPatchedTextureAtlasSprite) { + ((IPatchedTextureAtlasSprite) icon).markNeedsAnimationUpdate(); + } + Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationBlocksTexture); GL11.glDisable(GL11.GL_LIGHTING); GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glColor3f(1, 1, 1); - if (fluid != null && fluid.getIcon() != null) { - GL11.glColor3f( - (fluid.getColor() >> 16 & 0xFF) / 255.0F, - (fluid.getColor() >> 8 & 0xFF) / 255.0F, - (fluid.getColor() & 0xFF) / 255.0F); - drawTexturedModelRectFromIcon(posX, posY, fluid.getIcon(), 16, 16); - } + GL11.glColor3f( + (fluid.getColor() >> 16 & 0xFF) / 255.0F, + (fluid.getColor() >> 8 & 0xFF) / 255.0F, + (fluid.getColor() & 0xFF) / 255.0F); + drawTexturedModelRectFromIcon(posX, posY, fluid.getIcon(), 16, 16); GL11.glEnable(GL11.GL_LIGHTING); GL11.glDisable(GL11.GL_BLEND); + GL11.glColor3f(1, 1, 1); } @Override diff --git a/src/main/java/com/glodblock/github/client/render/ItemCertusQuartzTankRender.java b/src/main/java/com/glodblock/github/client/render/ItemCertusQuartzTankRender.java index d329c771..7a687269 100644 --- a/src/main/java/com/glodblock/github/client/render/ItemCertusQuartzTankRender.java +++ b/src/main/java/com/glodblock/github/client/render/ItemCertusQuartzTankRender.java @@ -19,6 +19,8 @@ import com.glodblock.github.FluidCraft; import com.glodblock.github.client.render.tank.ModelCertusTank; import com.glodblock.github.common.tile.TileCertusQuartzTank; import com.glodblock.github.loader.ItemAndBlockHolder; +import com.glodblock.github.util.ModAndClassUtil; +import com.mitchej123.hodgepodge.textures.IPatchedTextureAtlasSprite; import cpw.mods.fml.client.registry.ClientRegistry; @@ -66,6 +68,9 @@ public class ItemCertusQuartzTankRender implements IItemRenderer { if (storedFluid != null && storedFluid.getFluid() != null) { IIcon fluidIcon = storedFluid.getFluid().getIcon(); if (fluidIcon == null) fluidIcon = FluidRegistry.LAVA.getIcon(); + if (ModAndClassUtil.HODGEPODGE && fluidIcon instanceof IPatchedTextureAtlasSprite) { + ((IPatchedTextureAtlasSprite) fluidIcon).markNeedsAnimationUpdate(); + } Tessellator tessellator = Tessellator.instance; RenderBlocks renderer = new RenderBlocks(); GL11.glScalef(1, 1, -1); diff --git a/src/main/java/com/glodblock/github/client/render/tank/FluidTankRenderer.java b/src/main/java/com/glodblock/github/client/render/tank/FluidTankRenderer.java index 585e4e14..4f016740 100644 --- a/src/main/java/com/glodblock/github/client/render/tank/FluidTankRenderer.java +++ b/src/main/java/com/glodblock/github/client/render/tank/FluidTankRenderer.java @@ -3,8 +3,11 @@ package com.glodblock.github.client.render.tank; import java.util.HashMap; import java.util.Map; +import javax.annotation.Nonnull; + import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.GLAllocation; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.init.Blocks; import net.minecraft.util.IIcon; @@ -75,7 +78,7 @@ public class FluidTankRenderer { return null; } Map cache = flowing ? flowingRenderCache : stillRenderCache; - int[] diplayLists = cache.get(fluid); + int[] diplayLists = getCachedData(fluid, cache); if (diplayLists != null) { return diplayLists; } @@ -118,4 +121,12 @@ public class FluidTankRenderer { return diplayLists; } + + private static int[] getCachedData(@Nonnull Fluid fluid, Map cache) { + IIcon icon = fluid.getIcon(); + if (icon instanceof TextureAtlasSprite sprite && sprite.hasAnimationMetadata()) { + return null; + } + return cache.get(fluid); + } } diff --git a/src/main/java/com/glodblock/github/util/RenderUtil.java b/src/main/java/com/glodblock/github/util/RenderUtil.java index 49edf57e..dac43a66 100644 --- a/src/main/java/com/glodblock/github/util/RenderUtil.java +++ b/src/main/java/com/glodblock/github/util/RenderUtil.java @@ -12,6 +12,8 @@ import net.minecraft.util.IIcon; import org.lwjgl.opengl.GL11; +import com.mitchej123.hodgepodge.textures.IPatchedTextureAtlasSprite; + import appeng.api.storage.data.IAEFluidStack; public final class RenderUtil { @@ -50,6 +52,9 @@ public final class RenderUtil { if (aeFluidStack.getStackSize() > 0 && hi > 0) { Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationBlocksTexture); IIcon fluidIcon = aeFluidStack.getFluid().getStillIcon(); + if (ModAndClassUtil.HODGEPODGE && fluidIcon instanceof IPatchedTextureAtlasSprite) { + ((IPatchedTextureAtlasSprite) fluidIcon).markNeedsAnimationUpdate(); + } GL11.glColor3f( (float) (aeFluidStack.getFluid().getColor() >> 16 & 255) / 255.0F, (float) (aeFluidStack.getFluid().getColor() >> 8 & 255) / 255.0F,