aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common/render/items/CosmicNeutroniumRenderer.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/common/render/items/CosmicNeutroniumRenderer.java')
-rw-r--r--src/main/java/gregtech/common/render/items/CosmicNeutroniumRenderer.java112
1 files changed, 112 insertions, 0 deletions
diff --git a/src/main/java/gregtech/common/render/items/CosmicNeutroniumRenderer.java b/src/main/java/gregtech/common/render/items/CosmicNeutroniumRenderer.java
new file mode 100644
index 0000000000..5a9cda6559
--- /dev/null
+++ b/src/main/java/gregtech/common/render/items/CosmicNeutroniumRenderer.java
@@ -0,0 +1,112 @@
+package gregtech.common.render.items;
+
+import static gregtech.common.render.GT_RenderUtil.colorGTItem;
+
+import com.gtnewhorizons.modularui.api.math.Pos2d;
+import gregtech.api.enums.Textures;
+import gregtech.common.render.GT_RenderUtil;
+import net.minecraft.client.renderer.ItemRenderer;
+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 org.lwjgl.opengl.GL11;
+import org.lwjgl.opengl.GL12;
+
+public class CosmicNeutroniumRenderer extends GT_GeneratedMaterial_Renderer {
+
+ // spotless:off
+ private static final Pos2d point0 = new Pos2d(0 - 10, 0 - 10);
+ private static final Pos2d point1 = new Pos2d(17 + 10, 0 - 10);
+ private static final Pos2d point2 = new Pos2d(17 + 10, 17 + 10);
+ private static final Pos2d point3 = new Pos2d(0 - 10, 17 + 10);
+ // spotless:on
+
+ private void drawHalo(ItemRenderType type) {
+ // Because when this class is instantiated, making this a static field will cause it to set to null.
+ final IIcon haloFuzzy = Textures.ItemIcons.HALO_FUZZY.getIcon();
+
+ if (haloFuzzy == null) {
+ return;
+ }
+
+ GL11.glPushMatrix();
+
+ // Ideally this magic haloColour number should scale depending on the # of transparent pixels,
+ // but I'm not sure how to determine this with OpenGL.
+ // This is from Avaritia code, but modified to untangle the interfaces.
+ int haloColour = 0x4DFFFFFF;
+ float ca = (float) (haloColour >> 24 & 255) / 255.0F;
+ float cr = (float) (0x99FFFFFF >> 16 & 255) / 255.0F;
+ float cg = (float) (0x99FFFFFF >> 8 & 255) / 255.0F;
+ float cb = (float) (0x99FFFFFF & 255) / 255.0F;
+ GL11.glColor4f(cr, cg, cb, ca);
+
+ // spotless:off
+ // For those following in my footsteps, this may be of use - Colen 25th dec 2022.
+ // http://greyminecraftcoder.blogspot.com/2013/08/the-tessellator.html
+
+ Tessellator t = Tessellator.instance;
+
+ if (type.equals(IItemRenderer.ItemRenderType.INVENTORY)) {
+ t.startDrawingQuads();
+ t.addVertexWithUV(point0.x, point0.y, 0, haloFuzzy.getMinU(), haloFuzzy.getMinV());
+ t.addVertexWithUV(point3.x, point3.y, 0, haloFuzzy.getMinU(), haloFuzzy.getMaxV());
+ t.addVertexWithUV(point2.x, point2.y, 0, haloFuzzy.getMaxU(), haloFuzzy.getMaxV());
+ t.addVertexWithUV(point1.x, point1.y, 0, haloFuzzy.getMaxU(), haloFuzzy.getMinV());
+ t.draw();
+ }
+
+ GL11.glPopMatrix();
+ }
+
+ @Override
+ public void renderRegularItem(ItemRenderType type, ItemStack item, IIcon icon, boolean shouldModulateColor) {
+
+ RenderItem r = RenderItem.getInstance();
+
+ GL11.glPushMatrix();
+
+ if (type.equals(IItemRenderer.ItemRenderType.INVENTORY)) {
+ GL11.glEnable(GL11.GL_BLEND);
+ GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
+ GL11.glDisable(GL11.GL_ALPHA_TEST);
+ GL11.glDisable(GL11.GL_DEPTH_TEST);
+ }
+
+ drawHalo(type);
+
+ //spotless:on
+ {
+ // Draw actual cosmic Nt item.
+ GL11.glPushMatrix();
+
+ colorGTItem(item);
+
+ if (type.equals(IItemRenderer.ItemRenderType.INVENTORY)) {
+ GT_RenderUtil.renderItemIcon(icon, 16.0D, 0.001D, 0.0F, 0.0F, -1.0F);
+ } else {
+ GL11.glEnable(GL11.GL_DEPTH_TEST);
+ ItemRenderer.renderItemIn2D(
+ Tessellator.instance,
+ icon.getMaxU(),
+ icon.getMinV(),
+ icon.getMinU(),
+ icon.getMaxV(),
+ icon.getIconWidth(),
+ icon.getIconHeight(),
+ 0.0625F);
+ }
+ GL11.glPopMatrix();
+ }
+
+ // GL11.glEnable(GL11.GL_ALPHA_TEST);
+ GL11.glEnable(GL12.GL_RESCALE_NORMAL);
+ GL11.glEnable(GL11.GL_DEPTH_TEST);
+
+ r.renderWithColor = true;
+
+ GL11.glPopMatrix();
+ }
+}