35 lines
1.4 KiB
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);
|
|
}
|
|
}
|
|
}
|