From 00604eb485bc4876b73555ae7c8671199b07437e Mon Sep 17 00:00:00 2001 From: Sollace Date: Sun, 21 May 2023 17:39:02 +0100 Subject: [PATCH] Fixed day ponies sleeping being sent to the next night --- src/main/java/com/minelittlepony/unicopia/Race.java | 4 ++++ .../unicopia/server/world/NocturnalSleepManager.java | 10 +++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/minelittlepony/unicopia/Race.java b/src/main/java/com/minelittlepony/unicopia/Race.java index 9bd072d7..4524ce67 100644 --- a/src/main/java/com/minelittlepony/unicopia/Race.java +++ b/src/main/java/com/minelittlepony/unicopia/Race.java @@ -76,6 +76,10 @@ public record Race (boolean canCast, FlightType flightType, boolean canUseEarth, return this == UNSET || this == HUMAN; } + public boolean isDayurnal() { + return !isNocturnal(); + } + public boolean isOp() { return this == ALICORN; } diff --git a/src/main/java/com/minelittlepony/unicopia/server/world/NocturnalSleepManager.java b/src/main/java/com/minelittlepony/unicopia/server/world/NocturnalSleepManager.java index 034f517b..f8d4be13 100644 --- a/src/main/java/com/minelittlepony/unicopia/server/world/NocturnalSleepManager.java +++ b/src/main/java/com/minelittlepony/unicopia/server/world/NocturnalSleepManager.java @@ -1,10 +1,14 @@ package com.minelittlepony.unicopia.server.world; import java.util.List; +import java.util.stream.Collectors; +import com.minelittlepony.unicopia.Race; import com.minelittlepony.unicopia.entity.player.Pony; import net.fabricmc.fabric.api.entity.event.v1.EntitySleepEvents; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.world.ServerWorld; import net.minecraft.server.world.SleepManager; @@ -28,7 +32,11 @@ public class NocturnalSleepManager extends SleepManager { } public void skipTime() { - if (world.getGameRules().getBoolean(GameRules.DO_DAYLIGHT_CYCLE)) { + if (world.getGameRules().getBoolean(GameRules.DO_DAYLIGHT_CYCLE) && world.getPlayers().stream() + .filter(LivingEntity::isSleeping) + .map(Pony::of) + .map(Pony::getActualSpecies) + .noneMatch(Race::isDayurnal)) { world.setTimeOfDay(world.getLevelProperties().getTimeOfDay() - DAY_LENGTH + 13500); } }