I fix some bugs and I will send it tomorrow
Gking
Posts
-
[Kotlin]Inventory Element -
[Kotlin] ArrayList SkyRainbowpublic static int SkyRainbow(int var2, float bright, float st) { double v1 = Math.ceil(System.currentTimeMillis() + (long) (var2 * 109)) / 5; return Color.getHSBColor((double) ((float) ((v1 %= 360.0) / 360.0)) < 0.5 ? -((float) (v1 / 360.0)) : (float) (v1 / 360.0), st, bright).getRGB(); }
Add this into RenderUtils.java
val counter = intArrayOf(0) var Sky: Int Sky = RenderUtils.SkyRainbow(counter[0] * 100, saturationValue.get(), brightnessValue.get()) counter[0] = counter[0] + 1
then add this into your ArrayList.kt
It will work like this
-
[Source Share] Fake New Novoline Notification In Custom LiquidBounceAs the title
/** * SpaceKing OpenSource Free Share */ package net.ccbluex.liquidbounce.ui.client.hud.element.elements import net.ccbluex.liquidbounce.LiquidBounce import net.ccbluex.liquidbounce.features.module.modules.render.HUD import net.ccbluex.liquidbounce.ui.client.hud.designer.GuiHudDesigner import net.ccbluex.liquidbounce.ui.client.hud.element.Border import net.ccbluex.liquidbounce.ui.client.hud.element.Element import net.ccbluex.liquidbounce.ui.client.hud.element.ElementInfo import net.ccbluex.liquidbounce.ui.client.hud.element.Side import net.ccbluex.liquidbounce.ui.font.Fonts import net.ccbluex.liquidbounce.utils.render.EaseUtils import net.ccbluex.liquidbounce.utils.render.GLUtils import net.ccbluex.liquidbounce.utils.render.RenderUtils import net.minecraft.client.renderer.GlStateManager import org.lwjgl.opengl.GL11 import java.awt.Color import java.math.BigDecimal import kotlin.math.pow /** * CustomHUD Notification element */ @ElementInfo(name = "Notifications", single = true) class Notifications(x: Double = 0.0, y: Double = 0.0, scale: Float = 1F, side: Side = Side(Side.Horizontal.RIGHT, Side.Vertical.DOWN)) : Element(x, y, scale, side) { /** * Example notification for CustomHUD designer */ private val exampleNotification = Notification("Notification", "This is an example notification.", NotifyType.INFO) /** * Draw element */ override fun drawElement(partialTicks: Float): Border? { val notifications = mutableListOf<Notification>() //FUCK YOU java.util.ConcurrentModificationException for ((index, notify) in LiquidBounce.hud.notifications.withIndex()) { GL11.glPushMatrix() if (notify.drawNotification(index)) { notifications.add(notify) } GL11.glPopMatrix() } for (notify in notifications) { LiquidBounce.hud.notifications.remove(notify) } if (mc.currentScreen is GuiHudDesigner) { if (!LiquidBounce.hud.notifications.contains(exampleNotification)) LiquidBounce.hud.addNotification(exampleNotification) exampleNotification.fadeState = FadeState.STAY exampleNotification.displayTime = System.currentTimeMillis() // exampleNotification.x = exampleNotification.textLength + 8F return Border(-exampleNotification.width.toFloat() + 80, -exampleNotification.height.toFloat()-24.5f, 80F, -24.5F) } return null } } class Notification(val title: String, val content: String, val type: NotifyType, val time: Int = 2000, val animeTime: Int = 500) { val height = 30 var fadeState = FadeState.IN var nowY = -height var string = "" var displayTime = System.currentTimeMillis() var animeXTime = System.currentTimeMillis() var animeYTime = System.currentTimeMillis() val width = Fonts.font32.getStringWidth(content) + 53 fun drawCircle(x: Float, y: Float, radius: Float, start: Int, end: Int) { GlStateManager.enableBlend() GlStateManager.disableTexture2D() GlStateManager.tryBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ZERO) GL11.glEnable(GL11.GL_LINE_SMOOTH) GL11.glLineWidth(2f) GL11.glBegin(GL11.GL_LINE_STRIP) var i = end.toFloat() while (i >= start) { var c = RenderUtils.getGradientOffset(Color(HUD.r.get(),HUD.g.get(),HUD.b.get()), Color(HUD.r2.get(),HUD.g2.get(),HUD.b2.get(), 1), (Math.abs(System.currentTimeMillis() / 360.0 + (i* 34 / 360) * 56 / 100) / 10)).rgb val f2 = (c shr 24 and 255).toFloat() / 255.0f val f22 = (c shr 16 and 255).toFloat() / 255.0f val f3 = (c shr 8 and 255).toFloat() / 255.0f val f4 = (c and 255).toFloat() / 255.0f GlStateManager.color(f22, f3, f4, f2) GL11.glVertex2f( (x + Math.cos(i * Math.PI / 180) * (radius * 1.001f)).toFloat(), (y + Math.sin(i * Math.PI / 180) * (radius * 1.001f)).toFloat() ) i -= 360f / 90.0f } GL11.glEnd() GL11.glDisable(GL11.GL_LINE_SMOOTH) GlStateManager.enableTexture2D() GlStateManager.disableBlend() } /** * Draw notification */ /** * SpaceKing OpenSource Free Share */ fun drawNotification(index: Int): Boolean { val realY = -(index + 1) * (height + 10) val nowTime = System.currentTimeMillis() //Y-Axis Animation if (nowY != realY) { var pct = (nowTime - animeYTime) / animeTime.toDouble() if (pct > 1) { nowY = realY pct = 1.0 } else { pct = easeOutBack(pct) } GL11.glTranslated(0.0, (realY - nowY) * pct, 0.0) } else { animeYTime = nowTime } GL11.glTranslated(0.0, nowY.toDouble(), 0.0) //X-Axis Animation var pct = (nowTime - animeXTime) / animeTime.toDouble() when (fadeState) { FadeState.IN -> { if (pct > 1) { fadeState = FadeState.STAY animeXTime = nowTime pct = 1.0 } pct = easeOutBack(pct) } FadeState.STAY -> { pct = 1.0 if ((nowTime - animeXTime) > time) { fadeState = FadeState.OUT animeXTime = nowTime } } FadeState.OUT -> { if (pct > 1) { fadeState = FadeState.END animeXTime = nowTime pct = 1.0 } pct = 1 - easeInBack(pct) } FadeState.END -> { return true } } if (type.toString() == "SUCCESS") { string = "a" } if (type.toString() == "ERROR") { string = "B" } if (type.toString() == "WARNING") { string = "D" } if (type.toString() == "INFO") { string = "C" } GL11.glScaled(pct,pct,pct) GL11.glTranslatef(-width.toFloat()/2 , -height.toFloat()/2, 0F) RenderUtils.drawRect(0F, 0F, width.toFloat(), height.toFloat(), Color(63, 63, 63, 140)) drawGradientSideways(0.0, height - 1.7, (width * ((nowTime - displayTime) / (animeTime * 2F + time))).toDouble(), height.toDouble(), Color(HUD.r.get(),HUD.g.get(),HUD.b.get()).rgb, Color(HUD.r2.get(),HUD.g2.get(),HUD.b2.get()).rgb) Fonts.font37.drawStringWithShadow("$title", 24.5F, 7F, Color.WHITE.rgb) Fonts.font32.drawStringWithShadow("$content" + " (" + BigDecimal(((time - time * ((nowTime - displayTime) / (animeTime * 2F + time))) / 1000).toDouble()).setScale(1, BigDecimal.ROUND_HALF_UP).toString() + "s)", 24.5F, 17.3F, Color.WHITE.rgb) drawFilledCircle(13, 15, 8.5F,Color.BLACK) Fonts.Nicon80.drawString(string, 3, 8, Color.WHITE.rgb) drawCircle(12.9f,15.0f,8.8f, 0,360) GlStateManager.resetColor() return false } fun drawGradientSideways(left: Double, top: Double, right: Double, bottom: Double, col1: Int, col2: Int) { val f = (col1 shr 24 and 0xFF) / 255.0f val f1 = (col1 shr 16 and 0xFF) / 255.0f val f2 = (col1 shr 8 and 0xFF) / 255.0f val f3 = (col1 and 0xFF) / 255.0f val f4 = (col2 shr 24 and 0xFF) / 255.0f val f5 = (col2 shr 16 and 0xFF) / 255.0f val f6 = (col2 shr 8 and 0xFF) / 255.0f val f7 = (col2 and 0xFF) / 255.0f GL11.glEnable(3042) GL11.glDisable(3553) GL11.glBlendFunc(770, 771) GL11.glEnable(2848) GL11.glShadeModel(7425) GL11.glPushMatrix() GL11.glBegin(7) GL11.glColor4f(f1, f2, f3, f) GL11.glVertex2d(left, top) GL11.glVertex2d(left, bottom) GL11.glColor4f(f5, f6, f7, f4) GL11.glVertex2d(right, bottom) GL11.glVertex2d(right, top) GL11.glEnd() GL11.glPopMatrix() GL11.glEnable(3553) GL11.glDisable(3042) GL11.glDisable(2848) GL11.glShadeModel(7424) } fun drawFilledCircle(xx: Int, yy: Int, radius: Float, color: Color) { val sections = 50 val dAngle = 2 * Math.PI / sections var x: Float var y: Float GL11.glPushAttrib(GL11.GL_ENABLE_BIT) GLUtils.glEnable(GL11.GL_BLEND) GLUtils.glDisable(GL11.GL_TEXTURE_2D) GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA) GLUtils.glEnable(GL11.GL_LINE_SMOOTH) GL11.glBegin(GL11.GL_TRIANGLE_FAN) for (i in 0 until sections) { x = (radius * Math.sin(i * dAngle)).toFloat() y = (radius * Math.cos(i * dAngle)).toFloat() GL11.glColor4f(color.red / 255f, color.green / 255f, color.blue / 255f, color.alpha / 255f) GL11.glVertex2f(xx + x, yy + y) } GlStateManager.color(0f, 0f, 0f) GL11.glEnd() GL11.glPopAttrib() } fun easeInBack(x: Double): Double { val c1 = 1.70158 val c3 = c1 + 1 return c3 * x * x * x - c1 * x * x } fun easeOutBack(x: Double): Double { val c1 = 1.70158 val c3 = c1 + 1 return 1 + c3 * (x - 1).pow(3) + c1 * (x - 1).pow(2) } } enum class NotifyType() { SUCCESS(), ERROR(), WARNING(), INFO(); } enum class FadeState { IN, STAY, OUT, END } /** * SpaceKing OpenSource Free Share */
Don't resell it plz,and this is the effect of it
-
[Kotlin]ArrayList BorderRenderUtils.drawRect(-1F, module.higt - 1F, 0F, module.higt + textHeight, rectColor) RenderUtils.drawRect(xPos - 3, module.higt, xPos - 2, module.higt + textHeight, rectColor) if (module != modules[0]) { var displayStrings = if (!tags.get()) modules[index - 1].name else if (tagsArrayColor.get()) modules[index - 1].colorlessTagName else modules[index - 1].tagName if (upperCaseValue.get()) displayStrings = displayStrings?.toUpperCase() RenderUtils.drawRect(xPos - 3 - (fontRenderer.getStringWidth(displayStrings) - fontRenderer.getStringWidth(displayString)), module.higt, xPos - 2, module.higt + 1, rectColor) if (module == modules[modules.size - 1]) { RenderUtils.drawRect(xPos - 3, module.higt + textHeight, 0.0F, module.higt + textHeight + 1, rectColor) } }
You can use this to make a Border in Arraylist.kt
-
[Kotlin] New Notificationsok skidit
-
[JAVA]EnchantEffectTo celebrate my coming back I give out a EnchantEffect!
package net.ccbluex.liquidbounce.injection.forge.mixins.render; import net.ccbluex.liquidbounce.LiquidBounce; import net.ccbluex.liquidbounce.features.module.modules.render.EnchantEffect; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.entity.RenderItem; import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.client.resources.model.IBakedModel; import net.minecraft.util.ResourceLocation; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import java.awt.*; @Mixin(RenderItem.class) public abstract class MixinRenderItem { @Final @Shadow private TextureManager textureManager; @Final @Shadow private static ResourceLocation RES_ITEM_GLINT; @Shadow public abstract void renderModel(IBakedModel model, int color); @Inject(method = "renderEffect", at = @At("HEAD")) private void renderEffect(IBakedModel model, CallbackInfo callbackInfo) { EnchantEffect enchantEffect = (EnchantEffect) LiquidBounce.moduleManager.getModule(EnchantEffect.class); GlStateManager.depthMask(false); GlStateManager.depthFunc(514); GlStateManager.disableLighting(); GlStateManager.blendFunc(768, 1); this.textureManager.bindTexture(RES_ITEM_GLINT); GlStateManager.matrixMode(5890); GlStateManager.pushMatrix(); GlStateManager.scale(8.0f, 8.0f, 8.0f); float f = (float)(Minecraft.getSystemTime() % 3000L) / 3000.0f / 8.0f; GlStateManager.translate(f, 0.0f, 0.0f); GlStateManager.rotate(-50.0f, 0.0f, 0.0f, 1.0f); if(enchantEffect.getState()) { switch(enchantEffect.modeValue.get().toLowerCase()) { case "custom": this.renderModel(model, enchantEffect.currentColor); break; case "rainbow": this.renderModel(model, Color.getHSBColor(enchantEffect.hue / 255.0f, 0.75f, 0.9f).getRGB()); break; } } else { this.renderModel(model, -8372020); } GlStateManager.popMatrix(); GlStateManager.pushMatrix(); GlStateManager.scale(8.0f, 8.0f, 8.0f); float f1 = (float)(Minecraft.getSystemTime() % 4873L) / 4873.0f / 8.0f; GlStateManager.translate(-f1, 0.0f, 0.0f); GlStateManager.rotate(10.0f, 0.0f, 0.0f, 1.0f); if(enchantEffect.getState()) { switch(enchantEffect.modeValue.get().toLowerCase()) { case "custom": this.renderModel(model, enchantEffect.currentColor); break; case "rainbow": this.renderModel(model, Color.getHSBColor(enchantEffect.hue / 255.0f, 0.75f, 0.9f).getRGB()); break; } } else { this.renderModel(model, -8372020); } GlStateManager.popMatrix(); GlStateManager.matrixMode(5888); GlStateManager.blendFunc(770, 771); GlStateManager.enableLighting(); GlStateManager.depthFunc(515); GlStateManager.depthMask(true); this.textureManager.bindTexture(TextureMap.locationBlocksTexture); } }
package net.ccbluex.liquidbounce.features.module.modules.render; import net.ccbluex.liquidbounce.event.EventTarget; import net.ccbluex.liquidbounce.event.Render2DEvent; import net.ccbluex.liquidbounce.event.UpdateEvent; import net.ccbluex.liquidbounce.features.module.Module; import net.ccbluex.liquidbounce.features.module.ModuleCategory; import net.ccbluex.liquidbounce.features.module.ModuleInfo; import net.ccbluex.liquidbounce.ui.client.hud.Palette; import net.ccbluex.liquidbounce.value.IntegerValue; import net.ccbluex.liquidbounce.value.ListValue; import java.awt.*; import java.util.Random; @ModuleInfo(name = "EnchantEffect", description = "qwq", category = ModuleCategory.RENDER) public class EnchantEffect extends Module { public IntegerValue redValue = new IntegerValue("Red", 255, 0, 255); public IntegerValue greenValue = new IntegerValue("Green", 0, 0, 255); public IntegerValue blueValue = new IntegerValue("Blue", 0, 0, 255); public ListValue modeValue = new ListValue("Mode", new String[]{"Rainbow","Custom"}, "Custom"); public float hue = 0.0F; public int currentColor = new Color(redValue.get(),greenValue.get(),blueValue.get()).getRGB(); @EventTarget public void Render2d(final Render2DEvent e) { hue += 1f / 5.0f; if (hue > 255.0f) { hue = 0.0f; } } }
first you need to add a module,then add a mixin in net.ccbluex.liquidbounce.injection.forge.mixins.render and auth it
-
Please tell me the code for the InventoryDisplay module! -
[Script]AAC4Criticalsvar scriptName = "AttackCrit";
var scriptVersion = 1.0;
var scriptAuthor = "Gking";var EntityPlayer = Java.type('net.minecraft.entity.player.EntityPlayer');
var C04PacketPlayerPosition = Java.type('net.minecraft.network.play.client.C03PacketPlayer.C04PacketPlayerPosition')
var AttackCrit = new AttackCrit();
var client;function AttackCrit() {
var Mode = value.createList("Mode", ["AAC4HIT", "AAC4Packet", "Jump"], "AAC4HIT");
var MotionY = value.createFloat("CustomMotionY", 0, 0, 1);
var Timer = value.createFloat("TimerSpeed", 0, 0, 10);this.getName = function() { return "AttackCrit"; }; this.getTag = function() { return "" + Mode.get(); }; this.getDescription = function() { return "AttackCrit"; }; this.getCategory = function() { return "Fun"; }; this.addValues = function(values) { values.add(Mode); values.add(MotionY); values.add(Timer); } this.onAttack = function (event) { if(event.getTargetEntity() instanceof EntityPlayer){ entity = event.getTargetEntity(); } switch(Mode.get()) { case "AAC4HIT": mc.thePlayer.onCriticalHit(entity) break; case "AAC4Packet": //Maybe this one is unuseful mc.thePlayer.sendQueue.addToSendQueue(new C03PacketPlayer.C04PacketPlayerPosition(ma.thePlayer.posX, mc.thePlayer.posY + 0.0031311231111, mc.thePlayer.posZ, false)) break; case "Jump": if(mc.thePlayer.onGround || isOnGround(0.5)){ mc.thePlayer.jump(); mc.timer.timerSpeed = Timer.get(); mc.thePlayer.motionY = MotionY.get(); } break; } };
}
function onLoad() {}
function onEnable() {
client = moduleManager.registerModule(AttackCrit);
}function onDisable() {
moduleManager.unregisterModule(client);
} -
[Kotlin]ModuleInfo ElementFirse you should add this into Module.kt
var key = false set(key) { field = key if (!LiquidBounce.isStarting) LiquidBounce.fileManager.saveConfig(LiquidBounce.fileManager.modulesConfig) }
Then add this into ModulesConfig.java and register this command
module.setKey(jsonModule.get("KeyShow").getAsBoolean());
/* * LiquidBounce Hacked Client * A free open source mixin-based injection hacked client for Minecraft using Minecraft Forge. * https://github.com/CCBlueX/LiquidBounce/ */ package net.ccbluex.liquidbounce.features.command.commands import net.ccbluex.liquidbounce.LiquidBounce import net.ccbluex.liquidbounce.features.command.Command import net.ccbluex.liquidbounce.ui.client.hud.element.elements.Notification import net.ccbluex.liquidbounce.ui.client.hud.element.elements.NotifyType import org.lwjgl.input.Keyboard class KeyShowCommand : Command("moduleinfo", emptyArray()) { /** * Execute commands with provided [args] */ override fun execute(args: Array<String>) { if (args.size > 1) { // Get module by name val module = LiquidBounce.moduleManager.getModule(args[1]) if (module == null) { chat("Module §a§l" + args[1] + "§3 not found.") return } // Response to user if(!module.key){ module.key = true // LiquidBounce.hud.addNotification(Notification("ModuleInfo","Add Module Show in ModuleInfo Element", NotifyType.INFO)) } else if(module.key){ module.key = false // LiquidBounce.hud.addNotification(Notification("ModuleInfo","Delete Module Show in ModuleInfo Element", NotifyType.INFO)) } return } chatSyntax(arrayOf("<module> <on/off>")) } override fun tabComplete(args: Array<String>): List<String> { if (args.isEmpty()) return emptyList() val moduleName = args[0] return when (args.size) { 1 -> LiquidBounce.moduleManager.modules .map { it.name } .filter { it.startsWith(moduleName, true) } .toList() else -> emptyList() } } }
At last, use this and register elemnt
package net.ccbluex.liquidbounce.ui.client.hud.element.elements import net.ccbluex.liquidbounce.LiquidBounce import net.ccbluex.liquidbounce.ui.client.hud.element.Border import net.ccbluex.liquidbounce.ui.client.hud.element.Element import net.ccbluex.liquidbounce.ui.client.hud.element.ElementInfo import net.ccbluex.liquidbounce.utils.PlayerListObject import net.ccbluex.liquidbounce.utils.render.GLUtils import net.ccbluex.liquidbounce.utils.render.RenderUtils import net.ccbluex.liquidbounce.value.IntegerValue import net.ccbluex.liquidbounce.value.ListValue import net.minecraft.client.gui.ScaledResolution import net.minecraft.client.renderer.GlStateManager import net.minecraft.util.EnumChatFormatting import org.lwjgl.input.Keyboard import org.lwjgl.opengl.GL11 import java.awt.Color import java.util.concurrent.CopyOnWriteArrayList /** * CustomHUD Armor element * * Shows a horizontal display of current armor */ @ElementInfo(name = "ModuleInfo") class ModuleInfo(x: Double = 10.0, y: Double = 10.0, scale: Float = 1F) : Element(x, y, scale) { /** * Draw element */ override fun drawElement(): Border { var textY: Float = 0f RenderUtils.drawRect(-1f, -11f, mc.fontRendererObj.getStringWidth("Module Info") + 90f, mc.fontRendererObj.FONT_HEIGHT.toFloat() / 2 - 5, Color(30, 30, 35, 220).rgb) mc.fontRendererObj.drawString("Module Info", 2F, -10f,-1,true) for (module in LiquidBounce.moduleManager.modules) { if(!module.key) continue RenderUtils.drawRect(-1f, -1f+textY, mc.fontRendererObj.getStringWidth("Module Info") + 90f, textY + mc.fontRendererObj.FONT_HEIGHT, Color(30, 30, 35, 170).rgb) mc.fontRendererObj.drawString(module.name, 3F, (0 + textY).toInt().toFloat(), -1,true) mc.fontRendererObj.drawString(if(module.state) EnumChatFormatting.GREEN.toString()+ "Enable" else EnumChatFormatting.RED.toString() + "Disable", 83F, (0 + textY).toInt().toFloat(), -1,true) mc.fontRendererObj.drawString(Keyboard.getKeyName(module.keyBind), 123F, (0 + textY).toInt().toFloat(), -1,true) textY += 10.0f } return Border(0f,0f,150f,textY) } }
Like this
-
[Kotlin] TargetHUDThis TargetHUD is changed from Target.kt
/* * LiquidBounce Hacked Client * A free open source mixin-based injection hacked client for Minecraft using Minecraft Forge. * https://github.com/CCBlueX/LiquidBounce/ */ package net.ccbluex.liquidbounce.ui.client.hud.element.elements import net.ccbluex.liquidbounce.LiquidBounce import net.ccbluex.liquidbounce.features.module.modules.combat.KillAura import net.ccbluex.liquidbounce.ui.client.hud.element.Border import net.ccbluex.liquidbounce.ui.client.hud.element.Element import net.ccbluex.liquidbounce.ui.client.hud.element.ElementInfo import net.ccbluex.liquidbounce.ui.font.Fonts import net.ccbluex.liquidbounce.utils.extensions.getDistanceToEntityBox import net.ccbluex.liquidbounce.utils.render.RenderUtils import net.ccbluex.liquidbounce.value.FloatValue import net.minecraft.client.gui.Gui import net.minecraft.entity.Entity import net.minecraft.entity.player.EntityPlayer import net.minecraft.item.ItemArmor import net.minecraft.item.ItemStack import net.minecraft.item.ItemTool import net.minecraft.util.ResourceLocation import org.lwjgl.opengl.GL11 import java.awt.Color import java.text.DecimalFormat import java.text.DecimalFormatSymbols import java.util.* import kotlin.math.abs import kotlin.math.pow /** * A target hud */ @ElementInfo(name = "Target2") class Target2 : Element() { private val decimalFormat = DecimalFormat("##0.00", DecimalFormatSymbols(Locale.ENGLISH)) private val fadeSpeed = FloatValue("FadeSpeed", 2F, 1F, 9F) private var easingHealth: Float = 0F private var lastTarget: Entity? = null override fun drawElement(): Border { val target = (LiquidBounce.moduleManager[KillAura::class.java] as KillAura).target if (target is EntityPlayer) { if (target != lastTarget || easingHealth < 0 || easingHealth > target.maxHealth || abs(easingHealth - target.health) < 0.01) { easingHealth = target.health } val width = (38 + Fonts.font40.getStringWidth(target.name)) .coerceAtLeast(118) .toFloat() // Draw rect box RenderUtils.drawBorderedRect(0F, 0F, width, 36F, 3F, Color.BLACK.rgb, Color.BLACK.rgb) // Damage animation if (easingHealth > target.health) RenderUtils.drawRect(0F, 34F, (easingHealth / target.maxHealth) * width, 36F, Color(138, 60, 65).rgb) // Health bar if(target.hurtTime > 9){ RenderUtils.drawRect(0F, 34F, (target.health / target.maxHealth) * width, 36F, Color(149, 9, 17).rgb) } else { RenderUtils.drawRect(0F, 34F, (target.health / target.maxHealth) * width, 36F, Color(33, 239, 0).rgb) } RenderUtils.drawRect(0F, 38F, (target.totalArmorValue / 20.0F) * width, 38F, Color(10, 130, 229).rgb) // Heal animation if (easingHealth < target.health) RenderUtils.drawRect((easingHealth / target.maxHealth) * width, 34F, (target.health / target.maxHealth) * width, 36F, Color(44, 201, 144).rgb) easingHealth += ((target.health - easingHealth) / 2.0F.pow(10.0F - fadeSpeed.get())) * RenderUtils.deltaTime // Draw info val playerInfo = mc.netHandler.getPlayerInfo(target.uniqueID) if (playerInfo != null) { Fonts.font40.drawString(target.name, 36, 4, 0xffffff) // GlStateManager.scale(0.5,0.5,0.5); renderArmor((target as EntityPlayer?)!!) // Draw head val locationSkin = playerInfo.locationSkin drawHead(locationSkin, 30, 30) } } lastTarget = target return Border(0F, 0F, 120F, 36F) } private fun renderArmor(player: EntityPlayer) { var armourStack: ItemStack? var renderStack = player.inventory.armorInventory val length = renderStack.size var xOffset = 36 for (aRenderStack in renderStack) { armourStack = aRenderStack } if (player.heldItem != null) { val stock = player.heldItem.copy() if (stock.hasEffect() && (stock.item is ItemTool || stock.item is ItemArmor)) { stock.stackSize = 1 } this.renderItemStack(stock, xOffset, 10) xOffset += 16 } renderStack = player.inventory.armorInventory for (index in 3 downTo 0) { armourStack = renderStack[index] if (armourStack == null) continue this.renderItemStack(armourStack, xOffset, 10) xOffset += 16 } } private fun renderItemStack(stack: ItemStack, x: Int, y: Int) { mc.renderItem.zLevel = -150.0f mc.renderItem.renderItemAndEffectIntoGUI(stack, x, y) mc.renderItem.renderItemOverlays(mc.fontRendererObj, stack, x, y) } private fun drawHead(skin: ResourceLocation, width: Int, height: Int) { GL11.glColor4f(1F, 1F, 1F, 1F) mc.textureManager.bindTexture(skin) Gui.drawScaledCustomSizeModalRect(2, 2, 8F, 8F, 8, 8, width, height, 64F, 64F) } }
Create A new Kt in net.ccbluex.liquidbounce.ui.client.hud.element.elements
And AddElment in net.ccbluex.liquidbounce.ui.client.hud.HUD
![IY}478OUQEC%2PD7L{NNQM.png
Like This