summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorParker Hawke <hawkeboyz2@hotmail.com>2018-09-16 12:57:03 -0400
committermd_5 <git@md-5.net>2018-09-17 16:49:45 +1000
commita222e4a252012ef3b5d6b711f723749ccc14a240 (patch)
tree31f215759d73a70377ad5951f7ade2093c82d717
parent79ada744cba8ddec39bd65adc12adefa9c8a45d3 (diff)
downloadcraftbukkit-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.patch60
-rw-r--r--src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java7
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();
+ }
}