aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0109-Add-EntityZapEvent.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/server/0109-Add-EntityZapEvent.patch')
-rw-r--r--patches/server/0109-Add-EntityZapEvent.patch48
1 files changed, 48 insertions, 0 deletions
diff --git a/patches/server/0109-Add-EntityZapEvent.patch b/patches/server/0109-Add-EntityZapEvent.patch
new file mode 100644
index 0000000000..545c1bc427
--- /dev/null
+++ b/patches/server/0109-Add-EntityZapEvent.patch
@@ -0,0 +1,48 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: AlphaBlend <[email protected]>
+Date: Sun, 16 Oct 2016 23:19:30 -0700
+Subject: [PATCH] Add EntityZapEvent
+
+
+diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
+index 2a7c82be934a965ba26dc7bf1f60689360bda487..33d1a6b31afec4dbeb00dcabf50c5840852102d6 100644
+--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
++++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
+@@ -836,9 +836,17 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
+ @Override
+ public void thunderHit(ServerLevel world, LightningBolt lightning) {
+ if (world.getDifficulty() != Difficulty.PEACEFUL) {
+- Villager.LOGGER.info("Villager {} was struck by lightning {}.", this, lightning);
++ // Paper - move log down, event can cancel
+ Witch entitywitch = (Witch) EntityType.WITCH.create(world);
+
++ // Paper start
++ if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityZapEvent(this, lightning, entitywitch).isCancelled()) {
++ return;
++ }
++ // Paper end
++
++ if (org.spigotmc.SpigotConfig.logVillagerDeaths) Villager.LOGGER.info("Villager {} was struck by lightning {}.", this, lightning); // Paper - move log down, event can cancel
++
+ entitywitch.moveTo(this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot());
+ entitywitch.finalizeSpawn(world, world.getCurrentDifficultyAt(entitywitch.blockPosition()), MobSpawnType.CONVERSION, (SpawnGroupData) null, (CompoundTag) null);
+ entitywitch.setNoAi(this.isNoAi());
+diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+index 97a614e2367439dbface4a258f966c0440ef965d..a2e289ac5e3d0d04b65ec3bf03bebbaad585cc24 100644
+--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
++++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+@@ -1153,6 +1153,14 @@ public class CraftEventFactory {
+ return event;
+ }
+
++ // Paper start
++ public static com.destroystokyo.paper.event.entity.EntityZapEvent callEntityZapEvent (Entity entity, Entity lightning, Entity changedEntity) {
++ com.destroystokyo.paper.event.entity.EntityZapEvent event = new com.destroystokyo.paper.event.entity.EntityZapEvent(entity.getBukkitEntity(), (LightningStrike) lightning.getBukkitEntity(), changedEntity.getBukkitEntity());
++ entity.getBukkitEntity().getServer().getPluginManager().callEvent(event);
++ return event;
++ }
++ // Paper end
++
+ public static HorseJumpEvent callHorseJumpEvent(Entity horse, float power) {
+ HorseJumpEvent event = new HorseJumpEvent((AbstractHorse) horse.getBukkitEntity(), power);
+ horse.getBukkitEntity().getServer().getPluginManager().callEvent(event);