Войти или зарегистрироваться

Помогите Forge 1.7.10 GUI

Егор Грушко

Старожил
Пользователь
Баллы
123
Хочу сделать свой 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");

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