diff --git a/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldGuardEntityListener.java b/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldGuardEntityListener.java index 67e2c8b8..1037ad42 100644 --- a/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldGuardEntityListener.java +++ b/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldGuardEntityListener.java @@ -603,7 +603,7 @@ public class WorldGuardEntityListener extends AbstractListener { WorldConfiguration wcfg = getWorldConfig(event.getEntity().getWorld()); // allow spawning of creatures from plugins - if (!wcfg.blockPluginSpawning && event.getSpawnReason() == CreatureSpawnEvent.SpawnReason.CUSTOM) { + if (!wcfg.blockPluginSpawning && Entities.isPluginSpawning(event.getSpawnReason())) { return; } diff --git a/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/util/Entities.java b/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/util/Entities.java index a477d52a..e106b659 100644 --- a/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/util/Entities.java +++ b/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/util/Entities.java @@ -44,6 +44,7 @@ import org.bukkit.entity.TNTPrimed; import org.bukkit.entity.Tameable; import org.bukkit.entity.Vehicle; import org.bukkit.entity.minecart.ExplosiveMinecart; +import org.bukkit.event.entity.CreatureSpawnEvent; import org.bukkit.inventory.InventoryHolder; import org.bukkit.projectiles.ProjectileSource; @@ -230,4 +231,18 @@ public final class Entities { public static boolean isAoECloud(EntityType type) { return type == EntityType.AREA_EFFECT_CLOUD; } + + /** + * Check whether the spawn reason should be considered as a "plugin spawning". + * This is true for custom creations or the summon command. + * + * @param spawnReason the reason + * @return true if considerd plugin spawning + */ + public static boolean isPluginSpawning(CreatureSpawnEvent.SpawnReason spawnReason) { + return switch (spawnReason) { + case CUSTOM, COMMAND -> true; + default -> false; + }; + } }