trying to create a furnace that has half the cook time,
this is done through tile entities as i understand tried to copy and edit the tileentity furance, wantthe block to use the new tile entity but use the normal furnace gui,
tileentity
package ashtonsmod.common;
import java.util.Random;
import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.tileentity.TileEntityFurnace;
import net.minecraft.util.Icon;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class BlockNFurnace extends BlockContainer
{
/**
* Is the random generator used by furnace to drop the inventory contents in random directions.
*/
private final Random nfurnaceRand = new Random();
/** True if this is an active furnace, false if idle */
private final boolean isActive;
/**
* This flag is used to prevent the furnace inventory to be dropped upon block removal, is used internally when the
* furnace block changes from idle to active and vice-versa.
*/
private static boolean keepFurnaceInventory = false;
@SideOnly(Side.CLIENT)
private Icon field_94458_cO;
@SideOnly(Side.CLIENT)
private Icon field_94459_cP;
protected BlockNFurnace(int par1, boolean par2)
{
super(par1, Material.rock);
this.isActive = par2;
}
/**
* Returns the ID of the items to drop on destruction.
*/
public int idDropped(int par1, Random par2Random, int par3)
{
return ashtonsmod.NFurnaceIdle.blockID;
}
/**
* Called whenever the block is added into the world. Args: world, x, y, z
*/
public void onBlockAdded(World par1World, int par2, int par3, int par4)
{
super.onBlockAdded(par1World, par2, par3, par4);
this.setDefaultDirection(par1World, par2, par3, par4);
}
/**
* set a blocks direction
*/
private void setDefaultDirection(World par1World, int par2, int par3, int par4)
{
if (!par1World.isRemote)
{
int l = par1World.getBlockId(par2, par3, par4 - 1);
int i1 = par1World.getBlockId(par2, par3, par4 + 1);
int j1 = par1World.getBlockId(par2 - 1, par3, par4);
int k1 = par1World.getBlockId(par2 + 1, par3, par4);
byte b0 = 3;
if (Block.opaqueCubeLookup[l] && !Block.opaqueCubeLookup[i1])
{
b0 = 3;
}
if (Block.opaqueCubeLookup[i1] && !Block.opaqueCubeLookup[l])
{
b0 = 2;
}
if (Block.opaqueCubeLookup[j1] && !Block.opaqueCubeLookup[k1])
{
b0 = 5;
}
if (Block.opaqueCubeLookup[k1] && !Block.opaqueCubeLookup[j1])
{
b0 = 4;
}
par1World.setBlockMetadataWithNotify(par2, par3, par4, b0, 2);
}
}
@SideOnly(Side.CLIENT)
/**
* From the specified side and block metadata retrieves the blocks texture. Args: side, metadata
*/
public Icon getBlockTextureFromSideAndMetadata(int par1, int par2)
{
return par1 == 1 ? this.field_94458_cO : (par1 == 0 ? this.field_94458_cO : (par1 != par2 ? this.blockIcon : this.field_94459_cP));
}
@SideOnly(Side.CLIENT)
/**
* When this method is called, your block should register all the icons it needs with the given IconRegister. This
* is the only chance you get to register icons.
*/
public void registerIcons(IconRegister par1IconRegister)
{
this.blockIcon = par1IconRegister.registerIcon("furnace_side");
this.field_94459_cP = par1IconRegister.registerIcon(this.isActive ? "furnace_front_lit" : "furnace_front");
this.field_94458_cO = par1IconRegister.registerIcon("furnace_top");
}
/**
* Called upon block activation (right click on the block.)
*/
public boolean onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9)
{
if (par1World.isRemote)
{
return true;
}
else
{
TileEntityFurnace tileentityfurnace = (TileEntityFurnace)par1World.getBlockTileEntity(par2, par3, par4);
if (tileentityfurnace != null)
{
par5EntityPlayer.displayGUIFurnace(tileentityfurnace);
}
return true;
}
}
/**
* Update which block ID the furnace is using depending on whether or not it is burning
*/
public static void updateFurnaceBlockState(boolean par0, World par1World, int par2, int par3, int par4)
{
int l = par1World.getBlockMetadata(par2, par3, par4);
TileEntity tileentity = par1World.getBlockTileEntity(par2, par3, par4);
keepFurnaceInventory = true;
if (par0)
{
par1World.setBlock(par2, par3, par4, ashtonsmod.NFurnaceBurning.blockID);
}
else
{
par1World.setBlock(par2, par3, par4, ashtonsmod.NFurnaceIdle.blockID);
}
keepFurnaceInventory = false;
par1World.setBlockMetadataWithNotify(par2, par3, par4, l, 2);
if (tileentity != null)
{
tileentity.validate();
par1World.setBlockTileEntity(par2, par3, par4, tileentity);
}
}
@SideOnly(Side.CLIENT)
/**
* A randomly called display update to be able to add particles or other items for display
*/
public void randomDisplayTick(World par1World, int par2, int par3, int par4, Random par5Random)
{
if (this.isActive)
{
int l = par1World.getBlockMetadata(par2, par3, par4);
float f = (float)par2 + 0.5F;
float f1 = (float)par3 + 0.0F + par5Random.nextFloat() * 6.0F / 16.0F;
float f2 = (float)par4 + 0.5F;
float f3 = 0.52F;
float f4 = par5Random.nextFloat() * 0.6F - 0.3F;
if (l == 4)
{
par1World.spawnParticle("smoke", (double)(f - f3), (double)f1, (double)(f2 + f4), 0.0D, 0.0D, 0.0D);
par1World.spawnParticle("flame", (double)(f - f3), (double)f1, (double)(f2 + f4), 0.0D, 0.0D, 0.0D);
}
else if (l == 5)
{
par1World.spawnParticle("smoke", (double)(f + f3), (double)f1, (double)(f2 + f4), 0.0D, 0.0D, 0.0D);
par1World.spawnParticle("flame", (double)(f + f3), (double)f1, (double)(f2 + f4), 0.0D, 0.0D, 0.0D);
}
else if (l == 2)
{
par1World.spawnParticle("smoke", (double)(f + f4), (double)f1, (double)(f2 - f3), 0.0D, 0.0D, 0.0D);
par1World.spawnParticle("flame", (double)(f + f4), (double)f1, (double)(f2 - f3), 0.0D, 0.0D, 0.0D);
}
else if (l == 3)
{
par1World.spawnParticle("smoke", (double)(f + f4), (double)f1, (double)(f2 + f3), 0.0D, 0.0D, 0.0D);
par1World.spawnParticle("flame", (double)(f + f4), (double)f1, (double)(f2 + f3), 0.0D, 0.0D, 0.0D);
}
}
}
/**
* Returns a new instance of a block's tile entity class. Called on placing the block.
*/
public TileEntity createNewTileEntity(World par1World)
{
return new TileEntityNFurnace();
}
/**
* Called when the block is placed in the world.
*/
public void onBlockPlacedBy(World par1World, int par2, int par3, int par4, EntityLiving par5EntityLiving, ItemStack par6ItemStack)
{
int l = MathHelper.floor_double((double)(par5EntityLiving.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
if (l == 0)
{
par1World.setBlockMetadataWithNotify(par2, par3, par4, 2, 2);
}
if (l == 1)
{
par1World.setBlockMetadataWithNotify(par2, par3, par4, 5, 2);
}
if (l == 2)
{
par1World.setBlockMetadataWithNotify(par2, par3, par4, 3, 2);
}
if (l == 3)
{
par1World.setBlockMetadataWithNotify(par2, par3, par4, 4, 2);
}
if (par6ItemStack.hasDisplayName())
{
((TileEntityNFurnace)par1World.getBlockTileEntity(par2, par3, par4)).func_94129_a(par6ItemStack.getDisplayName());
}
}
/**
* ejects contained items into the world, and notifies neighbours of an update, as appropriate
*/
public void breakBlock(World par1World, int par2, int par3, int par4, int par5, int par6)
{
if (!keepFurnaceInventory)
{
TileEntityNFurnace tileentitynfurnace = (TileEntityNFurnace)par1World.getBlockTileEntity(par2, par3, par4);
if (tileentitynfurnace != null)
{
for (int j1 = 0; j1 < tileentitynfurnace.getSizeInventory(); ++j1)
{
ItemStack itemstack = tileentitynfurnace.getStackInSlot(j1);
if (itemstack != null)
{
float f = this.nfurnaceRand.nextFloat() * 0.8F + 0.1F;
float f1 = this.nfurnaceRand.nextFloat() * 0.8F + 0.1F;
float f2 = this.nfurnaceRand.nextFloat() * 0.8F + 0.1F;
while (itemstack.stackSize > 0)
{
int k1 = this.nfurnaceRand.nextInt(21) + 10;
if (k1 > itemstack.stackSize)
{
k1 = itemstack.stackSize;
}
itemstack.stackSize -= k1;
EntityItem entityitem = new EntityItem(par1World, (double)((float)par2 + f), (double)((float)par3 + f1), (double)((float)par4 + f2), new ItemStack(itemstack.itemID, k1, itemstack.getItemDamage()));
if (itemstack.hasTagCompound())
{
entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy());
}
float f3 = 0.05F;
entityitem.motionX = (double)((float)this.nfurnaceRand.nextGaussian() * f3);
entityitem.motionY = (double)((float)this.nfurnaceRand.nextGaussian() * f3 + 0.2F);
entityitem.motionZ = (double)((float)this.nfurnaceRand.nextGaussian() * f3);
par1World.spawnEntityInWorld(entityitem);
}
}
}
par1World.func_96440_m(par2, par3, par4, par5);
}
}
super.breakBlock(par1World, par2, par3, par4, par5, par6);
}
/**
* If this returns true, then comparators facing away from this block will use the value from
* getComparatorInputOverride instead of the actual redstone signal strength.
*/
public boolean hasComparatorInputOverride()
{
return true;
}
/**
* If hasComparatorInputOverride returns true, the return value from this is used instead of the redstone signal
* strength when this block inputs to a comparator.
*/
public int getComparatorInputOverride(World par1World, int par2, int par3, int par4, int par5)
{
return Container.func_94526_b((IInventory)par1World.getBlockTileEntity(par2, par3, par4));
}
}
error;
2013-03-31 17:56:04 [iNFO] [ForgeModLoader] Forge Mod Loader version 5.1.8.608 for Minecraft 1.5.1 loading
2013-03-31 17:56:04 [iNFO] [ForgeModLoader] Java is Java HotSpot(TM) Client VM, version 1.7.0_07, running on Windows 7:x86:6.1, installed at C:\Program Files (x86)\Java\jre7
2013-03-31 17:56:04 [iNFO] [ForgeModLoader] Managed to load a deobfuscated Minecraft name- we are in a deobfuscated environment. Skipping runtime deobfuscation
2013-03-31 17:56:05 [iNFO] [sTDOUT] 229 recipes
2013-03-31 17:56:05 [iNFO] [sTDOUT] 27 achievements
2013-03-31 17:56:05 [iNFO] [Minecraft-Client] Setting user: Player909
2013-03-31 17:56:05 [iNFO] [sTDOUT] (Session ID is -)
2013-03-31 17:56:05 [iNFO] [sTDERR] Client asked for parameter: server
2013-03-31 17:56:05 [iNFO] [Minecraft-Client] LWJGL Version: 2.4.2
2013-03-31 17:56:05 [iNFO] [MinecraftForge] Attempting early MinecraftForge initialization
2013-03-31 17:56:05 [iNFO] [sTDOUT] MinecraftForge v7.7.0.608 Initialized
2013-03-31 17:56:05 [iNFO] [ForgeModLoader] MinecraftForge v7.7.0.608 Initialized
2013-03-31 17:56:05 [iNFO] [sTDOUT] Replaced 85 ore recipies
2013-03-31 17:56:05 [iNFO] [MinecraftForge] Completed early MinecraftForge initialization
2013-03-31 17:56:05 [iNFO] [ForgeModLoader] Reading custom logging properties from C:\Users\owner\Desktop\Modding1.51\jars\config\logging.properties
2013-03-31 17:56:05 [OFF] [ForgeModLoader] Logging level for ForgeModLoader logging is set to ALL
2013-03-31 17:56:05 [iNFO] [ForgeModLoader] Searching C:\Users\owner\Desktop\Modding1.51\jars\mods for mods
2013-03-31 17:56:06 [iNFO] [ForgeModLoader] Forge Mod Loader has identified 4 mods to load
2013-03-31 17:56:06 [iNFO] [mcp] Activating mod mcp
2013-03-31 17:56:06 [iNFO] [FML] Activating mod FML
2013-03-31 17:56:06 [iNFO] [Forge] Activating mod Forge
2013-03-31 17:56:06 [iNFO] [ashtonsmod] Activating mod ashtonsmod
2013-03-31 17:56:07 [iNFO] [ForgeModLoader] Configured a dormant chunk cache size of 0
2013-03-31 17:56:07 [iNFO] [sTDOUT]
2013-03-31 17:56:07 [iNFO] [sTDOUT] Starting up SoundSystem...
2013-03-31 17:56:07 [iNFO] [sTDOUT] Initializing LWJGL OpenAL
2013-03-31 17:56:07 [iNFO] [sTDOUT] (The LWJGL binding of OpenAL. For more information, see http://www.lwjgl.org)
2013-03-31 17:56:07 [iNFO] [sTDOUT] OpenAL initialized.
2013-03-31 17:56:07 [iNFO] [sTDOUT]
2013-03-31 17:56:08 [iNFO] [Minecraft-Client] Found animation info for: textures/blocks/lava_flow.txt
2013-03-31 17:56:08 [iNFO] [Minecraft-Client] Found animation info for: textures/blocks/water_flow.txt
2013-03-31 17:56:08 [iNFO] [Minecraft-Client] Found animation info for: textures/blocks/fire_0.txt
2013-03-31 17:56:08 [iNFO] [Minecraft-Client] Found animation info for: textures/blocks/fire_1.txt
2013-03-31 17:56:08 [iNFO] [Minecraft-Client] Found animation info for: textures/blocks/lava.txt
2013-03-31 17:56:08 [iNFO] [Minecraft-Client] Found animation info for: textures/blocks/portal.txt
2013-03-31 17:56:08 [iNFO] [Minecraft-Client] Found animation info for: textures/blocks/water.txt
2013-03-31 17:56:09 [iNFO] [Minecraft-Client] Found animation info for: textures/items/clock.txt
2013-03-31 17:56:09 [iNFO] [Minecraft-Client] Found animation info for: textures/items/compass.txt
2013-03-31 17:56:09 [iNFO] [ForgeModLoader] Forge Mod Loader has successfully loaded 4 mods
2013-03-31 17:56:09 [iNFO] [Minecraft-Client] Found animation info for: textures/blocks/lava_flow.txt
2013-03-31 17:56:10 [iNFO] [Minecraft-Client] Found animation info for: textures/blocks/water_flow.txt
2013-03-31 17:56:10 [iNFO] [Minecraft-Client] Found animation info for: textures/blocks/fire_0.txt
2013-03-31 17:56:10 [iNFO] [Minecraft-Client] Found animation info for: textures/blocks/fire_1.txt
2013-03-31 17:56:10 [iNFO] [Minecraft-Client] Found animation info for: textures/blocks/lava.txt
2013-03-31 17:56:10 [iNFO] [Minecraft-Client] Found animation info for: textures/blocks/portal.txt
2013-03-31 17:56:10 [iNFO] [Minecraft-Client] Found animation info for: textures/blocks/water.txt
2013-03-31 17:56:10 [iNFO] [Minecraft-Client] Found animation info for: textures/items/clock.txt
2013-03-31 17:56:10 [iNFO] [Minecraft-Client] Found animation info for: textures/items/compass.txt
2013-03-31 17:56:18 [iNFO] [Minecraft-Server] Starting integrated minecraft server version 1.5.1
2013-03-31 17:56:18 [iNFO] [Minecraft-Server] Generating keypair
2013-03-31 17:56:19 [iNFO] [ForgeModLoader] Loading dimension 0 (New World) (net.minecraft.server.integrated.IntegratedServer@113410a)
2013-03-31 17:56:19 [iNFO] [ForgeModLoader] Loading dimension 1 (New World) (net.minecraft.server.integrated.IntegratedServer@113410a)
2013-03-31 17:56:19 [iNFO] [ForgeModLoader] Loading dimension -1 (New World) (net.minecraft.server.integrated.IntegratedServer@113410a)
2013-03-31 17:56:19 [iNFO] [Minecraft-Server] Preparing start region for level 0
2013-03-31 17:56:20 [iNFO] [sTDOUT] loading single player
2013-03-31 17:56:20 [iNFO] [Minecraft-Server] Player909[/127.0.0.1:0] logged in with entity id 190 at (-178.3074221453115, 64.0, -114.83546603676498)
2013-03-31 17:56:20 [iNFO] [Minecraft-Server] Saving and pausing game...
2013-03-31 17:56:20 [iNFO] [Minecraft-Server] Saving chunks for level 'New World'/Overworld
2013-03-31 17:56:20 [iNFO] [Minecraft-Server] Saving chunks for level 'New World'/Nether
2013-03-31 17:56:20 [iNFO] [Minecraft-Server] Saving chunks for level 'New World'/The End
2013-03-31 17:56:26 [iNFO] [sTDERR] net.minecraft.util.ReportedException: Ticking memory connection
2013-03-31 17:56:26 [iNFO] [sTDERR] at net.minecraft.network.NetworkListenThread.networkTick(NetworkListenThread.java:60)
2013-03-31 17:56:26 [iNFO] [sTDERR] at net.minecraft.server.integrated.IntegratedServerListenThread.networkTick(IntegratedServerListenThread.java:109)
2013-03-31 17:56:26 [iNFO] [sTDERR] at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:674)
2013-03-31 17:56:26 [iNFO] [sTDERR] at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:570)
2013-03-31 17:56:26 [iNFO] [sTDERR] at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:127)
2013-03-31 17:56:26 [iNFO] [sTDERR] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:468)
2013-03-31 17:56:26 [iNFO] [sTDERR] at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16)
2013-03-31 17:56:26 [iNFO] [sTDERR] Caused by: java.lang.ClassCastException: ashtonsmod.common.TileEntityNFurnace cannot be cast to net.minecraft.tileentity.TileEntityFurnace
2013-03-31 17:56:26 [iNFO] [sTDERR] at ashtonsmod.common.BlockNFurnace.onBlockActivated(BlockNFurnace.java:138)
2013-03-31 17:56:26 [iNFO] [sTDERR] at net.minecraft.item.ItemInWorldManager.activateBlockOrUseItem(ItemInWorldManager.java:412)
2013-03-31 17:56:26 [iNFO] [sTDERR] at net.minecraft.network.NetServerHandler.handlePlace(NetServerHandler.java:553)
2013-03-31 17:56:26 [iNFO] [sTDERR] at net.minecraft.network.packet.Packet15Place.processPacket(Packet15Place.java:79)
2013-03-31 17:56:26 [iNFO] [sTDERR] at net.minecraft.network.MemoryConnection.processReadPackets(MemoryConnection.java:89)
2013-03-31 17:56:26 [iNFO] [sTDERR] at net.minecraft.network.NetServerHandler.networkTick(NetServerHandler.java:134)
2013-03-31 17:56:26 [iNFO] [sTDERR] at net.minecraft.network.NetworkListenThread.networkTick(NetworkListenThread.java:53)
2013-03-31 17:56:26 [iNFO] [sTDERR] ... 6 more
2013-03-31 17:56:26 [sEVERE] [Minecraft-Server] Encountered an unexpected exception ReportedException
net.minecraft.util.ReportedException: Ticking memory connection
at net.minecraft.network.NetworkListenThread.networkTick(NetworkListenThread.java:60)
at net.minecraft.server.integrated.IntegratedServerListenThread.networkTick(IntegratedServerListenThread.java:109)
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:674)
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:570)
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:127)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:468)
at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16)
Caused by: java.lang.ClassCastException: ashtonsmod.common.TileEntityNFurnace cannot be cast to net.minecraft.tileentity.TileEntityFurnace
at ashtonsmod.common.BlockNFurnace.onBlockActivated(BlockNFurnace.java:138)
at net.minecraft.item.ItemInWorldManager.activateBlockOrUseItem(ItemInWorldManager.java:412)
at net.minecraft.network.NetServerHandler.handlePlace(NetServerHandler.java:553)
at net.minecraft.network.packet.Packet15Place.processPacket(Packet15Place.java:79)
at net.minecraft.network.MemoryConnection.processReadPackets(MemoryConnection.java:89)
at net.minecraft.network.NetServerHandler.networkTick(NetServerHandler.java:134)
at net.minecraft.network.NetworkListenThread.networkTick(NetworkListenThread.java:53)
... 6 more
2013-03-31 17:56:26 [sEVERE] [Minecraft-Server] This crash report has been saved to: C:\Users\owner\Desktop\Modding1.51\jars\.\crash-reports\crash-2013-03-31_17.56.26-server.txt
2013-03-31 17:56:26 [iNFO] [Minecraft-Server] Stopping server
2013-03-31 17:56:26 [iNFO] [Minecraft-Server] Saving players
2013-03-31 17:56:26 [iNFO] [Minecraft-Server] Saving worlds
2013-03-31 17:56:26 [iNFO] [Minecraft-Server] Saving chunks for level 'New World'/Overworld
2013-03-31 17:56:26 [sEVERE] [ForgeModLoader] A TileEntity type ashtonsmod.common.TileEntityNFurnace has throw an exception trying to write state. It will not persist. Report this to the mod author
java.lang.RuntimeException: class ashtonsmod.common.TileEntityNFurnace is missing a mapping! This is a bug!
at net.minecraft.tileentity.TileEntity.writeToNBT(TileEntity.java:105)
at ashtonsmod.common.TileEntityNFurnace.writeToNBT(TileEntityNFurnace.java:185)
at net.minecraft.world.chunk.storage.AnvilChunkLoader.writeChunkToNBT(AnvilChunkLoader.java:310)
at net.minecraft.world.chunk.storage.AnvilChunkLoader.saveChunk(AnvilChunkLoader.java:127)
at net.minecraft.world.gen.ChunkProviderServer.safeSaveChunk(ChunkProviderServer.java:232)
at net.minecraft.world.gen.ChunkProviderServer.saveChunks(ChunkProviderServer.java:284)
at net.minecraft.world.WorldServer.saveAllChunks(WorldServer.java:903)
at net.minecraft.server.MinecraftServer.saveAllWorlds(MinecraftServer.java:344)
at net.minecraft.server.MinecraftServer.stopServer(MinecraftServer.java:377)
at net.minecraft.server.integrated.IntegratedServer.stopServer(IntegratedServer.java:240)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:521)
at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16)
2013-03-31 17:56:26 [iNFO] [Minecraft-Server] Saving chunks for level 'New World'/Nether
2013-03-31 17:56:26 [iNFO] [Minecraft-Server] Saving chunks for level 'New World'/The End
2013-03-31 17:56:26 [iNFO] [ForgeModLoader] Unloading dimension 0
2013-03-31 17:56:26 [iNFO] [ForgeModLoader] Unloading dimension -1
2013-03-31 17:56:26 [iNFO] [ForgeModLoader] Unloading dimension 1
2013-03-31 17:56:26 [sEVERE] [ForgeModLoader] Fatal errors were detected during the transition from SERVER_STARTED to SERVER_STOPPED. Loading cannot continue
2013-03-31 17:56:26 [sEVERE] [ForgeModLoader]
mcp [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available->Available
FML [Forge Mod Loader] (coremods) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available->Available
Forge [Minecraft Forge] (coremods) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available->Available
ashtonsmod [Ashton's Mod] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available->Available
2013-03-31 17:56:26 [sEVERE] [ForgeModLoader] The ForgeModLoader state engine has become corrupted. Probably, a state was missed by and invalid modification to a base classForgeModLoader depends on. This is a critical error and not recoverable. Investigate any modifications to base classes outside ofForgeModLoader, especially Optifine, to see if there are fixes available.
2013-03-31 17:56:26 [iNFO] [sTDERR] Exception in thread "Server thread" java.lang.RuntimeException: The ForgeModLoader state engine is invalid
2013-03-31 17:56:26 [iNFO] [sTDERR] at cpw.mods.fml.common.LoadController.transition(LoadController.java:134)
2013-03-31 17:56:26 [iNFO] [sTDERR] at cpw.mods.fml.common.Loader.serverStopped(Loader.java:799)
2013-03-31 17:56:26 [iNFO] [sTDERR] at cpw.mods.fml.common.FMLCommonHandler.handleServerStopped(FMLCommonHandler.java:470)
2013-03-31 17:56:26 [iNFO] [sTDERR] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:530)
2013-03-31 17:56:26 [iNFO] [sTDERR] at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16)
2013-03-31 17:56:36 [iNFO] [Minecraft-Client] Stopping!
2013-03-31 17:56:36 [iNFO] [sTDOUT]
2013-03-31 17:56:36 [iNFO] [sTDOUT] SoundSystem shutting down...
2013-03-31 17:56:36 [iNFO] [sTDOUT] Author: Paul Lamb, www.paulscode.com
2013-03-31 17:56:36 [iNFO] [sTDOUT]
2013-03-31 18:00:07 [iNFO] [sTDERR] Someone is closing me!
What have i missed?