Вопрос Игра ставится на паузу при открытии ClickGUI

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
15 Июн 2023
Сообщения
7
Реакции
0
Я захотел сделать мод на визуалы при помощи чат гпт, пришел к вот такой гуишке
1729176004027.png


Но столкнулся с проблемой, которую не получилось решить при помощи чат гпт. Майн ставится на паузу при открытии гуи.

Вот мой код:

ClickGuiScreen

package texad.client.gui;

import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.util.text.StringTextComponent;
import org.lwjgl.glfw.GLFW;

public class ClickGuiScreen extends Screen {
private int guiWidth = 200;
private int guiHeight = 150;
private int guiLeft;
private int guiTop;

private String[] tabs = {"Visuals", "Themes", "Info"};
private int selectedTab = 0;

public ClickGuiScreen() {
super(new StringTextComponent("Rly Visuals"));
}

@Override
protected void init() {
this.guiLeft = (this.width - this.guiWidth) / 2;
this.guiTop = (this.height - this.guiHeight) / 2;
}

@Override
public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
fill(matrixStack, guiLeft, guiTop, guiLeft + guiWidth, guiTop + guiHeight, 0xFF2E2E2E);
this.font.draw(matrixStack, "Rly Visuals", guiLeft + 10, guiTop + 10, 0xFFFFFFFF);

for (int i = 0; i < tabs.length; i++) {
int tabX = guiLeft + 10 + i * 60;
int tabY = guiTop + 30;
fill(matrixStack, tabX, tabY, tabX + 50, tabY + 20, i == selectedTab ? 0xFF444444 : 0xFF3A3A3A);
this.font.draw(matrixStack, tabs, tabX + 5, tabY + 5, 0xFFFFFFFF);
}

renderSelectedTabContent(matrixStack);
}

@Override
public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
if (keyCode == GLFW.GLFW_KEY_ESCAPE) { // Позволяем закрывать GUI на ESC
this.onClose();
return true;
}
return super.keyPressed(keyCode, scanCode, modifiers);
}

@Override
public boolean mouseClicked(double mouseX, double mouseY, int button) {
for (int i = 0; i < tabs.length; i++) {
int tabX = guiLeft + 10 + i * 60;
int tabY = guiTop + 30;
if (mouseX >= tabX && mouseX <= tabX + 50 && mouseY >= tabY && mouseY <= tabY + 20) {
selectedTab = i;
return true;
}
}
return super.mouseClicked(mouseX, mouseY, button);
}

private void renderSelectedTabContent(MatrixStack matrixStack) {
switch (selectedTab) {
case 0: renderVisualsContent(matrixStack); break;
case 1: renderThemesContent(matrixStack); break;
case 2: renderInfoContent(matrixStack); break;
}
}

private void renderVisualsContent(MatrixStack matrixStack) {
this.font.draw(matrixStack, "Visuals Settings", guiLeft + 10, guiTop + 60, 0xFFFFFFFF);
}

private void renderThemesContent(MatrixStack matrixStack) {
this.font.draw(matrixStack, "Theme Selection", guiLeft + 10, guiTop + 60, 0xFFFFFFFF);
}

private void renderInfoContent(MatrixStack matrixStack) {
this.font.draw(matrixStack, "Discord: Your Discord Link", guiLeft + 10, guiTop + 60, 0xFFFFFFFF);
}

@Override
public void onClose() {
super.onClose();
Minecraft.getInstance().setScreen(null); // Закрытие GUI корректно
}
}

KeyBindHandler

package texad.client.keybinds;

import texad.client.gui.ClickGuiScreen;
import net.minecraft.client.Minecraft;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.client.event.InputEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import org.lwjgl.glfw.GLFW;

@Mod.EventBusSubscriber(value = Dist.CLIENT)
public class KeyBindHandler {

@SubscribeEvent
public static void onKeyInput(InputEvent.KeyInputEvent event) {
if (event.getKey() == GLFW.GLFW_KEY_RIGHT_SHIFT && event.getAction() == GLFW.GLFW_PRESS) {
Minecraft minecraft = Minecraft.getInstance();
if (minecraft.screen == null) { // Проверка, чтобы убедиться, что GUI открывается только если нет другого экрана
minecraft.setScreen(new ClickGuiScreen());
}
}
}
}

1729176004027.png
 
Я захотел сделать мод на визуалы при помощи чат гпт, пришел к вот такой гуишке
Посмотреть вложение 288223

Но столкнулся с проблемой, которую не получилось решить при помощи чат гпт. Майн ставится на паузу при открытии гуи.

Вот мой код:

ClickGuiScreen

package texad.client.gui;

import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.util.text.StringTextComponent;
import org.lwjgl.glfw.GLFW;

public class ClickGuiScreen extends Screen {
private int guiWidth = 200;
private int guiHeight = 150;
private int guiLeft;
private int guiTop;

private String[] tabs = {"Visuals", "Themes", "Info"};
private int selectedTab = 0;

public ClickGuiScreen() {
super(new StringTextComponent("Rly Visuals"));
}

@Override
protected void init() {
this.guiLeft = (this.width - this.guiWidth) / 2;
this.guiTop = (this.height - this.guiHeight) / 2;
}

@Override
public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
fill(matrixStack, guiLeft, guiTop, guiLeft + guiWidth, guiTop + guiHeight, 0xFF2E2E2E);
this.font.draw(matrixStack, "Rly Visuals", guiLeft + 10, guiTop + 10, 0xFFFFFFFF);

for (int i = 0; i < tabs.length; i++) {
int tabX = guiLeft + 10 + i * 60;
int tabY = guiTop + 30;
fill(matrixStack, tabX, tabY, tabX + 50, tabY + 20, i == selectedTab ? 0xFF444444 : 0xFF3A3A3A);
this.font.draw(matrixStack, tabs, tabX + 5, tabY + 5, 0xFFFFFFFF);
}

renderSelectedTabContent(matrixStack);
}

@Override
public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
if (keyCode == GLFW.GLFW_KEY_ESCAPE) { // Позволяем закрывать GUI на ESC
this.onClose();
return true;
}
return super.keyPressed(keyCode, scanCode, modifiers);
}

@Override
public boolean mouseClicked(double mouseX, double mouseY, int button) {
for (int i = 0; i < tabs.length; i++) {
int tabX = guiLeft + 10 + i * 60;
int tabY = guiTop + 30;
if (mouseX >= tabX && mouseX <= tabX + 50 && mouseY >= tabY && mouseY <= tabY + 20) {
selectedTab = i;
return true;
}
}
return super.mouseClicked(mouseX, mouseY, button);
}

private void renderSelectedTabContent(MatrixStack matrixStack) {
switch (selectedTab) {
case 0: renderVisualsContent(matrixStack); break;
case 1: renderThemesContent(matrixStack); break;
case 2: renderInfoContent(matrixStack); break;
}
}

private void renderVisualsContent(MatrixStack matrixStack) {
this.font.draw(matrixStack, "Visuals Settings", guiLeft + 10, guiTop + 60, 0xFFFFFFFF);
}

private void renderThemesContent(MatrixStack matrixStack) {
this.font.draw(matrixStack, "Theme Selection", guiLeft + 10, guiTop + 60, 0xFFFFFFFF);
}

private void renderInfoContent(MatrixStack matrixStack) {
this.font.draw(matrixStack, "Discord: Your Discord Link", guiLeft + 10, guiTop + 60, 0xFFFFFFFF);
}

@Override
public void onClose() {
super.onClose();
Minecraft.getInstance().setScreen(null); // Закрытие GUI корректно
}
}

KeyBindHandler

package texad.client.keybinds;

import texad.client.gui.ClickGuiScreen;
import net.minecraft.client.Minecraft;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.client.event.InputEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import org.lwjgl.glfw.GLFW;

@Mod.EventBusSubscriber(value = Dist.CLIENT)
public class KeyBindHandler {

@SubscribeEvent
public static void onKeyInput(InputEvent.KeyInputEvent event) {
if (event.getKey() == GLFW.GLFW_KEY_RIGHT_SHIFT && event.getAction() == GLFW.GLFW_PRESS) {
Minecraft minecraft = Minecraft.getInstance();
if (minecraft.screen == null) { // Проверка, чтобы убедиться, что GUI открывается только если нет другого экрана
minecraft.setScreen(new ClickGuiScreen());
}
}
}
}

Посмотреть вложение 288223
поидее эта штука онли в одиночном мире будет
 
ну хотя-бы примерно, что изменить там надо для мп?
ладно все я уже запросил у чат гпт, мод оказывается реал на одиночку. Спс большое за помощь, сейчас буду под мп переделывать, там думаю не будет паузы при открытии гуи
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ну хотя-бы примерно, что изменить там надо для мп?

ладно все я уже запросил у чат гпт, мод оказывается реал на одиночку. Спс большое за помощь, сейчас буду под мп переделывать, там думаю не будет паузы при открытии гуи
Тип у тя и так код под мп
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Пиздец.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Я захотел сделать мод на визуалы при помощи чат гпт, пришел к вот такой гуишке
Посмотреть вложение 288223

Но столкнулся с проблемой, которую не получилось решить при помощи чат гпт. Майн ставится на паузу при открытии гуи.

Вот мой код:

ClickGuiScreen

package texad.client.gui;

import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.util.text.StringTextComponent;
import org.lwjgl.glfw.GLFW;

public class ClickGuiScreen extends Screen {
private int guiWidth = 200;
private int guiHeight = 150;
private int guiLeft;
private int guiTop;

private String[] tabs = {"Visuals", "Themes", "Info"};
private int selectedTab = 0;

public ClickGuiScreen() {
super(new StringTextComponent("Rly Visuals"));
}

@Override
protected void init() {
this.guiLeft = (this.width - this.guiWidth) / 2;
this.guiTop = (this.height - this.guiHeight) / 2;
}

@Override
public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
fill(matrixStack, guiLeft, guiTop, guiLeft + guiWidth, guiTop + guiHeight, 0xFF2E2E2E);
this.font.draw(matrixStack, "Rly Visuals", guiLeft + 10, guiTop + 10, 0xFFFFFFFF);

for (int i = 0; i < tabs.length; i++) {
int tabX = guiLeft + 10 + i * 60;
int tabY = guiTop + 30;
fill(matrixStack, tabX, tabY, tabX + 50, tabY + 20, i == selectedTab ? 0xFF444444 : 0xFF3A3A3A);
this.font.draw(matrixStack, tabs, tabX + 5, tabY + 5, 0xFFFFFFFF);
}

renderSelectedTabContent(matrixStack);
}

@Override
public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
if (keyCode == GLFW.GLFW_KEY_ESCAPE) { // Позволяем закрывать GUI на ESC
this.onClose();
return true;
}
return super.keyPressed(keyCode, scanCode, modifiers);
}

@Override
public boolean mouseClicked(double mouseX, double mouseY, int button) {
for (int i = 0; i < tabs.length; i++) {
int tabX = guiLeft + 10 + i * 60;
int tabY = guiTop + 30;
if (mouseX >= tabX && mouseX <= tabX + 50 && mouseY >= tabY && mouseY <= tabY + 20) {
selectedTab = i;
return true;
}
}
return super.mouseClicked(mouseX, mouseY, button);
}

private void renderSelectedTabContent(MatrixStack matrixStack) {
switch (selectedTab) {
case 0: renderVisualsContent(matrixStack); break;
case 1: renderThemesContent(matrixStack); break;
case 2: renderInfoContent(matrixStack); break;
}
}

private void renderVisualsContent(MatrixStack matrixStack) {
this.font.draw(matrixStack, "Visuals Settings", guiLeft + 10, guiTop + 60, 0xFFFFFFFF);
}

private void renderThemesContent(MatrixStack matrixStack) {
this.font.draw(matrixStack, "Theme Selection", guiLeft + 10, guiTop + 60, 0xFFFFFFFF);
}

private void renderInfoContent(MatrixStack matrixStack) {
this.font.draw(matrixStack, "Discord: Your Discord Link", guiLeft + 10, guiTop + 60, 0xFFFFFFFF);
}

@Override
public void onClose() {
super.onClose();
Minecraft.getInstance().setScreen(null); // Закрытие GUI корректно
}
}

KeyBindHandler

package texad.client.keybinds;

import texad.client.gui.ClickGuiScreen;
import net.minecraft.client.Minecraft;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.client.event.InputEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import org.lwjgl.glfw.GLFW;

@Mod.EventBusSubscriber(value = Dist.CLIENT)
public class KeyBindHandler {

@SubscribeEvent
public static void onKeyInput(InputEvent.KeyInputEvent event) {
if (event.getKey() == GLFW.GLFW_KEY_RIGHT_SHIFT && event.getAction() == GLFW.GLFW_PRESS) {
Minecraft minecraft = Minecraft.getInstance();
if (minecraft.screen == null) { // Проверка, чтобы убедиться, что GUI открывается только если нет другого экрана
minecraft.setScreen(new ClickGuiScreen());
}
}
}
}

Посмотреть вложение 288223
CHATGPT
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Мне вот интересно, там чел реально на серьёзном рыле чату жпт писал, что у него игра на паузу ставится и как это фиксить
 
Назад
Сверху Снизу