GUI

Я внимательно посмотрел туториал(ы) по созданию GUI, но... Ничего из этого не работает. Вот простейший интерфейс (тоже из туториала):
Код:
package com.alchemy.alchemy;

import net.minecraft.client.gui.GuiScreen;

public class AltarGui extends GuiScreen
{
    public static final int GUI_ID = 20;

    public AltarGui()
    {

    }

    @Override
    public void drawScreen(int x, int y, float f)
    {
        this.drawDefaultBackground();
    }
}
[merge_posts_bbcode]Добавлено: 20.03.2016 21:39:18[/merge_posts_bbcode]

Код:
package com.alchemy.alchemy;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World;
import cpw.mods.fml.common.network.IGuiHandler;

public class CommonProxy implements IGuiHandler
{

    public void registerKeybindings() {}

    @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 == AltarGui.GUI_ID)
            return new AltarGui();

        return null;
    }

}

[merge_posts_bbcode]Добавлено: 20.03.2016 21:39:33[/merge_posts_bbcode]

Код:
package com.alchemy.alchemy;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Items;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.PotionEffect;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;

import java.util.List;

public class Altar extends Block
{
    public IIcon[] icons = new IIcon[6];

    protected Altar(int par1)
    {
        super(Material.iron);
        this.setBlockTextureName(AlchemyBase.MODID + ":Altar");
        this.setCreativeTab(AlchemyBase.TabExorcism);
    }

    @SideOnly(Side.CLIENT)
    public void registerIcons(IIconRegister ir)
    {
        this.blockIcon = ir.registerIcon(AlchemyBase.MODID + ":Altar");
    }

    @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];
    }

    @Override
    public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ)
    {
        //TileEntity tile = world.getTileEntity(x, y, z);

        player.openGui(AlchemyBase.instance, 1, null, -1, -1, -1);

        return super.onBlockActivated(world, x, y, z, player, side, hitX, hitY, hitZ);
    }
}
 
А версия какая?
[merge_posts_bbcode]Добавлено: 20.03.2016 23:23:52[/merge_posts_bbcode]

А версия какая?
 
608
5
15
Не зарегестрировал свой Handler в баз. классе.
[merge_posts_bbcode]Добавлено: 20.03.2016 23:06:26[/merge_posts_bbcode]

?

[merge_posts_bbcode]Добавлено: 20.03.2016 23:06:34[/merge_posts_bbcode]

И версию скажи.
 

timaxa007

Модератор
5,831
409
672
Magitrop написал(а):
Код:
public static final int GUI_ID = 20;
Magitrop написал(а):
Код:
player.openGui(AlchemyBase.instance, 1, null, -1, -1, -1);
Magitrop написал(а):
Код:
if (ID == AltarGui.GUI_ID)

Ид 1 не равен иду 20 - не соответствие.
Зачем ты отправляешь null для World?
[merge_posts_bbcode]Добавлено: 20.03.2016 23:12:19[/merge_posts_bbcode]

Кода главного класса не хватает.
 
Кстати, как сделать другие элементы GUI?

Прогресс бар, слайдер, место куда можно записывать и т.д.
 

timaxa007

Модератор
5,831
409
672
Как - Можно с помощью OpenGL или готовых методов которые могли-бы заредерить нужные элементы.
Где - Можно в эвенте RenderGameOverlayEvent или где нужно это делать, главное на клиентской стороне.
 
Прогресс бар посмотри у печки. Там всё просто. Считаешь прогресс и рисуешь по пикселям новую картинку на месте старой.
 
52
0
Лол. У тебя GuiScreen и нет Контейнера, зачем тебе вообще ГуиХандлер?

Просто в месте, где надо открыть ГУИ пиши
Код:
Minecraft.getMinecraft().displayGuiScreen(new AltarGui());
 
52
0
Ну так он то это делает на клиенте.

Код:
@SideOnly(Side.CLIENT)
@Override
    public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ)
    {
        //TileEntity tile = world.getTileEntity(x, y, z);

        //player.openGui(AlchemyBase.instance, 1, null, -1, -1, -1);

        Minecraft.getMinecraft().displayGuiScreen(new AltarGui());

        return super.onBlockActivated(world, x, y, z, player, side, hitX, hitY, hitZ);
    }
 
Сверху