VeniVidiVici
Санта Барбарис
- 327
- 15
- 198
Преамбула
У меня есть блок "А".
К этому блоку "А" привязано два GUI, контейнер у них одинаковый (один и тот же).
Первое gui меняет значения int или boolean в TileEntity этого блока с отправкой пакетов (по отдельности происходит).
Второе gui показывает текущее состояние этих int и boolean переменных.
Я беру предмет (могут быть совершенно разные), нажимаю им ПКМ по этому блоку, предмет добавляется в блок "Б" (эти gui и контейнеры блок "Б" не трогают), а также у меня пропадает этот предмет.
Фабула
Если я меняю значение переменной в блоке "А" (в gui #1), а потом нажимаю этим предметом ПКМ на блок, у меня вылетает краш, который я прилагаю ниже.
Однако, если я меняю значение в блоке "А" (в gui #1), а перед использованием предмета открываю gui #2 (с обычным просмотром, пустой рукой), либо перезахожу из меню, либо открываю какое-либо другое gui, то последующее использование предмета проходит штатно.
Ошибка возникает непосредственно из-за player.inventory.consumeInventoryItem(item). Без него всё работает, со сменой значений и без. Но, чёрт возьми, не понимаю почему такая шляпа.
Соль в том, что в краше логированы значения математики, выполняемые перед consumeInventoryItem, в них все значения новые (после изменений, значит пакеты проходят).
На форуме почти ничего не нашёл. Есть вот такая тема, но там что-то другое.
У меня есть блок "А".
К этому блоку "А" привязано два GUI, контейнер у них одинаковый (один и тот же).
Первое gui меняет значения int или boolean в TileEntity этого блока с отправкой пакетов (по отдельности происходит).
Второе gui показывает текущее состояние этих int и boolean переменных.
Я беру предмет (могут быть совершенно разные), нажимаю им ПКМ по этому блоку, предмет добавляется в блок "Б" (эти gui и контейнеры блок "Б" не трогают), а также у меня пропадает этот предмет.
Фабула
Если я меняю значение переменной в блоке "А" (в gui #1), а потом нажимаю этим предметом ПКМ на блок, у меня вылетает краш, который я прилагаю ниже.
Однако, если я меняю значение в блоке "А" (в gui #1), а перед использованием предмета открываю gui #2 (с обычным просмотром, пустой рукой), либо перезахожу из меню, либо открываю какое-либо другое gui, то последующее использование предмета проходит штатно.
Ошибка возникает непосредственно из-за player.inventory.consumeInventoryItem(item). Без него всё работает, со сменой значений и без. Но, чёрт возьми, не понимаю почему такая шляпа.
Соль в том, что в краше логированы значения математики, выполняемые перед consumeInventoryItem, в них все значения новые (после изменений, значит пакеты проходят).
На форуме почти ничего не нашёл. Есть вот такая тема, но там что-то другое.
Класс блока:
@Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int integ, float i, float u, float j)
{
if (world.isRemote)
return true;
else
{
/** Тут ещё разные условия и т.д. **/
if (MoneyMath.storageCoins(factory.storage) >= cost)
{
tileStorage.addContents(k, new ItemStack(item, 1));
MoneyMath.addCoins(player, cost);
MoneyMath.factorySpend(factory.storage, cost);
player.inventory.consumeInventoryItem(item); /** Вот тут проблема **/
player.inventoryContainer.detectAndSendChanges();
return true;
}
/** Дальше другой код**/
}
return false;
}
- Краш-лог
-
[03:17:33] [Server thread/INFO] [STDOUT]: [com.directory.MoneyMath:factorySpend:486]: Операция выполнена успешно.
[03:17:33] [Server thread/ERROR]: Encountered an unexpected exception
net.minecraft.util.ReportedException: Ticking memory connection
at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:198) ~[NetworkSystem.class:?]
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726) ~[MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614) ~[MinecraftServer.class:?]
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118) ~[IntegratedServer.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485) [MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752) [MinecraftServer$2.class:?]
Caused by: java.lang.NullPointerException
at net.minecraft.network.NetHandlerPlayServer.processPlayerBlockPlacement(NetHandlerPlayServer.java:657) ~[NetHandlerPlayServer.class:?]
at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:74) ~[C08PacketPlayerBlockPlacement.class:?]
at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:122) ~[C08PacketPlayerBlockPlacement.class:?]
at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241) ~[NetworkManager.class:?]
at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182) ~[NetworkSystem.class:?]
... 5 more
[03:17:33] [Server thread/INFO]: Stopping server
[03:17:33] [Server thread/INFO]: Saving players
[03:17:33] [Client thread/INFO] [STDOUT]: [net.minecraft.client.Minecraft:displayCrashReport:388]: ---- Minecraft Crash Report ----
// Oh - I know what I did wrong!
Time: 16.05.20 3:17
Description: Ticking memory connection
java.lang.NullPointerException: Ticking memory connection
at net.minecraft.network.NetHandlerPlayServer.processPlayerBlockPlacement(NetHandlerPlayServer.java:657)
at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:74)
at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:122)
at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241)
at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182)
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726)
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 net.minecraft.network.NetHandlerPlayServer.processPlayerBlockPlacement(NetHandlerPlayServer.java:657)
at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:74)
at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:122)
at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241)
-- Ticking connection --
Details:
Connection: net.minecraft.network.NetworkManager@4d5a99db
Stacktrace:
at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182)
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726)
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)
Краш-лог:
[03:17:33] [Server thread/INFO] [STDOUT]: [com.directory.MoneyMath:factorySpend:486]: Операция выполнена успешно.
[03:17:33] [Server thread/ERROR]: Encountered an unexpected exception
net.minecraft.util.ReportedException: Ticking memory connection
at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:198) ~[NetworkSystem.class:?]
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726) ~[MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614) ~[MinecraftServer.class:?]
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118) ~[IntegratedServer.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485) [MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752) [MinecraftServer$2.class:?]
Caused by: java.lang.NullPointerException
at net.minecraft.network.NetHandlerPlayServer.processPlayerBlockPlacement(NetHandlerPlayServer.java:657) ~[NetHandlerPlayServer.class:?]
at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:74) ~[C08PacketPlayerBlockPlacement.class:?]
at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:122) ~[C08PacketPlayerBlockPlacement.class:?]
at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241) ~[NetworkManager.class:?]
at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182) ~[NetworkSystem.class:?]
... 5 more
[03:17:33] [Server thread/INFO]: Stopping server
[03:17:33] [Server thread/INFO]: Saving players
[03:17:33] [Client thread/INFO] [STDOUT]: [net.minecraft.client.Minecraft:displayCrashReport:388]: ---- Minecraft Crash Report ----
// Oh - I know what I did wrong!
Time: 16.05.20 3:17
Description: Ticking memory connection
java.lang.NullPointerException: Ticking memory connection
at net.minecraft.network.NetHandlerPlayServer.processPlayerBlockPlacement(NetHandlerPlayServer.java:657)
at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:74)
at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:122)
at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241)
at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182)
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726)
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 net.minecraft.network.NetHandlerPlayServer.processPlayerBlockPlacement(NetHandlerPlayServer.java:657)
at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:74)
at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:122)
at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241)
-- Ticking connection --
Details:
Connection: net.minecraft.network.NetworkManager@4d5a99db
Stacktrace:
at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182)
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726)
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)
Последнее редактирование: