diff options
author | Parker Hawke <hawkeboyz2@hotmail.com> | 2018-09-16 12:57:03 -0400 |
---|---|---|
committer | md_5 <git@md-5.net> | 2018-09-17 16:49:45 +1000 |
commit | a222e4a252012ef3b5d6b711f723749ccc14a240 (patch) | |
tree | 31f215759d73a70377ad5951f7ade2093c82d717 | |
parent | 79ada744cba8ddec39bd65adc12adefa9c8a45d3 (diff) | |
download | craftbukkit-a222e4a252012ef3b5d6b711f723749ccc14a240.tar craftbukkit-a222e4a252012ef3b5d6b711f723749ccc14a240.tar.gz craftbukkit-a222e4a252012ef3b5d6b711f723749ccc14a240.tar.lz craftbukkit-a222e4a252012ef3b5d6b711f723749ccc14a240.tar.xz craftbukkit-a222e4a252012ef3b5d6b711f723749ccc14a240.zip |
Implement BatToggleSleepEvent
-rw-r--r-- | nms-patches/EntityBat.patch | 60 | ||||
-rw-r--r-- | src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java | 7 |
2 files changed, 67 insertions, 0 deletions
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); diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java index c1acd202..deb166d7 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -36,6 +36,7 @@ import org.bukkit.craftbukkit.util.CraftDamageSource; import org.bukkit.craftbukkit.util.CraftMagicNumbers; import org.bukkit.entity.AreaEffectCloud; import org.bukkit.entity.Arrow; +import org.bukkit.entity.Bat; import org.bukkit.entity.Creeper; import org.bukkit.entity.EntityType; import org.bukkit.entity.ExperienceOrb; @@ -1122,4 +1123,10 @@ public class CraftEventFactory { return !event.isCancelled(); } + + public static boolean handleBatToggleSleepEvent(Entity bat, boolean awake) { + BatToggleSleepEvent event = new BatToggleSleepEvent((Bat) bat.getBukkitEntity(), awake); + Bukkit.getPluginManager().callEvent(event); + return !event.isCancelled(); + } } |