Подведи собственные итоги года совместно с YOUGAME и забери ценные призы! Перейти

Гайд Небольшой гайд по Changlog для вашей пасты.

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
26 Авг 2025
Сообщения
20
Реакции
0
Так, обыватель, сейчас я тебе расскажу как сделать мега-ченджлог(это такая херь, где обычно пишут изменения в версиях. Гайд для Exp 3.1.

1.Переходим по пути expensive\src\im\expensive\ui/mainmenu и там создаем класс: "ChangelogScreen" (БЕЗ кавычек)

2.Вставляем туда это нечто:​
package im.expensive.ui.mainmenu;

import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.text.StringTextComponent;
import im.expensive.utils.math.MathUtil;
import im.expensive.utils.render.ColorUtils;
import im.expensive.utils.render.DisplayUtils;
import im.expensive.utils.render.font.Fonts;
import org.lwjgl.opengl.GL11;

import java.util.ArrayList;
import java.util.List;

public class ChangelogScreen extends Screen {
private final Screen parentScreen;
private final Minecraft mc;
private final List<String> changelogEntries = new ArrayList<>();
private float scrollOffset = 0;
private final ResourceLocation backmenu = new ResourceLocation("expensive/images/changelog.png");

public ChangelogScreen(Screen parentScreen) {
super(new StringTextComponent("Changelog"));
this.parentScreen = parentScreen;
this.mc = Minecraft.getInstance();
loadChangelog();
}

private void loadChangelog() {
changelogEntries.clear();
changelogEntries.add(" §Название вашего мега-клиента и его версия. Пример: (Shit Client 0.2.2)§");
changelogEntries.add("Крутые изменения");
changelogEntries.add("Ваще хайп)");
changelogEntries.add("Такие строчки можно добавлять до бесконечности как и версия и название");
}

@Override
public void render(MatrixStack stack, int mouseX, int mouseY, float partialTicks) {
DisplayUtils.drawImage(backmenu, 0, 0, width, height, -1);

float panelX = width * 0.2f;
float panelY = 70;
float panelWidth = width * 0.6f;
float panelHeight = height - 140;

DisplayUtils.drawRoundedRect(panelX, panelY, panelWidth, panelHeight, 8,
ColorUtils.rgba(15, 15, 21, 220));

GL11.glEnable(GL11.GL_SCISSOR_TEST);
int scaleFactor = (int) Math.round(mc.getMainWindow().getGuiScaleFactor());
GL11.glScissor(
(int)(panelX * scaleFactor),
(int)(mc.getMainWindow().getHeight() - (panelY + panelHeight) * scaleFactor),
(int)(panelWidth * scaleFactor),
(int)(panelHeight * scaleFactor)
);

float textY = panelY + 15 - scrollOffset;

for (int i = 0; i < changelogEntries.size(); i++) {
String entry = changelogEntries.get(i);

if (i == 0) {
// Убираем коды форматирования для правильного измерения ширины
String cleanText = entry.replaceAll("§[0-9a-fklmnor]", "Rat Alpha");
float textWidth = Fonts.sfui.getWidth(cleanText, 7.5f);
float textX = panelX + (panelWidth - textWidth) / 2;

Fonts.sfui.drawText(stack, entry, textX, textY,
ColorUtils.rgb(240, 240, 240), 7.5f);
} else {
Fonts.sfui.drawText(stack, entry, panelX + 15, textY,
ColorUtils.rgb(240, 240, 240), 7.5f);
}

textY += 12;
}

GL11.glDisable(GL11.GL_SCISSOR_TEST);

float backX = width / 2f - 50;
float backY = height - 40;
boolean hoverBack = MathUtil.isHovered(mouseX, mouseY, backX, backY, 100, 25);
DisplayUtils.drawRoundedRect(backX, backY, 100, 25, 5,
hoverBack ? ColorUtils.rgba(255, 215, 0, 120) : ColorUtils.rgba(40, 40, 50, 200));
Fonts.montserrat.drawCenteredText(stack, "Назад", backX + 50, backY + 8,
hoverBack ? ColorUtils.rgb(255, 255, 255) : ColorUtils.rgb(200, 200, 200), 8f);

super.render(stack, mouseX, mouseY, partialTicks);
}

@Override
public boolean mouseClicked(double mouseX, double mouseY, int button) {
float backX = width / 2f - 50;
float backY = height - 40;
if (MathUtil.isHovered((int)mouseX, (int)mouseY, backX, backY, 100, 25)) {
mc.displayGuiScreen(parentScreen);
return true;
}
return super.mouseClicked(mouseX, mouseY, button);
}

@Override
public boolean mouseScrolled(double mouseX, double mouseY, double delta) {
scrollOffset = (float)Math.max(0, scrollOffset - delta * 10);
return true;
}

@Override
public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
if (keyCode == 256) { // ESC
mc.displayGuiScreen(parentScreen);
return true;
}
return super.keyPressed(keyCode, scanCode, modifiers);
}
}​

3.После заходим в MainScreen в той же папке из 1-ого пункта. Где-то на 71 строчке(или в другом месте) ищем кнопки. Они выглядят примерно так :​
buttons.add(new Button(x, y, widthButton, buttonHeight, "Выход", mc::shutdownMinecraftApplet));​
После последней кнопки добавляем это -​
// ченджлог
float changelogWidth = 135 / 2f;
float changelogHeight = 50 / 2f;
float changelogX = width - changelogWidth - 890;
float changelogY = 510;

buttons.add(new Button(changelogX, changelogY, changelogWidth, changelogHeight, "Changelog", () -> {
mc.displayGuiScreen(new ChangelogScreen(this));
}));
}​
Ура, мы все закончили, теперь мы добровольно-принудительно добавляем фон к нашему окну Changelogа, заходим по пути
\expensive-master\src\assets\minecraft\expensive\images и вставляем туда наш фон и переименовываем его на - "changelog.png"(без кавычек)

Теперь окончательно всё(вроде), если будут какие-либо вопросы, пишите, на эту тему я потратил 2 зефирки и 1.5 литра воды.
Можно поменьше /del пж.

Тема была создана, т.к. я сам искал что-то похожее, но не нашел​
1766328641100.png
 
Последнее редактирование:
Так, обыватель, сейчас я тебе расскажу как сделать мега-ченджлог(это такая херь, где обычно пишут изменения в версиях. Гайд для Exp 3.1.

1.Переходим по пути expensive\src\im\expensive\ui/mainmenu и там создаем класс: "ChangelogScreen" (БЕЗ кавычек)

2.Вставляем туда это нечто:


3.После заходим в MainScreen в той же папке из 1-ого пункта. Где-то на 71 строчке(или в другом месте) ищем кнопки. Они выглядят примерно так :

После последней кнопки добавляем это -

Ура, мы все закончили, теперь мы добровольно-принудительно добавляем фон к нашему окну Changelogа, заходим по пути
\expensive-master\src\assets\minecraft\expensive\images и вставляем туда наш фон и переименовываем его на - "changelog.png"(без кавычек)

Теперь окончательно всё(вроде), если будут какие-либо вопросы, пишите, на эту тему я потратил 2 зефирки и 1.5 литра воды.
Можно поменьше /del пж.​
Посмотреть вложение 322606
нахуя ладно бы еще в мейн меню
 
нахуя ладно бы еще в мейн меню
а чё отредать сурс мейн меню и зарендерить текст для майнкрафтеров слишком сложно? нужно чтобы прям гайд подробный by chatgpt был?
 
а чё отредать сурс мейн меню и зарендерить текст для майнкрафтеров слишком сложно? нужно чтобы прям гайд подробный by chatgpt был?
да, но гайд не от чата лгбт
нахуя ладно бы еще в мейн меню
я в теме объяснил, что сам хотел сделать чендж лог так, чтобы он не выглядел громоздко, а был в отдельном окне, может кому пригодится, а нет не объяснил
 
Так, обыватель, сейчас я тебе расскажу как сделать мега-ченджлог(это такая херь, где обычно пишут изменения в версиях. Гайд для Exp 3.1.

1.Переходим по пути expensive\src\im\expensive\ui/mainmenu и там создаем класс: "ChangelogScreen" (БЕЗ кавычек)

2.Вставляем туда это нечто:


3.После заходим в MainScreen в той же папке из 1-ого пункта. Где-то на 71 строчке(или в другом месте) ищем кнопки. Они выглядят примерно так :

После последней кнопки добавляем это -

Ура, мы все закончили, теперь мы добровольно-принудительно добавляем фон к нашему окну Changelogа, заходим по пути
\expensive-master\src\assets\minecraft\expensive\images и вставляем туда наш фон и переименовываем его на - "changelog.png"(без кавычек)

Теперь окончательно всё(вроде), если будут какие-либо вопросы, пишите, на эту тему я потратил 2 зефирки и 1.5 литра воды.
Можно поменьше /del пж.

Тема была создана, т.к. я сам искал что-то похожее, но не нашел​
Посмотреть вложение 322606
оформил сексуально
 
Назад
Сверху Снизу