From cbfa49ddb694c7f8032b7a0a36cbe3a4882a87ae Mon Sep 17 00:00:00 2001 From: BillyGalbreath <Blake.Galbreath@GMail.com> Date: Sun, 23 Aug 2020 16:32:03 +0200 Subject: [PATCH] Add moon phase API --- .../io/papermc/paper/world/MoonPhase.java | 35 +++++++++++++++++++ .../main/java/org/bukkit/RegionAccessor.java | 8 +++++ 2 files changed, 43 insertions(+) create mode 100644 paper-api/src/main/java/io/papermc/paper/world/MoonPhase.java diff --git a/paper-api/src/main/java/io/papermc/paper/world/MoonPhase.java b/paper-api/src/main/java/io/papermc/paper/world/MoonPhase.java new file mode 100644 index 0000000000..0b24e1a92b --- /dev/null +++ b/paper-api/src/main/java/io/papermc/paper/world/MoonPhase.java @@ -0,0 +1,35 @@ +package io.papermc.paper.world; + +import java.util.HashMap; +import java.util.Map; +import org.jspecify.annotations.NullMarked; + +@NullMarked +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(final long day) { + this.day = day; + } + + private static final Map<Long, MoonPhase> BY_DAY = new HashMap<>(); + + static { + for (final MoonPhase phase : values()) { + BY_DAY.put(phase.day, phase); + } + } + + public static MoonPhase getPhase(final long day) { + return BY_DAY.get(day % 8L); + } +} diff --git a/paper-api/src/main/java/org/bukkit/RegionAccessor.java b/paper-api/src/main/java/org/bukkit/RegionAccessor.java index 316d04db78..27eff0826d 100644 --- a/paper-api/src/main/java/org/bukkit/RegionAccessor.java +++ b/paper-api/src/main/java/org/bukkit/RegionAccessor.java @@ -445,4 +445,12 @@ public interface RegionAccessor { */ @NotNull public <T extends Entity> T addEntity(@NotNull T entity); + + // Paper start + /** + * @return the current moon phase at the current time in the world + */ + @NotNull + io.papermc.paper.world.MoonPhase getMoonPhase(); + // Paper end }