Краш из-за жезла ThaumCraft

Версия Minecraft
1.7.10
627
72
178
Если мой жезл имеется в мире (держу в инвентаре, в магическом верстаке) то сначала все нормально. Он рендерится, полностью функционирует. Но если я перезапущу клиент и зайду в этот же мир - меня мгновенно крашит. Вне зависимости от того, скрафтил я жезл, или выдал через креатив. Проблема именно в моем жезле, стандартным таумовский не крашит
Класс стержня жезла:
public static class ModRod extends WandRod {
        ResourceLocation res = new ResourceLocation(ElvenMagic.MODID, "textures/items/elven_rod.png");

        @Override
        public ResourceLocation getTexture() {
            return res;
        }

        public ModRod() {
            super("alfenium_tree", 500, new ItemStack(ElvenMagic.items[4]), 50);

        }

        @Override
        public String getResearch() {

            return "elven_goggles";
        }

    }
Класс наконечника жезла:
public static class ModCap extends WandCap {
        ResourceLocation res = new ResourceLocation(ElvenMagic.MODID, "textures/items/elven_cap.png");

        @Override
        public ResourceLocation getTexture() {
            return res;
        }

        public ModCap() {
            super("alfenium_metal", 0.75F, new ItemStack(ElvenMagic.items[3]), 25);

        }

        @Override
        public String getResearch() {

            return "elven_goggles";
        }

    }
Код добавления жезла в CreativeTab (pre-метод в главном классе):
@Override
            public void displayAllReleventItems(List list) {
                ItemStack wand = new ItemStack(ConfigItems.itemWandCasting);
                ItemWandCasting wandCasting = (ItemWandCasting) wand.getItem();

                wandCasting.setCap(wand, new ItemsCommon.ModCap());
                wandCasting.setRod(wand, new ItemsCommon.ModRod());

                if (list != null)
                    list.add(0, wand);
            }
1565983734881.png1565983746714.png
 
Краш-лог
---- Minecraft Crash Report ----
// There are four lights!

Time: 16.08.19 23:09
Description: Unexpected error

java.lang.NullPointerException: Unexpected error
at thaumcraft.common.items.wands.ItemWandCasting.getMaxVis(ItemWandCasting.java:91)
at thaumcraft.client.lib.ClientTickEventsFML.renderCastingWandHud(ClientTickEventsFML.java:458)
at thaumcraft.client.lib.ClientTickEventsFML.renderTick(ClientTickEventsFML.java:323)
at cpw.mods.fml.common.eventhandler.ASMEventHandler_45_ClientTickEventsFML_renderTick_RenderTickEvent.invoke(.dynamic)
at cpw.mods.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:54)
at cpw.mods.fml.common.eventhandler.EventBus.post(EventBus.java:140)
at cpw.mods.fml.common.FMLCommonHandler.onRenderTickEnd(FMLCommonHandler.java:340)
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1069)
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(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
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)


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Stacktrace:
at thaumcraft.common.items.wands.ItemWandCasting.getMaxVis(ItemWandCasting.java:91)
at thaumcraft.client.lib.ClientTickEventsFML.renderCastingWandHud(ClientTickEventsFML.java:458)
at thaumcraft.client.lib.ClientTickEventsFML.renderTick(ClientTickEventsFML.java:323)
at cpw.mods.fml.common.eventhandler.ASMEventHandler_45_ClientTickEventsFML_renderTick_RenderTickEvent.invoke(.dynamic)
at cpw.mods.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:54)
at cpw.mods.fml.common.eventhandler.EventBus.post(EventBus.java:140)

-- Affected level --
Details:
Level name: MpServer
All players: 1 total; [EntityClientPlayerMP['admin'/173, l='MpServer', x=395,48, y=5,62, z=-958,63]]
Chunk stats: MultiplayerChunkCache: 40, 40
Level seed: 0
Level generator: ID 01 - flat, ver 0. Features enabled: false
Level generator options:
Level spawn location: World: (392,4,-950), Chunk: (at 8,0,10 in 24,-60; contains blocks 384,0,-960 to 399,255,-945), Region: (0,-2; contains chunks 0,-64 to 31,-33, blocks 0,0,-1024 to 511,255,-513)
Level time: 2239 game time, 2239 day time
Level dimension: 0
Level storage version: 0x00000 - Unknown?
Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false
Forced entities: 1 total; [EntityClientPlayerMP['admin'/173, l='MpServer', x=395,48, y=5,62, z=-958,63]]
Retry entities: 0 total; []
Server brand: fml,forge
Server type: Integrated singleplayer server
Stacktrace:
at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:415)
at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2566)
at net.minecraft.client.Minecraft.run(Minecraft.java:991)
at net.minecraft.client.main.Main.main(Main.java:164)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
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)

-- System Details --
Details:
Minecraft Version: 1.7.10
Operating System: Windows 10 (amd64) version 10.0
Java Version: 1.8.0_201, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 1647724904 bytes (1571 MB) / 2077753344 bytes (1981 MB) up to 2077753344 bytes (1981 MB)
JVM Flags: 3 total; -Xincgc -Xmx2048M -Xms2048M
AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1614 7 mods loaded, 7 mods active
States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
UCHIJAAAAA mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
UCHIJAAAAA FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1614-1.7.10.jar)
UCHIJAAAAA Forge{10.13.4.1614} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1614-1.7.10.jar)
UCHIJAAAAA CodeChickenCore{1.0.7.47} [CodeChicken Core] (minecraft.jar)
UCHIJAAAAA Baubles{1.0.1.10} [Baubles] (Baubles-deobf-1_7_10-1_0_1_10.jar)
UCHIJAAAAA Thaumcraft{4.2.3.5} [Thaumcraft] (Thaumcraft-deobf-1_7_10-4_2_3_5.jar)
UCHIJAAAAA elvenmagic{0.0.0.1} [ElvenMagic] (bin)
GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.6.0 NVIDIA 391.35' Renderer: 'GeForce GTX 1050 Ti/PCIe/SSE2'
Launched Version: 1.7.10
LWJGL: 2.9.1
OpenGL: GeForce GTX 1050 Ti/PCIe/SSE2 GL version 4.6.0 NVIDIA 391.35, NVIDIA Corporation
GL Caps: Using GL 1.3 multitexturing.
Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
Anisotropic filtering is supported and maximum anisotropy is 16.
Shaders are available because OpenGL 2.1 is supported.

Is Modded: Definitely; Client brand changed to 'fml,forge'
Type: Client (map_client.txt)
Resource Packs: []
Current Language: Русский (Россия)
Profiler Position: N/A (disabled)
Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
Anisotropic Filtering: Off (1)
Краш-лог:
---- Minecraft Crash Report ----
// There are four lights!

Time: 16.08.19 23:09
Description: Unexpected error

java.lang.NullPointerException: Unexpected error
	at thaumcraft.common.items.wands.ItemWandCasting.getMaxVis(ItemWandCasting.java:91)
	at thaumcraft.client.lib.ClientTickEventsFML.renderCastingWandHud(ClientTickEventsFML.java:458)
	at thaumcraft.client.lib.ClientTickEventsFML.renderTick(ClientTickEventsFML.java:323)
	at cpw.mods.fml.common.eventhandler.ASMEventHandler_45_ClientTickEventsFML_renderTick_RenderTickEvent.invoke(.dynamic)
	at cpw.mods.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:54)
	at cpw.mods.fml.common.eventhandler.EventBus.post(EventBus.java:140)
	at cpw.mods.fml.common.FMLCommonHandler.onRenderTickEnd(FMLCommonHandler.java:340)
	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1069)
	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(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	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)


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Stacktrace:
	at thaumcraft.common.items.wands.ItemWandCasting.getMaxVis(ItemWandCasting.java:91)
	at thaumcraft.client.lib.ClientTickEventsFML.renderCastingWandHud(ClientTickEventsFML.java:458)
	at thaumcraft.client.lib.ClientTickEventsFML.renderTick(ClientTickEventsFML.java:323)
	at cpw.mods.fml.common.eventhandler.ASMEventHandler_45_ClientTickEventsFML_renderTick_RenderTickEvent.invoke(.dynamic)
	at cpw.mods.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:54)
	at cpw.mods.fml.common.eventhandler.EventBus.post(EventBus.java:140)

-- Affected level --
Details:
	Level name: MpServer
	All players: 1 total; [EntityClientPlayerMP['admin'/173, l='MpServer', x=395,48, y=5,62, z=-958,63]]
	Chunk stats: MultiplayerChunkCache: 40, 40
	Level seed: 0
	Level generator: ID 01 - flat, ver 0. Features enabled: false
	Level generator options: 
	Level spawn location: World: (392,4,-950), Chunk: (at 8,0,10 in 24,-60; contains blocks 384,0,-960 to 399,255,-945), Region: (0,-2; contains chunks 0,-64 to 31,-33, blocks 0,0,-1024 to 511,255,-513)
	Level time: 2239 game time, 2239 day time
	Level dimension: 0
	Level storage version: 0x00000 - Unknown?
	Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
	Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false
	Forced entities: 1 total; [EntityClientPlayerMP['admin'/173, l='MpServer', x=395,48, y=5,62, z=-958,63]]
	Retry entities: 0 total; []
	Server brand: fml,forge
	Server type: Integrated singleplayer server
Stacktrace:
	at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:415)
	at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2566)
	at net.minecraft.client.Minecraft.run(Minecraft.java:991)
	at net.minecraft.client.main.Main.main(Main.java:164)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	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)

-- System Details --
Details:
	Minecraft Version: 1.7.10
	Operating System: Windows 10 (amd64) version 10.0
	Java Version: 1.8.0_201, Oracle Corporation
	Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
	Memory: 1647724904 bytes (1571 MB) / 2077753344 bytes (1981 MB) up to 2077753344 bytes (1981 MB)
	JVM Flags: 3 total; -Xincgc -Xmx2048M -Xms2048M
	AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
	IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
	FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1614 7 mods loaded, 7 mods active
	States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
	UCHIJAAAAA	mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) 
	UCHIJAAAAA	FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1614-1.7.10.jar) 
	UCHIJAAAAA	Forge{10.13.4.1614} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1614-1.7.10.jar) 
	UCHIJAAAAA	CodeChickenCore{1.0.7.47} [CodeChicken Core] (minecraft.jar) 
	UCHIJAAAAA	Baubles{1.0.1.10} [Baubles] (Baubles-deobf-1_7_10-1_0_1_10.jar) 
	UCHIJAAAAA	Thaumcraft{4.2.3.5} [Thaumcraft] (Thaumcraft-deobf-1_7_10-4_2_3_5.jar) 
	UCHIJAAAAA	elvenmagic{0.0.0.1} [ElvenMagic] (bin) 
	GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.6.0 NVIDIA 391.35' Renderer: 'GeForce GTX 1050 Ti/PCIe/SSE2'
	Launched Version: 1.7.10
	LWJGL: 2.9.1
	OpenGL: GeForce GTX 1050 Ti/PCIe/SSE2 GL version 4.6.0 NVIDIA 391.35, NVIDIA Corporation
	GL Caps: Using GL 1.3 multitexturing.
Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
Anisotropic filtering is supported and maximum anisotropy is 16.
Shaders are available because OpenGL 2.1 is supported.

	Is Modded: Definitely; Client brand changed to 'fml,forge'
	Type: Client (map_client.txt)
	Resource Packs: []
	Current Language: Русский (Россия)
	Profiler Position: N/A (disabled)
	Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
	Anisotropic Filtering: Off (1)
Последнее редактирование:
Решение
NPE проходит через try, потому что это неуловимое исключение. Такие нужно просто фиксить, потому что они означают неправильную логику кода

wandCasting.setCap(wand, new ItemsCommon.ModCap()); wandCasting.setRod(wand, new ItemsCommon.ModRod());
Не нужно каждый раз создавать экземпляр WandCap и Rod, они должны быть синглтонами, подобно предметам и блокам. Создать и зарегать их нужно один раз, потом использовать имеющееся значение.

ItemStack wand = new ItemStack(ConfigItems.itemWandCasting); ItemWandCasting wandCasting = (ItemWandCasting) wand.getItem();
Можно упростить ItemWandCasting wandCasting = ConfigItems.itemWandCasting

P.S. Ироничный у тебя ник)

GoogleTan

Картошка :3
1,354
43
310
Это твоя любимая NullPointerException! Почему-то при загрузке мира запрос к твоему жезлу происходит раньше чем он инициализирутеся. Странно, что этого не происходит при генерации...
 
627
72
178
Странная вещь однако, я try/catch нули в значениях WandRod и WandCap, и везде получаю нули :/.
[15:54:02] [Server thread/INFO] [STDOUT]: [stflowerg.elvenmagic.ElvenMagic:eek:nServerStarted:213]: ROD CAPACITY IS NULL!
[15:54:02] [Server thread/INFO] [STDOUT]: [stflowerg.elvenmagic.ElvenMagic:eek:nServerStarted:218]: ROD CRAFT COST IS NULL!
[15:54:02] [Server thread/INFO] [STDOUT]: [stflowerg.elvenmagic.ElvenMagic:eek:nServerStarted:223]: ROD RESEARCH IS NULL!
[15:54:02] [Server thread/INFO] [STDOUT]: [stflowerg.elvenmagic.ElvenMagic:eek:nServerStarted:228]: ROD ITEM IS NULL!
[15:54:02] [Server thread/INFO] [STDOUT]: [stflowerg.elvenmagic.ElvenMagic:eek:nServerStarted:234]: CAP COST MODIFIER IS NULL!
[15:54:02] [Server thread/INFO] [STDOUT]: [stflowerg.elvenmagic.ElvenMagic:eek:nServerStarted:239]: CAP CRAFT COST IS NULL!
[15:54:02] [Server thread/INFO] [STDOUT]: [stflowerg.elvenmagic.ElvenMagic:eek:nServerStarted:244]: CAP RESEARCH IS NULL!
[15:54:02] [Server thread/INFO] [STDOUT]: [stflowerg.elvenmagic.ElvenMagic:eek:nServerStarted:249]: CAP ITEM IS NULL!
 
7,099
324
1,510
NPE проходит через try, потому что это неуловимое исключение. Такие нужно просто фиксить, потому что они означают неправильную логику кода

wandCasting.setCap(wand, new ItemsCommon.ModCap()); wandCasting.setRod(wand, new ItemsCommon.ModRod());
Не нужно каждый раз создавать экземпляр WandCap и Rod, они должны быть синглтонами, подобно предметам и блокам. Создать и зарегать их нужно один раз, потом использовать имеющееся значение.

ItemStack wand = new ItemStack(ConfigItems.itemWandCasting); ItemWandCasting wandCasting = (ItemWandCasting) wand.getItem();
Можно упростить ItemWandCasting wandCasting = ConfigItems.itemWandCasting

P.S. Ироничный у тебя ник)
 
7,099
324
1,510
Конечно, копипасту то мы больше любим, чем то ,что объясняет суть
 
Сверху