Визуальная часть Такой себе ChangeLog | Expensive 3.1

Учись дальше лучше. Было бы лучше: создать лист стрингов и уже рендрить его(пример ниже), а не вот это.

List<String> changes = new ArrayList<>();

changes.add("Сосал?");

for (String change : changes) {
renderText(change, size, x, y)
y += size
}
Благодарю, буду знать больше)
Ответ на ваш вопрос - Да!

А можно еще так:

Java:
Expand Collapse Copy
        List<String> changes = new ArrayList<>(List.of(
                "[+] AutoSprint",
                "[+] KillAura"
        ));

        for (String change : changes) {
            System.out.println(change);
        }
И тебе тоже спасибо, подсказки для меня это хорошо
спасибо бро)
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
чат гопоте
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
парсить с пастебинчика🚫
хуярить стринги:seemsgood:
 
Всем привет! Сливаю ChangeLog для Expensive 3.1. Если вы пастеры вам думаю сойдет. А если вы кодер или почти кодер то не пишите /del пожалуйста! Я недавно начал учить код и решил написать что то свое. Знаю что можно сократить данный код, но я не знаю как. буду доволен любому +rep:roflanEbalo: Вставлять в класс MainScreen



render:
Expand Collapse Copy
    [USER=1367676]@override[/USER]
    public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
        super.render(matrixStack, mouseX, mouseY, partialTicks);
        if (stopWatch.isReached(100)) {
            particles.add(new Particle());
            stopWatch.reset();

        }
        MainWindow mainWindow = mc.getMainWindow();
        int windowWidth = ClientUtil.calc(mainWindow.getScaledWidth());
        int windowHeight = ClientUtil.calc(mainWindow.getScaledHeight());

        int logoWidth = 1920 / 2;
        int logoHeight = 1080 / 2;

        // Расчет координат для рисования логотипа по центру
        int xLogo = (windowWidth - logoWidth) / 2;
        int yLogo = (windowHeight - logoHeight) / 2 + 50;
        boolean small = mainWindow.getWidth() < 900 && mainWindow.getHeight() < 900;
        if (small) {
            yLogo += 50;
        }
        // Рисование логотипа по центру
        DisplayUtils.drawImage(backmenu, 0, 0, width, height, -1);
        mc.gameRenderer.setupOverlayRendering(2);
        DisplayUtils.drawImage(logo, xLogo, yLogo, logoWidth, logoHeight, -1);

        //ChangeLog
        DisplayUtils.drawRoundedRect(4, 4, 190, 150, 2, ColorUtils.rgba(21, 21, 21, 255));
        ITextComponent NameChangeLog = GradientUtil.gradient("ChangeLog #1");
        ITextComponent DescriptionChangeLog1 = GradientUtil.gradient ("Разрабы сосали хуй!");
        ITextComponent DescriptionChangeLog2 = GradientUtil.gradient ("Создал ебланом!");
        Fonts.sfbold.drawText(matrixStack, NameChangeLog, 30, 4, 15, 255);
        Fonts.sfbold.drawText(matrixStack, DescriptionChangeLog1, 4, 25, 10, 255);
        Fonts.sfbold.drawText(matrixStack, DescriptionChangeLog2, 4, 37, 10, 255);


        KawaseBlur.blur.updateBlur(3, 4);
        drawButtons(matrixStack, mouseX, mouseY, partialTicks);

        Expensive.getInstance().getAltWidget().render(matrixStack, mouseX, mouseY);
        mc.gameRenderer.setupOverlayRendering();

    }

SS:
Посмотреть вложение 307856
пиздец хуйня
 
Всем привет! Сливаю ChangeLog для Expensive 3.1. Если вы пастеры вам думаю сойдет. А если вы кодер или почти кодер то не пишите /del пожалуйста! Я недавно начал учить код и решил написать что то свое. Знаю что можно сократить данный код, но я не знаю как. буду доволен любому +rep:roflanEbalo: Вставлять в класс MainScreen



render:
Expand Collapse Copy
    [USER=1367676]@override[/USER]
    public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
        super.render(matrixStack, mouseX, mouseY, partialTicks);
        if (stopWatch.isReached(100)) {
            particles.add(new Particle());
            stopWatch.reset();

        }
        MainWindow mainWindow = mc.getMainWindow();
        int windowWidth = ClientUtil.calc(mainWindow.getScaledWidth());
        int windowHeight = ClientUtil.calc(mainWindow.getScaledHeight());

        int logoWidth = 1920 / 2;
        int logoHeight = 1080 / 2;

        // Расчет координат для рисования логотипа по центру
        int xLogo = (windowWidth - logoWidth) / 2;
        int yLogo = (windowHeight - logoHeight) / 2 + 50;
        boolean small = mainWindow.getWidth() < 900 && mainWindow.getHeight() < 900;
        if (small) {
            yLogo += 50;
        }
        // Рисование логотипа по центру
        DisplayUtils.drawImage(backmenu, 0, 0, width, height, -1);
        mc.gameRenderer.setupOverlayRendering(2);
        DisplayUtils.drawImage(logo, xLogo, yLogo, logoWidth, logoHeight, -1);

        //ChangeLog
        DisplayUtils.drawRoundedRect(4, 4, 190, 150, 2, ColorUtils.rgba(21, 21, 21, 255));
        ITextComponent NameChangeLog = GradientUtil.gradient("ChangeLog #1");
        ITextComponent DescriptionChangeLog1 = GradientUtil.gradient ("Разрабы сосали хуй!");
        ITextComponent DescriptionChangeLog2 = GradientUtil.gradient ("Создал ебланом!");
        Fonts.sfbold.drawText(matrixStack, NameChangeLog, 30, 4, 15, 255);
        Fonts.sfbold.drawText(matrixStack, DescriptionChangeLog1, 4, 25, 10, 255);
        Fonts.sfbold.drawText(matrixStack, DescriptionChangeLog2, 4, 37, 10, 255);


        KawaseBlur.blur.updateBlur(3, 4);
        drawButtons(matrixStack, mouseX, mouseY, partialTicks);

        Expensive.getInstance().getAltWidget().render(matrixStack, mouseX, mouseY);
        mc.gameRenderer.setupOverlayRendering();

    }

SS:
Посмотреть вложение 307856
пиздец
 
Ответ на ваш вопрос - Да!

А можно еще так:

Java:
Expand Collapse Copy
        List<String> changes = new ArrayList<>(List.of(
                "[+] AutoSprint",
                "[+] KillAura"
        ));

        for (String change : changes) {
            System.out.println(change);
        }


java:
Expand Collapse Copy
public class Main {
    public static void main(String[] args) {
        String rawChanges =
                "[10.06.2025] [+] [added bugs] [добавили баги]" +
                "\n" +
                "[08.06.2025] [-] [removed fixes] [удалили исправления]" +
                "\n" +
                "[08.06.2025] [/] [fix bypasses] [починили обходы]";

        Set<ChangelogItem> items = ChangelogBuilder.from(
                SimpleParser.INSTANCE, rawChanges
        ).items();
        System.out.println("changelog items: " + items.size());
        items.forEach(System.out::println);
    }
}

public interface IChangelogParser {

    Set<ChangelogItem> parse(String source);
}

public class SimpleParser implements IChangelogParser {

    private SimpleParser() {
    }

    public static final SimpleParser INSTANCE = new SimpleParser();

    [USER=1367676]@override[/USER]
    public Set<ChangelogItem> parse(String source) {
        Set<ChangelogItem> items = new HashSet<>();
        for (String sourceItem : source.split("\n")) {
            String[] elements = sourceItem
                    .substring(1, sourceItem.length() - 1)
                    .split("] \\[");
            String date = elements[0];
            String prefix = elements[1];
            String en = elements[2];
            String ru = elements[3];
            for (Type typeValue : Type.values()) {
                if (typeValue.prefix().equals(prefix)) {
                    Map<Language, String> text = new HashMap<>();
                    text.put(Language.EN, en);
                    text.put(Language.RU, ru);
                    items.add(new ChangelogItem(text, typeValue, date));
                    break;
                }
            }
        }
        return items;
    }
}

public class Changelog {

    private final Set<ChangelogItem> items = new HashSet<>();

    protected Changelog() {
    }

    public void add(ChangelogItem item) {
        this.items.add(item);
    }

    public void add(Set<ChangelogItem> items) {
        this.items.addAll(items);
    }

    public Set<ChangelogItem> items() {
        return new HashSet<>(items);
    }
}

public class ChangelogBuilder {

    private final String source;

    private ChangelogBuilder(String source) {
        this.source = source;
    }

    public static Changelog from(IChangelogParser parser, String... source) {
        Changelog changelog = new Changelog();
        Arrays.stream(source).forEach(
                sourceItem -> changelog.add(parser.parse(sourceItem))
        );
        return changelog;
    }

    public String source() {
        return source;
    }
}

public class ChangelogItem {
    private final Map<Language, String> source;
    private final Type type;
    private final String date;

    public ChangelogItem(Map<Language, String> source, Type type, String date) {
        this.source = source;
        this.type = type;
        this.date = date;
    }

    public Type type() { return type; }

    public String date() {
        return date;
    }

    public String format(Language language) {
        return String.format("[%s] [%s] %s", type().name(), date, source.get(language));
    }

    public String source(Language language) { return source.get(language); }

    [USER=1367676]@override[/USER]
    public String toString() {
        return format(Language.RU);
    }
}

public enum Language {
    EN,
    RU
}

public enum Type {
    ADD("+"),
    REMOVE("-"),
    FIX("/"),
    OTHER("#");

    private final String prefix;

    Type(String prefix) {
        this.prefix = prefix;
    }

    public String prefix() {
        return prefix;
    }
}
 
java:
Expand Collapse Copy
public class Main {
    public static void main(String[] args) {
        String rawChanges =
                "[10.06.2025] [+] [added bugs] [добавили баги]" +
                "\n" +
                "[08.06.2025] [-] [removed fixes] [удалили исправления]" +
                "\n" +
                "[08.06.2025] [/] [fix bypasses] [починили обходы]";

        Set<ChangelogItem> items = ChangelogBuilder.from(
                SimpleParser.INSTANCE, rawChanges
        ).items();
        System.out.println("changelog items: " + items.size());
        items.forEach(System.out::println);
    }
}

public interface IChangelogParser {

    Set<ChangelogItem> parse(String source);
}

public class SimpleParser implements IChangelogParser {

    private SimpleParser() {
    }

    public static final SimpleParser INSTANCE = new SimpleParser();

    [USER=1367676]@override[/USER]
    public Set<ChangelogItem> parse(String source) {
        Set<ChangelogItem> items = new HashSet<>();
        for (String sourceItem : source.split("\n")) {
            String[] elements = sourceItem
                    .substring(1, sourceItem.length() - 1)
                    .split("] \\[");
            String date = elements[0];
            String prefix = elements[1];
            String en = elements[2];
            String ru = elements[3];
            for (Type typeValue : Type.values()) {
                if (typeValue.prefix().equals(prefix)) {
                    Map<Language, String> text = new HashMap<>();
                    text.put(Language.EN, en);
                    text.put(Language.RU, ru);
                    items.add(new ChangelogItem(text, typeValue, date));
                    break;
                }
            }
        }
        return items;
    }
}

public class Changelog {

    private final Set<ChangelogItem> items = new HashSet<>();

    protected Changelog() {
    }

    public void add(ChangelogItem item) {
        this.items.add(item);
    }

    public void add(Set<ChangelogItem> items) {
        this.items.addAll(items);
    }

    public Set<ChangelogItem> items() {
        return new HashSet<>(items);
    }
}

public class ChangelogBuilder {

    private final String source;

    private ChangelogBuilder(String source) {
        this.source = source;
    }

    public static Changelog from(IChangelogParser parser, String... source) {
        Changelog changelog = new Changelog();
        Arrays.stream(source).forEach(
                sourceItem -> changelog.add(parser.parse(sourceItem))
        );
        return changelog;
    }

    public String source() {
        return source;
    }
}

public class ChangelogItem {
    private final Map<Language, String> source;
    private final Type type;
    private final String date;

    public ChangelogItem(Map<Language, String> source, Type type, String date) {
        this.source = source;
        this.type = type;
        this.date = date;
    }

    public Type type() { return type; }

    public String date() {
        return date;
    }

    public String format(Language language) {
        return String.format("[%s] [%s] %s", type().name(), date, source.get(language));
    }

    public String source(Language language) { return source.get(language); }

    [USER=1367676]@override[/USER]
    public String toString() {
        return format(Language.RU);
    }
}

public enum Language {
    EN,
    RU
}

public enum Type {
    ADD("+"),
    REMOVE("-"),
    FIX("/"),
    OTHER("#");

    private final String prefix;

    Type(String prefix) {
        this.prefix = prefix;
    }

    public String prefix() {
        return prefix;
    }
}
фалсер доказал кто здесь крутой :anguished:
 

Похожие темы

Назад
Сверху Снизу