From a222e4a252012ef3b5d6b711f723749ccc14a240 Mon Sep 17 00:00:00 2001 From: Parker Hawke Date: Sun, 16 Sep 2018 12:57:03 -0400 Subject: Implement BatToggleSleepEvent --- nms-patches/EntityBat.patch | 60 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 nms-patches/EntityBat.patch (limited to 'nms-patches') diff --git a/nms-patches/EntityBat.patch b/nms-patches/EntityBat.patch new file mode 100644 index 00000000..44295d9e --- /dev/null +++ b/nms-patches/EntityBat.patch @@ -0,0 +1,60 @@ +--- a/net/minecraft/server/EntityBat.java ++++ b/net/minecraft/server/EntityBat.java +@@ -3,6 +3,7 @@ + import java.time.LocalDate; + import java.time.temporal.ChronoField; + import javax.annotation.Nullable; ++import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit + + public class EntityBat extends EntityAmbient { + +@@ -94,12 +95,20 @@ + } + + if (this.world.b(this, 4.0D) != null) { ++ // CraftBukkit Start - Call BatToggleSleepEvent ++ if (CraftEventFactory.handleBatToggleSleepEvent(this, true)) { ++ this.setAsleep(false); ++ this.world.a((EntityHuman) null, 1025, blockposition, 0); ++ } ++ // CraftBukkit End ++ } ++ } else { ++ // CraftBukkit Start - Call BatToggleSleepEvent ++ if (CraftEventFactory.handleBatToggleSleepEvent(this, true)) { + this.setAsleep(false); + this.world.a((EntityHuman) null, 1025, blockposition, 0); + } +- } else { +- this.setAsleep(false); +- this.world.a((EntityHuman) null, 1025, blockposition, 0); ++ // CraftBukkit End - Call BatToggleSleepEvent + } + } else { + if (this.b != null && (!this.world.isEmpty(this.b) || this.b.getY() < 1)) { +@@ -123,7 +132,11 @@ + this.bj = 0.5F; + this.yaw += f1; + if (this.random.nextInt(100) == 0 && this.world.getType(blockposition1).isOccluding()) { +- this.setAsleep(true); ++ // CraftBukkit Start - Call BatToggleSleepEvent ++ if (CraftEventFactory.handleBatToggleSleepEvent(this, false)) { ++ this.setAsleep(true); ++ } ++ // CraftBukkit End + } + } + +@@ -146,7 +159,11 @@ + return false; + } else { + if (!this.world.isClientSide && this.isAsleep()) { +- this.setAsleep(false); ++ // CraftBukkit Start - Call BatToggleSleepEvent ++ if (CraftEventFactory.handleBatToggleSleepEvent(this, true)) { ++ this.setAsleep(false); ++ } ++ // CraftBukkit End - Call BatToggleSleepEvent + } + + return super.damageEntity(damagesource, f); -- cgit v1.2.3