package ehacks.mod.modulesystem.classes.vanilla; import ehacks.mod.api.Module; import ehacks.mod.wrapper.ModuleCategory; import ehacks.mod.wrapper.Wrapper; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MovingObjectPosition; import net.minecraftforge.client.event.RenderWorldLastEvent; import org.lwjgl.opengl.GL11; public class BlockOverlay extends Module { public BlockOverlay() { super(ModuleCategory.RENDER); } @Override public String getName() { return "BlockOverlay"; } @Override public String getDescription() { return "Shows AABB of selected block"; } @Override public void onWorldRender(RenderWorldLastEvent event) { MovingObjectPosition position = Wrapper.INSTANCE.mc().objectMouseOver; Block block = Wrapper.INSTANCE.world().getBlock(position.blockX, position.blockY, position.blockZ); if (block.getMaterial() != Material.air) { this.drawESP(0.0f); } } private void drawESP(float f) { Wrapper.INSTANCE.mc().entityRenderer.disableLightmap(f); this.drawESP(Wrapper.INSTANCE.mc().objectMouseOver); Wrapper.INSTANCE.mc().entityRenderer.enableLightmap(f); } private void drawESP(MovingObjectPosition position) { GL11.glPushMatrix(); GL11.glEnable(3042); GL11.glBlendFunc(770, 771); GL11.glLineWidth(1.0f); GL11.glDisable(2896); GL11.glDisable(3553); GL11.glEnable(2848); GL11.glDisable(2929); GL11.glDepthMask(false); double blockX = RenderManager.renderPosX; double blockY = RenderManager.renderPosY; double blockZ = RenderManager.renderPosZ; Block block = Wrapper.INSTANCE.world().getBlock(position.blockX, position.blockY, position.blockZ); GL11.glColor4f(0.0f, 0.0f, 0.0f, 0.2f); BlockOverlay.drawOutlinedBoundingBox(block.getSelectedBoundingBoxFromPool(Wrapper.INSTANCE.world(), position.blockX, position.blockY, position.blockZ).expand(0.002, 0.002, 0.002).getOffsetBoundingBox(-blockX, -blockY, -blockZ)); GL11.glColor4f(0.0f, 0.4f, 0.0f, 0.2f); BlockOverlay.drawBoundingBox(block.getSelectedBoundingBoxFromPool(Wrapper.INSTANCE.world(), position.blockX, position.blockY, position.blockZ).expand(0.002, 0.002, 0.002).getOffsetBoundingBox(-blockX, -blockY, -blockZ)); GL11.glLineWidth(1.0f); GL11.glDisable(2848); GL11.glEnable(3553); GL11.glEnable(2896); GL11.glEnable(2929); GL11.glDepthMask(true); GL11.glDisable(3042); GL11.glPopMatrix(); } private static void drawOutlinedBoundingBox(AxisAlignedBB par1AxisAlignedBB) { Tessellator var2 = Tessellator.instance; var2.startDrawing(3); var2.addVertex(par1AxisAlignedBB.minX, par1AxisAlignedBB.minY, par1AxisAlignedBB.minZ); var2.addVertex(par1AxisAlignedBB.maxX, par1AxisAlignedBB.minY, par1AxisAlignedBB.minZ); var2.addVertex(par1AxisAlignedBB.maxX, par1AxisAlignedBB.minY, par1AxisAlignedBB.maxZ); var2.addVertex(par1AxisAlignedBB.minX, par1AxisAlignedBB.minY, par1AxisAlignedBB.maxZ); var2.addVertex(par1AxisAlignedBB.minX, par1AxisAlignedBB.minY, par1AxisAlignedBB.minZ); var2.draw(); var2.startDrawing(3); var2.addVertex(par1AxisAlignedBB.minX, par1AxisAlignedBB.maxY, par1AxisAlignedBB.minZ); var2.addVertex(par1AxisAlignedBB.maxX, par1AxisAlignedBB.maxY, par1AxisAlignedBB.minZ); var2.addVertex(par1AxisAlignedBB.maxX, par1AxisAlignedBB.maxY, par1AxisAlignedBB.maxZ); var2.addVertex(par1AxisAlignedBB.minX, par1AxisAlignedBB.maxY, par1AxisAlignedBB.maxZ); var2.addVertex(par1AxisAlignedBB.minX, par1AxisAlignedBB.maxY, par1AxisAlignedBB.minZ); var2.draw(); var2.startDrawing(1); var2.addVertex(par1AxisAlignedBB.minX, par1AxisAlignedBB.minY, par1AxisAlignedBB.minZ); var2.addVertex(par1AxisAlignedBB.minX, par1AxisAlignedBB.maxY, par1AxisAlignedBB.minZ); var2.addVertex(par1AxisAlignedBB.maxX, par1AxisAlignedBB.minY, par1AxisAlignedBB.minZ); var2.addVertex(par1AxisAlignedBB.maxX, par1AxisAlignedBB.maxY, par1AxisAlignedBB.minZ); var2.addVertex(par1AxisAlignedBB.maxX, par1AxisAlignedBB.minY, par1AxisAlignedBB.maxZ); var2.addVertex(par1AxisAlignedBB.maxX, par1AxisAlignedBB.maxY, par1AxisAlignedBB.maxZ); var2.addVertex(par1AxisAlignedBB.minX, par1AxisAlignedBB.minY, par1AxisAlignedBB.maxZ); var2.addVertex(par1AxisAlignedBB.minX, par1AxisAlignedBB.maxY, par1AxisAlignedBB.maxZ); var2.draw(); var2.startDrawing(1); var2.addVertex(par1AxisAlignedBB.minX, par1AxisAlignedBB.minY, par1AxisAlignedBB.minZ); var2.addVertex(par1AxisAlignedBB.minX, par1AxisAlignedBB.maxY, par1AxisAlignedBB.minZ); var2.addVertex(par1AxisAlignedBB.maxX, par1AxisAlignedBB.minY, par1AxisAlignedBB.minZ); var2.addVertex(par1AxisAlignedBB.maxX, par1AxisAlignedBB.maxY, par1AxisAlignedBB.minZ); var2.addVertex(par1AxisAlignedBB.maxX, par1AxisAlignedBB.minY, par1AxisAlignedBB.maxZ); var2.addVertex(par1AxisAlignedBB.maxX, par1AxisAlignedBB.maxY, par1AxisAlignedBB.maxZ); var2.addVertex(par1AxisAlignedBB.minX, par1AxisAlignedBB.minY, par1AxisAlignedBB.maxZ); var2.addVertex(par1AxisAlignedBB.minX, par1AxisAlignedBB.maxY, par1AxisAlignedBB.maxZ); var2.draw(); } private static void drawBoundingBox(AxisAlignedBB axisalignedbb) { Tessellator tessellator = Tessellator.instance; tessellator.startDrawingQuads(); tessellator.addVertex(axisalignedbb.minX, axisalignedbb.minY, axisalignedbb.minZ); tessellator.addVertex(axisalignedbb.minX, axisalignedbb.maxY, axisalignedbb.minZ); tessellator.addVertex(axisalignedbb.maxX, axisalignedbb.minY, axisalignedbb.minZ); tessellator.addVertex(axisalignedbb.maxX, axisalignedbb.maxY, axisalignedbb.minZ); tessellator.addVertex(axisalignedbb.maxX, axisalignedbb.minY, axisalignedbb.maxZ); tessellator.addVertex(axisalignedbb.maxX, axisalignedbb.maxY, axisalignedbb.maxZ); tessellator.addVertex(axisalignedbb.minX, axisalignedbb.minY, axisalignedbb.maxZ); tessellator.addVertex(axisalignedbb.minX, axisalignedbb.maxY, axisalignedbb.maxZ); tessellator.draw(); tessellator.startDrawingQuads(); tessellator.addVertex(axisalignedbb.maxX, axisalignedbb.maxY, axisalignedbb.minZ); tessellator.addVertex(axisalignedbb.maxX, axisalignedbb.minY, axisalignedbb.minZ); tessellator.addVertex(axisalignedbb.minX, axisalignedbb.maxY, axisalignedbb.minZ); tessellator.addVertex(axisalignedbb.minX, axisalignedbb.minY, axisalignedbb.minZ); tessellator.addVertex(axisalignedbb.minX, axisalignedbb.maxY, axisalignedbb.maxZ); tessellator.addVertex(axisalignedbb.minX, axisalignedbb.minY, axisalignedbb.maxZ); tessellator.addVertex(axisalignedbb.maxX, axisalignedbb.maxY, axisalignedbb.maxZ); tessellator.addVertex(axisalignedbb.maxX, axisalignedbb.minY, axisalignedbb.maxZ); tessellator.draw(); tessellator.startDrawingQuads(); tessellator.addVertex(axisalignedbb.minX, axisalignedbb.maxY, axisalignedbb.minZ); tessellator.addVertex(axisalignedbb.maxX, axisalignedbb.maxY, axisalignedbb.minZ); tessellator.addVertex(axisalignedbb.maxX, axisalignedbb.maxY, axisalignedbb.maxZ); tessellator.addVertex(axisalignedbb.minX, axisalignedbb.maxY, axisalignedbb.maxZ); tessellator.addVertex(axisalignedbb.minX, axisalignedbb.maxY, axisalignedbb.minZ); tessellator.addVertex(axisalignedbb.minX, axisalignedbb.maxY, axisalignedbb.maxZ); tessellator.addVertex(axisalignedbb.maxX, axisalignedbb.maxY, axisalignedbb.maxZ); tessellator.addVertex(axisalignedbb.maxX, axisalignedbb.maxY, axisalignedbb.minZ); tessellator.draw(); tessellator.startDrawingQuads(); tessellator.addVertex(axisalignedbb.minX, axisalignedbb.minY, axisalignedbb.minZ); tessellator.addVertex(axisalignedbb.maxX, axisalignedbb.minY, axisalignedbb.minZ); tessellator.addVertex(axisalignedbb.maxX, axisalignedbb.minY, axisalignedbb.maxZ); tessellator.addVertex(axisalignedbb.minX, axisalignedbb.minY, axisalignedbb.maxZ); tessellator.addVertex(axisalignedbb.minX, axisalignedbb.minY, axisalignedbb.minZ); tessellator.addVertex(axisalignedbb.minX, axisalignedbb.minY, axisalignedbb.maxZ); tessellator.addVertex(axisalignedbb.maxX, axisalignedbb.minY, axisalignedbb.maxZ); tessellator.addVertex(axisalignedbb.maxX, axisalignedbb.minY, axisalignedbb.minZ); tessellator.draw(); tessellator.startDrawingQuads(); tessellator.addVertex(axisalignedbb.minX, axisalignedbb.minY, axisalignedbb.minZ); tessellator.addVertex(axisalignedbb.minX, axisalignedbb.maxY, axisalignedbb.minZ); tessellator.addVertex(axisalignedbb.minX, axisalignedbb.minY, axisalignedbb.maxZ); tessellator.addVertex(axisalignedbb.minX, axisalignedbb.maxY, axisalignedbb.maxZ); tessellator.addVertex(axisalignedbb.maxX, axisalignedbb.minY, axisalignedbb.maxZ); tessellator.addVertex(axisalignedbb.maxX, axisalignedbb.maxY, axisalignedbb.maxZ); tessellator.addVertex(axisalignedbb.maxX, axisalignedbb.minY, axisalignedbb.minZ); tessellator.addVertex(axisalignedbb.maxX, axisalignedbb.maxY, axisalignedbb.minZ); tessellator.draw(); tessellator.startDrawingQuads(); tessellator.addVertex(axisalignedbb.minX, axisalignedbb.maxY, axisalignedbb.maxZ); tessellator.addVertex(axisalignedbb.minX, axisalignedbb.minY, axisalignedbb.maxZ); tessellator.addVertex(axisalignedbb.minX, axisalignedbb.maxY, axisalignedbb.minZ); tessellator.addVertex(axisalignedbb.minX, axisalignedbb.minY, axisalignedbb.minZ); tessellator.addVertex(axisalignedbb.maxX, axisalignedbb.maxY, axisalignedbb.minZ); tessellator.addVertex(axisalignedbb.maxX, axisalignedbb.minY, axisalignedbb.minZ); tessellator.addVertex(axisalignedbb.maxX, axisalignedbb.maxY, axisalignedbb.maxZ); tessellator.addVertex(axisalignedbb.maxX, axisalignedbb.minY, axisalignedbb.maxZ); tessellator.draw(); } }