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 000000000..c13696d67 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ball_dynamite.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ball_tnt.png b/src/main/resources/assets/hbm/textures/items/ball_tnt.png new file mode 100644 index 000000000..4caf80657 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ball_tnt.png differ diff --git a/src/main/resources/assets/hbm/textures/items/clay_ball.png b/src/main/resources/assets/hbm/textures/items/clay_ball.png new file mode 100644 index 000000000..5103d6cc4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/clay_ball.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ingot_c4.png b/src/main/resources/assets/hbm/textures/items/ingot_c4.png new file mode 100644 index 000000000..fc415705b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ingot_c4.png differ