hytale-server/com/hypixel/hytale/builtin/beds/sleep/components/PlayerSleep.java

35 lines
1.4 KiB
Java

package com.hypixel.hytale.builtin.beds.sleep.components;
import com.hypixel.hytale.server.core.modules.time.WorldTimeResource;
import java.time.Instant;
public sealed interface PlayerSleep permits PlayerSleep.FullyAwake, PlayerSleep.MorningWakeUp, PlayerSleep.NoddingOff, PlayerSleep.Slumber {
public static enum FullyAwake implements PlayerSleep {
INSTANCE;
}
public record MorningWakeUp(Instant gameTimeStart) implements PlayerSleep {
public static PlayerSomnolence createComponent(WorldTimeResource worldTimeResource) {
Instant now = worldTimeResource.getGameTime();
PlayerSleep.MorningWakeUp state = new PlayerSleep.MorningWakeUp(now);
return new PlayerSomnolence(state);
}
}
public record NoddingOff(Instant realTimeStart) implements PlayerSleep {
public static PlayerSomnolence createComponent() {
Instant now = Instant.now();
PlayerSleep.NoddingOff state = new PlayerSleep.NoddingOff(now);
return new PlayerSomnolence(state);
}
}
public record Slumber(Instant gameTimeStart) implements PlayerSleep {
public static PlayerSomnolence createComponent(WorldTimeResource worldTimeResource) {
Instant now = worldTimeResource.getGameTime();
PlayerSleep.Slumber state = new PlayerSleep.Slumber(now);
return new PlayerSomnolence(state);
}
}
}