-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
Ориг таргет худа: Мой вариант худа | Expensive 3.1
Просто добавил полосу хп, чтобы при убавлении хп становилась красной и добавил армор и сделал, что если на вас одета не все броня, то она авто матически сдвигалась влево
Вот как выглядит с броней
Вот как без
Если хотите удалить none то просто на 240 строчке удаляете
Просто добавил полосу хп, чтобы при убавлении хп становилась красной и добавил армор и сделал, что если на вас одета не все броня, то она авто матически сдвигалась влево
Вот как выглядит с броней
Вот как без
Код:
package im.expensive.ui.display.impl;
import com.mojang.blaze3d.platform.GlStateManager;
import im.expensive.Expensive;
import im.expensive.events.EventDisplay;
import im.expensive.ui.display.ElementRenderer;
import im.expensive.ui.styles.Style;
import im.expensive.utils.animations.Animation;
import im.expensive.utils.animations.Direction;
import im.expensive.utils.animations.impl.EaseBackIn;
import im.expensive.utils.client.ClientUtil;
import im.expensive.utils.drag.Dragging;
import im.expensive.utils.math.MathUtil;
import im.expensive.utils.math.StopWatch;
import im.expensive.utils.math.Vector4i;
import im.expensive.utils.render.*;
import im.expensive.utils.render.font.Fonts;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults;
import net.minecraft.client.gui.AbstractGui;
import net.minecraft.client.gui.screen.ChatScreen;
import net.minecraft.client.renderer.entity.EntityRenderer;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.inventory.EquipmentSlotType;
import net.minecraft.item.ItemStack;
import net.minecraft.scoreboard.Score;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.vector.Vector4f;
import org.lwjgl.opengl.GL11;
@FieldDefaults(level = AccessLevel.PRIVATE)
@RequiredArgsConstructor
public class TargetInfoRenderer implements ElementRenderer {
final StopWatch stopWatch = new StopWatch();
final Dragging drag;
LivingEntity entity = null;
boolean allow;
final Animation animation = new EaseBackIn(400, 1, 1);
float healthAnimation = 0.0f;
float absorptionAnimation = 0.0f;
@Override
public void render(EventDisplay eventDisplay) {
entity = getTarget(entity);
float rounding = 6;
boolean out = !allow || stopWatch.isReached(1000);
animation.setDuration(out ? 400 : 300);
animation.setDirection(out ? Direction.BACKWARDS : Direction.FORWARDS);
if (animation.getOutput() == 0.0f) {
entity = null;
}
if (entity != null) {
String name = entity.getName().getString();
float posX = drag.getX();
float posY = drag.getY();
float headSize = 28;
float spacing = 5;
float width = 234 / 1.75f;
float height = 93.75f / 1.75f;
drag.setWidth(width);
drag.setHeight(height);
float shrinking = 1.5f;
Score score = mc.world.getScoreboard().getOrCreateScore(entity.getScoreboardName(), mc.world.getScoreboard().getObjectiveInDisplaySlot(2));
float hp = entity.getHealth();
float maxHp = entity.getMaxHealth();
String header = mc.ingameGUI.getTabList().header == null ? " " : mc.ingameGUI.getTabList().header.getString().toLowerCase();
if (mc.getCurrentServerData() != null && mc.getCurrentServerData().serverIP.contains("funtime")
&& (header.contains("анархия") || header.contains("гриферский")) && entity instanceof PlayerEntity) {
hp = score.getScorePoints();
maxHp = 20;
}
healthAnimation = MathUtil.fast(healthAnimation, MathHelper.clamp(hp / maxHp, 0, 1), 10);
absorptionAnimation = MathUtil.fast(absorptionAnimation, MathHelper.clamp(entity.getAbsorptionAmount() / maxHp, 0, 1), 10);
if (mc.getCurrentServerData() != null && mc.getCurrentServerData().serverIP.contains("funtime")
&& (header.contains("анархия") || header.contains("гриферский")) && entity instanceof PlayerEntity) {
hp = score.getScorePoints();
maxHp = 20;
}
float animationValue = (float) animation.getOutput();
float halfAnimationValueRest = (1 - animationValue) / 2f;
float testX = posX + (width * halfAnimationValueRest);
float testY = posY + (height * halfAnimationValueRest);
float testW = width * animationValue;
float testH = height * animationValue;
int windowWidth = ClientUtil.calc(mc.getMainWindow().getScaledWidth());
GlStateManager.pushMatrix();
sizeAnimation(posX + (width / 2), posY + (height / 2), animation.getOutput());
float finalPosY = posY;
drawStyledRect(posX, finalPosY, width, height, 8);
DisplayUtils.drawShadow(posX, posY, width, height, 15, ColorUtils.rgba(21,24,40,165));
Stencil.initStencilToWrite();
DisplayUtils.drawRoundedRect(posX + spacing + 77, posY + spacing, 75 / 1.75f, 75 / 1.75f,8, ColorUtils.rgba(25,26,40,165));
Stencil.readStencilBuffer(1);
drawTargetHead(entity, posX + spacing + 77, posY + spacing, 75 / 1.75f, 75 / 1.75f);
Stencil.uninitStencilBuffer();
Scissor.push();
Scissor.setFromComponentCoordinates(testX, testY, testW - 6, testH);
Fonts.sfui.drawText(eventDisplay.getMatrixStack(), entity.getName().getString(), posX + headSize + spacing + spacing - 28, posY + spacing + 12, -1, 8);
Fonts.sfMedium.drawText(eventDisplay.getMatrixStack(), "HP: " + ((int) hp + (int) mc.player.getAbsorptionAmount()), posX + headSize + spacing + spacing - 28,
posY + spacing + 22, ColorUtils.rgb(200, 200, 200), 7);
Scissor.unset();
Scissor.pop();
DisplayUtils.drawRoundedRect(posX + headSize + spacing + spacing - 28, posY + height - spacing * 2 - 3, (width - 66), 4, new Vector4f(4, 4, 4, 4), ColorUtils.rgb(32, 32, 32));
drawArmor(eventDisplay, posX + headSize + spacing + spacing - 28, posY + spacing + 32);
int healthColor = interpolateColor(ColorUtils.rgb(255, 0, 0), ColorUtils.rgb(0, 255, 0), healthAnimation);
DisplayUtils.drawShadow(posX + headSize + spacing + spacing - 28, posY + height - spacing * 2 - 3, (width - 66) * healthAnimation, 4, 8, healthColor);
DisplayUtils.drawRoundedRect(posX + headSize + spacing + spacing - 28, posY + height - spacing * 2 - 3, (width - 66) * healthAnimation, 4, new Vector4f(4, 4, 4, 4), healthColor);
GlStateManager.popMatrix();
}
}
private int interpolateColor(int startColor, int endColor, float fraction) {
int startAlpha = (startColor >> 24) & 0xff;
int startRed = (startColor >> 16) & 0xff;
int startGreen = (startColor >> 8) & 0xff;
int startBlue = startColor & 0xff;
int endAlpha = (endColor >> 24) & 0xff;
int endRed = (endColor >> 16) & 0xff;
int endGreen = (endColor >> 8) & 0xff;
int endBlue = endColor & 0xff;
int alpha = (int) (startAlpha + (endAlpha - startAlpha) * fraction);
int red = (int) (startRed + (endRed - startRed) * fraction);
int green = (int) (startGreen + (endGreen - startGreen) * fraction);
int blue = (int) (startBlue + (endBlue - startBlue) * fraction);
return (alpha << 24) | (red << 16) | (green << 8) | blue;
}
private LivingEntity getTarget(LivingEntity nullTarget) {
LivingEntity auraTarget = Expensive.getInstance().getFunctionRegistry().getKillAura().getTarget();
LivingEntity target = nullTarget;
if (auraTarget != null) {
stopWatch.reset();
allow = true;
target = auraTarget;
} else if (mc.currentScreen instanceof ChatScreen) {
stopWatch.reset();
allow = true;
target = mc.player;
} else {
allow = false;
}
return target;
}
public void drawTargetHead(LivingEntity entity, float x, float y, float width, float height) {
if (entity != null) {
EntityRenderer<? super LivingEntity> rendererManager = mc.getRenderManager().getRenderer(entity);
drawFace(rendererManager.getEntityTexture(entity), x, y, 8F, 8F, 8F, 8F, width, height, 64F, 64F, entity);
}
}
public static void sizeAnimation(double width, double height, double scale) {
GlStateManager.translated(width, height, 0);
GlStateManager.scaled(scale, scale, scale);
GlStateManager.translated(-width, -height, 0);
}
public void drawFace(ResourceLocation res, float d,
float y,
float u,
float v,
float uWidth,
float vHeight,
float width,
float height,
float tileWidth,
float tileHeight,
LivingEntity target) {
GL11.glPushMatrix();
GL11.glEnable(GL11.GL_BLEND);
mc.getTextureManager().bindTexture(res);
float hurtPercent = (target.hurtTime - (target.hurtTime != 0 ? mc.timer.renderPartialTicks : 0.0f)) / 10.0f;
GL11.glColor4f(1, 1 - hurtPercent, 1 - hurtPercent, 1);
AbstractGui.drawScaledCustomSizeModalRect(d, y, u, v, uWidth, vHeight, width, height, tileWidth, tileHeight);
GL11.glColor4f(1, 1, 1, 1);
GL11.glPopMatrix();
}
private void drawStyledRect(float x,
float y,
float width,
float height,
float radius) {
DisplayUtils.drawRoundedRect(x - 0.5f, y - 0.5f, width + 1, height + 1, radius + 0.5f, ColorUtils.setAlpha(ColorUtils.rgb(21,24,40), 90));
DisplayUtils.drawRoundedRect(x, y, width, height, radius, ColorUtils.rgba(21, 24, 40, 90));
}
private void drawArmor(EventDisplay eventDisplay, float x, float y) {
float spacing = 11.5f;
float scale = 0.7f;
float offsetX = 0;
ItemStack helmet = entity.getItemStackFromSlot(EquipmentSlotType.HEAD);
ItemStack chestplate = entity.getItemStackFromSlot(EquipmentSlotType.CHEST);
ItemStack leggings = entity.getItemStackFromSlot(EquipmentSlotType.LEGS);
ItemStack boots = entity.getItemStackFromSlot(EquipmentSlotType.FEET);
ItemStack heldItem = entity.getHeldItemOffhand();
boolean allEmpty = (helmet == null || helmet.isEmpty()) &&
(chestplate == null || chestplate.isEmpty()) &&
(leggings == null || leggings.isEmpty()) &&
(boots == null || boots.isEmpty()) &&
(heldItem == null || heldItem.isEmpty());
if (allEmpty) {
float textX = x - 0;
float textY = y - 30;
Fonts.sfui.drawText(eventDisplay.getMatrixStack(), "none", textX, textY, -1, 5.8f);
} else {
if (helmet != null && !helmet.isEmpty()) {
renderItemStack(eventDisplay, helmet, x + offsetX, y - 33, scale);
offsetX += spacing;
}
if (chestplate != null && !chestplate.isEmpty()) {
renderItemStack(eventDisplay, chestplate, x + offsetX, y - 33, scale);
offsetX += spacing;
}
if (leggings != null && !leggings.isEmpty()) {
renderItemStack(eventDisplay, leggings, x + offsetX, y - 33, scale);
offsetX += spacing;
}
if (boots != null && !boots.isEmpty()) {
renderItemStack(eventDisplay, boots, x + offsetX, y - 33, scale);
offsetX += spacing;
}
if (heldItem != null && !heldItem.isEmpty()) {
renderItemStack(eventDisplay, heldItem, x + offsetX, y - 31f, scale * 0.63f);
}
}
}
private void renderItemStack(EventDisplay eventDisplay, ItemStack stack, float x, float y, float scale) {
GlStateManager.pushMatrix();
GlStateManager.enableDepthTest();
GlStateManager.scalef(scale, scale, scale);
mc.getItemRenderer().renderItemAndEffectIntoGUI(stack, (int) (x / scale), (int) (y / scale));
mc.getItemRenderer().renderItemOverlayIntoGUI(mc.fontRenderer, stack, (int) (x / scale), (int) (y / scale),
stack.getCount() > 1 ? String.valueOf(stack.getCount()) : "");
GlStateManager.disableDepthTest();
GlStateManager.popMatrix();
}
}
Последнее редактирование: