From cbe0ac7ce16b7712790de112f5fa3a1aed662c20 Mon Sep 17 00:00:00 2001 From: md_5 Date: Sat, 3 Jul 2021 09:36:51 +1000 Subject: [PATCH] SPIGOT-6616: Cancellable StriderTemperatureChangeEvent --- .../net/minecraft/world/entity/monster/EntityStrider.patch | 7 ++++--- .../org/bukkit/craftbukkit/event/CraftEventFactory.java | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/nms-patches/net/minecraft/world/entity/monster/EntityStrider.patch b/nms-patches/net/minecraft/world/entity/monster/EntityStrider.patch index 24a022828..2a48c8d85 100644 --- a/nms-patches/net/minecraft/world/entity/monster/EntityStrider.patch +++ b/nms-patches/net/minecraft/world/entity/monster/EntityStrider.patch @@ -1,14 +1,15 @@ --- a/net/minecraft/world/entity/monster/EntityStrider.java +++ b/net/minecraft/world/entity/monster/EntityStrider.java -@@ -321,7 +321,12 @@ +@@ -321,7 +321,13 @@ IBlockData iblockdata1 = this.aU(); boolean flag = iblockdata.a((Tag) TagsBlock.STRIDER_WARM_BLOCKS) || iblockdata1.a((Tag) TagsBlock.STRIDER_WARM_BLOCKS) || this.b((Tag) TagsFluid.LAVA) > 0.0D; - this.setShivering(!flag); + // CraftBukkit start + if (!flag ^ this.isShivering()) { -+ org.bukkit.craftbukkit.event.CraftEventFactory.callStriderTemperatureChangeEvent(this, !flag); -+ this.setShivering(!flag); ++ if (org.bukkit.craftbukkit.event.CraftEventFactory.callStriderTemperatureChangeEvent(this, !flag)) { ++ this.setShivering(!flag); ++ } + } + // CraftBukkit end super.tick(); diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java index 5d306e87f..b856486c2 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -1585,9 +1585,10 @@ public class CraftEventFactory { return event; } - public static void callStriderTemperatureChangeEvent(EntityStrider strider, boolean shivering) { + public static boolean callStriderTemperatureChangeEvent(EntityStrider strider, boolean shivering) { StriderTemperatureChangeEvent event = new StriderTemperatureChangeEvent((Strider) strider.getBukkitEntity(), shivering); Bukkit.getPluginManager().callEvent(event); + return !event.isCancelled(); } public static boolean handleEntitySpellCastEvent(EntityIllagerWizard caster, EntityIllagerWizard.Spell spell) {