spigot/CraftBukkit-Patches/0102-Implement-SpawnerSpawnEvent.patch

57 lines
2.7 KiB
Diff
Raw Normal View History

2019-04-23 12:00:00 +10:00
From fb39e0a56e8b94b91e4cd3a0ce8028a89965a45e Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Thu, 3 Mar 2016 19:45:46 +1100
Subject: [PATCH] Implement SpawnerSpawnEvent.
diff --git a/src/main/java/net/minecraft/server/MobSpawnerAbstract.java b/src/main/java/net/minecraft/server/MobSpawnerAbstract.java
2019-04-23 12:00:00 +10:00
index bc2ee3dc..44c2abac 100644
--- a/src/main/java/net/minecraft/server/MobSpawnerAbstract.java
+++ b/src/main/java/net/minecraft/server/MobSpawnerAbstract.java
2019-04-23 12:00:00 +10:00
@@ -133,6 +133,16 @@ public abstract class MobSpawnerAbstract {
{
entity.fromMobSpawner = true;
2017-05-18 21:20:15 +10:00
}
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callSpawnerSpawnEvent(entity, blockposition).isCancelled()) {
+ Entity vehicle = entity.getVehicle();
+ if (vehicle != null) {
+ vehicle.dead = true;
+ }
2018-10-23 06:00:00 +11:00
+ for (Entity passenger : entity.getAllPassengers()) {
+ passenger.dead = true;
+ }
+ continue;
+ }
2017-05-18 21:20:15 +10:00
// Spigot End
2019-04-23 12:00:00 +10:00
this.a(entity);
world.triggerEffect(2004, blockposition, 0);
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
2019-04-23 12:00:00 +10:00
index db6d8f23..7fee3113 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
2019-04-23 12:00:00 +10:00
@@ -1193,6 +1193,21 @@ public class CraftEventFactory {
return event;
}
2016-03-12 20:59:15 +11:00
+ /**
+ * Mob spawner event.
+ */
+ public static SpawnerSpawnEvent callSpawnerSpawnEvent(Entity spawnee, BlockPosition pos) {
+ org.bukkit.craftbukkit.entity.CraftEntity entity = spawnee.getBukkitEntity();
+ BlockState state = entity.getWorld().getBlockAt(pos.getX(), pos.getY(), pos.getZ()).getState();
+ if (!(state instanceof org.bukkit.block.CreatureSpawner)) {
+ state = null;
+ }
+
+ SpawnerSpawnEvent event = new SpawnerSpawnEvent(entity, (org.bukkit.block.CreatureSpawner) state);
+ entity.getServer().getPluginManager().callEvent(event);
+ return event;
+ }
2016-03-12 20:59:15 +11:00
+
public static EntityToggleGlideEvent callToggleGlideEvent(EntityLiving entity, boolean gliding) {
EntityToggleGlideEvent event = new EntityToggleGlideEvent((LivingEntity) entity.getBukkitEntity(), gliding);
entity.world.getServer().getPluginManager().callEvent(event);
--
2019-04-23 09:33:25 +10:00
2.20.1