From 407742d65e093fcb102240c553e5cde499bd5245 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sat, 1 Feb 2020 22:22:26 -0600 Subject: [PATCH] Add moon phase API --- patches/api/0030-Add-moon-phase-API.patch | 75 ++++++++++++++++++++ patches/server/0101-Add-moon-phase-API.patch | 28 ++++++++ 2 files changed, 103 insertions(+) create mode 100644 patches/api/0030-Add-moon-phase-API.patch create mode 100644 patches/server/0101-Add-moon-phase-API.patch diff --git a/patches/api/0030-Add-moon-phase-API.patch b/patches/api/0030-Add-moon-phase-API.patch new file mode 100644 index 000000000..9c1f5148e --- /dev/null +++ b/patches/api/0030-Add-moon-phase-API.patch @@ -0,0 +1,75 @@ +From afac0359f02085127ab36121d871e8685a39de85 Mon Sep 17 00:00:00 2001 +From: William Blake Galbreath +Date: Sat, 1 Feb 2020 22:22:07 -0600 +Subject: [PATCH] Add moon phase API + +--- + src/main/java/net/pl3x/purpur/MoonPhase.java | 36 ++++++++++++++++++++ + src/main/java/org/bukkit/World.java | 8 +++++ + 2 files changed, 44 insertions(+) + create mode 100644 src/main/java/net/pl3x/purpur/MoonPhase.java + +diff --git a/src/main/java/net/pl3x/purpur/MoonPhase.java b/src/main/java/net/pl3x/purpur/MoonPhase.java +new file mode 100644 +index 000000000..f5ad98c62 +--- /dev/null ++++ b/src/main/java/net/pl3x/purpur/MoonPhase.java +@@ -0,0 +1,36 @@ ++package net.pl3x.purpur; ++ ++import org.jetbrains.annotations.NotNull; ++ ++import java.util.HashMap; ++import java.util.Map; ++ ++public enum MoonPhase { ++ FULL_MOON(0L), ++ WANING_GIBBOUS(1L), ++ LAST_QUARTER(2L), ++ WANING_CRESCENT(3L), ++ NEW_MOON(4L), ++ WAXING_CRESCENT(5L), ++ FIRST_QUARTER(6L), ++ WAXING_GIBBOUS(7L); ++ ++ private final long day; ++ ++ MoonPhase(long day) { ++ this.day = day; ++ } ++ ++ private static final Map BY_DAY = new HashMap<>(); ++ ++ static { ++ for (MoonPhase phase : values()) { ++ BY_DAY.put(phase.day, phase); ++ } ++ } ++ ++ @NotNull ++ public static MoonPhase getPhase(long day) { ++ return BY_DAY.get(day % 8L); ++ } ++} +diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java +index 5a28b8bed..887598ff7 100644 +--- a/src/main/java/org/bukkit/World.java ++++ b/src/main/java/org/bukkit/World.java +@@ -3096,6 +3096,14 @@ public interface World extends PluginMessageRecipient, Metadatable { + */ + @NotNull + BlockData getPlacementBlockData(@NotNull BlockData blockData, @NotNull Location location); ++ ++ /** ++ * Get the moon phase of the world at the current time ++ * ++ * @return Current moon phase ++ */ ++ @NotNull ++ net.pl3x.purpur.MoonPhase getMoonPhase(); + // Purpur end + + /** +-- +2.24.0 + diff --git a/patches/server/0101-Add-moon-phase-API.patch b/patches/server/0101-Add-moon-phase-API.patch new file mode 100644 index 000000000..e3892630a --- /dev/null +++ b/patches/server/0101-Add-moon-phase-API.patch @@ -0,0 +1,28 @@ +From 5d15f8bf3d32deeee04dce199344cd0b440b40e9 Mon Sep 17 00:00:00 2001 +From: William Blake Galbreath +Date: Sat, 1 Feb 2020 22:22:16 -0600 +Subject: [PATCH] Add moon phase API + +--- + src/main/java/org/bukkit/craftbukkit/CraftWorld.java | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +index 156d64d77f..7fded2ec01 100644 +--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java ++++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +@@ -2421,6 +2421,11 @@ public class CraftWorld implements World { + IBlockData validData = net.minecraft.server.Block.getValidBlockForPosition(((CraftBlockData) blockdata).getState(), getHandle(), net.minecraft.server.MCUtil.toBlockPosition(location)); + return CraftBlockData.fromData(validData == null ? Blocks.AIR.getBlockData() : validData); + } ++ ++ @Override ++ public net.pl3x.purpur.MoonPhase getMoonPhase() { ++ return net.pl3x.purpur.MoonPhase.getPhase(getFullTime()); ++ } + // Purpur end + + // Paper start +-- +2.24.0 +