From 3b938c5873180497d11bef5607d5032cc12db660 Mon Sep 17 00:00:00 2001 From: Boblet Date: Thu, 16 Dec 2021 17:00:08 +0100 Subject: [PATCH] funky xray marker renderer thing --- .../com/hbm/main/ModEventHandlerClient.java | 2 + .../com/hbm/render/util/RenderOverhead.java | 86 ++++++++++++++++++ .../hbm/textures/items/ball_dynamite.png | Bin 0 -> 308 bytes .../assets/hbm/textures/items/ball_tnt.png | Bin 0 -> 283 bytes .../assets/hbm/textures/items/clay_ball.png | Bin 0 -> 177 bytes .../assets/hbm/textures/items/ingot_c4.png | Bin 0 -> 280 bytes 6 files changed, 88 insertions(+) create mode 100644 src/main/resources/assets/hbm/textures/items/ball_dynamite.png create mode 100644 src/main/resources/assets/hbm/textures/items/ball_tnt.png create mode 100644 src/main/resources/assets/hbm/textures/items/clay_ball.png create mode 100644 src/main/resources/assets/hbm/textures/items/ingot_c4.png diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 047e62cc9..ceedd0ab9 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -755,6 +755,8 @@ public class ModEventHandlerClient { } GL11.glPopMatrix(); + + RenderOverhead.renderMarkers(event.partialTicks); if(ArmorFSB.hasFSBArmor(player)) { ItemStack plate = player.inventory.armorInventory[2]; diff --git a/src/main/java/com/hbm/render/util/RenderOverhead.java b/src/main/java/com/hbm/render/util/RenderOverhead.java index 8352163f3..637b4cfb5 100644 --- a/src/main/java/com/hbm/render/util/RenderOverhead.java +++ b/src/main/java/com/hbm/render/util/RenderOverhead.java @@ -1,7 +1,13 @@ package com.hbm.render.util; +import java.util.HashMap; +import java.util.Map.Entry; + import org.lwjgl.opengl.GL11; +import com.hbm.util.Tuple.Pair; +import com.hbm.util.Tuple.Triplet; + import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.renderer.OpenGlHelper; @@ -97,6 +103,86 @@ public class RenderOverhead { } } + public static final HashMap, Pair> markers = new HashMap(); + + public static void renderMarkers(float partialTicks) { + + if(markers.isEmpty()) + return; + + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + double x = player.prevPosX + (player.posX - player.prevPosX) * partialTicks; + double y = player.prevPosY + (player.posY - player.prevPosY) * partialTicks; + double z = player.prevPosZ + (player.posZ - player.prevPosZ) * partialTicks; + + GL11.glPushMatrix(); + GL11.glDisable(GL11.GL_COLOR_MATERIAL); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_POINT_SMOOTH); + GL11.glEnable(GL11.GL_BLEND); + GL11.glDisable(GL11.GL_DEPTH_TEST); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA,GL11.GL_ONE_MINUS_SRC_ALPHA); + + Tessellator tess = Tessellator.instance; + tess.startDrawing(GL11.GL_LINES); + + for(Entry, Pair> entry : markers.entrySet()) { + Triplet pos = entry.getKey(); + Pair pars = entry.getValue(); + + int pX = pos.getX(); + int pY = pos.getY(); + int pZ = pos.getZ(); + + int color = pars.getValue(); + double[] bounds = pars.getKey(); + double minX = bounds[0]; + double minY = bounds[1]; + double minZ = bounds[2]; + double maxX = bounds[3]; + double maxY = bounds[4]; + double maxZ = bounds[5]; + + tess.setColorOpaque_I(color); + tess.addVertex(pX + minX - x, pY + maxY - y, pZ + minZ - z); + tess.addVertex(pX + minX - x, pY + minY - y, pZ + minZ - z); + tess.addVertex(pX + minX - x, pY + maxY - y, pZ + minZ - z); + tess.addVertex(pX + maxX - x, pY + maxY - y, pZ + minZ - z); + tess.addVertex(pX + maxX - x, pY + maxY - y, pZ + minZ - z); + tess.addVertex(pX + maxX - x, pY + minY - y, pZ + minZ - z); + tess.addVertex(pX + minX - x, pY + minY - y, pZ + minZ - z); + tess.addVertex(pX + maxX - x, pY + minY - y, pZ + minZ - z); + tess.addVertex(pX + maxX - x, pY + minY - y, pZ + minZ - z); + tess.addVertex(pX + maxX - x, pY + minY - y, pZ + maxZ - z); + tess.addVertex(pX + maxX - x, pY + maxY - y, pZ + maxZ - z); + tess.addVertex(pX + maxX - x, pY + maxY - y, pZ + minZ - z); + tess.addVertex(pX + maxX - x, pY + maxY - y, pZ + maxZ - z); + tess.addVertex(pX + maxX - x, pY + minY - y, pZ + maxZ - z); + tess.addVertex(pX + minX - x, pY + maxY - y, pZ + minZ - z); + tess.addVertex(pX + minX - x, pY + maxY - y, pZ + maxZ - z); + tess.addVertex(pX + minX - x, pY + maxY - y, pZ + maxZ - z); + tess.addVertex(pX + minX - x, pY + minY - y, pZ + maxZ - z); + tess.addVertex(pX + minX - x, pY + maxY - y, pZ + maxZ - z); + tess.addVertex(pX + maxX - x, pY + maxY - y, pZ + maxZ - z); + tess.addVertex(pX + minX - x, pY + minY - y, pZ + maxZ - z); + tess.addVertex(pX + maxX - x, pY + minY - y, pZ + maxZ - z); + tess.addVertex(pX + minX - x, pY + minY - y, pZ + minZ - z); + tess.addVertex(pX + minX - x, pY + minY - y, pZ + maxZ - z); + } + + tess.draw(); + + tess.setColorOpaque_F(1F, 1F, 1F); + + GL11.glEnable(GL11.GL_COLOR_MATERIAL); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_POINT_SMOOTH); + GL11.glDisable(GL11.GL_BLEND); + GL11.glEnable(GL11.GL_DEPTH_TEST); + GL11.glPopMatrix(); + } + public static void renderThermalSight(float partialTicks) { EntityPlayer player = Minecraft.getMinecraft().thePlayer; diff --git a/src/main/resources/assets/hbm/textures/items/ball_dynamite.png b/src/main/resources/assets/hbm/textures/items/ball_dynamite.png new file mode 100644 index 0000000000000000000000000000000000000000..c13696d67de3909228654683137d44c0ba791e56 GIT binary patch literal 308 zcmV-40n7f0P)+ z+`(%f0K8Hf(9$p~|E7-es-4++Z{}$R{x_01G)Wwq-)j0@M1Uw-lV=%#0r=jXoO*2| zk;I`{t-kO)-{#&T><`C=h+8K|(b~pZ7ie8DnNCTSV!4=8x72Dux|gTuf)$YNS{D_v z#Iqo@k*)`vmju9I0DUEXb9AW1Z_w3H}C>W0cWa{ehV%D00004V=vo|yZ5d4mrXk{IYRt;lLANXJ8h=YyJuX! z+3j4TC9Q3`=*kI0p)IlA)0X~F*6mB!;IEe1UwRtw`@%~Yrtc~k|yAIR)N=m*}hQJKQ8wQTd6LQ_Z zG4=3Y>bWj3LBT`lW>`wIhZ)07)eR0Ul1(-*HYn$7;30IzuZg0j*% zg;VM$6iysIU-0@SvxqNHqV2P|?2R)Wi440GzsK1fT*WDwz;S@*=eO6^e!k7z3=E&E WVmD2D`zHtJH3m;tKbLh*2~7aC;d4Cz literal 0 HcmV?d00001