Mon jeu crash
[20:47:08] [Client thread/FATAL]: Reported exception thrown!
net.minecraft.util.ReportedException: Ticking block entity
at net.minecraft.world.World.updateEntities(World.java:2175) ~[World.class:?]
at net.minecraft.client.Minecraft.runTick(Minecraft.java:2097) ~[Minecraft.class:?]
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1039) ~[Minecraft.class:?]
at net.minecraft.client.Minecraft.run(Minecraft.java:962) [Minecraft.class:?]
at net.minecraft.client.main.Main.main(Main.java:164) [Main.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_66]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_66]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_66]
at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_66]
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) [start/:?]
at GradleStart.main(Unknown Source) [start/:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_66]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_66]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_66]
at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_66]
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) [idea_rt.jar:?]
Caused by: java.lang.ArrayIndexOutOfBoundsException: 15
at com.google.SpyMan.Mechanicalcraft.common.blockOreExtractor.TileEntityOreExtractor.smeltItem(TileEntityOreExtractor.java:258) ~[TileEntityOreExtractor.class:?]
at com.google.SpyMan.Mechanicalcraft.common.blockOreExtractor.TileEntityOreExtractor.updateEntity(TileEntityOreExtractor.java:297) ~[TileEntityOreExtractor.class:?]
at net.minecraft.world.World.updateEntities(World.java:2160) ~[World.class:?]
… 17 more
[20:47:08] [Client thread/INFO] [STDOUT]: [net.minecraft.client.Minecraft:displayCrashReport:388]: –-- Minecraft Crash Report ----
// Why is it breaking :(
Time: 14/03/16 20:47
Description: Ticking block entity
java.lang.ArrayIndexOutOfBoundsException: 15
at com.google.SpyMan.Mechanicalcraft.common.blockOreExtractor.TileEntityOreExtractor.smeltItem(TileEntityOreExtractor.java:258)
at com.google.SpyMan.Mechanicalcraft.common.blockOreExtractor.TileEntityOreExtractor.updateEntity(TileEntityOreExtractor.java:297)
at net.minecraft.world.World.updateEntities(World.java:2160)
at net.minecraft.client.Minecraft.runTick(Minecraft.java:2097)
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1039)
at net.minecraft.client.Minecraft.run(Minecraft.java:962)
at net.minecraft.client.main.Main.main(Main.java:164)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
at GradleStart.main(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
[font=Courier Newpublic class ]TileEntityOreExtractor extends TileEntity implements %(#345f99)[IInventory
]{
private byte direction%(#aaa9a7)[;
] %(#8242ff)[/** Slots list */
] private ItemStack[] contents = new ItemStack[15]%(#aaa9a7)[;
] %(#8242ff)[/** Actual working time */
] protected int workingTime = 0%(#aaa9a7)[;
] %(#8242ff)[/** Working time for one recipes */
] protected int workingTimeNeeded = 200%(#aaa9a7)[;
] %(#8242ff)[/** Working time default value for one recipes */
] protected int workingTimeNeededDefault = 200%(#aaa9a7)[;
] %(#8242ff)[/** Actual burn time */
] protected int burnTime = 0%(#aaa9a7)[;
] %(#8242ff)[/** Burn time of fuel */
] protected int burnTimeTotal = 0%(#aaa9a7)[;
] %(#8242ff)[/** Id of the result slot */
] private int slotResultID = 3%(#aaa9a7)[;
] %(#8242ff)[/** Id of the upgrade slot */
] private int slotUpgradeID = 2%(#aaa9a7)[;
] %(#8242ff)[/** Id of the fuel slot */
] private int slotFuelID = 1%(#aaa9a7)[;
] %(#8242ff)[/** Id of the input slot */
] private int slotInputID = 0%(#aaa9a7)[;
]
%(#278c3c)[***@Override
***] public void readFromNBT(NBTTagCompound *compound*)
{
super.readFromNBT(*compound*)%(#aaa9a7)[;
] this.direction = *compound*.getByte("Direction")%(#aaa9a7)[;
] NBTTagList nbttaglist = *compound*.getTagList("Items", 10)%(#aaa9a7)[;
] this.contents = new ItemStack[this.getSizeInventory()]%(#aaa9a7)[;
]
for(int %(#666965)_= 0; %(#666965)_< nbttaglist.tagCount(); ++%(#666965)*)
{
NBTTagCompound nbtTagCompound = nbttaglist.getCompoundTagAt(%(#666965)*)%(#aaa9a7)[;
] int j = nbtTagCompound.getByte("Slot") & 255%(#aaa9a7)[;
]
if(j >= 0 && j < this.contents.length)
{
this.contents[j] = ItemStack.loadItemStackFromNBT(nbtTagCompound)%(#aaa9a7)[;
] }
}
this.workingTime = *compound*.getShort("workingTime")%(#aaa9a7)[;
] this.burnTime = *compound*.getShort("burnTime")%(#aaa9a7)[;
] this.burnTimeTotal = *compound*.getShort("burnTimeTotal")%(#aaa9a7)[;
] }
%(#278c3c)[***@Override
***] public void writeToNBT(NBTTagCompound *compound*)
{
super.writeToNBT(*compound*)%(#aaa9a7)[;
] NBTTagList nbttaglist = new NBTTagList()%(#aaa9a7)[;
] *compound*.setByte("Direction", this.direction)%(#aaa9a7)[;
] for(int %(#666965)_= 0; %(#666965)_< this.contents.length; ++%(#666965)*)
{
if(this.contents[%(#666965)*] != null)
{
NBTTagCompound nbtTagCompound = new NBTTagCompound()%(#aaa9a7)[;
] nbtTagCompound.setByte("Slot", (byte)%(#666965)*)%(#aaa9a7)[;
] this.contents[%(#666965)*].writeToNBT(nbtTagCompound)%(#aaa9a7)[;
] nbttaglist.appendTag(nbtTagCompound)%(#aaa9a7)[;
]
}
}
*compound*.setTag("Items", nbttaglist)%(#aaa9a7)[;
] *compound*.setShort("workingTime", (short)this.workingTime)%(#aaa9a7)[;
] *compound*.setShort("burnTime", (short)this.burnTime)%(#aaa9a7)[;
] *compound*.setShort("burnTimeTotal", (short)this.burnTimeTotal)%(#aaa9a7)[;
] }
public byte getDirection()
{
return direction%(#aaa9a7)[;
] }
public void setDirection(byte *direction*)
{
this.direction = *direction*%(#aaa9a7)[;
] this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord)%(#aaa9a7)[;
] }
public Packet getDescriptionPacket()
{
NBTTagCompound nbtTagCompound = new NBTTagCompound()%(#aaa9a7)[;
] this.writeToNBT(nbtTagCompound)%(#aaa9a7)[;
] return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbtTagCompound)%(#aaa9a7)[;
] }
public void onDataPacket(NetworkManager *net*, S35PacketUpdateTileEntity *pkt*)
{
this.readFromNBT(*pkt*.func_148857_g())%(#aaa9a7)[;
] }
public int getSizeInventory()
{
return this.contents.length%(#aaa9a7)[;
] }
public void openInventory() {}
public void closeInventory() {}
public String getInventoryName()
{
return MechanicalCraft.oreExtractor.getLocalizedName()%(#aaa9a7)[;
] }
public boolean hasCustomInventoryName()
{
return false%(#aaa9a7)[;
] }
public int getInventoryStackLimit()
{
return 64%(#aaa9a7)[;
] }
public boolean isUseableByPlayer(EntityPlayer *player*)
{
return this.worldObj.getTileEntity(this.xCoord, this.yCoord, this.zCoord) != this ? false : *player*.getDistanceSq((double)this.xCoord + 0.5D, (double)this.yCoord + 0.5D, (double)this.zCoord + 0.5D) <= 64.0D%(#aaa9a7)[;
] }
public ItemStack getStackInSlot(int *slotIndex*)
{
return this.contents[*slotIndex*]%(#aaa9a7)[;
] }
public ItemStack decrStackSize(int *slotIndex*, int *amount*)
{
if(this.contents[*slotIndex*] != null)
{
ItemStack itemstack%(#aaa9a7)[;
]
if(this.contents[*slotIndex*].stackSize <= *amount*)
{
itemstack = this.contents[*slotIndex*]%(#aaa9a7)[;
] this.contents[*slotIndex*] = null%(#aaa9a7)[;
] this.markDirty()%(#aaa9a7)[;
] return itemstack%(#aaa9a7)[;
] }
%(#0187df)[else
] {
itemstack = this.contents[*slotIndex*].splitStack(*amount*)%(#aaa9a7)[;
]
if(this.contents[*slotIndex*].stackSize == 0)
{
this.contents[*slotIndex*] = null%(#aaa9a7)[;
] }
this.markDirty()%(#aaa9a7)[;
] return itemstack%(#aaa9a7)[;
] }
}
%(#0187df)[else
] {
return null%(#aaa9a7)[;
] }
}
public ItemStack getStackInSlotOnClosing(int *slotIndex*)
{
if(this.contents[*slotIndex*] != null)
{
ItemStack itemstack = this.contents[*slotIndex*]%(#aaa9a7)[;
] this.contents[*slotIndex*] = null%(#aaa9a7)[;
] return itemstack%(#aaa9a7)[;
] }
%(#0187df)[else
] {
return null%(#aaa9a7)[;
] }
}
public void setInventorySlotContents(int *slotIndex*, ItemStack *stack*)
{
this.contents[*slotIndex*] = *stack*%(#aaa9a7)[;
]
if(*stack *!= null && *stack*.stackSize > this.getInventoryStackLimit())
{
*stack*.stackSize = this.getInventoryStackLimit()%(#aaa9a7)[;
] }
this.markDirty()%(#aaa9a7)[;
] }
public boolean isItemValidForSlot(int *slot*, ItemStack *stack*)
{
return *slot *== 2 ? false : true%(#aaa9a7)[;
] }
public boolean isBurning()
{
return this.workingTime > 0%(#aaa9a7)[;
] }
protected boolean canSmelt()
{
if(this.contents[this.slotInputID] == null)
{
return false%(#aaa9a7)[;
] }
%(#0187df)[else
] {
ItemStack itemstack = OreExtractorRecipes.smelting().getSmeltingResult(new ItemStack[] { this.contents[this.slotInputID] })%(#aaa9a7)[;
] int j = 0%(#aaa9a7)[;
] for (int %(#666965)_= 3; %(#666965)_< 15; %(#666965)*++)
{
j = %(#666965)*%(#aaa9a7)[;
]
if (itemstack == null)
{
return false%(#aaa9a7)[;
] }
if (this.contents[%(#666965)*] == null)
{
return true%(#aaa9a7)[;
] }
if (!this.contents[%(#666965)*].isItemEqual(itemstack))
{
return false%(#aaa9a7)[;
] }
}
int result = contents[j].stackSize + itemstack.stackSize%(#aaa9a7)[;
] return result <= getInventoryStackLimit() && result <= this.contents[j].getMaxStackSize()%(#aaa9a7)[;
] }
}
public void smeltItem()
{
ItemStack itemstack = OreExtractorRecipes.smelting().getSmeltingResult(new ItemStack[] { this.contents[this.slotInputID] })%(#aaa9a7)[;
]
for (int %(#666965)_= 3; %(#666965)_<= 15; %(#666965)*++)
{
if (this.canSmelt())
{
if (this.contents[%(#666965)*] == null)
{
this.contents[%(#666965)*] = itemstack.copy()%(#aaa9a7)[;
] } else if (this.contents[%(#666965)*].getItem() == itemstack.getItem())
{
this.contents[%(#666965)*].stackSize += itemstack.stackSize%(#aaa9a7)[;
] }
this.decrStackSize(0, 1)%(#aaa9a7)[;
] }
}
}
public void updateEntity()
{
if(this.burnTime > 0)
{
burnTime%(#aaa9a7)[–;
] }
if(this.canSmelt())
{
if(this.burnTime <= 0)
{
int %(#666965)________