aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common
diff options
context:
space:
mode:
authorTimeConqueror <timeconqueror999@gmail.com>2021-08-12 05:07:46 +0300
committerTimeConqueror <timeconqueror999@gmail.com>2021-08-12 05:07:46 +0300
commitdaa13f1cf8e5e0af0b6e4e92d1889ef9f642b0aa (patch)
tree6e0b24bf9d3eb372dac68f309acd5a2a2381e701 /src/main/java/gregtech/common
parent53df8347026d0b66acffe0c6285c97bbafdf4834 (diff)
downloadGT5-Unofficial-daa13f1cf8e5e0af0b6e4e92d1889ef9f642b0aa.tar.gz
GT5-Unofficial-daa13f1cf8e5e0af0b6e4e92d1889ef9f642b0aa.tar.bz2
GT5-Unofficial-daa13f1cf8e5e0af0b6e4e92d1889ef9f642b0aa.zip
Added liquid rendering inside Large Fluid Pipe
Diffstat (limited to 'src/main/java/gregtech/common')
-rw-r--r--src/main/java/gregtech/common/render/GT_MetaGenerated_Item_Renderer.java76
1 files changed, 76 insertions, 0 deletions
diff --git a/src/main/java/gregtech/common/render/GT_MetaGenerated_Item_Renderer.java b/src/main/java/gregtech/common/render/GT_MetaGenerated_Item_Renderer.java
index f40443096e..54eafccc3a 100644
--- a/src/main/java/gregtech/common/render/GT_MetaGenerated_Item_Renderer.java
+++ b/src/main/java/gregtech/common/render/GT_MetaGenerated_Item_Renderer.java
@@ -1,8 +1,10 @@
package gregtech.common.render;
+import gregtech.api.enums.ItemList;
import gregtech.api.interfaces.IIconContainer;
import gregtech.api.items.GT_MetaGenerated_Item;
import gregtech.api.util.GT_Utility;
+import gregtech.loaders.ExtraIcons;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.ItemRenderer;
import net.minecraft.client.renderer.Tessellator;
@@ -15,6 +17,10 @@ import net.minecraftforge.client.MinecraftForgeClient;
import net.minecraftforge.fluids.FluidStack;
import org.lwjgl.opengl.GL11;
+import javax.annotation.Nullable;
+
+import static gregtech.api.enums.ItemList.*;
+
public class GT_MetaGenerated_Item_Renderer implements IItemRenderer {
public GT_MetaGenerated_Item_Renderer() {
for (GT_MetaGenerated_Item item : GT_MetaGenerated_Item.sInstances.values()) {
@@ -137,6 +143,12 @@ public class GT_MetaGenerated_Item_Renderer implements IItemRenderer {
} else {
tIcon = aItem.mIconList[(aMetaData - aItem.mOffset)][0];
}
+
+ 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);
if (type.equals(IItemRenderer.ItemRenderType.INVENTORY)) {
@@ -147,4 +159,68 @@ public class GT_MetaGenerated_Item_Renderer implements IItemRenderer {
}
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 static void renderLargeFluidCellExtraParts(IItemRenderer.ItemRenderType type, ItemList item, ItemStack stack) {
+
+ IIcon inner;
+ if (item == Large_Fluid_Cell_Steel) inner = ExtraIcons.steelLargeCellInner;
+ else if (item == Large_Fluid_Cell_Aluminium) inner = ExtraIcons.aluminiumLargeCellInner;
+ else if (item == Large_Fluid_Cell_StainlessSteel) inner = ExtraIcons.stainlesssteelLargeCellInner;
+ else if (item == Large_Fluid_Cell_Titanium) inner = ExtraIcons.titaniumLargeCellInner;
+ else if (item == Large_Fluid_Cell_TungstenSteel) inner = ExtraIcons.tungstensteelLargeCellInner;
+ else if (item == Large_Fluid_Cell_Iridium) inner = ExtraIcons.iridiumLargeCellInner;
+ else if (item == Large_Fluid_Cell_Osmium) inner = ExtraIcons.osmiumLargeCellInner;
+ else if (item == Large_Fluid_Cell_Chrome) inner = ExtraIcons.chromiumLargeCellInner;
+ else inner = ExtraIcons.neutroniumLargeCellInner;
+
+ // Empty inner side
+ Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationItemsTexture);
+ if (type.equals(ItemRenderType.INVENTORY)) {
+ GT_RenderUtil.renderItemIcon(inner, 16.0D, -0.001D, 0.0F, 0.0F, -1.0F);
+ } else {
+ ItemRenderer.renderItemIn2D(Tessellator.instance, inner.getMaxU(), inner.getMinV(), inner.getMinU(), inner.getMaxV(), inner.getIconWidth(), inner.getIconHeight(), 0.0625F);
+ }
+
+ FluidStack fluidStack = GT_Utility.getFluidForFilledItem(stack, true);
+
+ if (fluidStack != null && fluidStack.getFluid() != null) {
+ IIcon fluidIcon = fluidStack.getFluid().getIcon(fluidStack);
+ int fluidColor = fluidStack.getFluid().getColor(fluidStack);
+
+ Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationBlocksTexture);
+ 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);
+ if (type.equals(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.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();
+ }
}