Как сделать свое меню в майнкрафте
В этом туториале я расскажу как редактировать меню в Minecraft
Редактировать само меню не сложно
к примеру мы будем редактировать меню GuiGameOver.java, как видно по названию, это меню вылезает после смерти персонажа
import java.util.List;
import net.minecraft.client.Minecraft;
import org.lwjgl.opengl.GL11;
// Referenced classes of package net.minecraft.src:
// GuiScreen, GuiButton, EntityPlayerSP, GuiMainMenu
public class GuiGameOver extends GuiScreen
public void initGui()
<
controlList.clear();
controlList.add(new GuiButton(1, width / 2 - 100, height / 4 + 72, "Respawn"));
controlList.add(new GuiButton(2, width / 2 - 100, height / 4 + 96, "Title menu"));
if(mc.session == null)
<
((GuiButton)controlList.get(1)).enabled = false;
>
>
protected void keyTyped(char c, int i)
<
>
protected void actionPerformed(GuiButton guibutton)
<
if(guibutton.id != 0);
if(guibutton.id == 1)
<
mc.thePlayer.respawnPlayer();
mc.displayGuiScreen(null);
>
public boolean doesGuiPauseGame()
<
return false;
>
>
Рассмотрим эту часть кода
controlList.add - добавление нового элемента меню
new GuiButton - сдесь задается сам контроллер, как сделать свой, я расскажу чуть позже
(1, width / 2 - 100, height / 4 + 72, "Respawn") - первый параметр, отвечает за идентификатор, для чего он,расскажу чуть позже, второй положение по ширине, третий,положение по высоте, четвертый название
Рассмотрим следущую часть кода
В ней проверяется, нажата ли кнопка, проверяется по идентификатору,который мы задали в кнопке
if(guibutton.id == 1) - проверка нажата ли кнопка
Действия после нажатия кнопки.
Рассмотрим третью часть кода
Сдесь я думаю все понятно
отрисовка красного экрана, надпись Game Ower
==================================================
Теперь сделаем свою кнопку, так как размер указывается в её коде, но можно его и переделать
Рассмотрим код кнопки
import net.minecraft.client.Minecraft;
import org.lwjgl.opengl.GL11;
// Referenced classes of package net.minecraft.src:
// Gui, RenderEngine
public class GuiButton extends Gui
public GuiButton(int i, int j, int k, String s)
<
this(i, j, k, 200, 20, s);
>
public GuiButton(int i, int j, int k, int l, int i1, String s)
<
width = 200;
height = 20;
enabled = true;
enabled2 = true;
> xPosition = j;
yPosition = k;
width = l;
height = i1;
displayString = s;
>
protected int getHoverState(boolean flag)
<
byte byte0 = 1;
if(!enabled)
<
byte0 = 0;
> else
if(flag)
<
byte0 = 2;
>
return byte0;
>
public void drawButton(Minecraft minecraft, int i, int j)
<
if(!enabled2)
<
return;
>
FontRenderer fontrenderer = minecraft.fontRenderer;
GL11.glBindTexture(3553 /*GL_TEXTURE_2D*/, minecraft.renderEngine.getTexture("/gui/gui.jpg"));
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
boolean flag = i >= xPosition && j >= yPosition && i < xPosition + width && j < yPosition + height;
int k = getHoverState(flag);
drawTexturedModalRect(xPosition, yPosition, 0, 46 + k * 20, width / 2, height);
drawTexturedModalRect(xPosition + width / 2, yPosition, 200 - width / 2, 46 + k * 20, width / 2, height);
mouseDragged(minecraft, i, j);
if(!enabled)
<
drawCenteredString(fontrenderer, displayString, xPosition + width / 2, yPosition + (height - 8) / 2, 0xffa0a0a0);
> else
if(flag)
<
drawCenteredString(fontrenderer, displayString, xPosition + width / 2, yPosition + (height - 8) / 2, 0xffffa0);
> else
<
drawCenteredString(fontrenderer, displayString, xPosition + width / 2, yPosition + (height - 8) / 2, 0xe0e0e0);
>
>
protected void mouseDragged(Minecraft minecraft, int i, int j)
<
>
public void mouseReleased(int i, int j)
<
>
public boolean mousePressed(Minecraft minecraft, int i, int j)
<
return enabled && i >= xPosition && j >= yPosition && i < xPosition + width && j < yPosition + height;
>
protected int width;
protected int height;
public int xPosition;
public int yPosition;
public String displayString;
public int id;
public boolean enabled;
public boolean enabled2;
>
а именно width = 200; height = 20;, как вы поняли это ширина и высота кнопок, можно настроить их, но мы создадим новую кнопку, ширину и высоту которой можно настроить,сделаем её на основе кода
// Referenced classes of package net.minecraft.src:
// GuiButton, EnumOptions
public class GuiSmallButton extends GuiButton
public GuiSmallButton(int i, int j, int k, String s)
<
this(i, j, k, null, s);
>
public GuiSmallButton(int i, int j, int k, int l, int i1, String s)
<
super(i, j, k, l, i1, s);
enumOptions = null;
>
public GuiSmallButton(int i, int j, int k, EnumOptions enumoptions, String s)
<
super(i, j, k, 120, 20, s);
enumOptions = enumoptions;
>
public EnumOptions returnEnumOptions()
<
return enumOptions;
>
private final EnumOptions enumOptions;
>
Создадим файл с названием guibuttonmy.java
и впишем в него такой код
public class guibuttonmy extends GuiButton
public guibuttonmy(int i, int j, int k, String s, int h, int w)
<
this(i, j, k, null, s, h, w);
>
public guibuttonmy(int i, int j, int k, int l, int i1, String s)
<
super(i, j, k, l, i1, s);
enumOptions = null;
>
public guibuttonmy(int i, int j, int k, EnumOptions enumoptions, String s, int h, int w)
<
super(i, j, k, h, w, s);
enumOptions = enumoptions;
>
public EnumOptions returnEnumOptions()
<
return enumOptions;
>
private final EnumOptions enumOptions;
>
и изменяем параметры параметры
Все, кнопка готова, теперь добавим её в нашу менюшку
import java.util.List;
import net.minecraft.client.Minecraft;
import org.lwjgl.opengl.GL11;
// Referenced classes of package net.minecraft.src:
// GuiScreen, GuiButton, EntityPlayerSP, GuiMainMenu
public class GuiGameOver extends GuiScreen
public void initGui()
<
controlList.clear();
controlList.add(new GuiButton(1, width / 2 - 100, height / 4 + 72, "Respawn"));
controlList.add(new GuiButton(2, width / 2 - 100, height / 4 + 96, "Title menu"));
controlList.add(new guibuttonmy(3, width / 2 - 100, height / 4 + 120, "Title menu 2",120,20));
if(mc.session == null)
<
((GuiButton)controlList.get(1)).enabled = false;
>
>
protected void keyTyped(char c, int i)
<
>
protected void actionPerformed(GuiButton guibutton)
<
if(guibutton.id != 0);
if(guibutton.id == 1)
<
mc.thePlayer.respawnPlayer();
mc.displayGuiScreen(null);
>
public boolean doesGuiPauseGame()
<
return false;
>
>
PackMenu - настройки для меню игры, изменение меню [1.17.1] [1.16.5] [1.15.2] [1.14.4]
Мод PackMenu - позволит создать собственное меню игры Майнкрафт, это будет особенно полезно для авторов сборок которые хотят сделать свой модпак более эффектным и проработанным. Мод позволяет изменять фон игры, кнопки и положение, создать собственные кнопки.
Мод одновременно прост и функционален, дизайн меню игры он подгружает из пака .minecraft\packmenu\, там вы найдете Json файлы отвечающие за кнопки и картинки которые используются в новом меню для примера. Вы легко поменяете картинки на собственные, а отредактировав json файлы вы сможете настроить кнопки.
Редактировать json файлы просто - откройте их любым текстовым редактором, например mods.json отвечает за кнопку модов в меню игры, внутри вы увидите:
Где, x и y - это координаты положения, меняйте их и увидите смещение кнопки.
width - ширина кнопки
height - высота
langKey - текст кнопки, в данном случае текст выводится стандартный от Forge, можете просто вписать что хотите.
action и data трогать не стоит.
Прочие кнопки устроены подобным образом, потому изменить их или удалить очень просто.
Читайте также: