Вызов гуи командой

Версия Minecraft
1.7.10
382
2
24
Я всё сделал как здесь Client, Server и GUI Container. Всё работает. Отлично. Только как сделать так, что бы не клик по блоку вызывал инвентарь, а команда. И вместо инвентаря было просто изображение. С кнопкой ОК в нижнем правом углу. А ещё при введение этой команды игра ставилась на паузу. при нажатии кнопки ОК игра возобновлялась а изображение исчезало. 1.7.10
 
516
11
39
Вот так добавлять команду
Код:
public class MyCommand extends CommandBase {

    public String getCommandName() {
        return "Название";
    }

    public String getCommandUsage(ICommandSender icommandsender) {
        return "Как использоать команду";
    }

    public void processCommand(ICommandSender cs, String[] args) {
      /*тут пишешь что будет выполнятся при использовании команды.
      переменная cs это, то что вызвало команду(консоль, игрок и др.)
      args это аргументы команды
    }

}

Код:
@Mod.EventHandler
public void serverStart(FMLServerStartingEvent event) {
event.registerServerCommand(new MyCommand());
}
 
382
2
24
сорри, забыл сказать, у меня есть код команды. Только как сделать так, что бы не клик по блоку вызывал инвентарь, а моя команда. И вместо инвентаря было просто изображение. С кнопкой ОК в нижнем правом углу. А ещё при введение этой команды игра ставилась на паузу. при нажатии кнопки ОК игра возобновлялась а изображение исчезало. 1.7.10
 
1,371
112
241
С гуи код я кидал. В команду добавляешь Minecraft.getMinecraft().displayGuiScreen(new GUITab()); . ВСЁ! Единственное, делай инстанс с игрока, вместо сендера. То есть if(cs instanceof EntityPlayer){Minecraft.getMinecraft().displayGuiScreen(new GUITab()); }. Регистрацию команды тебе дали.

P.S. Код на коленочке =)
 
382
2
24
Код:
public class ContainerTutorial extends Container {

    private final TileGuiContainer tile;

    public ContainerTutorial(TileGuiContainer tile) {
        this.tile = tile;
        addSlotToContainer(new RespectedSlot(tile, 0, 20, 20));
        addSlotToContainer(new RespectedSlot(tile, 1, 38, 20));
        addSlotToContainer(new RespectedSlot(tile, 2, 56, 20));

        addSlotToContainer(new RespectedSlot(tile, 3, 20, 38));
        addSlotToContainer(new RespectedSlot(tile, 4, 38, 38));
        addSlotToContainer(new RespectedSlot(tile, 5, 56, 38));

        addSlotToContainer(new RespectedSlot(tile, 6, 20, 56));
        addSlotToContainer(new RespectedSlot(tile, 7, 38, 56));
        addSlotToContainer(new RespectedSlot(tile, 8, 56, 56));
    }

    @Override
    public boolean canInteractWith(EntityPlayer player) {
        return tile.isUseableByPlayer(player);
    }

    private static class RespectedSlot extends Slot {

        public RespectedSlot(IInventory inventory, int index, int posX, int posY) {
            super(inventory, index, posX, posY);
        }

        @Override
        public boolean isItemValid(ItemStack stack) {
            return inventory.isItemValidForSlot(getSlotIndex(), stack);
        }
    }
}
 
1,371
112
241
Контейнер в данном случае - лишняя трата твоего времени. Так что лучше рендерить сразу гуискрин, вместо того чтобы сначала рендерить контейнер.

UPD. Вот код, там и рендер и всё сразу подключено.

Код:
public class GUITab extends GuiScreen{
    private GuiButton mButtonClose;
    private GuiLabel mLabelIpAddress;
    
     @Override
        public void initGui() {
            super.initGui();
            this.buttonList.add(mButtonClose = new GuiButton(0, this.width / 2 - 100, this.height - (this.height / 4) + 10, "Close"));
            this.labelList.add(mLabelIpAddress = new GuiLabel(Minecraft.getMinecraft().fontRenderer, 1, this.width / 2 - 20, this.height / 2 + 40, 300, 20, 0xFFFFFF));
     }
     @Override
     protected void actionPerformed(GuiButton button) throws IOException {
            if (button == mButtonClose) {
                mc.player.closeScreen();
            }
        }
      @Override
      public void drawScreen(int mouseX, int mouseY, float partialTicks) {
            this.drawDefaultBackground();
            super.drawScreen(mouseX, mouseY, partialTicks);
        }

        @Override
        public boolean doesGuiPauseGame() {
            return true;
        }
}
 
516
11
39

Java:
    private static final ResourceLocation TEXTURE = new ResourceLocation(Class.MODID, "textures/gui/Твоегуи.png");

    @Override
    public void drawScreen(int mouseX, int mouseY, float ticks) {
        int guiX = width / 2;
        int guiY = height / 2;
        mc.getTextureManager().bindTexture(TEXTURE);
        GL11.glColor4f(1, 1, 1, 1);
        drawDefaultBackground();
        drawTexturedModalRect(guiX, guiY, 0, 0, 226, guiHeight);
    }
 
382
2
24
UPD. Вот код, там и рендер и всё сразу подключено.

Java:
public class GUITab extends GuiScreen{
private GuiButton mButtonClose;
private GuiLabel mLabelIpAddress;

@Override
public void initGui() {
super.initGui();
this.buttonList.add(mButtonClose = new GuiButton(0, this.width / 2 - 100, this.height - (this.height / 4) + 10, "Close"));
this.labelList.add(mLabelIpAddress = new GuiLabel(Minecraft.getMinecraft().fontRenderer, 1, this.width / 2 - 20, this.height / 2 + 40, 300, 20, 0xFFFFFF));
}
@Override
protected void actionPerformed(GuiButton button) throws IOException {
if (button == mButtonClose) {
mc.player.closeScreen();
}
}
@Override
public void drawScreen(int mouseX, int mouseY, float partialTicks) {
this.drawDefaultBackground();
super.drawScreen(mouseX, mouseY, partialTicks);
}

@Override
public boolean doesGuiPauseGame() {
return true;
}
}
это просто скопировать?
я скопировал только ошибок море, сделал импорты, всёравно ошибки
 
382
2
24
Java:
    private static final ResourceLocation TEXTURE = new ResourceLocation(Class.MODID, "textures/gui/Твоегуи.png");

    @Override
    public void drawScreen(int mouseX, int mouseY, float ticks) {
        int guiX = width / 2;
        int guiY = height / 2;
        mc.getTextureManager().bindTexture(TEXTURE);
        GL11.glColor4f(1, 1, 1, 1);
        drawDefaultBackground();
        drawTexturedModalRect(guiX, guiY, 0, 0, 226, guiHeight);
    }
это куда писать
 
Сверху