A SelfInfo as Akrien Client
-
I'm using novoline's font system, you can use LiquidBounce instead, note that novoline's font size is twice as large as Liquidbounce's
Effect image:
Code:
@ElementInfo(name = "SelfInfo") public class SelfInfo extends Element { //code by younkoo(littledye or 情染) public static IntegerValue rRed = new IntegerValue("Red", 0, 0, 255); public static IntegerValue rGreen = new IntegerValue("Green", 0, 0, 255); public static IntegerValue rBlue = new IntegerValue("Blue", 0, 0, 255); //fix jitter public IntegerValue indx = new IntegerValue("noting",120,0,1000); public IntegerValue indy = new IntegerValue("noting2",80,0,1000); public static Color mainColor() { return new Color(rRed.get(), rGreen.get(), rBlue.get()); } private double armorBarWidth; private double hurttimeBarWidth; private double bpsBarWidth; private double healthBarWidth; public int x2 = indx.get(), y3 = indy.get(); TimerUtil timerHelper = new TimerUtil(); ScaledResolution sr = new ScaledResolution(mc); final float scaledWidth = sr.getScaledWidth(); final float scaledHeight = sr.getScaledHeight(); //code by younkoo(littledye or 情染) //code by younkoo(littledye or 情染) //code by younkoo(littledye or 情染) @Override public Border drawElement(float partialTicks) { double prevZ = mc.thePlayer.posZ - mc.thePlayer.prevPosZ; double prevX = mc.thePlayer.posX - mc.thePlayer.prevPosX; double lastDist = Math.sqrt(prevX * prevX + prevZ * prevZ); double currSpeed = lastDist * 15.3571428571D / 4; final float xX = scaledWidth / 2.0f -x2; final float yX = scaledHeight / 2.0f + y3; VisualBase.drawNewRect(xX + 4.5, yX + 196.5 - 405, xX + 100.5, yX + 246.5 - 408, new Color(11, 11, 11, 255).getRGB()); VisualBase.drawNewRect(xX + 5, yX + 198 - 405, xX + 100, yX + 246 - 408, new Color(28, 28, 28, 255).getRGB()); VisualBase.drawNewRect(xX + 5, yX + 198 - 405, xX + 100, yX + 208 - 408, new Color(21, 19, 20, 255).getRGB()); VisualBase.drawNewRect(xX + 44, yX + 210 - 406, xX + 95, yX + 213.5 - 406, new Color(41, 41, 41, 255).getRGB()); VisualBase.drawNewRect(xX + 44, yX + 219 - 406, xX + 95, yX + 222.5 - 406, new Color(41, 41, 41, 255).getRGB()); VisualBase.drawNewRect(xX + 44, yX + 228 - 406, xX + 95, yX + 231.5 - 406, new Color(41, 41, 41, 255).getRGB()); VisualBase.drawNewRect(xX + 44, yX + 237 - 406, xX + 95, yX + 240.5 - 406, new Color(41, 41, 41, 255).getRGB()); VisualBase.drawNewRect(xX + 5, yX + 197 - 405, xX + 100, yX + 198 - 405, mainColor().getRGB()); Fonts.SF.SF_14.SF_14.drawString("Indicators", xX + 37, yX + 202 - 406, -1); // armor final float armorValue = mc.thePlayer.getTotalArmorValue(); double armorPercentage = armorValue / 20; armorPercentage = MathHelper.clamp_double(armorPercentage, 0.0, 1.0); final double armorWidth = 51 * armorPercentage; this.armorBarWidth = AnimationHelper.animate(armorWidth, this.armorBarWidth, 0.0229999852180481); VisualUtils.drawRect(xX + 44, yX + 210 - 406, xX + 44 + this.armorBarWidth, yX + 213.5 - 406, mainColor().getRGB()); Fonts.SF.SF_14.SF_14.drawString("Armor", xX + 8, yX + 211 - 406, -1); // HurtTime double hurttimePercentage = MathHelper.clamp_double(mc.thePlayer.hurtTime, 0.0, 0.6); final double hurttimeWidth = 51.0 * hurttimePercentage; this.hurttimeBarWidth = AnimationHelper.animate(hurttimeWidth, this.hurttimeBarWidth, 0.0429999852180481); VisualUtils.drawRect(xX + 44, yX + 219 - 406, xX + 44 + this.hurttimeBarWidth, yX + 222.5 - 406, mainColor().getRGB()); Fonts.SF.SF_14.SF_14.drawString("HurtTime", xX + 8, yX + 220 - 406, -1); // HurtTime double bpsPercentage = MathHelper.clamp_double(currSpeed, 0.0, 1.0); final double bpsBarWidth = 51.0 * bpsPercentage; this.bpsBarWidth = AnimationHelper.animate(bpsBarWidth, this.bpsBarWidth, 0.0329999852180481); VisualUtils.drawRect(xX + 44, yX + 228 - 406, xX + 44 + this.bpsBarWidth, yX + 231.5 - 406, mainColor().getRGB()); Fonts.SF.SF_14.SF_14.drawString("BPS", xX + 8, yX + 229 - 406, -1); // HurtTime final float health = mc.thePlayer.getHealth(); double hpPercentage = health / mc.thePlayer.getMaxHealth(); hpPercentage = MathHelper.clamp_double(hpPercentage, 0.0, 1.0); final double hpWidth = 51.0 * hpPercentage; final String healthStr = String.valueOf((int) mc.thePlayer.getHealth() / 2.0f); if (timerHelper.hasReached(15L)) { this.healthBarWidth = AnimationHelper.animate(hpWidth, this.healthBarWidth, 0.2029999852180481); timerHelper.reset(); } VisualUtils.drawRect(xX + 44, yX + 237 - 406, xX + 44 + this.healthBarWidth, yX + 240.5 - 406, mainColor().getRGB()); Fonts.SF.SF_14.SF_14.drawString("HP", xX + 8, yX + 238 - 406, -1); return new Border(98,-8,194,39); } }
DrawNewRect
public static void drawNewRect(double left, double top, double right, double bottom, int color) { if (left < right) { double i = left; left = right; right = i; } if (top < bottom) { double j = top; top = bottom; bottom = j; } float f3 = (float)(color >> 24 & 0xFF) / 255.0f; float f = (float)(color >> 16 & 0xFF) / 255.0f; float f1 = (float)(color >> 8 & 0xFF) / 255.0f; float f2 = (float)(color & 0xFF) / 255.0f; Tessellator tessellator = Tessellator.getInstance(); WorldRenderer vertexbuffer = tessellator.getWorldRenderer(); GlStateManager.enableBlend(); GlStateManager.disableTexture2D(); GlStateManager.tryBlendFuncSeparate(770, 771, 0, 1); GlStateManager.color(f, f1, f2, f3); vertexbuffer.begin(7, DefaultVertexFormats.POSITION); vertexbuffer.pos(left, bottom, 0.0).endVertex(); vertexbuffer.pos(right, bottom, 0.0).endVertex(); vertexbuffer.pos(right, top, 0.0).endVertex(); vertexbuffer.pos(left, top, 0.0).endVertex(); tessellator.draw(); GlStateManager.enableTexture2D(); GlStateManager.disableBlend(); }
Animate
public static double animate(double target, double current, double speed) { boolean larger; boolean bl = larger = target > current; if (speed < 0.0) { speed = 0.0; } else if (speed > 1.0) { speed = 1.0; } double dif = Math.max(target, current) - Math.min(target, current); double factor = dif * speed; if (factor < 0.1) { factor = 0.1; } current = larger ? (current += factor) : (current -= factor); return current; }
-
very sexy indicators, copied
-
@P1ayerLk_-0 thx
-
nice information ver useful
-
@ukvaporwaves thx