From a16ef75bfdf36e43730c887693b63fd86c34cb26 Mon Sep 17 00:00:00 2001 From: BillyGalbreath Date: Thu, 11 Oct 2018 20:42:49 -0500 Subject: [PATCH] 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. --- .../0160-Add-sun-related-API.patch | 48 ++++++++++++++ .../0387-Add-sun-related-API.patch | 65 +++++++++++++++++++ 2 files changed, 113 insertions(+) create mode 100644 Spigot-API-Patches/0160-Add-sun-related-API.patch create mode 100644 Spigot-Server-Patches/0387-Add-sun-related-API.patch diff --git a/Spigot-API-Patches/0160-Add-sun-related-API.patch b/Spigot-API-Patches/0160-Add-sun-related-API.patch new file mode 100644 index 000000000..d0b585f31 --- /dev/null +++ b/Spigot-API-Patches/0160-Add-sun-related-API.patch @@ -0,0 +1,48 @@ +From 86b386e1158f061a25df7b3b0a5bd56102252ce9 Mon Sep 17 00:00:00 2001 +From: BillyGalbreath +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 + diff --git a/Spigot-Server-Patches/0387-Add-sun-related-API.patch b/Spigot-Server-Patches/0387-Add-sun-related-API.patch new file mode 100644 index 000000000..0ca8a31ad --- /dev/null +++ b/Spigot-Server-Patches/0387-Add-sun-related-API.patch @@ -0,0 +1,65 @@ +From e5f5534561fd40c2ef90e938c165c549e42a3e04 Mon Sep 17 00:00:00 2001 +From: BillyGalbreath +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 +