I am currently trying to get a gui to work but I am having one of two problems. When I setup the texture bind the game crashes when I attempt to open the gui, without this it does not crash but instead has a random assortment of vanilla minecraft guis. I have looked at several tutorials only to realize that the way they were doing it was outdated so I would really appreciate any help that I can get.
I'm new to the forums (made this account to get help with this problem) so I apologize if my attempt to add the code goes badly.
Main
[embed=425,349]package gmail.marcusforrest0.com;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.registry.GameRegistry;
import gmail.marcusforrest0.blocks.Shrine;
import gmail.marcusforrest0.lib.Reference;
import gmail.marcusforrest0.modEvents.ModEventHandler;
import gmail.marcusforrest0.modEvents.ModGuiHandler;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraftforge.common.MinecraftForge;
@Mod(name = Reference.MOD_NAME, modid="classcraft", version=Reference.MOD_VERSION)
public class Main
{
public static String MODID = "classcraft";
public static String VERSION = "1.0";
public static CreativeTabs tabName = new CreativeTabs("Class Craft")
{
public Item getTabIconItem()
{
return Items.arrow;
}
};
public static Block shrine;
@Mod.Instance("classcraft") public static Main instance;
@EventHandler
public void preInit(FMLPreInitializationEvent e)
{
}
@EventHandler
public void init(FMLInitializationEvent e)
{
NetworkRegistry.INSTANCE.registerGuiHandler(this, new ModGuiHandler());
MinecraftForge.EVENT_BUS.register(new ModEventHandler());
shrine = new Shrine(Material.wood).setCreativeTab(tabName).setBlockName("Shrine");
GameRegistry.registerBlock(shrine, "Shrine");
}
@EventHandler
public void postInit(FMLPostInitializationEvent e)
{
}
}[/embed]
The Shrine Gui
[embed=425,349]package gmail.marcusforrest0.guiClients;
import org.lwjgl.opengl.GL11;
import gmail.marcusforrest0.com.Main;
import gmail.marcusforrest0.lib.Reference;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.util.ResourceLocation;
public class ShrineGui extends GuiScreen
{
int guiWidth = 175;
int guiHeight = 164;
private static ResourceLocation[] testing = new ResourceLocation[2];
public ShrineGui()
{
testing[0] = new ResourceLocation("classcraft:gui/shrine.png");
}
@Override
public void initGui()
{
System.out.println("Working");
}
@Override
public void updateScreen()
{
}
@Override
public boolean doesGuiPauseGame()
{
return false;
}
@Override
public void drawScreen(int x, int y, float ticks)
{
int guiX = (width - guiWidth)/2;
int guiY = (height - guiHeight)/2;
GL11.glColor4f(1, 1, 1, 1);
drawDefaultBackground();
//mc.getTextureManager().bindTexture(new ResourceLocation("classcraft:gui/shrine.png")); commented out to do some debugging
drawTexturedModalRect(guiX, guiY, 0, 0, guiWidth, guiHeight);
fontRendererObj.drawString("Test", guiX, guiY, 0xFFFFFF);
super.drawScreen(x, y, ticks);
}
}
[/embed]
The Shrine Block
[embed=425,349]package gmail.marcusforrest0.blocks;
import gmail.marcusforrest0.com.Main;
import gmail.marcusforrest0.guiClients.ShrineGui;
import gmail.marcusforrest0.proxies.ClientProxy;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World;
public class Shrine extends Block
{
public Shrine(Material material)
{
super(material);
}
@Override
public boolean onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer player, int par6, float par7, float par8, float par9)
{
if (!par1World.isRemote)
{
player.openGui(Main.instance, 0, par1World, par2, par3, par4);
Minecraft.getMinecraft().displayGuiScreen(new ShrineGui());
}
return true;
}
}
[/embed]
I have a decent amount of experience with Java but am very new to any and all minecraft modding practices and server/client relationships within java coding. Any help would be greatly appreciated, also please feel free to point out any poor coding practices so that I may get better.