Два вопроса по Gui

Версия Minecraft
1.7.10
199
1
17
1. Как создать Gui картинку которое открывается на определенную кнопку?
2. Как создать Gui картинку которое открывается при нажатии пкм по определенному предмету?
 
Решение
1. Как создать Gui картинку которое открывается на определенную кнопку?
Ну к примеру зарегистрировать свою кнопку и проверять с помощью эвента:
Java:
    @SubscribeEvent
    public void onKeyInputEvent(InputEvent.KeyInputEvent event) {
        if (RegKey.use.isPressed()) {
            Minecraft.getMinecraft().displayGuiScreen(new GuiScreen());
        }
    }
2. Как создать Gui картинку которое открывается при нажатии пкм по определенному предмету?
Java:
    @SideOnly(Side.CLIENT)
    @Override
    public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer player) {
        Minecraft mc = Minecraft.getMinecraft();
        mc.displayGuiScreen(new GuiScreen());
        return...
1,007
36
206
1. Создать GUI наследника GuiScreen, внутри которого рендерить картинку, создать кейбинд и при его нажатии открывать GUI
2. Создать GUI наследника GuiScreen, внутри которого рендерить картинку, открывать GUI по нажатию пкм по предмету
 

timaxa007

Модератор
5,831
409
672
1. Как создать Gui картинку которое открывается на определенную кнопку?
Ну к примеру зарегистрировать свою кнопку и проверять с помощью эвента:
Java:
    @SubscribeEvent
    public void onKeyInputEvent(InputEvent.KeyInputEvent event) {
        if (RegKey.use.isPressed()) {
            Minecraft.getMinecraft().displayGuiScreen(new GuiScreen());
        }
    }
2. Как создать Gui картинку которое открывается при нажатии пкм по определенному предмету?
Java:
    @SideOnly(Side.CLIENT)
    @Override
    public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer player) {
        Minecraft mc = Minecraft.getMinecraft();
        mc.displayGuiScreen(new GuiScreen());
        return super.onItemRightClick(itemStack, world, player);
    }
 
1,198
31
184
Шобы новую тему не создавать
У меня есть гуи с таким конструктором
Java:
public GuiGunModTable(InventoryPlayer inv, World w)
    {
        super(new ContainerGunModTable(inv, w));
        inventory = inv;
        ySize = 256;
    }
Открываю в своем кейхандлере так
Код:
if(openAttachGuiKey.isPressed())
        {
            mc.displayGuiScreen(new GuiGunModTable(inv, w));
            return;
        }
Где мне достать inv, w? Как их правильно обьявить?
 

timaxa007

Модератор
5,831
409
672
Где мне достать inv, w?
Из игрока, EntityPlayer#inventory и EntityPlayer#worldObj.
Открываю в своем кейхандлере так
И получаешь не рабочее GUI. Так как нужно отправлять пакет на сервер на открытие Gui с контейнером, через GuiHandler.
 
1,198
31
184
уже)
Так как нужно отправлять пакет на сервер
Я сделал собсна вот так
Java:
InventoryPlayer inv = new InventoryPlayer(player);
        World w = player.worldObj;
Это есть гуд?
В конструкторе моего гуи World w просто
Ентити плеер так EntityPlayer player = mc.thePlayer;
 

timaxa007

Модератор
5,831
409
672
1,198
31
184
Блин никогда с гуи не работал до этого момента.
У меня есть полностью рабочее гуи через блок. Кликаешь на него - гуи открывается все гуд.
Тут гуи у меня открывается, но часть не работает, слоты из инвентаря моего игрока не видит, и все плоха(
 

timaxa007

Модератор
5,831
409
672

timaxa007

Модератор
5,831
409
672
Относительно GUI с контейнером:
У блока метод, который работает на обе стороны. И через player.openGui - это нормально.
Но когда ты используешь клиентскую сторону, т.е. "openAttachGuiKey.isPressed()" или "mc.thePlayer" и т.п., нужно отправить пакет с клиента на сервер, чтобы от туда сначала игроку дать контейнер, а потом открыть GUI.
 
199
1
17
Ну к примеру зарегистрировать свою кнопку и проверять с помощью эвента:
Java:
    @SubscribeEvent
    public void onKeyInputEvent(InputEvent.KeyInputEvent event) {
        if (RegKey.use.isPressed()) {
            Minecraft.getMinecraft().displayGuiScreen(new GuiScreen());
        }
    }
А как зарегать кнопку? Что писать в конфиге? Сорри за тупой вопрос....
 
1,198
31
184
В своем кейхандлере пишешь так
Java:
public static KeyBinding openAttachGuiKey = new KeyBinding("название твоей кнопки", Keyboard.KEY_F, "имя мода");
Кейборд кейф это и есть кнопка на которую открывается твое гуи.
Потом регаешь ее так.
Код:
ClientRegistry.registerKeyBinding(openAttachGuiKey);
Ну а что делать при нажатии на эту кнопку тебе выше написали.
 
Сверху