1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Forge 1.7.10 GUI

Тема в разделе "Разработка плагинов для новичков", создана пользователем Егор Грушко, 24 июл 2014.

  1. Автор темы
    Егор Грушко

    Егор Грушко Старожил Пользователь

    Баллы:
    123
    Skype:
    egorgrushko
    Хочу сделать свой gui при активировании блока, но почему-то gui не открывается. Вот код:
    Код:
    package com.mymod;
    
    import cpw.mods.fml.common.Mod;
    import cpw.mods.fml.common.event.FMLPreInitializationEvent;
    import cpw.mods.fml.common.network.NetworkRegistry;
    import cpw.mods.fml.common.registry.GameRegistry;
    import net.minecraft.block.Block;
    import net.minecraft.init.Items;
    import net.minecraft.item.ItemStack;
    
    
    @Mod(modid = MyMod.MODID, version = MyMod.VERSION)
    public class MyMod {
        public static final String MODID = "MyMod";
        public static final String VERSION = "1.0";
    
        @Mod.Instance(MyMod.MODID) public static MyMod instance;
    
        public static Logger log = Logger.getLogger("Minecraft");
    
        public static Block MyModBlock;
    
        public MyMod() {
            instance = this;
        }
    
        @Mod.EventHandler
        public void preInit(FMLPreInitializationEvent event) {
            MyModBlock = new MyModBlock();
    
            GameRegistry.registerBlock(MyModBlock, "MyModBlock");
    
            GameRegistry.addRecipe(new ItemStack(MyModBlock),
                    new Object[]{"###", "## ", "###", Character.valueOf('#'), Items.iron_ingot});
    
            NetworkRegistry.INSTANCE.registerGuiHandler(this, new GuiHandler());
    
            log.info("MyMod client plugin loaded.");
        }
    
    }
    Код:
    package com.MyMod;
    
    import net.minecraft.block.Block;
    import net.minecraft.block.material.Material;
    import net.minecraft.client.renderer.texture.IIconRegister;
    import net.minecraft.creativetab.CreativeTabs;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.util.IIcon;
    import net.minecraft.world.World;
    
    public class MyModBlock extends Block {
        private IIcon[] icons = new IIcon[6];
    
        public MyModBlock() {
            super(Material.iron);
    
            this.setBlockName("MyModblock");
            this.setCreativeTab(CreativeTabs.tabMisc);
            this.setBlockTextureName("MyMod:MyModblock");
        }
    
        @Override
        public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int par6, float par7, float par8, float par9){
            if (!world.isRemote) {
                System.out.print("block clicked, open gui.\n");
                System.out.print(MyMod.instance != null);
                player.openGui(MyMod.instance, Gui.GUI_ID, world, x, y, z);
            }
            return true;
        }
    
        @Override
        public void registerBlockIcons(IIconRegister reg) {
            for (int i = 0; i < 6; i ++) {
                this.icons[i] = reg.registerIcon(this.textureName + "_" + i);
            }
        }
    
        @Override
        public IIcon getIcon(int side, int meta) {
            return this.icons[side];
        }
    }
    Код:
    package com.mymod;
    
    import cpw.mods.fml.common.network.IGuiHandler;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.world.World;
    
    public class GuiHandler 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 == Gui.GUI_ID) {
                System.out.print("create gui.\n");
                return new Gui();
            }
            return null;
        }
    }
    Код:
    package com.mymod;
    
    import net.minecraft.client.gui.GuiButton;
    import net.minecraft.client.gui.GuiScreen;
    
    public class Gui extends GuiScreen {
        public static final int GUI_ID = 20;
    
        public Gui() {
            System.out.print("gui constructor.\n");
    
        }
    
        @Override
        public void initGui() {
            buttonList.clear();
            buttonList.add(new GuiButton(0, 100, 100, 60, 60, "Button"));
        }
    
        @Override
        public boolean doesGuiPauseGame() {
            return false;
        }
    
        @Override
        public void drawScreen(int i, int j, float f) {
            drawDefaultBackground();
            super.drawScreen(i, j, f);
            System.out.print("drawing gui.\n");
        }
    
        @Override
        public void actionPerformed(GuiButton button) {
            System.out.print("button clicked.\n");
    
        }
    }
     
  2. ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Не тот раздел
     
  3. Автор темы
    Егор Грушко

    Егор Грушко Старожил Пользователь

    Баллы:
    123
    Skype:
    egorgrushko
    А какой раздел правильный?
     
  4. ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Модификации клиента
     
  5. Автор темы
    Егор Грушко

    Егор Грушко Старожил Пользователь

    Баллы:
    123
    Skype:
    egorgrushko
    Там только релизы, не?
     
  6. ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
  7. Автор темы
    Егор Грушко

    Егор Грушко Старожил Пользователь

    Баллы:
    123
    Skype:
    egorgrushko
  8. Agravaine

    Agravaine Активный участник Пользователь

    Баллы:
    88
    Имя в Minecraft:
    Agravaine25
    Зачем делать гуи хандлер, если у тебя нет контейнера, а простой GuiScreen?
    Открывай просто через Minecraft#displayGuiScreen.
     

Поделиться этой страницей