Gonna need to see the code for the GUI class. Also I just took the original 3x3 and edited it in Photoshop, basically I squeezed it all in, I am sure there is a better way to resize with code.
@EventHandler
public void load(FMLInitializationEvent event)
{
forge = new BlockForge(forgeID).setHardness(2.5F).setResistance(2000.0F).setStepSound(Block.soundWoodFootstep).setUnlocalizedName("forge");
public class GuiHandlerForge implements IGuiHandler
{
@Override
public Object getServerGuiElement(int id, EntityPlayer player, World world, int x, int y, int z)
{
TileEntity tile_entity = world.getBlockTileEntity(x, y, z);
switch(id)
{
case 0: return id == 0 && world.getBlockId(x, y, z) == MachForge.forge.blockID ? new ContainerForge(player.inventory, world, x, y, z) : null;
}
return null;
}
@Override
public Object getClientGuiElement(int id, EntityPlayer player, World world, int x, int y, int z)
{
TileEntity tile_entity = world.getBlockTileEntity(x, y, z);
switch(id)
{
case 0: return id == 0 && world.getBlockId(x, y, z) == MachForge.forge.blockID ? new GuiForge(player.inventory, world, x, y, z) : null;
}
return null;
}
}
public class ForgeCraftingManager
{
public static final int WILDCARD_VALUE = Short.MAX_VALUE;
private static final ForgeCraftingManager instance = new ForgeCraftingManager();
private List recipes = new ArrayList();
public static final ForgeCraftingManager getInstance()
{
return instance;
}
private ForgeCraftingManager()
{
recipes = new ArrayList();
//This is where your recipes will go
Collections.sort(this.recipes, new ForgeRecipeSorter(this));
System.out.println(this.recipes.size() + " recipes");
}
public ForgeShapedRecipes func_92051_a(ItemStack par1ItemStack, Object ... par2ArrayOfObj)
{
String var3 = "";
int var4 = 0;
int var5 = 0;
int var6 = 0;
if (par2ArrayOfObj[var4] instanceof String[])
{
String[] var7 = (String[])((String[])par2ArrayOfObj[var4++]);
public class GuiForge extends GuiContainer
{
private ResourceLocation better = new ResourceLocation("textures/gui/container/5x5_Gui(1).png");
public GuiForge(InventoryPlayer inventoryplayer, World world, int i, int j, int k)
{
super(new ContainerForge(inventoryplayer, world, i, j, k));
}
public void onGuiClosed()
{
super.onGuiClosed();
}
protected void drawGuiContainerForegroundLayer(int par1, int par2)
{
this.fontRenderer.drawString(StatCollector.translateToLocal("Forge"), 8, this.ySize - 150 - 14, 0x404040);
this.fontRenderer.drawString(StatCollector.translateToLocal("container.inventory"), 8, this.ySize - 96 - 14, 0x404040);
//Fix positioning after gui is fixed
}
protected void drawGuiContainerBackgroundLayer(float f, int i, int j)
{
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
mc.renderEngine.func_110577_a(better);
int l = (width - xSize) / 2;
int i1 = (height - ySize) / 2;
drawTexturedModalRect(l, i1, 0, 0, xSize, ySize);
}
}
Don't know why I didn't put the code in the first post... Well here it is now:
Thanks in advance.
Okay...this bit here in the GUI class
int l = (width - xSize) / 2;
int i1 = (height - ySize) / 2;
Will help adjust the size limitations and help make you GUI show up better. Alternatively, you can go to this link here and see my mods made with these tutorials. They are all furnace and crafting table variations, get the better table, it is my 5x5, and you can see how I made the GUI with out changing the lines I showed you. Also you will need to adjust the slots in the container class to move left or right to line up with the boxes in the GUI. A bit tricky, but easy once you do it once or twice.
package dimension;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import cpw.mods.fml.common.network.IGuiHandler;
public class GuiHandlerBetterTable implements IGuiHandler {
@Override
public Object getServerGuiElement(int id, EntityPlayer player, World world,
int x, int y, int z) {
TileEntity tile_entity = world.getBlockTileEntity(x, y, z);
switch (id) {
case 0:
return id == 0
&& world.getBlockId(x, y, z) == Main.betterTable.blockID ? new ContainerBetterTable(
player.inventory, world, x, y, z) : null;
}
return null;
}
@Override
public Object getClientGuiElement(int id, EntityPlayer player, World world,
int x, int y, int z) {
TileEntity tile_entity = world.getBlockTileEntity(x, y, z);
switch (id) {
case 0:
return id == 0
&& world.getBlockId(x, y, z) == Main.betterTable.blockID ? new BetterTableGui(
player.inventory, world, x, y, z) : null;
}
return null;
}
}
I don't know why, but when i right-click on my table the game crash!
First, please let me explain this again for those that have not paid any attention. If you are going to just copy and paste my code without trying to understand what it is that is happening in the code, I will not help you. Every class there you showed me is an exact copy of my tutorial/source code. If you are not going to make an effort to understand, or at the very least change the names of things, it shows me you just want the code and then blame me when it does not work.
Dude i haven't "Copy paste" I've copy your code, yes. But I write it letters by letters and i understand the code. I just don't understand why it gives me this error. And by the way, I'm trying to solve this since 6 days.
Dude i haven't "Copy paste" I've copy your code, yes. But I write it letters by letters and i understand the code. I just don't understand why it gives me this error. And by the way, I'm trying to solve this since 6 days.
Well, could you at least post the crash report? saying it crashes when you click the block doesnt really give me much to go on, or others really. Post that and I will see what I can do.....
java.lang.Error: Unresolved compilation problems:
The constructor ContainerBetterTable(ContainerBetterTable) is undefined
fontRenderer cannot be resolved or is not a field
fontRenderer cannot be resolved or is not a field
ySize cannot be resolved or is not a field
mc cannot be resolved or is not a field
width cannot be resolved or is not a field
xSize cannot be resolved or is not a field
height cannot be resolved or is not a field
ySize cannot be resolved or is not a field
xSize cannot be resolved or is not a field
ySize cannot be resolved or is not a field
at BetterTable.GuiBetterTable.<init>(GuiBetterTable.java:19)
at BetterTable.GuiHandlerBetterTable.getClientGuiElement(GuiHandlerBetterTable.java:26)
at cpw.mods.fml.common.network.NetworkRegistry.openLocalGui(NetworkRegistry.java:328)
at cpw.mods.fml.common.network.FMLNetworkHandler.openGui(FMLNetworkHandler.java:356)
at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2461)
at BetterTable.BlockBetterTable.onBlockActivated(BlockBetterTable.java:44)
at net.minecraft.client.multiplayer.PlayerControllerMP.onPlayerRightClick(PlayerControllerMP.java:371)
at net.minecraft.client.Minecraft.clickMouse(Minecraft.java:1378)
at net.minecraft.client.Minecraft.runTick(Minecraft.java:1854)
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:898)
at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:826)
at net.minecraft.client.main.Main.main(Main.java:93)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:57)
at net.minecraft.launchwrapper.Launch.main(Launch.java:18)
A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------
-- Head --
Stacktrace:
at BetterTable.GuiBetterTable.<init>(GuiBetterTable.java:19)
at BetterTable.GuiHandlerBetterTable.getClientGuiElement(GuiHandlerBetterTable.java:26)
at cpw.mods.fml.common.network.NetworkRegistry.openLocalGui(NetworkRegistry.java:328)
at cpw.mods.fml.common.network.FMLNetworkHandler.openGui(FMLNetworkHandler.java:356)
at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2461)
at BetterTable.BlockBetterTable.onBlockActivated(BlockBetterTable.java:44)
at net.minecraft.client.multiplayer.PlayerControllerMP.onPlayerRightClick(PlayerControllerMP.java:371)
at net.minecraft.client.Minecraft.clickMouse(Minecraft.java:1378)
From the looks of the crash report, you botched the container class somewhere....as indicated by the crash log. Some how, you and the other guy having the same issue missed some part of the code. Since I didnt see the container posted I can only assume you dont have it, or it is missing 1 or more methods.
public class ContainerBetterTable extends Container
{
/** The crafting matrix inventory (3x3). */
public InventoryCrafting craftMatrix = new InventoryCrafting(this, 3, 3);
public IInventory craftResult = new InventoryCraftResult();
private World worldObj;
private int posX;
private int posY;
private int posZ;
public ContainerBetterTable(InventoryPlayer par1InventoryPlayer, World par2World, int par3, int par4, int par5)
{
this.worldObj = par2World;
this.posX = par3;
this.posY = par4;
this.posZ = par5;
this.addSlotToContainer(new SlotCrafting(par1InventoryPlayer.player, this.craftMatrix, this.craftResult, 0, 124, 35));
int l;
int i1;
for (l = 0; l < 3; ++l)
{
for (i1 = 0; i1 < 3; ++i1)
{
this.addSlotToContainer(new Slot(this.craftMatrix, i1 + l * 3, 30 + i1 * 18, 17 + l * 18));
}
}
for (l = 0; l < 3; ++l)
{
for (i1 = 0; i1 < 9; ++i1)
{
this.addSlotToContainer(new Slot(par1InventoryPlayer, i1 + l * 9 + 9, 8 + i1 * 18, 84 + l * 18));
}
}
for (l = 0; l < 9; ++l)
{
this.addSlotToContainer(new Slot(par1InventoryPlayer, l, 8 + l * 18, 142));
}
this.onCraftMatrixChanged(this.craftMatrix);
}
/**
* Callback for when the crafting matrix is changed.
*/
public void onCraftMatrixChanged(IInventory par1IInventory)
{
this.craftResult.setInventorySlotContents(0, CraftingManager.getInstance().findMatchingRecipe(this.craftMatrix, this.worldObj));
}
/**
* Called when the container is closed.
*/
public void onContainerClosed(EntityPlayer par1EntityPlayer)
{
super.onContainerClosed(par1EntityPlayer);
if (!this.worldObj.isRemote)
{
for (int i = 0; i < 9; ++i)
{
ItemStack itemstack = this.craftMatrix.getStackInSlotOnClosing(i);
if (itemstack != null)
{
par1EntityPlayer.dropPlayerItem(itemstack);
}
}
}
}
/**
* Called when a player shift-clicks on a slot. You must override this or you will crash when someone does that.
*/
public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int par2)
{
ItemStack itemstack = null;
Slot slot = (Slot)this.inventorySlots.get(par2);
public class ContainerBetterTable extends Container
{
/** The crafting matrix inventory (3x3). */
public InventoryCrafting craftMatrix = new InventoryCrafting(this, 3, 3);
public IInventory craftResult = new InventoryCraftResult();
private World worldObj;
private int posX;
private int posY;
private int posZ;
public ContainerBetterTable(InventoryPlayer par1InventoryPlayer, World par2World, int par3, int par4, int par5)
{
this.worldObj = par2World;
this.posX = par3;
this.posY = par4;
this.posZ = par5;
this.addSlotToContainer(new SlotCrafting(par1InventoryPlayer.player, this.craftMatrix, this.craftResult, 0, 124, 35));
int l;
int i1;
for (l = 0; l < 3; ++l)
{
for (i1 = 0; i1 < 3; ++i1)
{
this.addSlotToContainer(new Slot(this.craftMatrix, i1 + l * 3, 30 + i1 * 18, 17 + l * 18));
}
}
for (l = 0; l < 3; ++l)
{
for (i1 = 0; i1 < 9; ++i1)
{
this.addSlotToContainer(new Slot(par1InventoryPlayer, i1 + l * 9 + 9, 8 + i1 * 18, 84 + l * 18));
}
}
for (l = 0; l < 9; ++l)
{
this.addSlotToContainer(new Slot(par1InventoryPlayer, l, 8 + l * 18, 142));
}
this.onCraftMatrixChanged(this.craftMatrix);
}
public ContainerBetterTable(ContainerBetterTable containerBetterTable) {
// TODO Auto-generated constructor stub
}
/**
* Callback for when the crafting matrix is changed.
*/
public void onCraftMatrixChanged(IInventory par1IInventory)
{
this.craftResult.setInventorySlotContents(0, CraftingManager.getInstance().findMatchingRecipe(this.craftMatrix, this.worldObj));
}
/**
* Called when the container is closed.
*/
public void onContainerClosed(EntityPlayer par1EntityPlayer)
{
super.onContainerClosed(par1EntityPlayer);
if (!this.worldObj.isRemote)
{
for (int i = 0; i < 9; ++i)
{
ItemStack itemstack = this.craftMatrix.getStackInSlotOnClosing(i);
if (itemstack != null)
{
par1EntityPlayer.dropPlayerItem(itemstack);
}
}
}
}
/**
* Called when a player shift-clicks on a slot. You must override this or you will crash when someone does that.
*/
public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int par2)
{
ItemStack itemstack = null;
Slot slot = (Slot)this.inventorySlots.get(par2);
java.lang.ClassCastException: BetterTable.GuiBetterTable cannot be cast to net.minecraft.client.gui.GuiScreen
at cpw.mods.fml.client.FMLClientHandler.showGuiScreen(FMLClientHandler.java:352)
at cpw.mods.fml.common.FMLCommonHandler.showGuiScreen(FMLCommonHandler.java:334)
at cpw.mods.fml.common.network.NetworkRegistry.openLocalGui(NetworkRegistry.java:328)
at cpw.mods.fml.common.network.FMLNetworkHandler.openGui(FMLNetworkHandler.java:356)
at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2461)
at BetterTable.BlockBetterTable.onBlockActivated(BlockBetterTable.java:44)
at net.minecraft.client.multiplayer.PlayerControllerMP.onPlayerRightClick(PlayerControllerMP.java:371)
at net.minecraft.client.Minecraft.clickMouse(Minecraft.java:1378)
at net.minecraft.client.Minecraft.runTick(Minecraft.java:1854)
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:898)
at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:826)
at net.minecraft.client.main.Main.main(Main.java:93)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:57)
at net.minecraft.launchwrapper.Launch.main(Launch.java:18)
A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------
-- Head --
Stacktrace:
at cpw.mods.fml.client.FMLClientHandler.showGuiScreen(FMLClientHandler.java:352)
at cpw.mods.fml.common.FMLCommonHandler.showGuiScreen(FMLCommonHandler.java:334)
at cpw.mods.fml.common.network.NetworkRegistry.openLocalGui(NetworkRegistry.java:328)
at cpw.mods.fml.common.network.FMLNetworkHandler.openGui(FMLNetworkHandler.java:356)
at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2461)
at BetterTable.BlockBetterTable.onBlockActivated(BlockBetterTable.java:44)
at net.minecraft.client.multiplayer.PlayerControllerMP.onPlayerRightClick(PlayerControllerMP.java:371)
at net.minecraft.client.Minecraft.clickMouse(Minecraft.java:1378)
Please dont take this wrong, but based on what I see, those are two very different crash reports....this tells me that you have more than one issue going on. Also from the looks of your class files you did something very wrong. This is a suggestion, take it how you want. Make the mod class, your own, not mine, and use my example or follow a tutorial that explains it well, please dont just copy it over. I see you have my config set up in the mod class, however you used a block ID of 700. So you either dont know what you are doing, or have no idea how to use the config. Name things the way you want them, dont use my class names, block names, or item names, this is a tutorial, not a remake my mod. This is code I am providing for learning purposes, as this is my code from my mod that I actually have posted for download, not to be ripped off. I even posted my source so you could drop it in eclipse and see the code in color, real good with out having to squint at the screen and try to read.
I looked at your container, and GUI classes, there are things there that do not belong, have been completely changed, and as I said before a few methods are missing. I could post my code again here in my reply, but why when it will be the exact same as before. I suggest you go back and read the tutorial again, read the code and then (without direct copy, either by copy paste or re typing) make your own classes following the code. Look at the workbench code in vanilla minecraft and try to see what the differences are and use that as well....vanilla files are a nice tool to use when making things like this....that is how I learned....
Primo: Calm down Secundo: I've kept the name the same to be sure there would be no errors, I would have deleted these classes after
Tertio: This isn't a tutorial, its a providing code post, that's all. A real tutorial explains step by step how to do the class and all that. And the author doesn't rage each time someone needs help.
Quarto: I'm outta here I'm only losing my time. Ciaossu
Primo: Calm down Secundo: I've kept the name the same to be sure there would be no errors, I would have deleted these classes after
Tertio: This isn't a tutorial, its a providing code post, that's all. A real tutorial explains step by step how to do the class and all that. And the author doesn't rage each time someone needs help.
Quarto: I'm outta here I'm only losing my time. Ciaossu
Well, I understand what you are saying and while some tutorials do have more explanation, I do explain and point out the important parts that need attention and changed to make a grid one way or the other. And as these are easy to make, and quite easy to understand, they really dont require that much attention. Now, I want to be clear, no matter how you do it, making a copy of what I have is not going to learn you anything at all. If you want to do that then open all the related classes to the workbench and read through that. Copy them over to your own package and make your own mod class, I would hope you know how to make a mod class and understand the code involved there. Then use my GUI handler and run it. now you have a fully functioning 3x3 table and can then see why and where I made the changes for the 5x5. All I am saying is you do not understand enough of the code if you are having this much trouble. You have my code (works 100% in my mod), you have the resource here. I am sorry you cant get it to work, I meant no offense in any way, I just dont think you understand enough to do this if you are just making exact copies of my work and cant get it to run. If you think I am being rude by not offering any further assistance there is an entire dev section for help as well, and most likely you will get the same responses there...
sorry, copy/pasted.
In the 3x3 crafting table tutorial you have GuiBetterTable extending itself, when it should extend GuiContainer.
Also, when i open the custom table the gui flashes open for a second then closes.
Okay...I will fix that...I have been busy updating a mod of mine to some new code and is taking some time to do...lots to fix. As for the issue at hand...in the container...the can interact with method, look for block.workbench.blockID, or thats what it should be, you want to change that to your block.
I've tried sizing it down in photoshop, but the only thing it does it make it a blurrier cut off GUI.
Find out how I generate....coolAlias...world structure generation and rotation tool...
MachForge (Base Class)
package lynexer.Mach;
import net.minecraft.block.Block;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.Configuration;
import net.minecraftforge.common.MinecraftForge;
import cpw.mods.fml.client.registry.RenderingRegistry;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.Mod.Init;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.SidedProxy;
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.NetworkMod;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;
import cpw.mods.fml.common.registry.VillagerRegistry;
@Mod(modid = "Mach Forge", name = "Mach Forge", version = "1.0")
@NetworkMod(clientSideRequired = true, serverSideRequired = false)
public class MachForge
{
@Instance("Mach Forge")
public static MachForge instance;
private GuiHandlerForge guiHandlerForge = new GuiHandlerForge();
public static Block forge;
public static int forgeID;
@SidedProxy(clientSide = "lynexer.Mach.ClientProxy", serverSide = "lynexer.Mach.ServerProxy")
public static ServerProxy proxy;
@EventHandler
public void PreInit(FMLPreInitializationEvent event)
{
Configuration config = new Configuration(event.getSuggestedConfigurationFile());
config.load();
forgeID = config.getBlock("builder ID", 3001, (String)null).getInt();
config.save();
}
@EventHandler
public void load(FMLInitializationEvent event)
{
forge = new BlockForge(forgeID).setHardness(2.5F).setResistance(2000.0F).setStepSound(Block.soundWoodFootstep).setUnlocalizedName("forge");
GameRegistry.registerBlock(forge, "forge");
LanguageRegistry.addName(forge, "Forge");
NetworkRegistry.instance().registerGuiHandler(this, guiHandlerForge);
proxy.registerRenderThings();
}
@EventHandler
public void PostInit(FMLPostInitializationEvent event)
{
}
}
Block
package lynexer.Mach;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.Icon;
import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class BlockForge extends Block
{
@SideOnly(Side.CLIENT)
private Icon workbenchIconTop;
@SideOnly(Side.CLIENT)
private Icon workbenchIconFront;
public BlockForge(int i)
{
super(i, Material.ground);
this.setCreativeTab(CreativeTabs.tabBlock);
}
@SideOnly(Side.CLIENT)
public Icon getIcon(int par1, int par2)
{
return par1 == 1 ? this.workbenchIconTop : (par1 == 0 ? Block.planks.getBlockTextureFromSide(par1) : (par1 != 2 && par1 != 4 ? this.blockIcon : this.workbenchIconFront));
}
@SideOnly(Side.CLIENT)
public void registerIcons(IconRegister par1IconRegister)
{
this.blockIcon = par1IconRegister.registerIcon("BetterTable:better_side");
this.workbenchIconTop = par1IconRegister.registerIcon("BetterTable:better_top");
this.workbenchIconFront = par1IconRegister.registerIcon("BetterTable:better_front");
}
public boolean onBlockActivated(World var1, int var2, int var3, int var4, EntityPlayer player, int var6, float var7, float var8, float var9)
{
if (!player.isSneaking())
{
player.openGui(MachForge.instance, 0, var1, var2, var3, var4);
return true;
}
else
{
return false;
}
}
}
GuiHandler
package lynexer.Mach;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import cpw.mods.fml.common.network.IGuiHandler;
public class GuiHandlerForge implements IGuiHandler
{
@Override
public Object getServerGuiElement(int id, EntityPlayer player, World world, int x, int y, int z)
{
TileEntity tile_entity = world.getBlockTileEntity(x, y, z);
switch(id)
{
case 0: return id == 0 && world.getBlockId(x, y, z) == MachForge.forge.blockID ? new ContainerForge(player.inventory, world, x, y, z) : null;
}
return null;
}
@Override
public Object getClientGuiElement(int id, EntityPlayer player, World world, int x, int y, int z)
{
TileEntity tile_entity = world.getBlockTileEntity(x, y, z);
switch(id)
{
case 0: return id == 0 && world.getBlockId(x, y, z) == MachForge.forge.blockID ? new GuiForge(player.inventory, world, x, y, z) : null;
}
return null;
}
}
Container
package lynexer.Mach;
import lynexer.Mach.MachForge;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.InventoryCraftResult;
import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.inventory.Slot;
import net.minecraft.inventory.SlotCrafting;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
public class ContainerForge extends Container
{
public InventoryCrafting craftMatrix;
public IInventory craftResult;
private World worldObj;
private int posX;
private int posY;
private int posZ;
public ContainerForge(InventoryPlayer inventoryplayer, World world, int i, int j, int k)
{
craftMatrix = new InventoryCrafting(this, 5, 5);
craftResult = new InventoryCraftResult();
worldObj = world;
posX = i;
posY = j;
posZ = k;
this.addSlotToContainer(new SlotCrafting(inventoryplayer.player, craftMatrix, craftResult, 0, 131, 36));
for(int l = 0; l < 5; l++)
{
for(int k1 = 0; k1 < 5; k1++)
{
this.addSlotToContainer(new Slot(craftMatrix, k1 + l * 5, 4 + k1 * 18, 3 + l * 18));
}
}
for(int i1 = 0; i1 < 3; i1++)
{
for(int l1 = 0; l1 < 9; l1++)
{
this.addSlotToContainer(new Slot(inventoryplayer, l1 + i1 * 9 + 9, 8 + l1 * 18, 94 + i1 * 18));
}
}
for(int j1 = 0; j1 < 9; j1++)
{
this.addSlotToContainer(new Slot(inventoryplayer, j1, 8 + j1 * 18, 148));
}
onCraftMatrixChanged(craftMatrix);
}
public void onCraftMatrixChanged(IInventory iinventory)
{
craftResult.setInventorySlotContents(0, ForgeCraftingManager.getInstance().findMatchingRecipe(craftMatrix, worldObj));
}
public void onContainerClosed(EntityPlayer entityplayer)
{
super.onContainerClosed(entityplayer);
if(worldObj.isRemote)
{
return;
}
for(int i = 0; i < 25; i++)
{
ItemStack itemstack = craftMatrix.getStackInSlot(i);
if(itemstack != null)
{
entityplayer.dropPlayerItem(itemstack);
}
}
}
public boolean canInteractWith(EntityPlayer entityplayer)
{
if(worldObj.getBlockId(posX, posY, posZ) != MachForge.forge.blockID)
{
return false;
} else
{
return entityplayer.getDistanceSq((double)posX + 0.5D, (double)posY + 0.5D, (double)posZ + 0.5D) <= 64D;
}
}
public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int par2)
{
ItemStack itemstack = null;
Slot slot = (Slot)inventorySlots.get(par2);
if(slot != null && slot.getHasStack())
{
ItemStack itemstack1 = slot.getStack();
itemstack = itemstack1.copy();
if(par2 == 0)
{
if(!mergeItemStack(itemstack1, 10, 46, true))
{
return null;
}
} else
if(par2 >= 10 && par2 < 37)
{
if(!mergeItemStack(itemstack1, 37, 46, false))
{
return null;
}
} else
if(par2 >= 37 && par2 < 46)
{
if(!mergeItemStack(itemstack1, 10, 37, false))
{
return null;
}
} else
if(!mergeItemStack(itemstack1, 10, 46, false))
{
return null;
}
if(itemstack1.stackSize == 0)
{
slot.putStack(null);
} else
{
slot.onSlotChanged();
}
if(itemstack1.stackSize != itemstack.stackSize)
{
slot.onPickupFromSlot(par1EntityPlayer, itemstack1);
} else
{
return null;
}
}
return itemstack;
}
}
Crafting Manager
package lynexer.Mach;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import lynexer.Mach.MachForge;
import lynexer.Mach.ForgeRecipeSorter;
import lynexer.Mach.ForgeShapedRecipes;
import lynexer.Mach.ForgeShapelessRecipes;
import cpw.mods.fml.common.registry.GameRegistry;
import net.minecraft.block.Block;
import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.world.World;
public class ForgeCraftingManager
{
public static final int WILDCARD_VALUE = Short.MAX_VALUE;
private static final ForgeCraftingManager instance = new ForgeCraftingManager();
private List recipes = new ArrayList();
public static final ForgeCraftingManager getInstance()
{
return instance;
}
private ForgeCraftingManager()
{
recipes = new ArrayList();
//This is where your recipes will go
Collections.sort(this.recipes, new ForgeRecipeSorter(this));
System.out.println(this.recipes.size() + " recipes");
}
public ForgeShapedRecipes func_92051_a(ItemStack par1ItemStack, Object ... par2ArrayOfObj)
{
String var3 = "";
int var4 = 0;
int var5 = 0;
int var6 = 0;
if (par2ArrayOfObj[var4] instanceof String[])
{
String[] var7 = (String[])((String[])par2ArrayOfObj[var4++]);
for (int var8 = 0; var8 < var7.length; ++var8)
{
String var9 = var7[var8];
++var6;
var5 = var9.length();
var3 = var3 + var9;
}
}
else
{
while (par2ArrayOfObj[var4] instanceof String)
{
String var11 = (String)par2ArrayOfObj[var4++];
++var6;
var5 = var11.length();
var3 = var3 + var11;
}
}
HashMap var12;
for (var12 = new HashMap(); var4 < par2ArrayOfObj.length; var4 += 2)
{
Character var13 = (Character)par2ArrayOfObj[var4];
ItemStack var14 = null;
if (par2ArrayOfObj[var4 + 1] instanceof Item)
{
var14 = new ItemStack((Item)par2ArrayOfObj[var4 + 1]);
}
else if (par2ArrayOfObj[var4 + 1] instanceof Block)
{
var14 = new ItemStack((Block)par2ArrayOfObj[var4 + 1], 1, -1);
}
else if (par2ArrayOfObj[var4 + 1] instanceof ItemStack)
{
var14 = (ItemStack)par2ArrayOfObj[var4 + 1];
}
var12.put(var13, var14);
}
ItemStack[] var15 = new ItemStack[var5 * var6];
for (int var16 = 0; var16 < var5 * var6; ++var16)
{
char var10 = var3.charAt(var16);
if (var12.containsKey(Character.valueOf(var10)))
{
var15[var16] = ((ItemStack)var12.get(Character.valueOf(var10))).copy();
}
else
{
var15[var16] = null;
}
}
ForgeShapedRecipes var17 = new ForgeShapedRecipes(var5, var6, var15, par1ItemStack);
this.recipes.add(var17);
return var17;
}
public void addBuilderShapelessRecipe(ItemStack par1ItemStack, Object ... par2ArrayOfObj)
{
ArrayList var3 = new ArrayList();
Object[] var4 = par2ArrayOfObj;
int var5 = par2ArrayOfObj.length;
for (int var6 = 0; var6 < var5; ++var6)
{
Object var7 = var4[var6];
if (var7 instanceof ItemStack)
{
var3.add(((ItemStack)var7).copy());
}
else if (var7 instanceof Item)
{
var3.add(new ItemStack((Item)var7));
}
else
{
if (!(var7 instanceof Block))
{
throw new RuntimeException("Invalid shapeless recipe!");
}
var3.add(new ItemStack((Block)var7));
}
}
this.recipes.add(new ForgeShapelessRecipes(par1ItemStack, var3));
}
public ItemStack findMatchingRecipe(InventoryCrafting par1InventoryCrafting, World par2World)
{
int var3 = 0;
ItemStack var4 = null;
ItemStack var5 = null;
int var6;
for (var6 = 0; var6 < par1InventoryCrafting.getSizeInventory(); ++var6)
{
ItemStack var7 = par1InventoryCrafting.getStackInSlot(var6);
if (var7 != null)
{
if (var3 == 0)
{
var4 = var7;
}
if (var3 == 1)
{
var5 = var7;
}
++var3;
}
}
if (var3 == 2 && var4.itemID == var5.itemID && var4.stackSize == 1 && var5.stackSize == 1 && Item.itemsList[var4.itemID].isRepairable())
{
Item var11 = Item.itemsList[var4.itemID];
int var13 = var11.getMaxDamage() - var4.getItemDamageForDisplay();
int var8 = var11.getMaxDamage() - var5.getItemDamageForDisplay();
int var9 = var13 + var8 + var11.getMaxDamage() * 5 / 100;
int var10 = var11.getMaxDamage() - var9;
if (var10 < 0)
{
var10 = 0;
}
return new ItemStack(var4.itemID, 1, var10);
}
else
{
for (var6 = 0; var6 < this.recipes.size(); ++var6)
{
IRecipe var12 = (IRecipe)this.recipes.get(var6);
if (var12.matches(par1InventoryCrafting, par2World))
{
return var12.getCraftingResult(par1InventoryCrafting);
}
}
return null;
}
}
/**
* returns the List<> of all recipes
*/
public List getRecipeList()
{
return this.recipes;
}
}
Gui
package lynexer.Mach;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
import org.lwjgl.opengl.GL11;
public class GuiForge extends GuiContainer
{
private ResourceLocation better = new ResourceLocation("textures/gui/container/5x5_Gui(1).png");
public GuiForge(InventoryPlayer inventoryplayer, World world, int i, int j, int k)
{
super(new ContainerForge(inventoryplayer, world, i, j, k));
}
public void onGuiClosed()
{
super.onGuiClosed();
}
protected void drawGuiContainerForegroundLayer(int par1, int par2)
{
this.fontRenderer.drawString(StatCollector.translateToLocal("Forge"), 8, this.ySize - 150 - 14, 0x404040);
this.fontRenderer.drawString(StatCollector.translateToLocal("container.inventory"), 8, this.ySize - 96 - 14, 0x404040);
//Fix positioning after gui is fixed
}
protected void drawGuiContainerBackgroundLayer(float f, int i, int j)
{
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
mc.renderEngine.func_110577_a(better);
int l = (width - xSize) / 2;
int i1 = (height - ySize) / 2;
drawTexturedModalRect(l, i1, 0, 0, xSize, ySize);
}
}
Thanks in advance.
Okay...this bit here in the GUI class
Will help adjust the size limitations and help make you GUI show up better. Alternatively, you can go to this link here and see my mods made with these tutorials. They are all furnace and crafting table variations, get the better table, it is my 5x5, and you can see how I made the GUI with out changing the lines I showed you. Also you will need to adjust the slots in the container class to move left or right to line up with the boxes in the GUI. A bit tricky, but easy once you do it once or twice.
Find out how I generate....coolAlias...world structure generation and rotation tool...
Find out how I generate....coolAlias...world structure generation and rotation tool...
main
Gui of my block
I'm having the same error as this user
GuiHandler
First, please let me explain this again for those that have not paid any attention. If you are going to just copy and paste my code without trying to understand what it is that is happening in the code, I will not help you. Every class there you showed me is an exact copy of my tutorial/source code. If you are not going to make an effort to understand, or at the very least change the names of things, it shows me you just want the code and then blame me when it does not work.
In other words.....PLEASE TRY AGAIN!
Find out how I generate....coolAlias...world structure generation and rotation tool...
Well, could you at least post the crash report? saying it crashes when you click the block doesnt really give me much to go on, or others really. Post that and I will see what I can do.....
Find out how I generate....coolAlias...world structure generation and rotation tool...
// Don't be sad. I'll do better next time, I promise!
Time: 13-09-08 13:17
Description: Unexpected error
java.lang.Error: Unresolved compilation problems:
The constructor ContainerBetterTable(ContainerBetterTable) is undefined
fontRenderer cannot be resolved or is not a field
fontRenderer cannot be resolved or is not a field
ySize cannot be resolved or is not a field
mc cannot be resolved or is not a field
width cannot be resolved or is not a field
xSize cannot be resolved or is not a field
height cannot be resolved or is not a field
ySize cannot be resolved or is not a field
xSize cannot be resolved or is not a field
ySize cannot be resolved or is not a field
at BetterTable.GuiBetterTable.<init>(GuiBetterTable.java:19)
at BetterTable.GuiHandlerBetterTable.getClientGuiElement(GuiHandlerBetterTable.java:26)
at cpw.mods.fml.common.network.NetworkRegistry.openLocalGui(NetworkRegistry.java:328)
at cpw.mods.fml.common.network.FMLNetworkHandler.openGui(FMLNetworkHandler.java:356)
at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2461)
at BetterTable.BlockBetterTable.onBlockActivated(BlockBetterTable.java:44)
at net.minecraft.client.multiplayer.PlayerControllerMP.onPlayerRightClick(PlayerControllerMP.java:371)
at net.minecraft.client.Minecraft.clickMouse(Minecraft.java:1378)
at net.minecraft.client.Minecraft.runTick(Minecraft.java:1854)
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:898)
at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:826)
at net.minecraft.client.main.Main.main(Main.java:93)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:57)
at net.minecraft.launchwrapper.Launch.main(Launch.java:18)
A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------
-- Head --
Stacktrace:
at BetterTable.GuiBetterTable.<init>(GuiBetterTable.java:19)
at BetterTable.GuiHandlerBetterTable.getClientGuiElement(GuiHandlerBetterTable.java:26)
at cpw.mods.fml.common.network.NetworkRegistry.openLocalGui(NetworkRegistry.java:328)
at cpw.mods.fml.common.network.FMLNetworkHandler.openGui(FMLNetworkHandler.java:356)
at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2461)
at BetterTable.BlockBetterTable.onBlockActivated(BlockBetterTable.java:44)
at net.minecraft.client.multiplayer.PlayerControllerMP.onPlayerRightClick(PlayerControllerMP.java:371)
at net.minecraft.client.Minecraft.clickMouse(Minecraft.java:1378)
-- Affected level --
Details:
Level name: MpServer
All players: 1 total; [EntityClientPlayerMP['Player498'/274, l='MpServer', x=125,12, y=65,62, z=273,86]]
Chunk stats: MultiplayerChunkCache: 441
Level seed: 0
Level generator: ID 00 - default, ver 1. Features enabled: false
Level generator options:
Level spawn location: World: (112,64,256), Chunk: (at 0,4,0 in 7,16; contains blocks 112,0,256 to 127,255,271), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511)
Level time: 814 game time, 814 day time
Level dimension: 0
Level storage version: 0x00000 - Unknown?
Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false
Forced entities: 95 total; [EntityBat['Bat'/276, l='MpServer', x=121,00, y=51,67, z=216,50], EntityClientPlayerMP['Player498'/274, l='MpServer', x=125,12, y=65,62, z=273,86], EntityCow['Cow'/51, l='MpServer', x=60,50, y=63,00, z=305,50], EntitySquid['Squid'/55, l='MpServer', x=72,97, y=58,28, z=231,50], EntityCow['Cow'/52, l='MpServer', x=56,72, y=63,00, z=312,47], EntityCow['Cow'/59, l='MpServer', x=75,88, y=63,00, z=276,56], EntitySquid['Squid'/58, l='MpServer', x=79,34, y=59,16, z=222,69], EntitySquid['Squid'/57, l='MpServer', x=76,03, y=62,00, z=234,63], EntitySquid['Squid'/56, l='MpServer', x=69,78, y=59,19, z=231,41], EntityCow['Cow'/63, l='MpServer', x=67,50, y=61,00, z=317,50], EntityCow['Cow'/62, l='MpServer', x=66,03, y=63,00, z=315,03], EntityCow['Cow'/61, l='MpServer', x=68,97, y=63,00, z=317,97], EntityCow['Cow'/60, l='MpServer', x=67,50, y=63,00, z=316,50], EntityItem['item.tile.rail'/70, l='MpServer', x=73,81, y=23,13, z=337,13], EntityItem['item.tile.rail'/64, l='MpServer', x=77,28, y=13,13, z=331,81], EntityItem['item.tile.rail'/65, l='MpServer', x=78,88, y=13,13, z=334,81], EntityBat['Bat'/66, l='MpServer', x=68,61, y=28,00, z=325,82], EntityCow['Cow'/76, l='MpServer', x=84,28, y=64,00, z=269,25], EntityChicken['Chicken'/77, l='MpServer', x=90,59, y=64,00, z=258,56], EntityCow['Cow'/78, l='MpServer', x=82,19, y=63,00, z=275,50], EntityCow['Cow'/79, l='MpServer', x=80,81, y=63,00, z=277,50], EntityItem['item.tile.rail'/74, l='MpServer', x=88,88, y=18,13, z=229,81], EntityItem['item.tile.rail'/75, l='MpServer', x=87,81, y=13,13, z=240,13], EntityMinecartChest['entity.MinecartChest.name'/81, l='MpServer', x=88,50, y=24,50, z=329,50], EntityBat['Bat'/80, l='MpServer', x=87,41, y=24,81, z=313,64], EntityBat['Bat'/83, l='MpServer', x=93,75, y=24,10, z=323,13], EntityBat['Bat'/82, l='MpServer', x=93,41, y=25,10, z=326,50], EntityItem['item.tile.torch'/103, l='MpServer', x=100,09, y=19,13, z=253,25], EntityChicken['Chicken'/110, l='MpServer', x=89,63, y=64,00, z=258,59], EntityChicken['Chicken'/111, l='MpServer', x=102,09, y=64,00, z=259,03], EntityItem['item.tile.rail'/108, l='MpServer', x=101,88, y=18,13, z=262,13], EntityChicken['Chicken'/109, l='MpServer', x=99,34, y=64,00, z=260,34], EntityItem['item.tile.rail'/106, l='MpServer', x=101,88, y=18,13, z=264,81], EntityItem['item.tile.rail'/107, l='MpServer', x=100,59, y=18,13, z=262,13], EntityMinecartChest['entity.MinecartChest.name'/104, l='MpServer', x=99,50, y=19,50, z=253,50], EntityMinecartChest['entity.MinecartChest.name'/105, l='MpServer', x=99,50, y=19,50, z=258,50], EntityCow['Cow'/119, l='MpServer', x=107,72, y=63,00, z=340,25], EntityItem['item.tile.torch'/118, l='MpServer', x=109,69, y=24,13, z=334,22], EntityMinecartChest['entity.MinecartChest.name'/117, l='MpServer', x=109,50, y=28,50, z=319,50], EntityPig['Pig'/116, l='MpServer', x=106,75, y=64,00, z=292,13], EntityPig['Pig'/115, l='MpServer', x=102,09, y=63,00, z=294,94], EntityItem['item.tile.torch'/114, l='MpServer', x=100,19, y=23,13, z=299,25], EntityCow['Cow'/113, l='MpServer', x=110,48, y=63,00, z=284,49], EntityItem['item.tile.rail'/112, l='MpServer', x=99,56, y=18,13, z=273,19], EntityCow['Cow'/122, l='MpServer', x=108,47, y=64,00, z=341,56], EntityCow['Cow'/121, l='MpServer', x=110,53, y=64,11, z=342,53], EntitySheep['Sheep'/120, l='MpServer', x=111,16, y=63,00, z=339,34], EntityItem['item.tile.rail'/137, l='MpServer', x=123,81, y=13,13, z=272,22], EntityItem['item.tile.rail'/136, l='MpServer', x=117,19, y=13,13, z=272,09], EntityCow['Cow'/139, l='MpServer', x=115,22, y=64,00, z=286,50], EntityHorse['Horse'/141, l='MpServer', x=126,50, y=64,00, z=284,75], EntityCow['Cow'/140, l='MpServer', x=117,44, y=64,00, z=287,79], EntityHorse['Horse'/143, l='MpServer', x=124,89, y=64,00, z=286,11], EntityHorse['Horse'/142, l='MpServer', x=124,97, y=64,00, z=280,19], EntityMinecartChest['entity.MinecartChest.name'/133, l='MpServer', x=126,50, y=12,50, z=226,50], EntityItem['item.tile.rail'/135, l='MpServer', x=120,72, y=13,13, z=272,34], EntityItem['item.tile.rail'/134, l='MpServer', x=120,81, y=13,13, z=270,91], EntitySheep['Sheep'/152, l='MpServer', x=117,59, y=67,00, z=342,84], EntityCow['Cow'/153, l='MpServer', x=115,25, y=64,00, z=339,16], EntityMinecartChest['entity.MinecartChest.name'/159, l='MpServer', x=129,50, y=13,34, z=270,50], EntityPig['Pig'/144, l='MpServer', x=113,78, y=63,00, z=302,19], EntityPig['Pig'/145, l='MpServer', x=115,03, y=63,00, z=301,88], EntityItem['item.tile.mushroom'/146, l='MpServer', x=116,19, y=31,13, z=308,88], EntityItem['item.item.seeds'/147, l='MpServer', x=120,69, y=63,13, z=304,66], EntityHorse['Horse'/148, l='MpServer', x=122,75, y=63,00, z=306,00], EntityMinecartChest['entity.MinecartChest.name'/149, l='MpServer', x=126,50, y=28,50, z=339,50], EntitySheep['Sheep'/150, l='MpServer', x=124,16, y=64,00, z=331,19], EntitySheep['Sheep'/151, l='MpServer', x=120,78, y=67,00, z=340,72], EntityHorse['Horse'/168, l='MpServer', x=132,53, y=63,00, z=305,34], EntityBat['Bat'/175, l='MpServer', x=148,63, y=30,10, z=203,75], EntityHorse['Horse'/163, l='MpServer', x=137,88, y=65,00, z=289,41], EntityHorse['Horse'/162, l='MpServer', x=133,78, y=63,00, z=302,66], EntityItem['item.tile.rail'/161, l='MpServer', x=130,88, y=13,13, z=270,13], EntityItem['item.tile.rail'/160, l='MpServer', x=130,88, y=13,13, z=271,56], EntityHorse['Horse'/167, l='MpServer', x=139,00, y=63,00, z=305,97], EntityHorse['Horse'/166, l='MpServer', x=137,71, y=66,00, z=293,39], EntityHorse['Horse'/165, l='MpServer', x=134,75, y=64,00, z=299,83], EntityHorse['Horse'/164, l='MpServer', x=137,19, y=64,00, z=300,03], EntityBat['Bat'/186, l='MpServer', x=160,19, y=68,73, z=314,32], EntityBat['Bat'/187, l='MpServer', x=173,00, y=61,10, z=319,75], EntityCow['Cow'/184, l='MpServer', x=170,22, y=64,00, z=258,84], EntityCow['Cow'/185, l='MpServer', x=169,28, y=64,00, z=260,38], EntityBat['Bat'/188, l='MpServer', x=170,47, y=58,82, z=303,25], EntityBat['Bat'/176, l='MpServer', x=145,25, y=29,10, z=205,25], EntityBat['Bat'/177, l='MpServer', x=147,50, y=28,10, z=203,75], EntityCow['Cow'/204, l='MpServer', x=202,78, y=64,00, z=216,84], EntityBat['Bat'/206, l='MpServer', x=207,50, y=28,00, z=224,75], EntityCow['Cow'/201, l='MpServer', x=181,78, y=65,00, z=262,50], EntityCow['Cow'/202, l='MpServer', x=180,50, y=66,00, z=259,50], EntityCow['Cow'/212, l='MpServer', x=204,78, y=75,00, z=241,97], EntityCow['Cow'/213, l='MpServer', x=201,22, y=68,00, z=242,22], EntityBat['Bat'/208, l='MpServer', x=205,50, y=59,10, z=224,09], EntityCow['Cow'/209, l='MpServer', x=195,50, y=66,00, z=228,50], EntityCow['Cow'/210, l='MpServer', x=199,50, y=66,00, z=226,50], EntityCow['Cow'/211, l='MpServer', x=205,38, y=73,00, z=244,78]]
Retry entities: 0 total; []
Server brand: fml,forge
Server type: Integrated singleplayer server
Stacktrace:
at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:440)
at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2298)
at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:851)
at net.minecraft.client.main.Main.main(Main.java:93)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:57)
at net.minecraft.launchwrapper.Launch.main(Launch.java:18)
-- System Details --
Details:
Minecraft Version: 1.6.2
Operating System: Windows 7 (amd64) version 6.1
Java Version: 1.7.0_25, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 832581784 bytes (794 MB) / 1056309248 bytes (1007 MB) up to 1056309248 bytes (1007 MB)
JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
AABB Pool Size: 14246 (797776 bytes; 0 MB) allocated, 2 (112 bytes; 0 MB) used
Suspicious classes: FML and Forge are installed
IntCache: cache: 0, tcache: 0, allocated: 1, tallocated: 63
FML: MCP v8.04 FML v6.2.55.842 Minecraft Forge 9.10.0.842 5 mods loaded, 5 mods active
mcp{8.04} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
FML{6.2.55.842} [Forge Mod Loader] (coremods) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
Forge{9.10.0.842} [Minecraft Forge] (coremods) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
BetterTable{0.2.0} [BetterTable] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
Oniromancie_Havre-Craft{V.01} [Haven-Craft] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
Launched Version: 1.6
LWJGL: 2.9.0
OpenGL: ATI Radeon HD 5450 GL version 4.2.12217 Compatibility Profile Context 12.104.0.0, ATI Technologies Inc.
Is Modded: Definitely; Client brand changed to 'fml,forge'
Type: Client (map_client.txt)
Resource Pack: Default
Current Language: English (US)
Profiler Position: N/A (disabled)
Vec3 Pool Size: 4756 (266336 bytes; 0 MB) allocated, 17 (952 bytes; 0 MB) used
Find out how I generate....coolAlias...world structure generation and rotation tool...
package net.minecraft.inventory;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.CraftingManager;
import net.minecraft.world.World;
public class ContainerBetterTable extends Container
{
/** The crafting matrix inventory (3x3). */
public InventoryCrafting craftMatrix = new InventoryCrafting(this, 3, 3);
public IInventory craftResult = new InventoryCraftResult();
private World worldObj;
private int posX;
private int posY;
private int posZ;
public ContainerBetterTable(InventoryPlayer par1InventoryPlayer, World par2World, int par3, int par4, int par5)
{
this.worldObj = par2World;
this.posX = par3;
this.posY = par4;
this.posZ = par5;
this.addSlotToContainer(new SlotCrafting(par1InventoryPlayer.player, this.craftMatrix, this.craftResult, 0, 124, 35));
int l;
int i1;
for (l = 0; l < 3; ++l)
{
for (i1 = 0; i1 < 3; ++i1)
{
this.addSlotToContainer(new Slot(this.craftMatrix, i1 + l * 3, 30 + i1 * 18, 17 + l * 18));
}
}
for (l = 0; l < 3; ++l)
{
for (i1 = 0; i1 < 9; ++i1)
{
this.addSlotToContainer(new Slot(par1InventoryPlayer, i1 + l * 9 + 9, 8 + i1 * 18, 84 + l * 18));
}
}
for (l = 0; l < 9; ++l)
{
this.addSlotToContainer(new Slot(par1InventoryPlayer, l, 8 + l * 18, 142));
}
this.onCraftMatrixChanged(this.craftMatrix);
}
/**
* Callback for when the crafting matrix is changed.
*/
public void onCraftMatrixChanged(IInventory par1IInventory)
{
this.craftResult.setInventorySlotContents(0, CraftingManager.getInstance().findMatchingRecipe(this.craftMatrix, this.worldObj));
}
/**
* Called when the container is closed.
*/
public void onContainerClosed(EntityPlayer par1EntityPlayer)
{
super.onContainerClosed(par1EntityPlayer);
if (!this.worldObj.isRemote)
{
for (int i = 0; i < 9; ++i)
{
ItemStack itemstack = this.craftMatrix.getStackInSlotOnClosing(i);
if (itemstack != null)
{
par1EntityPlayer.dropPlayerItem(itemstack);
}
}
}
}
public boolean canInteractWith(EntityPlayer par1EntityPlayer)
{
return this.worldObj.getBlockId(this.posX, this.posY, this.posZ) != Block.workbench.blockID ? false : par1EntityPlayer.getDistanceSq((double)this.posX + 0.5D, (double)this.posY + 0.5D, (double)this.posZ + 0.5D) <= 64.0D;
}
/**
* Called when a player shift-clicks on a slot. You must override this or you will crash when someone does that.
*/
public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int par2)
{
ItemStack itemstack = null;
Slot slot = (Slot)this.inventorySlots.get(par2);
if (slot != null && slot.getHasStack())
{
ItemStack itemstack1 = slot.getStack();
itemstack = itemstack1.copy();
if (par2 == 0)
{
if (!this.mergeItemStack(itemstack1, 10, 46, true))
{
return null;
}
slot.onSlotChange(itemstack1, itemstack);
}
else if (par2 >= 10 && par2 < 37)
{
if (!this.mergeItemStack(itemstack1, 37, 46, false))
{
return null;
}
}
else if (par2 >= 37 && par2 < 46)
{
if (!this.mergeItemStack(itemstack1, 10, 37, false))
{
return null;
}
}
else if (!this.mergeItemStack(itemstack1, 10, 46, false))
{
return null;
}
if (itemstack1.stackSize == 0)
{
slot.putStack((ItemStack)null);
}
else
{
slot.onSlotChanged();
}
if (itemstack1.stackSize == itemstack.stackSize)
{
return null;
}
slot.onPickupFromSlot(par1EntityPlayer, itemstack1);
}
return itemstack;
}
public boolean func_94530_a(ItemStack par1ItemStack, Slot par2Slot)
{
return par2Slot.inventory != this.craftResult && super.func_94530_a(par1ItemStack, par2Slot);
}
}
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.InventoryCraftResult;
import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.inventory.Slot;
import net.minecraft.inventory.SlotCrafting;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.CraftingManager;
import net.minecraft.world.World;
public class ContainerBetterTable extends Container
{
/** The crafting matrix inventory (3x3). */
public InventoryCrafting craftMatrix = new InventoryCrafting(this, 3, 3);
public IInventory craftResult = new InventoryCraftResult();
private World worldObj;
private int posX;
private int posY;
private int posZ;
public ContainerBetterTable(InventoryPlayer par1InventoryPlayer, World par2World, int par3, int par4, int par5)
{
this.worldObj = par2World;
this.posX = par3;
this.posY = par4;
this.posZ = par5;
this.addSlotToContainer(new SlotCrafting(par1InventoryPlayer.player, this.craftMatrix, this.craftResult, 0, 124, 35));
int l;
int i1;
for (l = 0; l < 3; ++l)
{
for (i1 = 0; i1 < 3; ++i1)
{
this.addSlotToContainer(new Slot(this.craftMatrix, i1 + l * 3, 30 + i1 * 18, 17 + l * 18));
}
}
for (l = 0; l < 3; ++l)
{
for (i1 = 0; i1 < 9; ++i1)
{
this.addSlotToContainer(new Slot(par1InventoryPlayer, i1 + l * 9 + 9, 8 + i1 * 18, 84 + l * 18));
}
}
for (l = 0; l < 9; ++l)
{
this.addSlotToContainer(new Slot(par1InventoryPlayer, l, 8 + l * 18, 142));
}
this.onCraftMatrixChanged(this.craftMatrix);
}
public ContainerBetterTable(ContainerBetterTable containerBetterTable) {
// TODO Auto-generated constructor stub
}
/**
* Callback for when the crafting matrix is changed.
*/
public void onCraftMatrixChanged(IInventory par1IInventory)
{
this.craftResult.setInventorySlotContents(0, CraftingManager.getInstance().findMatchingRecipe(this.craftMatrix, this.worldObj));
}
/**
* Called when the container is closed.
*/
public void onContainerClosed(EntityPlayer par1EntityPlayer)
{
super.onContainerClosed(par1EntityPlayer);
if (!this.worldObj.isRemote)
{
for (int i = 0; i < 9; ++i)
{
ItemStack itemstack = this.craftMatrix.getStackInSlotOnClosing(i);
if (itemstack != null)
{
par1EntityPlayer.dropPlayerItem(itemstack);
}
}
}
}
public boolean canInteractWith(EntityPlayer par1EntityPlayer)
{
return this.worldObj.getBlockId(this.posX, this.posY, this.posZ) != Block.workbench.blockID ? false : par1EntityPlayer.getDistanceSq((double)this.posX + 0.5D, (double)this.posY + 0.5D, (double)this.posZ + 0.5D) <= 64.0D;
}
/**
* Called when a player shift-clicks on a slot. You must override this or you will crash when someone does that.
*/
public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int par2)
{
ItemStack itemstack = null;
Slot slot = (Slot)this.inventorySlots.get(par2);
if (slot != null && slot.getHasStack())
{
ItemStack itemstack1 = slot.getStack();
itemstack = itemstack1.copy();
if (par2 == 0)
{
if (!this.mergeItemStack(itemstack1, 10, 46, true))
{
return null;
}
slot.onSlotChange(itemstack1, itemstack);
}
else if (par2 >= 10 && par2 < 37)
{
if (!this.mergeItemStack(itemstack1, 37, 46, false))
{
return null;
}
}
else if (par2 >= 37 && par2 < 46)
{
if (!this.mergeItemStack(itemstack1, 10, 37, false))
{
return null;
}
}
else if (!this.mergeItemStack(itemstack1, 10, 46, false))
{
return null;
}
if (itemstack1.stackSize == 0)
{
slot.putStack((ItemStack)null);
}
else
{
slot.onSlotChanged();
}
if (itemstack1.stackSize == itemstack.stackSize)
{
return null;
}
slot.onPickupFromSlot(par1EntityPlayer, itemstack1);
}
return itemstack;
}
public boolean func_94530_a(ItemStack par1ItemStack, Slot par2Slot)
{
return par2Slot.inventory != this.craftResult && super.func_94530_a(par1ItemStack, par2Slot);
}
}
The crash report:
---- Minecraft Crash Report ----
// Don't be sad. I'll do better next time, I promise!
Time: 13-09-08 16:11
Description: Unexpected error
java.lang.ClassCastException: BetterTable.GuiBetterTable cannot be cast to net.minecraft.client.gui.GuiScreen
at cpw.mods.fml.client.FMLClientHandler.showGuiScreen(FMLClientHandler.java:352)
at cpw.mods.fml.common.FMLCommonHandler.showGuiScreen(FMLCommonHandler.java:334)
at cpw.mods.fml.common.network.NetworkRegistry.openLocalGui(NetworkRegistry.java:328)
at cpw.mods.fml.common.network.FMLNetworkHandler.openGui(FMLNetworkHandler.java:356)
at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2461)
at BetterTable.BlockBetterTable.onBlockActivated(BlockBetterTable.java:44)
at net.minecraft.client.multiplayer.PlayerControllerMP.onPlayerRightClick(PlayerControllerMP.java:371)
at net.minecraft.client.Minecraft.clickMouse(Minecraft.java:1378)
at net.minecraft.client.Minecraft.runTick(Minecraft.java:1854)
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:898)
at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:826)
at net.minecraft.client.main.Main.main(Main.java:93)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:57)
at net.minecraft.launchwrapper.Launch.main(Launch.java:18)
A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------
-- Head --
Stacktrace:
at cpw.mods.fml.client.FMLClientHandler.showGuiScreen(FMLClientHandler.java:352)
at cpw.mods.fml.common.FMLCommonHandler.showGuiScreen(FMLCommonHandler.java:334)
at cpw.mods.fml.common.network.NetworkRegistry.openLocalGui(NetworkRegistry.java:328)
at cpw.mods.fml.common.network.FMLNetworkHandler.openGui(FMLNetworkHandler.java:356)
at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2461)
at BetterTable.BlockBetterTable.onBlockActivated(BlockBetterTable.java:44)
at net.minecraft.client.multiplayer.PlayerControllerMP.onPlayerRightClick(PlayerControllerMP.java:371)
at net.minecraft.client.Minecraft.clickMouse(Minecraft.java:1378)
-- Affected level --
Details:
Level name: MpServer
All players: 1 total; [EntityClientPlayerMP['Player409'/271, l='MpServer', x=126,41, y=68,49, z=272,65]]
Chunk stats: MultiplayerChunkCache: 440
Level seed: 0
Level generator: ID 00 - default, ver 1. Features enabled: false
Level generator options:
Level spawn location: World: (112,64,256), Chunk: (at 0,4,0 in 7,16; contains blocks 112,0,256 to 127,255,271), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511)
Level time: 7416 game time, 7416 day time
Level dimension: 0
Level storage version: 0x00000 - Unknown?
Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false
Forced entities: 91 total; [EntityMinecartChest['entity.MinecartChest.name'/139, l='MpServer', x=126,50, y=12,50, z=226,50], EntityClientPlayerMP['Player409'/271, l='MpServer', x=126,41, y=68,49, z=272,65], EntityItem['item.tile.rail'/141, l='MpServer', x=120,72, y=13,13, z=272,34], EntityItem['item.tile.rail'/140, l='MpServer', x=120,81, y=13,13, z=270,91], EntityItem['item.tile.rail'/143, l='MpServer', x=123,81, y=13,13, z=272,22], EntityItem['item.tile.rail'/142, l='MpServer', x=117,19, y=13,13, z=272,09], EntityCow['Cow'/128, l='MpServer', x=114,49, y=64,00, z=339,50], EntityItem['item.item.seeds'/152, l='MpServer', x=120,69, y=63,13, z=304,66], EntityItem['item.item.seeds'/153, l='MpServer', x=120,13, y=63,13, z=305,88], EntityBat['Bat'/154, l='MpServer', x=115,61, y=63,42, z=320,50], EntitySheep['Sheep'/155, l='MpServer', x=124,16, y=64,00, z=331,19], EntityMinecartChest['entity.MinecartChest.name'/156, l='MpServer', x=126,50, y=28,50, z=339,50], EntitySheep['Sheep'/157, l='MpServer', x=120,78, y=67,00, z=340,72], EntitySheep['Sheep'/158, l='MpServer', x=117,59, y=67,00, z=342,84], EntityHorse['Horse'/144, l='MpServer', x=126,84, y=64,00, z=283,69], EntityCow['Cow'/145, l='MpServer', x=125,59, y=64,00, z=284,22], EntityHorse['Horse'/146, l='MpServer', x=120,14, y=64,00, z=282,42], EntityBat['Bat'/147, l='MpServer', x=112,25, y=21,10, z=303,25], EntityHorse['Horse'/148, l='MpServer', x=122,88, y=63,00, z=299,28], EntityPig['Pig'/149, l='MpServer', x=111,44, y=63,81, z=294,56], EntityItem['item.tile.mushroom'/150, l='MpServer', x=116,19, y=31,13, z=308,88], EntityBat['Bat'/151, l='MpServer', x=122,28, y=16,10, z=316,25], EntityHorse['Horse'/171, l='MpServer', x=138,97, y=63,00, z=305,88], EntityBat['Bat'/170, l='MpServer', x=136,25, y=13,10, z=315,75], EntityHorse['Horse'/169, l='MpServer', x=142,91, y=64,00, z=294,09], EntityHorse['Horse'/168, l='MpServer', x=137,03, y=66,00, z=292,66], EntityHorse['Horse'/172, l='MpServer', x=132,53, y=63,00, z=304,75], EntityItem['item.tile.rail'/163, l='MpServer', x=130,88, y=13,13, z=270,13], EntityItem['item.tile.rail'/162, l='MpServer', x=130,88, y=13,13, z=271,56], EntityMinecartChest['entity.MinecartChest.name'/161, l='MpServer', x=129,50, y=13,34, z=270,50], EntityBat['Bat'/160, l='MpServer', x=139,28, y=28,90, z=194,35], EntityHorse['Horse'/167, l='MpServer', x=138,88, y=66,00, z=293,28], EntityHorse['Horse'/166, l='MpServer', x=137,81, y=65,00, z=289,38], EntityHorse['Horse'/165, l='MpServer', x=133,78, y=63,00, z=302,66], EntityHorse['Horse'/164, l='MpServer', x=128,88, y=64,00, z=284,72], EntityCow['Cow'/186, l='MpServer', x=169,28, y=64,00, z=260,38], EntityBat['Bat'/187, l='MpServer', x=173,00, y=61,10, z=319,75], EntityCow['Cow'/185, l='MpServer', x=169,63, y=64,00, z=256,25], EntityCow['Cow'/53, l='MpServer', x=59,56, y=63,00, z=313,66], EntityBat['Bat'/188, l='MpServer', x=172,47, y=62,10, z=306,50], EntityCow['Cow'/52, l='MpServer', x=55,72, y=63,00, z=306,53], EntityCow['Cow'/59, l='MpServer', x=67,50, y=63,00, z=316,50], EntityCow['Cow'/58, l='MpServer', x=75,88, y=63,00, z=276,56], EntitySquid['Squid'/57, l='MpServer', x=77,05, y=61,99, z=226,02], EntitySquid['Squid'/56, l='MpServer', x=67,28, y=57,33, z=232,98], EntityItem['item.tile.rail'/63, l='MpServer', x=77,28, y=13,13, z=331,81], EntityCow['Cow'/62, l='MpServer', x=65,03, y=63,00, z=315,09], EntityCow['Cow'/61, l='MpServer', x=67,50, y=61,00, z=317,50], EntityCow['Cow'/60, l='MpServer', x=69,92, y=63,00, z=316,69], EntityCow['Cow'/205, l='MpServer', x=199,50, y=66,00, z=226,50], EntityCow['Cow'/204, l='MpServer', x=196,34, y=66,00, z=227,22], EntityCow['Cow'/207, l='MpServer', x=202,47, y=68,00, z=243,69], EntityCow['Cow'/206, l='MpServer', x=205,75, y=75,00, z=242,25], EntityItem['item.tile.rail'/64, l='MpServer', x=78,88, y=13,13, z=334,81], EntityCow['Cow'/200, l='MpServer', x=178,38, y=64,00, z=263,16], EntityCow['Cow'/203, l='MpServer', x=201,38, y=65,00, z=217,84], EntityChicken['Chicken'/76, l='MpServer', x=89,63, y=64,00, z=258,59], EntityChicken['Chicken'/77, l='MpServer', x=94,53, y=64,00, z=259,47], EntityCow['Cow'/199, l='MpServer', x=181,78, y=65,00, z=262,50], EntityCow['Cow'/78, l='MpServer', x=94,64, y=64,00, z=269,95], EntityCow['Cow'/79, l='MpServer', x=82,19, y=63,00, z=275,50], EntitySquid['Squid'/72, l='MpServer', x=77,70, y=57,23, z=224,00], EntityItem['item.tile.rail'/73, l='MpServer', x=88,88, y=18,13, z=229,81], EntityItem['item.tile.rail'/74, l='MpServer', x=87,81, y=13,13, z=240,13], EntityChicken['Chicken'/75, l='MpServer', x=90,59, y=64,00, z=258,56], EntityBat['Bat'/85, l='MpServer', x=93,75, y=24,10, z=323,13], EntityBat['Bat'/84, l='MpServer', x=93,41, y=25,10, z=326,50], EntityCow['Cow'/81, l='MpServer', x=86,95, y=64,00, z=272,81], EntityCow['Cow'/80, l='MpServer', x=80,81, y=63,00, z=277,50], EntityMinecartChest['entity.MinecartChest.name'/83, l='MpServer', x=88,50, y=24,50, z=329,50], EntityPig['Pig'/82, l='MpServer', x=94,56, y=63,00, z=302,84], EntityBat['Bat'/110, l='MpServer', x=100,77, y=18,13, z=247,62], EntityMinecartChest['entity.MinecartChest.name'/111, l='MpServer', x=99,50, y=19,50, z=258,50], EntityItem['item.tile.torch'/108, l='MpServer', x=100,09, y=19,13, z=253,25], EntityMinecartChest['entity.MinecartChest.name'/109, l='MpServer', x=99,50, y=19,50, z=253,50], EntityCow['Cow'/119, l='MpServer', x=106,81, y=63,00, z=297,81], EntityItem['item.tile.torch'/118, l='MpServer', x=100,19, y=23,13, z=302,19], EntityChicken['Chicken'/117, l='MpServer', x=103,44, y=64,00, z=272,38], EntityItem['item.tile.rail'/116, l='MpServer', x=99,56, y=18,13, z=273,19], EntityBat['Bat'/115, l='MpServer', x=100,96, y=19,00, z=255,48], EntityItem['item.tile.rail'/114, l='MpServer', x=101,88, y=18,13, z=262,13], EntityItem['item.tile.rail'/113, l='MpServer', x=100,59, y=18,13, z=262,13], EntityItem['item.tile.rail'/112, l='MpServer', x=101,88, y=18,13, z=264,81], EntityCow['Cow'/127, l='MpServer', x=110,28, y=64,00, z=342,06], EntityCow['Cow'/126, l='MpServer', x=111,53, y=65,00, z=342,53], EntitySheep['Sheep'/125, l='MpServer', x=110,44, y=63,00, z=339,22], EntityCow['Cow'/124, l='MpServer', x=107,72, y=63,00, z=340,25], EntityItem['item.tile.torch'/123, l='MpServer', x=109,69, y=24,13, z=334,22], EntityMinecartChest['entity.MinecartChest.name'/122, l='MpServer', x=109,50, y=28,50, z=319,50], EntityPig['Pig'/121, l='MpServer', x=103,19, y=64,00, z=290,94], EntityPig['Pig'/120, l='MpServer', x=101,50, y=64,00, z=289,84]]
Retry entities: 0 total; []
Server brand: fml,forge
Server type: Integrated singleplayer server
Stacktrace:
at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:440)
at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2298)
at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:851)
at net.minecraft.client.main.Main.main(Main.java:93)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:57)
at net.minecraft.launchwrapper.Launch.main(Launch.java:18)
-- System Details --
Details:
Minecraft Version: 1.6.2
Operating System: Windows 7 (amd64) version 6.1
Java Version: 1.7.0_25, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 924815992 bytes (881 MB) / 1056309248 bytes (1007 MB) up to 1056309248 bytes (1007 MB)
JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
AABB Pool Size: 14246 (797776 bytes; 0 MB) allocated, 2 (112 bytes; 0 MB) used
Suspicious classes: FML and Forge are installed
IntCache: cache: 0, tcache: 0, allocated: 1, tallocated: 63
FML: MCP v8.04 FML v6.2.55.842 Minecraft Forge 9.10.0.842 5 mods loaded, 5 mods active
mcp{8.04} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
FML{6.2.55.842} [Forge Mod Loader] (coremods) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
Forge{9.10.0.842} [Minecraft Forge] (coremods) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
BetterTable{0.2.0} [BetterTable] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
Oniromancie_Havre-Craft{V.01} [Haven-Craft] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
Launched Version: 1.6
LWJGL: 2.9.0
OpenGL: ATI Radeon HD 5450 GL version 4.2.12217 Compatibility Profile Context 12.104.0.0, ATI Technologies Inc.
Is Modded: Definitely; Client brand changed to 'fml,forge'
Type: Client (map_client.txt)
Resource Pack: Default
Current Language: English (US)
Profiler Position: N/A (disabled)
Vec3 Pool Size: 4208 (235648 bytes; 0 MB) allocated, 18 (1008 bytes; 0 MB) used
I looked at your container, and GUI classes, there are things there that do not belong, have been completely changed, and as I said before a few methods are missing. I could post my code again here in my reply, but why when it will be the exact same as before. I suggest you go back and read the tutorial again, read the code and then (without direct copy, either by copy paste or re typing) make your own classes following the code. Look at the workbench code in vanilla minecraft and try to see what the differences are and use that as well....vanilla files are a nice tool to use when making things like this....that is how I learned....
Find out how I generate....coolAlias...world structure generation and rotation tool...
Secundo: I've kept the name the same to be sure there would be no errors, I would have deleted these classes after
Tertio: This isn't a tutorial, its a providing code post, that's all. A real tutorial explains step by step how to do the class and all that. And the author doesn't rage each time someone needs help.
Quarto: I'm outta here I'm only losing my time. Ciaossu
Well, I understand what you are saying and while some tutorials do have more explanation, I do explain and point out the important parts that need attention and changed to make a grid one way or the other. And as these are easy to make, and quite easy to understand, they really dont require that much attention. Now, I want to be clear, no matter how you do it, making a copy of what I have is not going to learn you anything at all. If you want to do that then open all the related classes to the workbench and read through that. Copy them over to your own package and make your own mod class, I would hope you know how to make a mod class and understand the code involved there. Then use my GUI handler and run it. now you have a fully functioning 3x3 table and can then see why and where I made the changes for the 5x5. All I am saying is you do not understand enough of the code if you are having this much trouble. You have my code (works 100% in my mod), you have the resource here. I am sorry you cant get it to work, I meant no offense in any way, I just dont think you understand enough to do this if you are just making exact copies of my work and cant get it to run. If you think I am being rude by not offering any further assistance there is an entire dev section for help as well, and most likely you will get the same responses there...
Find out how I generate....coolAlias...world structure generation and rotation tool...
???
Legend of Zelda Mod (Minecraft 1.10.2!)[Updated September 10th 2016 to 4.0-pre2]
Extra Achievements (Minecraft 1.9.4!)[Updated July 8th 2016 to 2.3.3]
What?...and why is the text so small...I have a 32 inch monitor and browser set to 300% and still need my glasses to read that.
Find out how I generate....coolAlias...world structure generation and rotation tool...
sorry, copy/pasted.
In the 3x3 crafting table tutorial you have GuiBetterTable extending itself, when it should extend GuiContainer.
Also, when i open the custom table the gui flashes open for a second then closes.
Legend of Zelda Mod (Minecraft 1.10.2!)[Updated September 10th 2016 to 4.0-pre2]
Extra Achievements (Minecraft 1.9.4!)[Updated July 8th 2016 to 2.3.3]
Okay...I will fix that...I have been busy updating a mod of mine to some new code and is taking some time to do...lots to fix. As for the issue at hand...in the container...the can interact with method, look for block.workbench.blockID, or thats what it should be, you want to change that to your block.
Find out how I generate....coolAlias...world structure generation and rotation tool...