From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: MrHua269 Date: Sun, 15 Jun 2025 16:58:05 +0800 Subject: [PATCH] Do not fire pre creature spawn event unless some plugin is listening it diff --git a/net/minecraft/world/level/NaturalSpawner.java b/net/minecraft/world/level/NaturalSpawner.java index 8911322506794413f9c9e065b6c080759ab862b6..81f4707cf1a7cbdfcfc519cfbe1052cde77aa755 100644 --- a/net/minecraft/world/level/NaturalSpawner.java +++ b/net/minecraft/world/level/NaturalSpawner.java @@ -360,16 +360,18 @@ public final class NaturalSpawner { ) { EntityType entityType = data.type(); // Paper start - PreCreatureSpawnEvent - com.destroystokyo.paper.event.entity.PreCreatureSpawnEvent event = new com.destroystokyo.paper.event.entity.PreCreatureSpawnEvent( - org.bukkit.craftbukkit.util.CraftLocation.toBukkit(pos, level), - org.bukkit.craftbukkit.entity.CraftEntityType.minecraftToBukkit(entityType), org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.NATURAL - ); - if (!event.callEvent()) { - if (event.shouldAbortSpawn()) { - return PreSpawnStatus.ABORT; + if (com.destroystokyo.paper.event.entity.PreCreatureSpawnEvent.getHandlerList().getRegisteredListeners().length != 0) { // Luminol - Do not fire pre creature spawn event unless some plugin is listening it + com.destroystokyo.paper.event.entity.PreCreatureSpawnEvent event = new com.destroystokyo.paper.event.entity.PreCreatureSpawnEvent( + org.bukkit.craftbukkit.util.CraftLocation.toBukkit(pos, level), + org.bukkit.craftbukkit.entity.CraftEntityType.minecraftToBukkit(entityType), org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.NATURAL + ); + if (!event.callEvent()) { + if (event.shouldAbortSpawn()) { + return PreSpawnStatus.ABORT; + } + return PreSpawnStatus.CANCELLED; } - return PreSpawnStatus.CANCELLED; - } + } // Luminol - Do not fire pre creature spawn event unless some plugin is listening it final boolean success = entityType.getCategory() != MobCategory.MISC // Paper end - PreCreatureSpawnEvent && (