aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0108-Add-EntityZapEvent.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/server/0108-Add-EntityZapEvent.patch')
-rw-r--r--patches/server/0108-Add-EntityZapEvent.patch48
1 files changed, 48 insertions, 0 deletions
diff --git a/patches/server/0108-Add-EntityZapEvent.patch b/patches/server/0108-Add-EntityZapEvent.patch
new file mode 100644
index 0000000000..0e80811908
--- /dev/null
+++ b/patches/server/0108-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 63c10be6eacd7108b8b4795d76bf624e0614440a..243eb1e54293c763a06febff551c051398d43535 100644
+--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
++++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
+@@ -846,10 +846,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 - Add EntityZapEvent; move log down, event can cancel
+ Witch entitywitch = (Witch) EntityType.WITCH.create(world);
+
+ if (entitywitch != null) {
++ // Paper start - Add EntityZapEvent
++ if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityZapEvent(this, lightning, entitywitch).isCancelled()) {
++ return;
++ }
++ if (org.spigotmc.SpigotConfig.logVillagerDeaths) Villager.LOGGER.info("Villager {} was struck by lightning {}.", this, lightning); // Move down
++ // Paper end - Add EntityZapEvent
++
+ entitywitch.moveTo(this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot());
+ entitywitch.finalizeSpawn(world, world.getCurrentDifficultyAt(entitywitch.blockPosition()), MobSpawnType.CONVERSION, (SpawnGroupData) 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 9c0e38453e164ef394c8e1860fb92605cda71be5..ba8dfea4a88cb9ba881cd90dfb5d41087498ae54 100644
+--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
++++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+@@ -1202,6 +1202,14 @@ public class CraftEventFactory {
+ return !event.isCancelled();
+ }
+
++ // 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 boolean callEntityChangeBlockEvent(Entity entity, BlockPos position, net.minecraft.world.level.block.state.BlockState newBlock) {
+ return CraftEventFactory.callEntityChangeBlockEvent(entity, position, newBlock, false);
+ }