Add moon phase API

This commit is contained in:
BillyGalbreath 2020-08-23 16:32:03 +02:00
parent 5df47beccf
commit cbfa49ddb6
2 changed files with 43 additions and 0 deletions

View file

@ -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);
}
}

View file

@ -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
}