From a193bdca479ae7531da6f034c597335918b52699 Mon Sep 17 00:00:00 2001 From: Lorenz Date: Sat, 9 Jul 2022 04:18:07 +0200 Subject: added dungeon boss damage indicator --- src/main/java/at/lorenz/mod/utils/LorenzUtils.kt | 5 +++ src/main/java/at/lorenz/mod/utils/RenderUtils.kt | 43 ++++++++++++++++++++++++ 2 files changed, 48 insertions(+) (limited to 'src/main/java/at/lorenz/mod/utils') diff --git a/src/main/java/at/lorenz/mod/utils/LorenzUtils.kt b/src/main/java/at/lorenz/mod/utils/LorenzUtils.kt index 2295fa513..b36fbb94e 100644 --- a/src/main/java/at/lorenz/mod/utils/LorenzUtils.kt +++ b/src/main/java/at/lorenz/mod/utils/LorenzUtils.kt @@ -2,6 +2,8 @@ package at.lorenz.mod.utils import at.lorenz.mod.misc.HypixelData import net.minecraft.client.Minecraft +import net.minecraft.entity.EntityLivingBase +import net.minecraft.entity.SharedMonsterAttributes import net.minecraft.util.ChatComponentText import org.intellij.lang.annotations.Language import java.text.SimpleDateFormat @@ -109,4 +111,7 @@ object LorenzUtils { } fun String.between(start: String, end: String): String = this.split(start, end)[1] + + val EntityLivingBase.baseMaxHealth: Double + get() = this.getEntityAttribute(SharedMonsterAttributes.maxHealth).baseValue } \ No newline at end of file diff --git a/src/main/java/at/lorenz/mod/utils/RenderUtils.kt b/src/main/java/at/lorenz/mod/utils/RenderUtils.kt index 17532c613..7acd5b42b 100644 --- a/src/main/java/at/lorenz/mod/utils/RenderUtils.kt +++ b/src/main/java/at/lorenz/mod/utils/RenderUtils.kt @@ -9,6 +9,7 @@ import net.minecraft.inventory.Slot import net.minecraft.util.AxisAlignedBB import net.minecraft.util.MathHelper import net.minecraft.util.ResourceLocation +import net.minecraft.util.Vec3 import net.minecraftforge.client.event.RenderWorldLastEvent import org.lwjgl.opengl.GL11 import java.awt.Color @@ -309,4 +310,46 @@ object RenderUtils { GlStateManager.color(1.0f, 1.0f, 1.0f, 1.0f) GlStateManager.popMatrix() } + + /** + * @author Mojang + */ + fun drawLabel( + pos: Vec3, + text: String, + color: Color, + partialTicks: Float, + shadow: Boolean = false, + scale: Float = 1f + ) { + var mc = Minecraft.getMinecraft() + val player = mc.thePlayer + val x = + pos.xCoord - player.lastTickPosX + (pos.xCoord - player.posX - (pos.xCoord - player.lastTickPosX)) * partialTicks + val y = + pos.yCoord - player.lastTickPosY + (pos.yCoord - player.posY - (pos.yCoord - player.lastTickPosY)) * partialTicks + val z = + pos.zCoord - player.lastTickPosZ + (pos.zCoord - player.posZ - (pos.zCoord - player.lastTickPosZ)) * partialTicks + val renderManager = mc.renderManager + val f1 = 0.0266666688 + val width = mc.fontRendererObj.getStringWidth(text) / 2 + GlStateManager.pushMatrix() + GlStateManager.translate(x, y, z) + GL11.glNormal3f(0f, 1f, 0f) + GlStateManager.rotate(-renderManager.playerViewY, 0f, 1f, 0f) + GlStateManager.rotate(renderManager.playerViewX, 1f, 0f, 0f) + GlStateManager.scale(-f1, -f1, -f1) + GlStateManager.scale(scale, scale, scale) + GlStateManager.enableBlend() + GlStateManager.disableLighting() + GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0) + GlStateManager.enableTexture2D() + mc.fontRendererObj.drawString(text, (-width).toFloat(), 0f, color.rgb, shadow) + GlStateManager.disableBlend() + GlStateManager.popMatrix() + } + + fun interpolate(currentValue: Double, lastValue: Double, multiplier: Float): Double { + return lastValue + (currentValue - lastValue) * multiplier + } } \ No newline at end of file -- cgit