[SPIGOT-7201] Spawner ItemMeta not working as expected Created: 10/Dec/22  Updated: 25/Dec/24  Resolved: 10/Dec/22

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

Type: Bug Priority: Minor
Reporter: Jonathan Boisclair Assignee: Unassigned
Resolution: Fixed Votes: 0
Labels: 1.19.3, Spawner, bug, spigot
Environment:

Linux Mint 20.3, Java 17 OpenJDK


Version: 3617-Spigot-d90018e-4fa7e1c (MC: 1.19.3)
Plugin: ObsidianMaterial
Guidelines Read: Yes

 Description   

Both .getSpawnedType() and .setSpawnedType() throws exceptions 

 

Java code throwing the exception:

@Override    public ItemStack toItem() {   
   ItemStack itemStack = new ItemStack(Material.SPAWNER);            
   ItemMeta itemMeta = itemStack.getItemMeta();
   if (itemMeta == null)         
      return itemStack;       
   if (!(itemMeta instanceof BlockStateMeta))   
      return itemStack;      
   BlockStateMeta blockStateMeta = (BlockStateMeta) itemMeta; 
   CreatureSpawner creatureSpawner = (CreatureSpawner) blockStateMeta.getBlockState();    
    try {         
       creatureSpawner.setSpawnedType(entity);    
    } catch (Throwable t) {            
       t.printStackTrace();     
    }    
    blockStateMeta.setDisplayName(creatureSpawner.getSpawnedType()+" Spawner");      
    blockStateMeta.setBlockState(creatureSpawner);
    itemStack.setItemMeta(itemMeta);
    return itemStack;
} 

Stack trace for it:

java.lang.NullPointerException: Cannot invoke "net.minecraft.world.level.MobSpawnerData.a()" because "net.minecraft.world.level.block.entity.TileEntityMobSpawner.d().f" is null
    at org.bukkit.craftbukkit.v1_19_R2.block.CraftCreatureSpawner.getSpawnedType(CraftCreatureSpawner.java:19) ~[spigot-1.19.3-R0.1-SNAPSHOT.jar:3617-Spigot-d90018e-4fa7e1c]
    at com.moyskleytech.obsidian.material.implementations.SpawnerMaterial.toItem(SpawnerMaterial.java:75) ~[?:?]
    at com.iridium.iridiumcore.utils.ItemStackUtils.makeItem(ItemStackUtils.java:74) ~[?:?]
    at com.iridium.iridiumcore.utils.ItemStackUtils.makeItem(ItemStackUtils.java:95) ~[?:?]
    at com.iridium.iridiumcore.utils.ItemStackUtils.makeItem(ItemStackUtils.java:118) ~[?:?]
    at com.iridium.iridiumskyblock.gui.ShopOverviewGUI.addContent(ShopOverviewGUI.java:47) ~[?:?]
    at com.iridium.iridiumskyblock.IridiumSkyblock.lambda$onEnable$3(IridiumSkyblock.java:214) ~[?:?]
    at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?]
    at java.util.Collections$UnmodifiableCollection.forEach(Collections.java:1092) ~[?:?]
    at com.iridium.iridiumskyblock.IridiumSkyblock.lambda$onEnable$4(IridiumSkyblock.java:211) ~[?:?]
    at org.bukkit.craftbukkit.v1_19_R2.scheduler.CraftTask.run(CraftTask.java:82) ~[spigot-1.19.3-R0.1-SNAPSHOT.jar:3617-Spigot-d90018e-4fa7e1c]
    at org.bukkit.craftbukkit.v1_19_R2.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:415) ~[spigot-1.19.3-R0.1-SNAPSHOT.jar:3617-Spigot-d90018e-4fa7e1c]
    at net.minecraft.server.MinecraftServer.b(MinecraftServer.java:1249) ~[spigot-1.19.3-R0.1-SNAPSHOT.jar:3617-Spigot-d90018e-4fa7e1c]
    at net.minecraft.server.dedicated.DedicatedServer.b(DedicatedServer.java:388) ~[spigot-1.19.3-R0.1-SNAPSHOT.jar:3617-Spigot-d90018e-4fa7e1c]
    at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:1201) ~[spigot-1.19.3-R0.1-SNAPSHOT.jar:3617-Spigot-d90018e-4fa7e1c]
    at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:1017) ~[spigot-1.19.3-R0.1-SNAPSHOT.jar:3617-Spigot-d90018e-4fa7e1c]
    at net.minecraft.server.MinecraftServer.lambda$0(MinecraftServer.java:301) ~[spigot-1.19.3-R0.1-SNAPSHOT.jar:3617-Spigot-d90018e-4fa7e1c]
    at java.lang.Thread.run(Thread.java:833) ~[?:?]
[13:24:29] [Server thread/WARN]: java.lang.NullPointerException: Cannot invoke "net.minecraft.world.level.GeneratorAccess.s_()" because the return value of "org.bukkit.craftbukkit.v1_19_R2.block.CraftCreatureSpawner.getWorldHandle()" is null
[13:24:29] [Server thread/WARN]:        at org.bukkit.craftbukkit.v1_19_R2.block.CraftCreatureSpawner.setSpawnedType(CraftCreatureSpawner.java:29)
[13:24:29] [Server thread/WARN]:        at com.moyskleytech.obsidian.material.implementations.SpawnerMaterial.toItem(SpawnerMaterial.java:71)
[13:24:29] [Server thread/WARN]:        at com.iridium.iridiumcore.utils.ItemStackUtils.makeItem(ItemStackUtils.java:74)
[13:24:29] [Server thread/WARN]:        at com.iridium.iridiumcore.utils.ItemStackUtils.makeItem(ItemStackUtils.java:95)
[13:24:29] [Server thread/WARN]:        at com.iridium.iridiumcore.utils.ItemStackUtils.makeItem(ItemStackUtils.java:118)
[13:24:29] [Server thread/WARN]:        at com.iridium.iridiumskyblock.gui.ShopOverviewGUI.addContent(ShopOverviewGUI.java:47)
[13:24:29] [Server thread/WARN]:        at com.iridium.iridiumskyblock.IridiumSkyblock.lambda$onEnable$3(IridiumSkyblock.java:214)
[13:24:29] [Server thread/WARN]:        at java.base/java.lang.Iterable.forEach(Iterable.java:75)
[13:24:29] [Server thread/WARN]:        at java.base/java.util.Collections$UnmodifiableCollection.forEach(Collections.java:1092)
[13:24:29] [Server thread/WARN]:        at com.iridium.iridiumskyblock.IridiumSkyblock.lambda$onEnable$4(IridiumSkyblock.java:211)
[13:24:29] [Server thread/WARN]:        at org.bukkit.craftbukkit.v1_19_R2.scheduler.CraftTask.run(CraftTask.java:82)
[13:24:29] [Server thread/WARN]:        at org.bukkit.craftbukkit.v1_19_R2.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:415)
[13:24:29] [Server thread/WARN]:        at net.minecraft.server.MinecraftServer.b(MinecraftServer.java:1249)
[13:24:29] [Server thread/WARN]:        at net.minecraft.server.dedicated.DedicatedServer.b(DedicatedServer.java:388)
[13:24:29] [Server thread/WARN]:        at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:1201)
[13:24:29] [Server thread/WARN]:        at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:1017)
[13:24:29] [Server thread/WARN]:        at net.minecraft.server.MinecraftServer.lambda$0(MinecraftServer.java:301)
[13:24:29] [Server thread/WARN]:        at java.base/java.lang.Thread.run(Thread.java:833)
[13:24:29] [Server thread/WARN]: [IridiumSkyblock] Task #13 for IridiumSkyblock v3.2.10-S1-OM generated an exception
java.lang.NullPointerException: Cannot invoke "net.minecraft.world.level.MobSpawnerData.a()" because "net.minecraft.world.level.block.entity.TileEntityMobSpawner.d().f" is null
    at org.bukkit.craftbukkit.v1_19_R2.block.CraftCreatureSpawner.getSpawnedType(CraftCreatureSpawner.java:19) ~[spigot-1.19.3-R0.1-SNAPSHOT.jar:3617-Spigot-d90018e-4fa7e1c]
    at com.moyskleytech.obsidian.material.implementations.SpawnerMaterial.toItem(SpawnerMaterial.java:75) ~[?:?]
    at com.iridium.iridiumcore.utils.ItemStackUtils.makeItem(ItemStackUtils.java:74) ~[?:?]
    at com.iridium.iridiumcore.utils.ItemStackUtils.makeItem(ItemStackUtils.java:95) ~[?:?]
    at com.iridium.iridiumcore.utils.ItemStackUtils.makeItem(ItemStackUtils.java:118) ~[?:?]
    at com.iridium.iridiumskyblock.gui.ShopOverviewGUI.addContent(ShopOverviewGUI.java:47) ~[?:?]
    at com.iridium.iridiumskyblock.IridiumSkyblock.lambda$onEnable$3(IridiumSkyblock.java:214) ~[?:?]
    at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?]
    at java.util.Collections$UnmodifiableCollection.forEach(Collections.java:1092) ~[?:?]
    at com.iridium.iridiumskyblock.IridiumSkyblock.lambda$onEnable$4(IridiumSkyblock.java:211) ~[?:?]
    at org.bukkit.craftbukkit.v1_19_R2.scheduler.CraftTask.run(CraftTask.java:82) ~[spigot-1.19.3-R0.1-SNAPSHOT.jar:3617-Spigot-d90018e-4fa7e1c]
    at org.bukkit.craftbukkit.v1_19_R2.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:415) ~[spigot-1.19.3-R0.1-SNAPSHOT.jar:3617-Spigot-d90018e-4fa7e1c]
    at net.minecraft.server.MinecraftServer.b(MinecraftServer.java:1249) ~[spigot-1.19.3-R0.1-SNAPSHOT.jar:3617-Spigot-d90018e-4fa7e1c]
    at net.minecraft.server.dedicated.DedicatedServer.b(DedicatedServer.java:388) ~[spigot-1.19.3-R0.1-SNAPSHOT.jar:3617-Spigot-d90018e-4fa7e1c]
    at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:1201) ~[spigot-1.19.3-R0.1-SNAPSHOT.jar:3617-Spigot-d90018e-4fa7e1c]
    at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:1017) ~[spigot-1.19.3-R0.1-SNAPSHOT.jar:3617-Spigot-d90018e-4fa7e1c]
    at net.minecraft.server.MinecraftServer.lambda$0(MinecraftServer.java:301) ~[spigot-1.19.3-R0.1-SNAPSHOT.jar:3617-Spigot-d90018e-4fa7e1c]
    at java.lang.Thread.run(Thread.java:833) ~[?:?]



 Comments   
Comment by FreeSoccerHDX [ 10/Dec/22 ]

Its not working because you create a new ItemStack, get the ItemMeta of it ... but there is no MobSpawner as reference set... it probably just creates a dummy with no information and thats why
CreatureSpawner creatureSpawner = (CreatureSpawner) blockStateMeta.getBlockState();
is working but setting or getting data of it not ... I still think this might be a bug since setting the Type should work even if it has no real data ... and thats why the ItemMeta exist ^^
getting the SpawnType should return 'null' i guess and not an exception .... maybe someone can check or fix this

Generated at Wed Apr 02 10:20:45 UTC 2025 using Jira 10.3.3#10030003-sha1:d220e3fefc8dfc6d47f522d3b9a20c1455e12b7b.