- 6
- 0
Простите за мою тупость и говнокод, но я не понимаю где здесь ошибка. Краш лог ругается на строку 81
Java:
public class TileEntityClonator extends TileEntity implements ISidedInventory, IEnergyProvider, IEnergyStorage, IEnergyReceiver {
private int capacity = 150000;
private EnergyStorage stored = new EnergyStorage(capacity);
private final ItemStack[] inventory = new ItemStack[13];
private static final int[]
topSlots = new int[] {4},
sideSlots = new int[] {9};
private ClonatorRecipes.Recipe recipe = null;
private String custom_name;
public int time = 0, time_max = 0, energy = 0, max_energy = 0;
public TileEntityClonator() {
}
@Override
public void updateEntity() {
if (worldObj.isRemote) return;
energy = stored.getEnergyStored();
max_energy = stored.getMaxEnergyStored();
ItemStack DNK = getStackInSlot(3);
ItemStack[] output = new ItemStack[9];
for(int i = 0; i < 9; i++)
{
output[i] = getStackInSlot(4 + i);
}
if(stored.getEnergyStored() > 0)
{
if (time == 0) {
if (recipe != null) {
for(int i = 0; i < 8; i++)
{
if (output[i] == null) {
setInventorySlotContents(4 + i, recipe.Output.copy());
recipe = null;
time_max = 0;
break;
} else if (output[i].isItemEqual(recipe.Output) && ItemStack.areItemStackTagsEqual(output[i], recipe.Output) && recipe.Output.stackSize + output[i].stackSize <= 64) {
output[i].stackSize += recipe.Output.stackSize;
setInventorySlotContents(4 + i, output[i]);
recipe = null;
time_max = 0;
break;
}
}
for(int i = 0; i < 8; i++)
{
if (output[i] == null) {
setInventorySlotContents(4 + i, recipe.Output2.copy());
recipe = null;
time_max = 0;
break;
}
else if (output[i].isItemEqual(recipe.Output2) && ItemStack.areItemStackTagsEqual(output[i], recipe.Output2) && recipe.Output2.stackSize + output[i].stackSize <= 64) {
output[i].stackSize += recipe.Output2.stackSize;
setInventorySlotContents(4 + i, output[i]);
recipe = null;
time_max = 0;
break;
}
}
} else {
recipe = ClonatorRecipes.getRecipe(DNK);
if (recipe != null) {
time_max = time = recipe.time;
if (DNK != null && DNK.getItem().hasContainerItem(DNK)) {
setInventorySlotContents(3, DNK.getItem().getContainerItem(DNK));
} else {
DNK.stackSize -= recipe.DNK.stackSize;
if (DNK.stackSize <= 0)
setInventorySlotContents(3, null);
else
setInventorySlotContents(3, DNK);
}
}
}
} else {
stored.modifyEnergyStored(-recipe.EnergyInput);
--time;
}
}
}
@Override
public void writeToNBT(NBTTagCompound nbt) {
super.writeToNBT(nbt);
NBTTagList list = new NBTTagList();
for (int i = 0; i < getSizeInventory(); ++i) {
if (getStackInSlot(i) == null) continue;
NBTTagCompound slot_nbt = new NBTTagCompound();
getStackInSlot(i).writeToNBT(slot_nbt);
slot_nbt.setByte("Slot", (byte)i);
list.appendTag(slot_nbt);
}
nbt.setTag("Inventory", list);
if (hasCustomInventoryName()) nbt.setString("CustomName", getInventoryName());
nbt.setInteger("Energy", stored.getEnergyStored());
}
@Override
public void readFromNBT(NBTTagCompound nbt) {
super.readFromNBT(nbt);
if (nbt.hasKey("Inventory", NBT.TAG_LIST)) {
NBTTagList list = nbt.getTagList("Inventory", NBT.TAG_COMPOUND);
for (int i = 0; i < list.tagCount(); ++i) {
NBTTagCompound slot_nbt = list.getCompoundTagAt(i);
setInventorySlotContents((slot_nbt.getByte("Slot") & 255), ItemStack.loadItemStackFromNBT(slot_nbt));
}
}
if (nbt.hasKey("CustomName", NBT.TAG_STRING)) setInventoryName(nbt.getString("CustomName"));
stored.setEnergyStored(nbt.getInteger("Energy"));
}
@Override
public int getSizeInventory() {
return inventory.length;
}
@Override
public ItemStack getStackInSlot(int slotID) {
return inventory[slotID];
}
@Override
public ItemStack decrStackSize(int slotID, int stackSize) {
if (inventory[slotID] != null) {
ItemStack itemstack;
if (inventory[slotID].stackSize <= stackSize) {
itemstack = inventory[slotID];
inventory[slotID] = null;
return itemstack;
} else {
itemstack = inventory[slotID].splitStack(stackSize);
if (inventory[slotID].stackSize == 0)
inventory[slotID] = null;
return itemstack;
}
} else return null;
}
@Override
public ItemStack getStackInSlotOnClosing(int slotID) {
if (inventory[slotID] != null) {
ItemStack itemstack = inventory[slotID];
inventory[slotID] = null;
return itemstack;
} else return null;
}
@Override
public void setInventorySlotContents(int slotID, ItemStack itemStack) {
inventory[slotID] = itemStack;
}
public void setInventoryName(String name) {
custom_name = name;
}
@Override
public String getInventoryName() {
return hasCustomInventoryName() ? custom_name : "Clonator";
}
@Override
public boolean hasCustomInventoryName() {
return custom_name != null && custom_name.length() > 0;
}
@Override
public int getInventoryStackLimit() {
return 64;
}
@Override
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;
}
@Override
public void openInventory() {}
@Override
public void closeInventory() {}
@Override
public boolean isItemValidForSlot(int slotID, ItemStack itemStack) {
if (ClonatorRecipes.getRecipe(itemStack) == null)
return false;
return true;
}
@Override
public int[] getAccessibleSlotsFromSide(int side) {
return side == 0 ? topSlots : sideSlots;
}
@Override
public boolean canInsertItem(int slotID, ItemStack itemStack, int side) {
return side != 0 && isItemValidForSlot(slotID, itemStack);
}
@Override
public boolean canExtractItem(int slotID, ItemStack itemStack, int side) {
return side == 0;
}
@Override
public boolean canConnectEnergy(ForgeDirection from) {
// TODO Auto-generated method stub
return stored.getMaxEnergyStored() > 0;
}
@Override
public int receiveEnergy(int maxReceive, boolean simulate) {
// TODO Auto-generated method stub
return stored.getMaxReceive();
}
@Override
public int extractEnergy(int maxExtract, boolean simulate) {
// TODO Auto-generated method stub
return stored.extractEnergy(maxExtract, simulate);
}
@Override
public int getEnergyStored() {
// TODO Auto-generated method stub
return stored.getEnergyStored();
}
@Override
public int getMaxEnergyStored() {
// TODO Auto-generated method stub
return stored.getMaxEnergyStored();
}
@Override
public int extractEnergy(ForgeDirection from, int maxExtract, boolean simulate) {
// TODO Auto-generated method stub
return stored.extractEnergy(maxExtract, simulate);
}
@Override
public int getEnergyStored(ForgeDirection from) {
// TODO Auto-generated method stub
return stored.getEnergyStored();
}
@Override
public int getMaxEnergyStored(ForgeDirection from) {
// TODO Auto-generated method stub
return stored.getMaxEnergyStored();
}
@Override
public int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate) {
// TODO Auto-generated method stub
return stored.receiveEnergy(maxReceive, simulate);
}
- Краш-лог
-
---- Minecraft Crash Report ----
// Who set us up the TNT?
Time: 30.07.20 15:30
Description: Ticking block entity
java.lang.NullPointerException: Ticking block entity
at ru.UralInc.BestUpdate.Clonator.TileEntityClonator.updateEntity(TileEntityClonator.java:81)
at net.minecraft.world.World.updateEntities(World.java:2160)
at net.minecraft.world.WorldServer.updateEntities(WorldServer.java:515)
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:703)
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614)
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485)
at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752)
A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------
-- Head --
Stacktrace:
at ru.UralInc.BestUpdate.Clonator.TileEntityClonator.updateEntity(TileEntityClonator.java:81)
-- Block entity being ticked --
Details:
Name: TileEntityClonator // ru.UralInc.BestUpdate.Clonator.TileEntityClonator
Block type: ID #210 (tile.Clonator // ru.UralInc.BestUpdate.Clonator.Clonator)
Block data value: 0 / 0x0 / 0b0000
Block location: World: (344,80,414), Chunk: (at 8,5,14 in 21,25; contains blocks 336,0,400 to 351,255,415), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511)
Actual block type: ID #210 (tile.Clonator // ru.UralInc.BestUpdate.Clonator.Clonator)
Actual block data value: 0 / 0x0 / 0b0000
Stacktrace:
at net.minecraft.world.World.updateEntities(World.java:2160)
at net.minecraft.world.WorldServer.updateEntities(WorldServer.java:515)
-- Affected level --
Details:
Level name: Новый мир
All players: 1 total; [EntityPlayerMP['Player558'/206, l='Новый мир', x=343,21, y=80,00, z=413,18]]
Chunk stats: ServerChunkCache: 732 Drop: 0
Level seed: -7237060092149170328
Level generator: ID 00 - default, ver 1. Features enabled: true
Level generator options:
Level spawn location: World: (204,64,256), Chunk: (at 12,4,0 in 12,16; contains blocks 192,0,256 to 207,255,271), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511)
Level time: 282016 game time, 282016 day time
Level dimension: 0
Level storage version: 0x04ABD - Anvil
Level weather: Rain time: 125451 (now: false), thunder time: 75783 (now: false)
Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: true
Stacktrace:
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:703)
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614)
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485)
at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752)
-- System Details --
Details:
Minecraft Version: 1.7.10
Operating System: Windows 10 (amd64) version 10.0
Java Version: 1.8.0_261, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 592166296 bytes (564 MB) / 1026293760 bytes (978 MB) up to 1026293760 bytes (978 MB)
JVM Flags: 3 total; -Xincgc -Xmx1012M -Xms1012M
AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
IntCache: cache: 0, tcache: 0, allocated: 12, tallocated: 94
FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1558 10 mods loaded, 10 mods active
States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
UCHIJAAAA mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
UCHIJAAAA FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1558-1.7.10.jar)
UCHIJAAAA Forge{10.13.4.1558} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1558-1.7.10.jar)
UCHIJAAAA CodeChickenCore{1.0.7.47} [CodeChicken Core] (minecraft.jar)
UCHIJAAAA <CoFH ASM>{000} [CoFH ASM] (minecraft.jar)
UCHIJAAAA CoFHCore{1.7.10R3.1.4} [CoFH Core] (CoFHCore-[1.7.10]3.1.4-329.jar)
UCHIJAAAA bestupdate{0.0.0.4} [Best Update] (bin)
UCHIJAAAA ThermalFoundation{1.7.10R1.2.6} [Thermal Foundation] (ThermalFoundation-[1.7.10]1.2.6-118.jar)
UCHIJAAAA ThermalDynamics{1.7.10R1.2.1} [Thermal Dynamics] (ThermalDynamics-[1.7.10]1.2.1-172.jar)
UCHIJAAAA ThermalExpansion{1.7.10R4.1.5} [Thermal Expansion] (ThermalExpansion-[1.7.10]4.1.5-248.jar)
GL info: ~~ERROR~~ RuntimeException: No OpenGL context found in the current thread.
CoFHCore: -[1.7.10]3.1.4-329
ThermalFoundation: -[1.7.10]1.2.6-118
ThermalDynamics: -[1.7.10]1.2.1-172
ThermalExpansion: -[1.7.10]4.1.5-248
Profiler Position: N/A (disabled)
Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
Player Count: 1 / 8; [EntityPlayerMP['Player558'/206, l='Новый мир', x=343,21, y=80,00, z=413,18]]
Type: Integrated Server (map_client.txt)
Is Modded: Definitely; Client brand changed to 'fml,forge'
Краш-лог:
---- Minecraft Crash Report ----
// Who set us up the TNT?
Time: 30.07.20 15:30
Description: Ticking block entity
java.lang.NullPointerException: Ticking block entity
at ru.UralInc.BestUpdate.Clonator.TileEntityClonator.updateEntity(TileEntityClonator.java:81)
at net.minecraft.world.World.updateEntities(World.java:2160)
at net.minecraft.world.WorldServer.updateEntities(WorldServer.java:515)
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:703)
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614)
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485)
at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752)
A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------
-- Head --
Stacktrace:
at ru.UralInc.BestUpdate.Clonator.TileEntityClonator.updateEntity(TileEntityClonator.java:81)
-- Block entity being ticked --
Details:
Name: TileEntityClonator // ru.UralInc.BestUpdate.Clonator.TileEntityClonator
Block type: ID #210 (tile.Clonator // ru.UralInc.BestUpdate.Clonator.Clonator)
Block data value: 0 / 0x0 / 0b0000
Block location: World: (344,80,414), Chunk: (at 8,5,14 in 21,25; contains blocks 336,0,400 to 351,255,415), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511)
Actual block type: ID #210 (tile.Clonator // ru.UralInc.BestUpdate.Clonator.Clonator)
Actual block data value: 0 / 0x0 / 0b0000
Stacktrace:
at net.minecraft.world.World.updateEntities(World.java:2160)
at net.minecraft.world.WorldServer.updateEntities(WorldServer.java:515)
-- Affected level --
Details:
Level name: Новый мир
All players: 1 total; [EntityPlayerMP['Player558'/206, l='Новый мир', x=343,21, y=80,00, z=413,18]]
Chunk stats: ServerChunkCache: 732 Drop: 0
Level seed: -7237060092149170328
Level generator: ID 00 - default, ver 1. Features enabled: true
Level generator options:
Level spawn location: World: (204,64,256), Chunk: (at 12,4,0 in 12,16; contains blocks 192,0,256 to 207,255,271), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511)
Level time: 282016 game time, 282016 day time
Level dimension: 0
Level storage version: 0x04ABD - Anvil
Level weather: Rain time: 125451 (now: false), thunder time: 75783 (now: false)
Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: true
Stacktrace:
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:703)
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614)
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485)
at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752)
-- System Details --
Details:
Minecraft Version: 1.7.10
Operating System: Windows 10 (amd64) version 10.0
Java Version: 1.8.0_261, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 592166296 bytes (564 MB) / 1026293760 bytes (978 MB) up to 1026293760 bytes (978 MB)
JVM Flags: 3 total; -Xincgc -Xmx1012M -Xms1012M
AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
IntCache: cache: 0, tcache: 0, allocated: 12, tallocated: 94
FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1558 10 mods loaded, 10 mods active
States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
UCHIJAAAA mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
UCHIJAAAA FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1558-1.7.10.jar)
UCHIJAAAA Forge{10.13.4.1558} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1558-1.7.10.jar)
UCHIJAAAA CodeChickenCore{1.0.7.47} [CodeChicken Core] (minecraft.jar)
UCHIJAAAA <CoFH ASM>{000} [CoFH ASM] (minecraft.jar)
UCHIJAAAA CoFHCore{1.7.10R3.1.4} [CoFH Core] (CoFHCore-[1.7.10]3.1.4-329.jar)
UCHIJAAAA bestupdate{0.0.0.4} [Best Update] (bin)
UCHIJAAAA ThermalFoundation{1.7.10R1.2.6} [Thermal Foundation] (ThermalFoundation-[1.7.10]1.2.6-118.jar)
UCHIJAAAA ThermalDynamics{1.7.10R1.2.1} [Thermal Dynamics] (ThermalDynamics-[1.7.10]1.2.1-172.jar)
UCHIJAAAA ThermalExpansion{1.7.10R4.1.5} [Thermal Expansion] (ThermalExpansion-[1.7.10]4.1.5-248.jar)
GL info: ~~ERROR~~ RuntimeException: No OpenGL context found in the current thread.
CoFHCore: -[1.7.10]3.1.4-329
ThermalFoundation: -[1.7.10]1.2.6-118
ThermalDynamics: -[1.7.10]1.2.1-172
ThermalExpansion: -[1.7.10]4.1.5-248
Profiler Position: N/A (disabled)
Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
Player Count: 1 / 8; [EntityPlayerMP['Player558'/206, l='Новый мир', x=343,21, y=80,00, z=413,18]]
Type: Integrated Server (map_client.txt)
Is Modded: Definitely; Client brand changed to 'fml,forge'
Последнее редактирование: