Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
в RenderTickEvent'e ?if(проверка клавиши){
Minecraft.getMinecraft.displayGuiScreen(new Твоё гуи());
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.util.StatCollector;
public class GuiGuide extends GuiScreen {
public int ticks;
public static int maxTicks = 24;
public static boolean init;
public static boolean[] colors = new boolean[9];
@Override
public void initGui() {
super.initGui();
init = false;
buttonList.clear();
}
@Override
public void drawScreen(int mouseX, int mouseY, float partialTicks) {
ScaledResolution res = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight);
int w = res.getScaledWidth();
int h = res.getScaledHeight();
drawDefaultBackground();
if(init) {
String text = "GUI GUIDE";
mc.fontRenderer.drawString(text, w / 2 - (mc.fontRenderer.getStringWidth(text) / 2), h / 2 - 75, 0xFF0000);
super.drawScreen(mouseX, mouseY, partialTicks);
}
}
@Override
public boolean doesGuiPauseGame() {
return false;
}
@Override
protected void actionPerformed(GuiButton buttonClicked) {
switch(buttonClicked.id) {
}
}
public void setColor(String color) {
}
private void exit(boolean exit) {
if(exit) {
mc.thePlayer.closeScreen();
}
}
@Override
public void updateScreen() {
super.updateScreen();
if(ticks < maxTicks) {
++ticks;
}
}
@Override
public void drawWorldBackground(int i) {
if (mc.theWorld != null) {
ScaledResolution res = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight);
int w = res.getScaledWidth();
int h = res.getScaledHeight();
int scaleX = Math.min(ticks * 14, w / 6 - 30);
int scaleY = Math.min(ticks * 5, h / 6 + 20);
if(scaleX == w / 6 - 30 && scaleY == h / 6 + 20 && !init) {
ticks = maxTicks;
init = true;
}
drawGradientRect(w / 2 - scaleX - 30, h / 2 - scaleY - 20, w / 2 + scaleX + 30, h / 2 + scaleY - 20, -1072689136, -804253680);
} else {
drawBackground(i);
}
}
}
import cpw.mods.fml.common.network.IGuiHandler;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World;
public class GuiRegister implements IGuiHandler {
@Override
public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
return null;
}
@Override
public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
if(ID == 1) {
return new GuiGuide();
}
return null;
}
}
public class Render {
Minecraft mc = Minecraft.getMinecraft();
@SubscribeEvent
public void onRender(PlayerTickEvent event) {
if(Keyboard.isKeyDown(Keyboard.KEY_Y)) {
mc.displayGuiScreen(new GuiGuide());
}
}
}
я так и регаю.это FML event его нужно через fml шину регать
Покажи как ты регаешь
@Override
public void initializationAndRegisterHandlers() {
super.initializationAndRegisterHandlers();
Render handler = new Render();
FMLCommonHandler.instance().bus().register(handler);
}
разве не стоит?В любом случии открывать именно так , а вот зачем ты гуи в GuiHandler суёшь это вопрос ?
ты прав. но все же нет предположений, почему оно не вызывается..А зачем ? Это что GuiContainer?
в ClientProxy/CommonProxyА где ты регаешь через шину ? Там event’a нет
public static final KeyBinding OPEN_GUI_BTN = new KeyBinding("Открыть меню", Keyboard.KEY_G, "Категория МОЁ");
@SubscribeEvent
public void onKeyInput(InputEvent.KeyInputEvent e) {
if (OPEN_GUI_BTN.isKeyPressed) {
player.openGui(modObj, guiId, world, player.posX, player.posY, player.posZ);
}
// Или
if (OPEN_GUI_BTN.isKeyPressed) {
NetworkHandler.sendToServer(new SPacketOpenGui(guiId));
}
// Или
if (Keyboard.isKeyDown(Keyboard.KEY_G)) {
player.openGui(modObj, guiId, world, player.posX, player.posY, player.posZ);
}
// Или
if (Keyboard.isKeyDown(Keyboard.KEY_G)) {
NetworkHandler.sendToServer(new SPacketOpenGui(guiId));
}
}