-
Автор темы
- #1
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
Без понятия зачем я это заливаю, сделано за 12 минут.
Давайте без негатива, если вам не нравится - не скачивайте! но пожалуйста, не обсирайте, я сам все прекрасно знаю.
Думаю есть люди которым зайдет это
Будет много реакций - сделаю таргетхуд и ватермарку в этом стиле
(идею взял у тык )
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.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.ResourceLocation;
import net.minecraft.util.text.ITextComponent;
@FieldDefaults(level = AccessLevel.PRIVATE)
@RequiredArgsConstructor
public class KeyBindRenderer implements ElementRenderer {
final Dragging dragging;
float iconSizeX = 10;
float iconSizeY = 10;
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 = 5;
ITextComponent name = GradientUtil.gradient("Hotkeys");
String namemod = "Hotkeys";
float finalPosY = posY;
drawStyledRect(posX, finalPosY, width, height, 5);
DisplayUtils.drawShadow(posX, posY, width, height, 15, ColorUtils.rgba(255,255,255,165));
Scissor.push();
Scissor.setFromComponentCoordinates(posX, posY, width, height);
Fonts.sfui.drawText(ms, namemod, posX + padding, posY + padding + 1, ColorUtils.rgb(0, 0, 0),fontSize);
posY += fontSize + padding * 2;
float maxWidth = Fonts.sfMedium.getWidth(name, fontSize) + padding * 2;
float localHeight = fontSize + padding * 2;
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(0, 0, 0, (int) (255 * f.getAnimation().getValue())), fontSize);
Fonts.sfMedium.drawText(ms, bindText, posX + width - padding - bindWidth, posY + 0.5f, ColorUtils.rgba(0, 0, 0, (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) {
DisplayUtils.drawRoundedRect(x - 0.5f, y - 0.5f, width + 1, height + 1, radius + 0.5f, ColorUtils.setAlpha(ColorUtils.rgb(18,16,16), 90));
DisplayUtils.drawRoundedRect(x, y, width, height, radius, ColorUtils.rgba(255, 255, 255, 190));
}
}
Java:
package im.expensive.ui.display.impl;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
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.KawaseBlur;
import im.expensive.utils.render.Scissor;
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.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(".*(mod|der|adm|help|wne|хелп|адм|поддержка|кура|own|taf|curat|dev|supp|yt|сотруд).*");
@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);
}
}
}
}
float width;
float height;
@Override
public void render(EventDisplay eventDisplay) {
MatrixStack ms = eventDisplay.getMatrixStack();
float posX = dragging.getX();
float posY = dragging.getY();
float padding = 5;
float fontSize = 6.5f;
ITextComponent name = GradientUtil.gradient("Staff");
String namemod = "Staff";
float finalPosY = posY;
drawStyledRect(posX, finalPosY, width, height, 5);
DisplayUtils.drawShadow(posX, posY, width, height, 15, ColorUtils.rgba(255,255,255,165));
Scissor.push();
try {
Scissor.setFromComponentCoordinates(posX, posY, width, height);
Fonts.sfui.drawText(ms, namemod, posX + padding, posY + padding + 1, ColorUtils.rgb(0, 0, 0), fontSize);
posY += fontSize + padding * 2;
float maxWidth = Fonts.sfMedium.getWidth(name, fontSize) + padding * 2;
float localHeight = fontSize + padding * 2;
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 + prefixWidth, posY, -1, fontSize);
Fonts.sfMedium.drawText(ms, f.getStatus().string, posX + width - padding - Fonts.sfMedium.getWidth(f.getStatus().string, fontSize), 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);
} finally {
Scissor.pop();
}
}
@AllArgsConstructor
@Data
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("SPEC", 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 + 1, height + 1, radius + 0.5f, ColorUtils.setAlpha(ColorUtils.rgb(18,16,16), 90));
DisplayUtils.drawRoundedRect(x, y, width, height, radius, ColorUtils.rgba(255, 255, 255, 190));
}
}
/*
Если ты это читаешь, то знай, я гей!
*/
Java:
package im.expensive.ui.display.impl;
import com.mojang.blaze3d.matrix.MatrixStack;
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.drag.Dragging;
import im.expensive.utils.render.ColorUtils;
import im.expensive.utils.render.DisplayUtils;
import im.expensive.utils.render.KawaseBlur;
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.ResourceLocation;
import net.minecraft.util.text.ITextComponent;
@FieldDefaults(level = AccessLevel.PRIVATE)
@RequiredArgsConstructor
public class PotionRenderer implements ElementRenderer {
final Dragging dragging;
float iconSizeX = 10;
float iconSizeY = 10;
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 = 5;
ITextComponent name = GradientUtil.gradient("Зелья");
String namemod = "Potions";
float finalPosY = posY;
drawStyledRect(posX, finalPosY, width, height, 5);
DisplayUtils.drawShadow(posX, posY, width, height, 15, ColorUtils.rgba(255,255,255,165));
Scissor.push();
Scissor.setFromComponentCoordinates(posX, posY, width, height);
Fonts.sfui.drawText(ms, namemod, posX + padding, posY + padding + 1, ColorUtils.rgb(0, 0, 0), fontSize);
posY += fontSize + padding * 2;
float maxWidth = Fonts.sfMedium.getWidth(name, fontSize) + padding * 2;
float localHeight = fontSize + padding * 2;
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, posY, ColorUtils.rgba(0, 0, 0, 255), fontSize);
Fonts.sfMedium.drawText(ms, bindText, posX + width - padding - bindWidth, posY, ColorUtils.rgba(0, 0, 0,255), 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);
float imagePosX = posX + width - iconSizeX - padding;
Scissor.unset();
Scissor.pop();
}
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(18,16,16), 90));
DisplayUtils.drawRoundedRect(x, y, width, height, radius, ColorUtils.rgba(255, 255, 255, 190));
}
}
Последнее редактирование: