[1.6.4] Вывод GUI

Статус
В этой теме нельзя размещать новые ответы.
675
2
Доброго времени суток.

Получаю вылет при открывании GUI.

Код:
public class GuiHandler implements IGuiHandler {

    @Override
    public Object getServerGuiElement(int guiID, EntityPlayer player, World world, int x, int y, int z){
        switch(guiID){
            case 0:
                return new GuiPda();
            default:
                return null;
        }
    }
    @Override
    public Object getClientGuiElement(int guiID, EntityPlayer player, World world, int x, int y, int z) {
        switch(guiID){
            case 0:
                return new GuiPda();
            default:
                return null;
        }
    }
}

Регистрирую в preInt:
Код:
NetworkRegistry.instance().registerGuiHandler(this, new GuiHandler());

Сам класс gui:
Код:
public class GuiPda extends GuiScreen {

    public GuiPda(){
        super();
    }
    
    @Override
         public void initGui() {
            super.initGui();
        }
    
    @Override
    protected void keyTyped(char par1, int par2){
        if (par2 == 1 || par2 == this.mc.gameSettings.keyBindInventory.keyCode)
        {
            this.mc.thePlayer.closeScreen();
        }
    }
    
    @Override
    public void drawScreen(int par1, int par2, float par3){
        fontRenderer.drawString("123", 100, 100, 0x99FF00);  
    }
    
}

Ошибка:
Код:
2014-05-06 20:24:02 [INFO] [STDOUT] java.lang.ClassCastException: gui.GuiPda cannot be cast to net.minecraft.inventory.Container
2014-05-06 20:24:02 [INFO] [STDOUT]     at cpw.mods.fml.common.network.NetworkRegistry.openRemoteGui(NetworkRegistry.java:308)
2014-05-06 20:24:02 [INFO] [STDOUT]     at cpw.mods.fml.common.network.FMLNetworkHandler.openGui(FMLNetworkHandler.java:353)
2014-05-06 20:24:02 [INFO] [STDOUT]     at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2480)
2014-05-06 20:24:02 [INFO] [STDOUT]     at flymod.baseclasses.MainItem.onItemRightClick(MainItem.java:33)
2014-05-06 20:24:02 [INFO] [STDOUT]     at net.minecraft.item.ItemStack.useItemRightClick(ItemStack.java:177)
2014-05-06 20:24:02 [INFO] [STDOUT]     at net.minecraft.item.ItemInWorldManager.tryUseItem(ItemInWorldManager.java:358)
2014-05-06 20:24:02 [INFO] [STDOUT]     at net.minecraft.network.NetServerHandler.handlePlace(NetServerHandler.java:542)
2014-05-06 20:24:02 [INFO] [STDOUT]     at net.minecraft.network.packet.Packet15Place.processPacket(Packet15Place.java:79)
2014-05-06 20:24:02 [INFO] [STDOUT]     at net.minecraft.network.MemoryConnection.processReadPackets(MemoryConnection.java:89)
2014-05-06 20:24:02 [INFO] [STDOUT]     at net.minecraft.network.NetServerHandler.networkTick(NetServerHandler.java:141)
2014-05-06 20:24:02 [INFO] [STDOUT]     at net.minecraft.network.NetworkListenThread.networkTick(NetworkListenThread.java:54)
2014-05-06 20:24:02 [INFO] [STDOUT]     at net.minecraft.server.integrated.IntegratedServerListenThread.networkTick(IntegratedServerListenThread.java:109)
2014-05-06 20:24:02 [INFO] [STDOUT]     at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:691)
2014-05-06 20:24:02 [INFO] [STDOUT]     at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:587)
2014-05-06 20:24:02 [INFO] [STDOUT]     at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:129)
2014-05-06 20:24:02 [INFO] [STDOUT]     at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:484)
2014-05-06 20:24:02 [INFO] [STDOUT]     at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16)


Есть я хочу сделать какую-нибудь кликабельную панель, то мне лучше наследоваться от GuiContainer? Там вроде как и фон автоматически затемняется, и никакие doesGuiPauseGame() трогать не нужно, все уже за тебя потрогано и.т.д.

Возвращаясь к вопросу о прокси, getServerGuiElement и getClientGuiElement(если я захочу использвать прокси) должны находится в двух разных GuiHandler, соответственно клиентском и серверном?
 
905
5
Ну а почему ты выдаешь гуй, когда у тебя просят контейнер?
 
675
2
laz2727 написал(а):
Ну а почему ты выдаешь гуй, когда у тебя просят контейнер?
В таком случае, в одном из учебников есть ошибка.
Отлично, одни ответом ответили на 2 вопроса.

Появились новые...
Как тогда вызвать GuiScreen?

Наследовался от GuiContainer:
Код:
public GuiPda(Container container) {
    super(container);
}
Передаю контейнер игрока, например:
Код:
    @Override
    public Object getServerGuiElement(int guiID, EntityPlayer player, World world, int x, int y, int z){
        switch(guiID){
            case 0:
                return new GuiPda(player.inventoryContainer);
            default:
                return null;
        }
    }
    @Override
    public Object getClientGuiElement(int guiID, EntityPlayer player, World world, int x, int y, int z) {
        switch(guiID){
            case 0:
                return new GuiPda(player.inventoryContainer);
            default:
                return null;
        }
    }

На сколько я понимаю, GuiContainer и Container - абсолютно разные вещи :)
Но разве можно draw'нуть Container без GuiScreen'а?
 
675
2
f1rSt1k написал(а):
На сервер null давай и все.
Помогло, сяп.

СТАЛКЕР, ОЧЕРЕДНОЙ СТАЛКЕР
Хочу скрестить пда из сталкера и пип-бой из фаллаута. Мод же никакого отношения к сталкеру не имеет, разве что косвенное.
[merge_posts_bbcode]Добавлено: 06.05.2014 22:48:53[/merge_posts_bbcode]

Подожду ответа:
Try4W написал(а):
Возвращаясь к вопросу о прокси, getServerGuiElement и getClientGuiElement(если я захочу использвать прокси) должны находится в двух разных GuiHandler, соответственно клиентском и серверном?
 
675
2
+ Можно ли выводить контейнер, не передавая ему контейнера?
Мне просто на просто не нужен инвентарь игрока и его слоты под броню. Даже если я буду выводить все через:
Код:
public void drawScreen(int par1, int par2, float par3){ }

Останутся хит-боксы слотов инвентаря. Мне по сути сейчас вообще не нужно выводить контейнер, вполне хватит и GuiScreen'а. Через что целесообразнее выводить gui и как убрать хит-боксы ячеек инвентаря?
 

necauqua

когда-то был anti344
Администратор
1,216
27
172
1.Не нужен контейнер - не трогай контейнерное гуи(ибо ему нужен контейнер в конструктор).
2.Да ты задрал со своей прокси, увидел - и теперь всё в неё пихать пытаешься. Правильный ответ - НЕТ.
  (Ибо что-что, а все твои классы загрузятся, так как для клиента и сервера джарник мода один).
 
675
2
anti344 написал(а):
1.Не нужен контейнер - не трогай контейнерное гуи(ибо ему нужен контейнер в конструктор).
2.Да ты задрал со своей прокси, увидел - и теперь всё в неё пихать пытаешься. Правильный ответ - НЕТ.
  (Ибо что-что, а все твои классы загрузятся, так как для клиента и сервера джарник мода один).
Проблему решил(GuiScreen).
Да пихаю, потому что не знаю. А т.к. не знаю - задаю вопросы. Куда без этого?
Можно закрывать.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху