- 55
- 7
- 3
я пытаюсь создать книгу-гайд для своего мода, сейчас пытаюсь нарисовать текстуры для проверки и вот что получается:

вот класс:
и вот текстура: (612x256, может в этом проблема?)


вот класс:
Java:
/**
* File created on 17:19 31.08.2024 by Wertyfire
*/
package ru.wertyfiregames.craftablecreatures.inventory.gui;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.opengl.GL11;
import ru.wertyfiregames.craftablecreatures.CraftableCreatures;
public class GuiGuideBook extends GuiScreen {
private static final ResourceLocation guideBookGuiTextures = new ResourceLocation(CraftableCreatures.getModId(), "textures/gui/guide_book.png");
private final GuiButton buttonBack = new ChangePageButton(0, 100, 0, 19, 11, false);
private final GuiButton buttonNext = new ChangePageButton(1, 130, 0, 19, 11, true);
private static final int xSize = 290, ySize = 178;
private static final int xSizeClosed = 145;
private final int totalPages = 3;
private int currentPage = 1;
@SuppressWarnings("unchecked")
@Override
public void initGui() {
buttonList.clear();
checkButtons();
buttonList.add(buttonBack);
buttonList.add(buttonNext);
}
@Override
public void drawScreen(int x, int y, float partialTicks) {
drawDefaultBackground();
super.drawScreen(x, y, partialTicks);
drawPage();
}
@Override
protected void actionPerformed(GuiButton button) {
if (button.id == 0) {
minusPage();
checkButtons();
} else if (button.id == 1) {
plusPage();
checkButtons();
}
}
private void drawPage() {
if (currentPage == 1) {
drawTexture(2);
} else if (currentPage == totalPages) {
drawTexture(0);
} else {
drawTexture(1);
}
}
private void minusPage() {
if (currentPage > 1) currentPage--;
}
private void plusPage() {
if (currentPage < totalPages) currentPage++;
}
private void checkButtons() {
if (currentPage == 1) {
buttonBack.enabled = false;
buttonBack.visible = false;
if (!buttonNext.enabled) buttonNext.enabled = true;
if (!buttonNext.visible) buttonNext.visible = true;
} else if (currentPage == totalPages) {
buttonNext.enabled = false;
buttonNext.visible = false;
if (!buttonBack.enabled) buttonBack.enabled = true;
if (!buttonBack.visible) buttonBack.visible = true;
} else {
if (!buttonBack.enabled) buttonBack.enabled = true;
if (!buttonBack.visible) buttonBack.visible = true;
if (!buttonNext.enabled) buttonNext.enabled = true;
if (!buttonNext.visible) buttonNext.visible = true;
}
}
// part: 0 - back, 1 - default (middle), 2 - cover
private void drawTexture(int part) {
if (part < 0 || part > 2)
throw new IllegalArgumentException("Argument part must be 0 to 2 but current is: " + part);
GL11.glColor4f(1f, 1f, 1f, 1f);
mc.getTextureManager().bindTexture(guideBookGuiTextures);
// int xSize = (currentPage == 1 || currentPage == totalPages) ? xSizeClosed : GuiGuideBook.xSize;
int x = (width - xSize) / 2;
int y = (height - ySize) / 2;
int tx;
if (part == 1) tx = 0;
else if (part == 0) tx = 292;
else tx = 436;
int ty = 0;
drawTexturedModalRect(x, y, tx, ty, xSize, ySize);
}
static class ChangePageButton extends GuiButton {
private final boolean reverse;
public ChangePageButton(int id, int x, int y, int width, int height, boolean shouldReverse) {
super(id, x, y, width, height, "");
reverse = shouldReverse;
}
public void drawButton(Minecraft mc, int x, int y) {
if (visible) {
boolean hovered = isMouseOver(x, y);
GL11.glColor4f(1f, 1f,1f, 1f);
mc.getTextureManager().bindTexture(guideBookGuiTextures);
int u = 0;
int v = 192;
if (hovered) u += 23;
if (!reverse) v += 13;
drawTexturedModalRect(xPosition, yPosition, u, v, 23, 13);
}
}
private boolean isMouseOver(int mouseX, int mouseY) {
return mouseX >= xPosition && mouseX < xPosition + width && mouseY >= yPosition && mouseY < yPosition + height;
}
}
}
и вот текстура: (612x256, может в этом проблема?)
