[SPIGOT-5482] Structure Block setUsageMode encouters NullpointerException Created: 24/Dec/19  Updated: 26/Dec/19  Resolved: 24/Dec/19

Status: Resolved
Project: Spigot
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Bug Priority: Minor
Reporter: Eiskasten Assignee: Unassigned
Resolution: Fixed Votes: 0
Labels: Craftbukkit, Spigot, bug

Version: git-Spigot-05bb8bc-4b34472 (MC: 1.15.1) (Implementing API version 1.15.1-R0.1-SNAPSHOT)
Guidelines Read: Yes

 Description   

When trying to change the usage mode of a structure block, the server encounters the following NullpointerException:

org.bukkit.event.EventException: null
	at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:320) ~[spigot-1.15.1.jar:git-Spigot-05bb8bc-4b34472]
	at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[spigot-1.15.1.jar:git-Spigot-05bb8bc-4b34472]
	at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:529) ~[spigot-1.15.1.jar:git-Spigot-05bb8bc-4b34472]
	at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:514) ~[spigot-1.15.1.jar:git-Spigot-05bb8bc-4b34472]
	at org.bukkit.craftbukkit.v1_15_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:441) ~[spigot-1.15.1.jar:git-Spigot-05bb8bc-4b34472]
	at net.minecraft.server.v1_15_R1.PlayerInteractManager.a(PlayerInteractManager.java:441) ~[spigot-1.15.1.jar:git-Spigot-05bb8bc-4b34472]
	at net.minecraft.server.v1_15_R1.PlayerConnection.a(PlayerConnection.java:1250) ~[spigot-1.15.1.jar:git-Spigot-05bb8bc-4b34472]
	at net.minecraft.server.v1_15_R1.PacketPlayInUseItem.a(PacketPlayInUseItem.java:27) ~[spigot-1.15.1.jar:git-Spigot-05bb8bc-4b34472]
	at net.minecraft.server.v1_15_R1.PacketPlayInUseItem.a(PacketPlayInUseItem.java:1) ~[spigot-1.15.1.jar:git-Spigot-05bb8bc-4b34472]
	at net.minecraft.server.v1_15_R1.PlayerConnectionUtils.lambda$0(PlayerConnectionUtils.java:19) ~[spigot-1.15.1.jar:git-Spigot-05bb8bc-4b34472]
	at net.minecraft.server.v1_15_R1.TickTask.run(SourceFile:18) [spigot-1.15.1.jar:git-Spigot-05bb8bc-4b34472]
	at net.minecraft.server.v1_15_R1.IAsyncTaskHandler.executeTask(SourceFile:144) [spigot-1.15.1.jar:git-Spigot-05bb8bc-4b34472]
	at net.minecraft.server.v1_15_R1.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) [spigot-1.15.1.jar:git-Spigot-05bb8bc-4b34472]
	at net.minecraft.server.v1_15_R1.IAsyncTaskHandler.executeNext(SourceFile:118) [spigot-1.15.1.jar:git-Spigot-05bb8bc-4b34472]
	at net.minecraft.server.v1_15_R1.MinecraftServer.aZ(MinecraftServer.java:917) [spigot-1.15.1.jar:git-Spigot-05bb8bc-4b34472]
	at net.minecraft.server.v1_15_R1.MinecraftServer.executeNext(MinecraftServer.java:910) [spigot-1.15.1.jar:git-Spigot-05bb8bc-4b34472]
	at net.minecraft.server.v1_15_R1.IAsyncTaskHandler.awaitTasks(SourceFile:127) [spigot-1.15.1.jar:git-Spigot-05bb8bc-4b34472]
	at net.minecraft.server.v1_15_R1.MinecraftServer.sleepForTick(MinecraftServer.java:894) [spigot-1.15.1.jar:git-Spigot-05bb8bc-4b34472]
	at net.minecraft.server.v1_15_R1.MinecraftServer.run(MinecraftServer.java:827) [spigot-1.15.1.jar:git-Spigot-05bb8bc-4b34472]
	at java.lang.Thread.run(Thread.java:830) [?:?]
Caused by: java.lang.NullPointerException
	at net.minecraft.server.v1_15_R1.TileEntityStructure.setUsageMode(SourceFile:231) ~[spigot-1.15.1.jar:git-Spigot-05bb8bc-4b34472]
	at org.bukkit.craftbukkit.v1_15_R1.block.CraftStructureBlock.setUsageMode(CraftStructureBlock.java:108) ~[spigot-1.15.1.jar:git-Spigot-05bb8bc-4b34472]
	at io.github.eiskasten.skyex.snbt.StructureKt.placeStructure(structure.kt:73) ~[?:?]
	at io.github.eiskasten.skyex.NetherCreator.onMiddle(nether.kt:90) ~[?:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:567) ~[?:?]
	at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:316) ~[spigot-1.15.1.jar:git-Spigot-05bb8bc-4b34472]
	... 19 more

This is the (Kotlin) code, I used:

location.block.type = Material.STRUCTURE_BLOCK //line 70
    val structureBlock = location.block.state as org.bukkit.block.Structure //line 71
    structureBlock.structureName = name //line 72
    structureBlock.usageMode = UsageMode.LOAD //line 73
    location.clone().add(0.toDouble(), (-1).toDouble(), 0.toDouble()).block.type = Material.REDSTONE_BLOCK //line 74

Note, that setting the structure's name works flawlessly, only setting the usage mode makes troubles.



 Comments   
Comment by Joe Becher [ 26/Dec/19 ]

Yes, can confirm with a JavaPlugin. Thanks for the fix.

Comment by Hex [ 24/Dec/19 ]

Just out of curiosity can you reproduce this with a java plugin?

Generated at Thu Apr 03 16:05:28 UTC 2025 using Jira 10.3.3#10030003-sha1:d220e3fefc8dfc6d47f522d3b9a20c1455e12b7b.