Add sun related API (#1546)

These methods are used internally throughout the game for things like spawning mobs during day/night only or making them burn in daylight, etc. Now exposed for plugin usage.
This commit is contained in:
BillyGalbreath 2018-10-11 20:42:49 -05:00 committed by Daniel Ennis
parent 69cad796ab
commit a16ef75bfd
2 changed files with 113 additions and 0 deletions

View File

@ -0,0 +1,48 @@
From 86b386e1158f061a25df7b3b0a5bd56102252ce9 Mon Sep 17 00:00:00 2001
From: BillyGalbreath <Blake.Galbreath@GMail.com>
Date: Sun, 7 Oct 2018 00:54:15 -0500
Subject: [PATCH] Add sun related API
diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
index 7bfe0b68..12c4bdff 100644
--- a/src/main/java/org/bukkit/World.java
+++ b/src/main/java/org/bukkit/World.java
@@ -1204,6 +1204,16 @@ public interface World extends PluginMessageRecipient, Metadatable {
*/
public void setFullTime(long time);
+ // Paper start
+
+ /**
+ * Check if it is currently daytime in this world
+ *
+ * @return True if it is daytime
+ */
+ public boolean isDayTime();
+ // Paper end
+
/**
* Returns whether the world has an ongoing storm.
*
diff --git a/src/main/java/org/bukkit/entity/Mob.java b/src/main/java/org/bukkit/entity/Mob.java
index 48eddcd3..1b108a4a 100644
--- a/src/main/java/org/bukkit/entity/Mob.java
+++ b/src/main/java/org/bukkit/entity/Mob.java
@@ -13,6 +13,13 @@ public interface Mob extends LivingEntity, Lootable {
* @return Pathfinding Manager for this entity
*/
com.destroystokyo.paper.entity.Pathfinder getPathfinder();
+
+ /**
+ * Check if this mob is exposed to daylight
+ *
+ * @return True if mob is exposed to daylight
+ */
+ boolean isInDaylight();
// Paper end
/**
--
2.19.0

View File

@ -0,0 +1,65 @@
From e5f5534561fd40c2ef90e938c165c549e42a3e04 Mon Sep 17 00:00:00 2001
From: BillyGalbreath <Blake.Galbreath@GMail.com>
Date: Sun, 7 Oct 2018 00:54:21 -0500
Subject: [PATCH] Add sun related API
diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java
index 56542d531..6c84ec964 100644
--- a/src/main/java/net/minecraft/server/EntityInsentient.java
+++ b/src/main/java/net/minecraft/server/EntityInsentient.java
@@ -1287,6 +1287,7 @@ public abstract class EntityInsentient extends EntityLiving {
return flag;
}
+ public boolean isInDaylight() { return dq(); } // Paper - OBFHELPER
protected boolean dq() {
if (this.world.L() && !this.world.isClientSide) {
float f = this.az();
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index d659ffe9b..9d0b553a0 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -828,6 +828,7 @@ public abstract class World implements IEntityAccess, GeneratorAccess, IIBlockAc
}
}
+ public boolean isDayTime() { return L(); } // Paper - OBFHELPER
public boolean L() {
return this.G < 4;
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 02b6bf299..7a66a4af8 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -542,6 +542,12 @@ public class CraftWorld implements World {
}
}
+ // Paper start
+ public boolean isDayTime() {
+ return getHandle().isDayTime();
+ }
+ // Paper end
+
public boolean createExplosion(double x, double y, double z, float power) {
return createExplosion(x, y, z, power, false, true);
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftMob.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftMob.java
index 53c2d154e..40a429942 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftMob.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftMob.java
@@ -68,4 +68,10 @@ public abstract class CraftMob extends CraftLivingEntity implements Mob {
public long getSeed() {
return getHandle().lootTableSeed;
}
+
+ // Paper start
+ public boolean isInDaylight() {
+ return getHandle().isInDaylight();
+ }
+ // Paper end
}
--
2.19.0