проблема с GUI

Версия Minecraft
1.16.5
31
0
что-то выкидывает тупа null, долго тыкаюсь но понять так и не смог.

класс блока
1673803304342.png
вспомогательный класс
1673803339914.png
сам тайл
1673803365980.png
 
Решение
1) Я тебе уже говорил это, в классе TileEntity нет реализации INamedContainerProvider. Тебе нужно сделать так, чтобы в getContainerMenuProvider пришёл не TileEntity, а LavaGenTile. И да,ни один из твоих тайлов не реализует интерфейс INamedContainerProvider.
2) furnaceData сделана странно. Тип, она всегда null. Вместо костылей с абстрактным классом и классом наследником, который создаёт furnaceData, у тебя получается везде null, лучше присвой furnaceData в BrewingStandTileEntity2 хоть какое-то значение, которое не null. Но текущая ошибка не из-за этого, ошибка в furnaceData появится позже, когда furnaceData будет использована в каких-либо расчётах.
3) Реализация с абстракцией абсурдна. Т.е. она не имеет смысла, лучше затолкать всё в один...
31
0
Java:
java.lang.NullPointerException: null
    at net.minecraft.inventory.container.Container.checkContainerDataCount(Container.java:70) ~[forge:?] {re:classloading}
    at ru.tishina.tishin.gui.ContainerLavaGen.<init>(ContainerLavaGen.java:21) ~[?:?] {re:classloading}
    at ru.tishina.tishin.gui.LavaGenTile.createMenu(LavaGenTile.java:26) ~[?:?] {re:classloading}
    at net.minecraft.tileentity.LockableTileEntity.createMenu(LockableTileEntity.java:80) ~[forge:?] {re:classloading}
    at net.minecraftforge.fml.network.NetworkHooks.openGui(NetworkHooks.java:212) ~[forge:?] {re:classloading}
    at net.minecraftforge.fml.network.NetworkHooks.openGui(NetworkHooks.java:178) ~[forge:?] {re:classloading}
    at ru.tishina.tishin.block.LavaGenBlock.use(LavaGenBlock.java:39) ~[?:?] {re:classloading}
    at net.minecraft.block.AbstractBlock$AbstractBlockState.use(AbstractBlock.java:640) ~[forge:?] {re:classloading}
    at net.minecraft.server.management.PlayerInteractionManager.useItemOn(PlayerInteractionManager.java:338) ~[forge:?] {re:classloading}
    at net.minecraft.network.play.ServerPlayNetHandler.handleUseItemOn(ServerPlayNetHandler.java:958) ~[forge:?] {re:classloading}
    at net.minecraft.network.play.client.CPlayerTryUseItemOnBlockPacket.handle(CPlayerTryUseItemOnBlockPacket.java:36) ~[forge:?] {re:classloading}
    at net.minecraft.network.play.client.CPlayerTryUseItemOnBlockPacket.handle(CPlayerTryUseItemOnBlockPacket.java:12) ~[forge:?] {re:classloading}
    at net.minecraft.network.PacketThreadUtil.lambda$ensureRunningOnSameThread$0(PacketThreadUtil.java:19) ~[forge:?] {re:classloading}
    at net.minecraft.util.concurrent.TickDelayedTask.run(TickDelayedTask.java:17) ~[forge:?] {re:classloading}
    at net.minecraft.util.concurrent.ThreadTaskExecutor.doRunTask(ThreadTaskExecutor.java:136) ~[forge:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.util.concurrent.RecursiveEventLoop.doRunTask(RecursiveEventLoop.java:22) ~[forge:?] {re:classloading}
    at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:734) ~[forge:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:159) ~[forge:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.util.concurrent.ThreadTaskExecutor.pollTask(ThreadTaskExecutor.java:109) ~[forge:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:717) ~[forge:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:711) ~[forge:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.util.concurrent.ThreadTaskExecutor.managedBlock(ThreadTaskExecutor.java:119) ~[forge:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.server.MinecraftServer.waitUntilNextTick(MinecraftServer.java:697) ~[forge:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:646) ~[forge:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:232) ~[forge:?] {re:classloading,pl:accesstransformer:B}
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_231] {}
[21:48:24] [Render thread/INFO] [minecraft/NewChatGui]: [CHAT] test
[21:48:24] [Render thread/INFO] [minecraft/NewChatGui]: [CHAT] test2
 
116
13
13
что-то выкидывает тупа null, долго тыкаюсь но понять так и не смог.

класс блока
Посмотреть вложение 15689
вспомогательный класс
Посмотреть вложение 15690
сам тайл
Посмотреть вложение 15691
Скорее всего, переменная furnaceData не инициализирована, поэтому и выкидывает Exception
 
Последнее редактирование:
1,374
113
241
1) Я тебе уже говорил это, в классе TileEntity нет реализации INamedContainerProvider. Тебе нужно сделать так, чтобы в getContainerMenuProvider пришёл не TileEntity, а LavaGenTile. И да,ни один из твоих тайлов не реализует интерфейс INamedContainerProvider.
2) furnaceData сделана странно. Тип, она всегда null. Вместо костылей с абстрактным классом и классом наследником, который создаёт furnaceData, у тебя получается везде null, лучше присвой furnaceData в BrewingStandTileEntity2 хоть какое-то значение, которое не null. Но текущая ошибка не из-за этого, ошибка в furnaceData появится позже, когда furnaceData будет использована в каких-либо расчётах.
3) Реализация с абстракцией абсурдна. Т.е. она не имеет смысла, лучше затолкать всё в один не-абстрактный класс.
4) Forge не рекомендует использовать IInventory в своих TileEntity.
 
Сверху