I'm doing a block that opens a GuiScreen that will let you write a player name name and save it to NBT, but I didn't get to that yet. But when you Right Click it, but the Gui isn't displaying. And yes, I'm registering the GuiHandler and the block and Tile Entity.
GuiHandler.java
public class GuiHandler implements IGuiHandler {
@Override
public Object getServerGuiElement(int id, EntityPlayer player, World world, int x, int y, int z) {
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
if (tileEntity != null) {
switch(id) {
case 0: return null;
}
}
return null;
}
@Override
public Object getClientGuiElement(int id, EntityPlayer player, World world, int x, int y, int z) {
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
if (tileEntity != null) {
switch(id) {
case 0: return new GuiIdentification(player, (TileEntityIdentification) tileEntity);
}
}
return null;
}
}
BlockIdentification.java
public class BlockIdentification extends BlockContainer {
public BlockIdentification(int id, Material material) {
super(id, material);
setHardness(2.0F);
setStepSound(Block.soundStoneFootstep);
setUnlocalizedName("identificationBlock");
setCreativeTab(UsefulBlocks.tabUsefulBlocks);
}
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float par7, float par8, float par9) {
if(!world.isRemote) {
player.openGui(UsefulBlocks.instance, 0, world, x, y, z);
}
return true;
}
public TileEntity createNewTileEntity(World world) {
return new TileEntityIdentification();
}
}
TileEntityIdentification.java
public class TileEntityIdentification extends TileEntity {
public TileEntityIdentification() {
}
@Override
public void writeToNBT(NBTTagCompound par1) {
super.writeToNBT(par1);
}
@Override
public void readFromNBT(NBTTagCompound par1) {
super.readFromNBT(par1);
}
}
GuiIdentification.java
public class GuiIdentification extends GuiScreen {
public final int xSize = 176;
public final int ySize = 88;
public GuiIdentification(EntityPlayer player, TileEntityIdentification tileEntity) {
super();
}
@Override
public void initGui() {
int posX = (this.width - xSize) / 2;
int posY = (this.height - ySize) / 2;
this.buttonList.add(new GuiButton(0, posX + 40, posY + 40, 100, 20, "no use"));
}
@Override
public void drawScreen(int x, int y, float f) {
this.drawDefaultBackground();
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
this.mc.renderEngine.func_110577_a(new ResourceLocation("usefulblocks:textures/gui/IdentificationBlock.png"));
int posX = (this.width - xSize) / 2;
int posY = (this.height - ySize) / 2;
this.drawTexturedModalRect(posX, posY, 0, 0, xSize, ySize);
super.drawScreen(x, y, f);
}
@Override
public boolean doesGuiPauseGame() {
return false;
}
@Override
protected void keyTyped(char par1, int par2) {
if (par2 == 1 || par2 == this.mc.gameSettings.keyBindInventory.keyCode) {
this.mc.thePlayer.closeScreen();
}
}
}
Also, I'm getting an error a warning on the buttonList.add line: "Type safety: The method add(Object) belongs to the raw type List. References to generic type List<E> should be parameterized"