Начинающий
Кинь фкис пж
либо в дс : soudzasd
Кинь фкис пж
А че поменял тоЩас "селфкодеры налетят" - скажут что фууу ,ты же просто поменял цвет и всьо фууу.
Я вам скажу - мне похуй.Таких я просто буду игнорить
К слову скажу- все баги ,где текст залазил на текст рядом - пофиксил,если найдете баги - пишите! Пофикшу
SS
Посмотреть вложение 277050
WaterMarkRenderer.java:package im.expensive.ui.display.impl; import com.mojang.blaze3d.matrix.MatrixStack; 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.render.ColorUtils; import im.expensive.utils.render.DisplayUtils; import im.expensive.utils.render.font.Fonts; import im.expensive.utils.text.GradientUtil; import lombok.AccessLevel; import lombok.RequiredArgsConstructor; import lombok.experimental.FieldDefaults; import net.minecraft.util.ResourceLocation; import net.minecraft.util.text.ITextComponent; import static java.lang.String.valueOf; @FieldDefaults(level = AccessLevel.PRIVATE) @RequiredArgsConstructor public class WatermarkRenderer implements ElementRenderer { final ResourceLocation logo = new ResourceLocation("expensive/images/hud/logo.png"); private final ResourceLocation user = new ResourceLocation("expensive/images/hud/user.png"); @Override public void render(EventDisplay eventDisplay) { MatrixStack ms = eventDisplay.getMatrixStack(); float posX = 1; float posY = 4; float padding = 5; float fontSize = 6.5f; float iconSize = 6; Style style = Expensive.getInstance().getStyleManager().getCurrentStyle(); DisplayUtils.drawShadow(posX, posY, iconSize + padding * 2, iconSize + padding * 2, 10, ColorUtils.rgba(21, 21, 50,255)); drawStyledRect(posX, posY, iconSize + padding * 2, iconSize + padding * 2, 4); DisplayUtils.drawImage(logo, posX + padding, posY + padding, iconSize, iconSize, ColorUtils.rgb(255, 255, 255)); String fps = valueOf(mc.getDebugFPS()); DisplayUtils.drawShadow(posX+ 20, posY+ 20, padding + 30, iconSize + padding * 2, 10, ColorUtils.rgba(21, 21, 50,255)); // drawStyledRect(posX + 20, posY + 20, padding + 30, iconSize + padding * 2, 4); drawStyledRect(posX + 21, posY + 20, padding + 30, iconSize + padding * 2, 4); Fonts.sfbold.drawText(ms, fps, posX + 37 , posY + 25 , ColorUtils.setAlpha(0xC0C0C0, (int) (255)), 6); DisplayUtils.drawImage(logo, posX + 24, posY + 23, 10, 10, ColorUtils.rgb(255, 255, 255)); DisplayUtils.drawImage(logo, posX + 26, posY + 23, 10, 10, ColorUtils.rgb(255, 255, 255)); // DisplayUtils.drawImage(logo, posX + 27, posY + 23, 10, 10, ColorUtils.rgb(255, 255, 255)); String text = ("PASTACLIENT "); float textWidth = Fonts.sfbold.getWidth(text, fontSize); float localPosX = posX + iconSize + padding * 3; DisplayUtils.drawShadow(localPosX, posY, iconSize + padding * 2.5f + textWidth, iconSize + padding * 2, 10, ColorUtils.rgba(21, 21, 50,255)); drawStyledRect(localPosX, posY, iconSize + padding * 2.5f + textWidth, iconSize + padding * 2, 4); DisplayUtils.drawImage(user, localPosX + padding, posY + padding, iconSize, iconSize, ColorUtils.rgb(100, 100, 100)); Fonts.sfbold.drawText(ms, text, posX + padding + 30 , posY + padding , ColorUtils.setAlpha(0xC0C0C0, (int) (255)), 6); } 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.rgba(21, 21, 50,255)); // outline DisplayUtils.drawRoundedRect(x, y, width, height, radius, ColorUtils.rgba(21, 21, 50,255)); } }
TargetInfoRenderer.java: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.ColorUtils; import im.expensive.utils.render.DisplayUtils; import im.expensive.utils.render.Scissor; 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.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 = 172 / 1.5f + 15; float height = 59 / 1.5f; 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(); Style style = Expensive.getInstance().getStyleManager().getCurrentStyle(); sizeAnimation(posX + (width / 2), posY + (height / 2), animation.getOutput()); DisplayUtils.drawShadow(posX, posY, width, height, 10, ColorUtils.rgba(21, 21, 50,255)); drawStyledRect(posX, posY, width, height, rounding, 255); drawTargetHead(entity, posX + spacing, posY + spacing + 1, headSize, headSize); Scissor.push(); Scissor.setFromComponentCoordinates(testX, testY, testW - 6, testH); Fonts.sfui.drawText(eventDisplay.getMatrixStack(), entity.getName().getString(), posX + headSize + spacing + spacing, posY + spacing + 1, ColorUtils.rgba(150, 150, 150,255), 8); Fonts.sfMedium.drawText(eventDisplay.getMatrixStack(), "Здоровье: " + ((int) hp + (int) mc.player.getAbsorptionAmount()), posX + headSize + spacing + spacing, posY + spacing + 1 + spacing + spacing, ColorUtils.rgb(150, 150, 150), 7); Scissor.unset(); Scissor.pop(); Vector4i vector4i = new Vector4i(style.getFirstColor().getRGB(), style.getFirstColor().getRGB(), style.getSecondColor().getRGB(), style.getSecondColor().getRGB()); DisplayUtils.drawRoundedRect(posX + headSize + spacing + spacing, posY + height - spacing * 2 - 3, (width - 42), 7, new Vector4f(4, 4, 4, 4), ColorUtils.rgba(21, 21, 50,255)); DisplayUtils.drawShadow(posX + headSize + spacing + spacing, posY + height - spacing * 2 - 3, (width - 42) * healthAnimation, 7, 8, ColorUtils.rgba(21, 21, 70,255)); DisplayUtils.drawRoundedRect(posX + headSize + spacing + spacing, posY + height - spacing * 2 - 3, (width - 42) * healthAnimation, 7, new Vector4f(4, 4, 4, 4), vector4i); GlStateManager.popMatrix(); } } 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, int alpha) { Style style = Expensive.getInstance().getStyleManager().getCurrentStyle(); DisplayUtils.drawRoundedRect(x - 0.5f, y - 0.5f, width + 1, height + 1, radius + 0.5f, ColorUtils.rgba(7, 7, 7,255)); // outline DisplayUtils.drawRoundedRect(x, y, width, height, radius, ColorUtils.rgba(21, 21, 50,255)); } }
KeyBindsRenderer.java:package im.expensive.ui.display.impl; import com.mojang.blaze3d.matrix.MatrixStack; import im.expensive.Expensive; import im.expensive.events.EventDisplay; import im.expensive.functions.api.Function; import im.expensive.ui.display.ElementRenderer; import im.expensive.ui.styles.Style; import im.expensive.utils.client.KeyStorage; import im.expensive.utils.drag.Dragging; import im.expensive.utils.render.ColorUtils; import im.expensive.utils.render.DisplayUtils; import im.expensive.utils.render.Scissor; import im.expensive.utils.render.font.Fonts; import im.expensive.utils.text.GradientUtil; import lombok.AccessLevel; import lombok.RequiredArgsConstructor; import lombok.experimental.FieldDefaults; import net.minecraft.util.text.ITextComponent; @FieldDefaults(level = AccessLevel.PRIVATE) @RequiredArgsConstructor public class KeyBindRenderer implements ElementRenderer { final Dragging dragging; float width; float height; @Override public void render(EventDisplay eventDisplay) { MatrixStack ms = eventDisplay.getMatrixStack(); float posX = dragging.getX(); float posY = dragging.getY(); float fontSize = 6.5f; float padding = 3; ITextComponent name = GradientUtil.gradient("KeyBinds"); Style style = Expensive.getInstance().getStyleManager().getCurrentStyle(); DisplayUtils.drawShadow(posX, posY, width - 20, height, 10, ColorUtils.rgb(21, 21, 50)); drawStyledRect(posX, posY, width - 20, height, 4); Scissor.push(); Scissor.setFromComponentCoordinates(posX, posY, width, height); Fonts.sfui.drawCenteredText(ms, "KeyBinds", posX + width / 2 - 6, posY + padding + 1f, ColorUtils.rgb(150, 150, 150), 7); posY += fontSize + padding * 2; float maxWidth = Fonts.sfMedium.getWidth(name, fontSize) + padding * 2; float localHeight = fontSize + padding * 2; DisplayUtils.drawRectHorizontalW(posX + 0.5f, posY, width - 20, 2.5f, 3, ColorUtils.rgba(0, 0, 0, (int) (255 * 0.25f))); posY += 3f; for (Function f : Expensive.getInstance().getFunctionRegistry().getFunctions()) { f.getAnimation().update(); if (!(f.getAnimation().getValue() > 0) || f.getBind() == 0) continue; String nameText = f.getName(); float nameWidth = Fonts.sfMedium.getWidth(nameText, fontSize); String bindText = "|" + KeyStorage.getKey(f.getBind()) + ""; float bindWidth = Fonts.sfMedium.getWidth(bindText, fontSize); float localWidth = nameWidth + bindWidth + padding * 3; Fonts.sfMedium.drawText(ms, nameText, posX + padding, posY + 0.5f, ColorUtils.rgba(150, 150, 150, (int) (255 * f.getAnimation().getValue())), fontSize); Fonts.sfMedium.drawText(ms, bindText, posX + width - padding - 20 , posY + 0.5f, ColorUtils.rgba(150, 150, 150, (int) (255 * f.getAnimation().getValue())), fontSize); if (localWidth > maxWidth) { maxWidth = localWidth; } posY += (float) ((fontSize + padding) * f.getAnimation().getValue()); localHeight += (float) ((fontSize + padding) * f.getAnimation().getValue()); } Scissor.unset(); Scissor.pop(); width = Math.max(maxWidth, 80); height = localHeight + 2.5f; dragging.setWidth(width); dragging.setHeight(height); } private void drawStyledRect(float x, float y, float width, float height, float radius) { for (Function f : Expensive.getInstance().getFunctionRegistry().getFunctions()) { f.getAnimation().update(); if (!(f.getAnimation().getValue() > 0) || f.getBind() == 0) continue; String nameText = f.getName(); float nameWidth = Fonts.sfMedium.getWidth(nameText, 5); String bindText = "|" + KeyStorage.getKey(f.getBind()) + ""; float bindWidth = Fonts.sfMedium.getWidth(bindText, 5); float localWidth = nameWidth + bindWidth + 3 * 3; DisplayUtils.drawRoundedRect(x - 0.5f, y - 0.5f, width - 1 + bindWidth, height + 1, radius + 0.5f, ColorUtils.rgba(21, 21, 21, 255)); // outline DisplayUtils.drawRoundedRect(x, y, width - 1 + bindWidth, height, radius, ColorUtils.rgba(21, 21, 50, 255)); } } }
StaffListRenderer.java:package im.expensive.ui.display.impl; import com.mojang.blaze3d.matrix.MatrixStack; import im.expensive.Expensive; import im.expensive.command.staffs.StaffStorage; import im.expensive.events.EventDisplay; import im.expensive.events.EventUpdate; import im.expensive.ui.display.ElementRenderer; import im.expensive.ui.display.ElementUpdater; import im.expensive.ui.styles.Style; import im.expensive.utils.drag.Dragging; import im.expensive.utils.render.ColorUtils; import im.expensive.utils.render.DisplayUtils; import im.expensive.utils.render.font.Fonts; import im.expensive.utils.text.GradientUtil; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Data; import lombok.RequiredArgsConstructor; import lombok.experimental.FieldDefaults; import net.minecraft.client.Minecraft; import net.minecraft.client.network.play.NetworkPlayerInfo; import net.minecraft.scoreboard.ScorePlayerTeam; import net.minecraft.scoreboard.Team; import net.minecraft.util.ResourceLocation; import net.minecraft.util.text.ITextComponent; import net.minecraft.world.GameType; import ru.hogoshi.Animation; import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.Locale; import java.util.regex.Pattern; @FieldDefaults(level = AccessLevel.PRIVATE) @RequiredArgsConstructor public class StaffListRenderer implements ElementRenderer, ElementUpdater { final Dragging dragging; private final List<Staff> staffPlayers = new ArrayList<>(); private final Pattern namePattern = Pattern.compile("^\\w{3,16}$"); private final Pattern prefixMatches = Pattern.compile(".[I](mod|der|adm|help|wne|хелп|адм|поддержка|кура|own|taf|curat|dev|supp|yt|сотруд).[/I]"); private final Animation animation = new Animation(); @Override public void update(EventUpdate e) { staffPlayers.clear(); for (ScorePlayerTeam team : mc.world.getScoreboard().getTeams().stream().sorted(Comparator.comparing(Team::getName)).toList()) { String name = team.getMembershipCollection().toString().replaceAll("[\\[\\]]", ""); boolean vanish = true; for (NetworkPlayerInfo info : mc.getConnection().getPlayerInfoMap()) { if (info.getGameProfile().getName().equals(name)) { vanish = false; } } if (namePattern.matcher(name).matches() && !name.equals(mc.player.getName().getString())) { if (!vanish) { if (prefixMatches.matcher(team.getPrefix().getString().toLowerCase(Locale.ROOT)).matches() || StaffStorage.isStaff(name)) { Staff staff = new Staff(team.getPrefix(), name, false, Status.NONE); staffPlayers.add(staff); } } if (vanish && !team.getPrefix().getString().isEmpty()) { Staff staff = new Staff(team.getPrefix(), name, true, Status.VANISHED); staffPlayers.add(staff); ResourceLocation file = new ResourceLocation("expensive/sounds/oof.wav"); } } } } float width; float height; @Override public void render(EventDisplay eventDisplay) { float posX = dragging.getX(); float posY = dragging.getY(); float padding = 3; float fontSize = 6.5f; MatrixStack ms = eventDisplay.getMatrixStack(); String name = ("StaffList"); Style style = Expensive.getInstance().getStyleManager().getCurrentStyle(); DisplayUtils.drawShadow(posX, posY, width- 20, height, 10, ColorUtils.rgba(21, 21, 50,255)); drawStyledRect(posX, posY, width, height, 4); Fonts.sfui.drawCenteredText(ms, "StaffList" , posX + width / 2 - 10, posY + padding + 1f, ColorUtils.rgb(150, 150, 150), 7); posY += fontSize + padding * 2; float maxWidth = Fonts.sfMedium.getWidth(name, fontSize) + padding * 2; float localHeight = fontSize + padding * 2; DisplayUtils.drawRectHorizontalW(posX + 0.5f, posY, width - 20, 2.5f, 3, ColorUtils.rgba(21, 21, 50, (int) (255 * 0.25f))); posY += 3.5f; for (StaffListRenderer.Staff f : staffPlayers) { ITextComponent prefix = f.getPrefix(); float prefixWidth = Fonts.sfMedium.getWidth(prefix, fontSize); String staff = (prefix.getString().isEmpty() ? "" : " ") + f.getName(); float nameWidth = Fonts.sfMedium.getWidth(staff, fontSize); float localWidth = prefixWidth + nameWidth + Fonts.sfMedium.getWidth(f.getStatus().string, fontSize) + padding * 3; // Fonts.sfMedium.drawText(ms, prefix, posX + padding, posY, fontSize, 255); Fonts.sfMedium.drawText(ms, staff, posX + padding + 10 , posY, -1, fontSize); Fonts.sfMedium.drawText(ms, f.getStatus().string, posX - padding + staffPlayers.size() + 5, posY, f.getStatus().color, fontSize); if (localWidth > maxWidth) { maxWidth = localWidth; } posY += fontSize + padding; localHeight += fontSize + padding; } width = Math.max(maxWidth, 80); height = localHeight + 2.5f; dragging.setWidth(width); dragging.setHeight(height); } @AllArgsConstructor [USER=54968]@data[/USER] public static class Staff { ITextComponent prefix; String name; boolean isSpec; Status status; public void updateStatus() { for (NetworkPlayerInfo info : mc.getConnection().getPlayerInfoMap()) { if (info.getGameProfile().getName().equals(name)) { if (info.getGameType() == GameType.SPECTATOR) { return; } status = Status.NONE; return; } } status = Status.VANISHED; } } public enum Status { NONE("", -1), VANISHED("V", ColorUtils.rgb(254, 68, 68)); public final String string; public final int color; Status(String string, int color) { this.string = string; this.color = color; } } private void drawStyledRect(float x, float y, float width, float height, float radius) { DisplayUtils.drawRoundedRect(x - 0.5f, y - 0.5f, width - 20, height + 1, radius + 0.5f,ColorUtils.rgba(21, 21, 21,255)); // outline DisplayUtils.drawRoundedRect(x, y, width - 20, height, radius, ColorUtils.rgba(21, 21, 50,255)); } }
PotionRenderer.java:package im.expensive.ui.display.impl; import com.mojang.blaze3d.matrix.MatrixStack; 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.drag.Dragging; import im.expensive.utils.render.ColorUtils; import im.expensive.utils.render.DisplayUtils; import im.expensive.utils.render.Scissor; import im.expensive.utils.render.font.Fonts; import im.expensive.utils.text.GradientUtil; import lombok.AccessLevel; import lombok.RequiredArgsConstructor; import lombok.experimental.FieldDefaults; import net.minecraft.client.resources.I18n; import net.minecraft.potion.EffectInstance; import net.minecraft.potion.EffectUtils; import net.minecraft.util.text.ITextComponent; @FieldDefaults(level = AccessLevel.PRIVATE) @RequiredArgsConstructor public class PotionRenderer implements ElementRenderer { final Dragging dragging; float width; float height; @Override public void render(EventDisplay eventDisplay) { MatrixStack ms = eventDisplay.getMatrixStack(); float posX = dragging.getX(); float posY = dragging.getY(); float fontSize = 6.5f; float padding = 3; String name = ("Potions"); Style style = Expensive.getInstance().getStyleManager().getCurrentStyle(); DisplayUtils.drawShadow(posX, posY, width - 20, height, 10, ColorUtils.rgba(21, 21, 21, 255)); drawStyledRect(posX, posY, width, height, 4); Scissor.push(); Scissor.setFromComponentCoordinates(posX, posY, width, height); Fonts.sfui.drawCenteredText(ms, "Potions", posX + width / 2 - 2, posY + padding + 1f, ColorUtils.rgb(150, 150, 150), 7); posY += fontSize + padding * 2; float maxWidth = Fonts.sfMedium.getWidth(name, fontSize) + padding * 2; float localHeight = fontSize + padding * 2; DisplayUtils.drawRectHorizontalW(posX + 0.5f, posY, width - 6, 2.5f, 3, ColorUtils.rgba(0, 0, 0, (int) (255 * 0.25f))); posY += 3f; for (EffectInstance ef : mc.player.getActivePotionEffects()) { int amp = ef.getAmplifier(); String ampStr = ""; if (amp >= 1 && amp <= 9) { ampStr = " " + I18n.format("enchantment.level." + (amp + 1)); } String nameText = I18n.format(ef.getEffectName()) + ampStr; float nameWidth = Fonts.sfMedium.getWidth(nameText, fontSize); String bindText = EffectUtils.getPotionDurationString(ef, 1); float bindWidth = Fonts.sfMedium.getWidth(bindText, fontSize); float localWidth = nameWidth + bindWidth + padding * 3; Fonts.sfMedium.drawText(ms, nameText, posX + padding - 2, posY, ColorUtils.rgba(210, 210, 210, 255), 6); Fonts.sfMedium.drawText(ms, bindText, posX + width - 22, posY, ColorUtils.rgba(210, 210, 210, 255), 6); if (localWidth > maxWidth) { maxWidth = localWidth; } posY += (fontSize + padding); localHeight += (fontSize + padding); } Scissor.unset(); Scissor.pop(); width = Math.max(maxWidth, 80); height = localHeight + 2.5f; dragging.setWidth(width); dragging.setHeight(height); } private void drawStyledRect(float x, float y, float width, float height, float radius) { DisplayUtils.drawRoundedRect(x - 0.5f, y - 0.5f, width- 5 , height + 1, radius + 0.5f, ColorUtils.rgba(21, 21, 21, 255)); // outline DisplayUtils.drawRoundedRect(x, y, width - 5 , height, radius, ColorUtils.rgba(21, 21, 50, 255)); } }
ArrayListRenderer.java:package im.expensive.ui.display.impl; import com.mojang.blaze3d.matrix.MatrixStack; import im.expensive.Expensive; import im.expensive.events.EventDisplay; import im.expensive.events.EventUpdate; import im.expensive.functions.api.Category; import im.expensive.functions.api.Function; import im.expensive.functions.impl.render.HUD; import im.expensive.ui.display.ElementRenderer; import im.expensive.ui.display.ElementUpdater; import im.expensive.utils.math.StopWatch; import im.expensive.utils.render.ColorUtils; import im.expensive.utils.render.DisplayUtils; import im.expensive.utils.render.font.Fonts; import net.minecraft.util.math.vector.Vector4f; import ru.hogoshi.Animation; import java.util.List; public class ArrayListRenderer implements ElementRenderer, ElementUpdater { private int lastIndex; List<Function> list; StopWatch stopWatch = new StopWatch(); @Override public void update(EventUpdate e) { if (stopWatch.isReached(1000)) { list = Expensive.getInstance().getFunctionRegistry().getSorted(Fonts.sfui, 9 - 1.5f) .stream() .filter(m -> m.getCategory() != Category.Render) .filter(m -> m.getCategory() != Category.Misc) .toList(); stopWatch.reset(); } } @Override public void render(EventDisplay eventDisplay) { MatrixStack ms = eventDisplay.getMatrixStack(); float rounding = 6; float padding = 3.5f; float posX = 4; float posY = 4 + 28; int index = 0; if (list == null) return; for (Function f : list) { float fontSize = 6.5f; Animation anim = f.getAnimation(); float value = (float) anim.getValue(); String text = f.getName(); float textWidth = Fonts.sfui.getWidth(text, fontSize); if (value != 0) { float localFontSize = fontSize * value; float localTextWidth = textWidth * value; // DisplayUtils.drawShadow(posX, posY, localTextWidth + padding * 2, localFontSize + padding * 2, 14, ColorUtils.setAlpha(HUD.getColor(index), (int) (255 * value))); posY += (fontSize + padding * 2) * value; index++; } } index = 0; posY = 4 + 28; for (Function f : list) { float fontSize = 6.5f; Animation anim = f.getAnimation(); anim.update(); float value = (float) anim.getValue(); String text = f.getName(); float textWidth = Fonts.sfui.getWidth(text, fontSize); if (value != 0) { float localFontSize = fontSize * value; float localTextWidth = textWidth * value; boolean isFirst = index == 0; boolean isLast = index == lastIndex; float localRounding = rounding; for (Function f2 : list.subList(list.indexOf(f) + 1, list.size())) { // predict next active module if (f2.getAnimation().getValue() != 0) { localRounding = isLast ? rounding : Math.min(textWidth - Fonts.sfui.getWidth(f2.getName(), fontSize), rounding); break; } } Vector4f rectVec = new Vector4f(isFirst ? rounding : 0, isLast ? rounding : 0, isFirst ? rounding : 0, isLast ? rounding : localRounding); DisplayUtils.drawRoundedRect(posX - 7 + 0.8f, posY + 20, localTextWidth + padding *2 , localFontSize + padding * 2f, 3 , ColorUtils.rgba(21, 21, 50, (int) (255 * value))); DisplayUtils.drawRoundedRect(posX - 7, posY + 20, localTextWidth + padding * 2, localFontSize + padding * 2, 3, ColorUtils.rgba(21, 21, 50, (int) (255 * value))); Fonts.sfui.drawText(ms, f.getName(), posX + padding - 7 , posY + padding+20, ColorUtils.setAlpha(0xC0C0C0, (int) (255 * value)), localFontSize); posY += (fontSize + padding * 2) * value; index++; } } lastIndex = index - 1; } }
/del растифанатикЩас "селфкодеры налетят" - скажут что фууу ,ты же просто поменял цвет и всьо фууу.
Я вам скажу - мне похуй.Таких я просто буду игнорить
К слову скажу- все баги ,где текст залазил на текст рядом - пофиксил,если найдете баги - пишите! Пофикшу
SS
Посмотреть вложение 277050
WaterMarkRenderer.java:package im.expensive.ui.display.impl; import com.mojang.blaze3d.matrix.MatrixStack; 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.render.ColorUtils; import im.expensive.utils.render.DisplayUtils; import im.expensive.utils.render.font.Fonts; import im.expensive.utils.text.GradientUtil; import lombok.AccessLevel; import lombok.RequiredArgsConstructor; import lombok.experimental.FieldDefaults; import net.minecraft.util.ResourceLocation; import net.minecraft.util.text.ITextComponent; import static java.lang.String.valueOf; @FieldDefaults(level = AccessLevel.PRIVATE) @RequiredArgsConstructor public class WatermarkRenderer implements ElementRenderer { final ResourceLocation logo = new ResourceLocation("expensive/images/hud/logo.png"); private final ResourceLocation user = new ResourceLocation("expensive/images/hud/user.png"); @Override public void render(EventDisplay eventDisplay) { MatrixStack ms = eventDisplay.getMatrixStack(); float posX = 1; float posY = 4; float padding = 5; float fontSize = 6.5f; float iconSize = 6; Style style = Expensive.getInstance().getStyleManager().getCurrentStyle(); DisplayUtils.drawShadow(posX, posY, iconSize + padding * 2, iconSize + padding * 2, 10, ColorUtils.rgba(21, 21, 50,255)); drawStyledRect(posX, posY, iconSize + padding * 2, iconSize + padding * 2, 4); DisplayUtils.drawImage(logo, posX + padding, posY + padding, iconSize, iconSize, ColorUtils.rgb(255, 255, 255)); String fps = valueOf(mc.getDebugFPS()); DisplayUtils.drawShadow(posX+ 20, posY+ 20, padding + 30, iconSize + padding * 2, 10, ColorUtils.rgba(21, 21, 50,255)); // drawStyledRect(posX + 20, posY + 20, padding + 30, iconSize + padding * 2, 4); drawStyledRect(posX + 21, posY + 20, padding + 30, iconSize + padding * 2, 4); Fonts.sfbold.drawText(ms, fps, posX + 37 , posY + 25 , ColorUtils.setAlpha(0xC0C0C0, (int) (255)), 6); DisplayUtils.drawImage(logo, posX + 24, posY + 23, 10, 10, ColorUtils.rgb(255, 255, 255)); DisplayUtils.drawImage(logo, posX + 26, posY + 23, 10, 10, ColorUtils.rgb(255, 255, 255)); // DisplayUtils.drawImage(logo, posX + 27, posY + 23, 10, 10, ColorUtils.rgb(255, 255, 255)); String text = ("PASTACLIENT "); float textWidth = Fonts.sfbold.getWidth(text, fontSize); float localPosX = posX + iconSize + padding * 3; DisplayUtils.drawShadow(localPosX, posY, iconSize + padding * 2.5f + textWidth, iconSize + padding * 2, 10, ColorUtils.rgba(21, 21, 50,255)); drawStyledRect(localPosX, posY, iconSize + padding * 2.5f + textWidth, iconSize + padding * 2, 4); DisplayUtils.drawImage(user, localPosX + padding, posY + padding, iconSize, iconSize, ColorUtils.rgb(100, 100, 100)); Fonts.sfbold.drawText(ms, text, posX + padding + 30 , posY + padding , ColorUtils.setAlpha(0xC0C0C0, (int) (255)), 6); } 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.rgba(21, 21, 50,255)); // outline DisplayUtils.drawRoundedRect(x, y, width, height, radius, ColorUtils.rgba(21, 21, 50,255)); } }
TargetInfoRenderer.java: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.ColorUtils; import im.expensive.utils.render.DisplayUtils; import im.expensive.utils.render.Scissor; 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.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 = 172 / 1.5f + 15; float height = 59 / 1.5f; 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(); Style style = Expensive.getInstance().getStyleManager().getCurrentStyle(); sizeAnimation(posX + (width / 2), posY + (height / 2), animation.getOutput()); DisplayUtils.drawShadow(posX, posY, width, height, 10, ColorUtils.rgba(21, 21, 50,255)); drawStyledRect(posX, posY, width, height, rounding, 255); drawTargetHead(entity, posX + spacing, posY + spacing + 1, headSize, headSize); Scissor.push(); Scissor.setFromComponentCoordinates(testX, testY, testW - 6, testH); Fonts.sfui.drawText(eventDisplay.getMatrixStack(), entity.getName().getString(), posX + headSize + spacing + spacing, posY + spacing + 1, ColorUtils.rgba(150, 150, 150,255), 8); Fonts.sfMedium.drawText(eventDisplay.getMatrixStack(), "Здоровье: " + ((int) hp + (int) mc.player.getAbsorptionAmount()), posX + headSize + spacing + spacing, posY + spacing + 1 + spacing + spacing, ColorUtils.rgb(150, 150, 150), 7); Scissor.unset(); Scissor.pop(); Vector4i vector4i = new Vector4i(style.getFirstColor().getRGB(), style.getFirstColor().getRGB(), style.getSecondColor().getRGB(), style.getSecondColor().getRGB()); DisplayUtils.drawRoundedRect(posX + headSize + spacing + spacing, posY + height - spacing * 2 - 3, (width - 42), 7, new Vector4f(4, 4, 4, 4), ColorUtils.rgba(21, 21, 50,255)); DisplayUtils.drawShadow(posX + headSize + spacing + spacing, posY + height - spacing * 2 - 3, (width - 42) * healthAnimation, 7, 8, ColorUtils.rgba(21, 21, 70,255)); DisplayUtils.drawRoundedRect(posX + headSize + spacing + spacing, posY + height - spacing * 2 - 3, (width - 42) * healthAnimation, 7, new Vector4f(4, 4, 4, 4), vector4i); GlStateManager.popMatrix(); } } 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, int alpha) { Style style = Expensive.getInstance().getStyleManager().getCurrentStyle(); DisplayUtils.drawRoundedRect(x - 0.5f, y - 0.5f, width + 1, height + 1, radius + 0.5f, ColorUtils.rgba(7, 7, 7,255)); // outline DisplayUtils.drawRoundedRect(x, y, width, height, radius, ColorUtils.rgba(21, 21, 50,255)); } }
KeyBindsRenderer.java:package im.expensive.ui.display.impl; import com.mojang.blaze3d.matrix.MatrixStack; import im.expensive.Expensive; import im.expensive.events.EventDisplay; import im.expensive.functions.api.Function; import im.expensive.ui.display.ElementRenderer; import im.expensive.ui.styles.Style; import im.expensive.utils.client.KeyStorage; import im.expensive.utils.drag.Dragging; import im.expensive.utils.render.ColorUtils; import im.expensive.utils.render.DisplayUtils; import im.expensive.utils.render.Scissor; import im.expensive.utils.render.font.Fonts; import im.expensive.utils.text.GradientUtil; import lombok.AccessLevel; import lombok.RequiredArgsConstructor; import lombok.experimental.FieldDefaults; import net.minecraft.util.text.ITextComponent; @FieldDefaults(level = AccessLevel.PRIVATE) @RequiredArgsConstructor public class KeyBindRenderer implements ElementRenderer { final Dragging dragging; float width; float height; @Override public void render(EventDisplay eventDisplay) { MatrixStack ms = eventDisplay.getMatrixStack(); float posX = dragging.getX(); float posY = dragging.getY(); float fontSize = 6.5f; float padding = 3; ITextComponent name = GradientUtil.gradient("KeyBinds"); Style style = Expensive.getInstance().getStyleManager().getCurrentStyle(); DisplayUtils.drawShadow(posX, posY, width - 20, height, 10, ColorUtils.rgb(21, 21, 50)); drawStyledRect(posX, posY, width - 20, height, 4); Scissor.push(); Scissor.setFromComponentCoordinates(posX, posY, width, height); Fonts.sfui.drawCenteredText(ms, "KeyBinds", posX + width / 2 - 6, posY + padding + 1f, ColorUtils.rgb(150, 150, 150), 7); posY += fontSize + padding * 2; float maxWidth = Fonts.sfMedium.getWidth(name, fontSize) + padding * 2; float localHeight = fontSize + padding * 2; DisplayUtils.drawRectHorizontalW(posX + 0.5f, posY, width - 20, 2.5f, 3, ColorUtils.rgba(0, 0, 0, (int) (255 * 0.25f))); posY += 3f; for (Function f : Expensive.getInstance().getFunctionRegistry().getFunctions()) { f.getAnimation().update(); if (!(f.getAnimation().getValue() > 0) || f.getBind() == 0) continue; String nameText = f.getName(); float nameWidth = Fonts.sfMedium.getWidth(nameText, fontSize); String bindText = "|" + KeyStorage.getKey(f.getBind()) + ""; float bindWidth = Fonts.sfMedium.getWidth(bindText, fontSize); float localWidth = nameWidth + bindWidth + padding * 3; Fonts.sfMedium.drawText(ms, nameText, posX + padding, posY + 0.5f, ColorUtils.rgba(150, 150, 150, (int) (255 * f.getAnimation().getValue())), fontSize); Fonts.sfMedium.drawText(ms, bindText, posX + width - padding - 20 , posY + 0.5f, ColorUtils.rgba(150, 150, 150, (int) (255 * f.getAnimation().getValue())), fontSize); if (localWidth > maxWidth) { maxWidth = localWidth; } posY += (float) ((fontSize + padding) * f.getAnimation().getValue()); localHeight += (float) ((fontSize + padding) * f.getAnimation().getValue()); } Scissor.unset(); Scissor.pop(); width = Math.max(maxWidth, 80); height = localHeight + 2.5f; dragging.setWidth(width); dragging.setHeight(height); } private void drawStyledRect(float x, float y, float width, float height, float radius) { for (Function f : Expensive.getInstance().getFunctionRegistry().getFunctions()) { f.getAnimation().update(); if (!(f.getAnimation().getValue() > 0) || f.getBind() == 0) continue; String nameText = f.getName(); float nameWidth = Fonts.sfMedium.getWidth(nameText, 5); String bindText = "|" + KeyStorage.getKey(f.getBind()) + ""; float bindWidth = Fonts.sfMedium.getWidth(bindText, 5); float localWidth = nameWidth + bindWidth + 3 * 3; DisplayUtils.drawRoundedRect(x - 0.5f, y - 0.5f, width - 1 + bindWidth, height + 1, radius + 0.5f, ColorUtils.rgba(21, 21, 21, 255)); // outline DisplayUtils.drawRoundedRect(x, y, width - 1 + bindWidth, height, radius, ColorUtils.rgba(21, 21, 50, 255)); } } }
StaffListRenderer.java:package im.expensive.ui.display.impl; import com.mojang.blaze3d.matrix.MatrixStack; import im.expensive.Expensive; import im.expensive.command.staffs.StaffStorage; import im.expensive.events.EventDisplay; import im.expensive.events.EventUpdate; import im.expensive.ui.display.ElementRenderer; import im.expensive.ui.display.ElementUpdater; import im.expensive.ui.styles.Style; import im.expensive.utils.drag.Dragging; import im.expensive.utils.render.ColorUtils; import im.expensive.utils.render.DisplayUtils; import im.expensive.utils.render.font.Fonts; import im.expensive.utils.text.GradientUtil; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Data; import lombok.RequiredArgsConstructor; import lombok.experimental.FieldDefaults; import net.minecraft.client.Minecraft; import net.minecraft.client.network.play.NetworkPlayerInfo; import net.minecraft.scoreboard.ScorePlayerTeam; import net.minecraft.scoreboard.Team; import net.minecraft.util.ResourceLocation; import net.minecraft.util.text.ITextComponent; import net.minecraft.world.GameType; import ru.hogoshi.Animation; import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.Locale; import java.util.regex.Pattern; @FieldDefaults(level = AccessLevel.PRIVATE) @RequiredArgsConstructor public class StaffListRenderer implements ElementRenderer, ElementUpdater { final Dragging dragging; private final List<Staff> staffPlayers = new ArrayList<>(); private final Pattern namePattern = Pattern.compile("^\\w{3,16}$"); private final Pattern prefixMatches = Pattern.compile(".[I](mod|der|adm|help|wne|хелп|адм|поддержка|кура|own|taf|curat|dev|supp|yt|сотруд).[/I]"); private final Animation animation = new Animation(); @Override public void update(EventUpdate e) { staffPlayers.clear(); for (ScorePlayerTeam team : mc.world.getScoreboard().getTeams().stream().sorted(Comparator.comparing(Team::getName)).toList()) { String name = team.getMembershipCollection().toString().replaceAll("[\\[\\]]", ""); boolean vanish = true; for (NetworkPlayerInfo info : mc.getConnection().getPlayerInfoMap()) { if (info.getGameProfile().getName().equals(name)) { vanish = false; } } if (namePattern.matcher(name).matches() && !name.equals(mc.player.getName().getString())) { if (!vanish) { if (prefixMatches.matcher(team.getPrefix().getString().toLowerCase(Locale.ROOT)).matches() || StaffStorage.isStaff(name)) { Staff staff = new Staff(team.getPrefix(), name, false, Status.NONE); staffPlayers.add(staff); } } if (vanish && !team.getPrefix().getString().isEmpty()) { Staff staff = new Staff(team.getPrefix(), name, true, Status.VANISHED); staffPlayers.add(staff); ResourceLocation file = new ResourceLocation("expensive/sounds/oof.wav"); } } } } float width; float height; @Override public void render(EventDisplay eventDisplay) { float posX = dragging.getX(); float posY = dragging.getY(); float padding = 3; float fontSize = 6.5f; MatrixStack ms = eventDisplay.getMatrixStack(); String name = ("StaffList"); Style style = Expensive.getInstance().getStyleManager().getCurrentStyle(); DisplayUtils.drawShadow(posX, posY, width- 20, height, 10, ColorUtils.rgba(21, 21, 50,255)); drawStyledRect(posX, posY, width, height, 4); Fonts.sfui.drawCenteredText(ms, "StaffList" , posX + width / 2 - 10, posY + padding + 1f, ColorUtils.rgb(150, 150, 150), 7); posY += fontSize + padding * 2; float maxWidth = Fonts.sfMedium.getWidth(name, fontSize) + padding * 2; float localHeight = fontSize + padding * 2; DisplayUtils.drawRectHorizontalW(posX + 0.5f, posY, width - 20, 2.5f, 3, ColorUtils.rgba(21, 21, 50, (int) (255 * 0.25f))); posY += 3.5f; for (StaffListRenderer.Staff f : staffPlayers) { ITextComponent prefix = f.getPrefix(); float prefixWidth = Fonts.sfMedium.getWidth(prefix, fontSize); String staff = (prefix.getString().isEmpty() ? "" : " ") + f.getName(); float nameWidth = Fonts.sfMedium.getWidth(staff, fontSize); float localWidth = prefixWidth + nameWidth + Fonts.sfMedium.getWidth(f.getStatus().string, fontSize) + padding * 3; // Fonts.sfMedium.drawText(ms, prefix, posX + padding, posY, fontSize, 255); Fonts.sfMedium.drawText(ms, staff, posX + padding + 10 , posY, -1, fontSize); Fonts.sfMedium.drawText(ms, f.getStatus().string, posX - padding + staffPlayers.size() + 5, posY, f.getStatus().color, fontSize); if (localWidth > maxWidth) { maxWidth = localWidth; } posY += fontSize + padding; localHeight += fontSize + padding; } width = Math.max(maxWidth, 80); height = localHeight + 2.5f; dragging.setWidth(width); dragging.setHeight(height); } @AllArgsConstructor [USER=54968]@data[/USER] public static class Staff { ITextComponent prefix; String name; boolean isSpec; Status status; public void updateStatus() { for (NetworkPlayerInfo info : mc.getConnection().getPlayerInfoMap()) { if (info.getGameProfile().getName().equals(name)) { if (info.getGameType() == GameType.SPECTATOR) { return; } status = Status.NONE; return; } } status = Status.VANISHED; } } public enum Status { NONE("", -1), VANISHED("V", ColorUtils.rgb(254, 68, 68)); public final String string; public final int color; Status(String string, int color) { this.string = string; this.color = color; } } private void drawStyledRect(float x, float y, float width, float height, float radius) { DisplayUtils.drawRoundedRect(x - 0.5f, y - 0.5f, width - 20, height + 1, radius + 0.5f,ColorUtils.rgba(21, 21, 21,255)); // outline DisplayUtils.drawRoundedRect(x, y, width - 20, height, radius, ColorUtils.rgba(21, 21, 50,255)); } }
PotionRenderer.java:package im.expensive.ui.display.impl; import com.mojang.blaze3d.matrix.MatrixStack; 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.drag.Dragging; import im.expensive.utils.render.ColorUtils; import im.expensive.utils.render.DisplayUtils; import im.expensive.utils.render.Scissor; import im.expensive.utils.render.font.Fonts; import im.expensive.utils.text.GradientUtil; import lombok.AccessLevel; import lombok.RequiredArgsConstructor; import lombok.experimental.FieldDefaults; import net.minecraft.client.resources.I18n; import net.minecraft.potion.EffectInstance; import net.minecraft.potion.EffectUtils; import net.minecraft.util.text.ITextComponent; @FieldDefaults(level = AccessLevel.PRIVATE) @RequiredArgsConstructor public class PotionRenderer implements ElementRenderer { final Dragging dragging; float width; float height; @Override public void render(EventDisplay eventDisplay) { MatrixStack ms = eventDisplay.getMatrixStack(); float posX = dragging.getX(); float posY = dragging.getY(); float fontSize = 6.5f; float padding = 3; String name = ("Potions"); Style style = Expensive.getInstance().getStyleManager().getCurrentStyle(); DisplayUtils.drawShadow(posX, posY, width - 20, height, 10, ColorUtils.rgba(21, 21, 21, 255)); drawStyledRect(posX, posY, width, height, 4); Scissor.push(); Scissor.setFromComponentCoordinates(posX, posY, width, height); Fonts.sfui.drawCenteredText(ms, "Potions", posX + width / 2 - 2, posY + padding + 1f, ColorUtils.rgb(150, 150, 150), 7); posY += fontSize + padding * 2; float maxWidth = Fonts.sfMedium.getWidth(name, fontSize) + padding * 2; float localHeight = fontSize + padding * 2; DisplayUtils.drawRectHorizontalW(posX + 0.5f, posY, width - 6, 2.5f, 3, ColorUtils.rgba(0, 0, 0, (int) (255 * 0.25f))); posY += 3f; for (EffectInstance ef : mc.player.getActivePotionEffects()) { int amp = ef.getAmplifier(); String ampStr = ""; if (amp >= 1 && amp <= 9) { ampStr = " " + I18n.format("enchantment.level." + (amp + 1)); } String nameText = I18n.format(ef.getEffectName()) + ampStr; float nameWidth = Fonts.sfMedium.getWidth(nameText, fontSize); String bindText = EffectUtils.getPotionDurationString(ef, 1); float bindWidth = Fonts.sfMedium.getWidth(bindText, fontSize); float localWidth = nameWidth + bindWidth + padding * 3; Fonts.sfMedium.drawText(ms, nameText, posX + padding - 2, posY, ColorUtils.rgba(210, 210, 210, 255), 6); Fonts.sfMedium.drawText(ms, bindText, posX + width - 22, posY, ColorUtils.rgba(210, 210, 210, 255), 6); if (localWidth > maxWidth) { maxWidth = localWidth; } posY += (fontSize + padding); localHeight += (fontSize + padding); } Scissor.unset(); Scissor.pop(); width = Math.max(maxWidth, 80); height = localHeight + 2.5f; dragging.setWidth(width); dragging.setHeight(height); } private void drawStyledRect(float x, float y, float width, float height, float radius) { DisplayUtils.drawRoundedRect(x - 0.5f, y - 0.5f, width- 5 , height + 1, radius + 0.5f, ColorUtils.rgba(21, 21, 21, 255)); // outline DisplayUtils.drawRoundedRect(x, y, width - 5 , height, radius, ColorUtils.rgba(21, 21, 50, 255)); } }
ArrayListRenderer.java:package im.expensive.ui.display.impl; import com.mojang.blaze3d.matrix.MatrixStack; import im.expensive.Expensive; import im.expensive.events.EventDisplay; import im.expensive.events.EventUpdate; import im.expensive.functions.api.Category; import im.expensive.functions.api.Function; import im.expensive.functions.impl.render.HUD; import im.expensive.ui.display.ElementRenderer; import im.expensive.ui.display.ElementUpdater; import im.expensive.utils.math.StopWatch; import im.expensive.utils.render.ColorUtils; import im.expensive.utils.render.DisplayUtils; import im.expensive.utils.render.font.Fonts; import net.minecraft.util.math.vector.Vector4f; import ru.hogoshi.Animation; import java.util.List; public class ArrayListRenderer implements ElementRenderer, ElementUpdater { private int lastIndex; List<Function> list; StopWatch stopWatch = new StopWatch(); @Override public void update(EventUpdate e) { if (stopWatch.isReached(1000)) { list = Expensive.getInstance().getFunctionRegistry().getSorted(Fonts.sfui, 9 - 1.5f) .stream() .filter(m -> m.getCategory() != Category.Render) .filter(m -> m.getCategory() != Category.Misc) .toList(); stopWatch.reset(); } } @Override public void render(EventDisplay eventDisplay) { MatrixStack ms = eventDisplay.getMatrixStack(); float rounding = 6; float padding = 3.5f; float posX = 4; float posY = 4 + 28; int index = 0; if (list == null) return; for (Function f : list) { float fontSize = 6.5f; Animation anim = f.getAnimation(); float value = (float) anim.getValue(); String text = f.getName(); float textWidth = Fonts.sfui.getWidth(text, fontSize); if (value != 0) { float localFontSize = fontSize * value; float localTextWidth = textWidth * value; // DisplayUtils.drawShadow(posX, posY, localTextWidth + padding * 2, localFontSize + padding * 2, 14, ColorUtils.setAlpha(HUD.getColor(index), (int) (255 * value))); posY += (fontSize + padding * 2) * value; index++; } } index = 0; posY = 4 + 28; for (Function f : list) { float fontSize = 6.5f; Animation anim = f.getAnimation(); anim.update(); float value = (float) anim.getValue(); String text = f.getName(); float textWidth = Fonts.sfui.getWidth(text, fontSize); if (value != 0) { float localFontSize = fontSize * value; float localTextWidth = textWidth * value; boolean isFirst = index == 0; boolean isLast = index == lastIndex; float localRounding = rounding; for (Function f2 : list.subList(list.indexOf(f) + 1, list.size())) { // predict next active module if (f2.getAnimation().getValue() != 0) { localRounding = isLast ? rounding : Math.min(textWidth - Fonts.sfui.getWidth(f2.getName(), fontSize), rounding); break; } } Vector4f rectVec = new Vector4f(isFirst ? rounding : 0, isLast ? rounding : 0, isFirst ? rounding : 0, isLast ? rounding : localRounding); DisplayUtils.drawRoundedRect(posX - 7 + 0.8f, posY + 20, localTextWidth + padding *2 , localFontSize + padding * 2f, 3 , ColorUtils.rgba(21, 21, 50, (int) (255 * value))); DisplayUtils.drawRoundedRect(posX - 7, posY + 20, localTextWidth + padding * 2, localFontSize + padding * 2, 3, ColorUtils.rgba(21, 21, 50, (int) (255 * value))); Fonts.sfui.drawText(ms, f.getName(), posX + padding - 7 , posY + padding+20, ColorUtils.setAlpha(0xC0C0C0, (int) (255 * value)), localFontSize); posY += (fontSize + padding * 2) * value; index++; } } lastIndex = index - 1; } }
Хватит писать себе с твинков.
это не твинк.генийХватит писать себе с твинков.
Проект предоставляет различный материал, относящийся к сфере киберспорта, программирования, ПО для игр, а также позволяет его участникам общаться на многие другие темы. Почта для жалоб: admin@yougame.biz