tweaks724/src/main/java/eu/m724/tweaks/sleep/TimeForwardRunnable.java
2024-12-11 15:51:54 +01:00

50 lines
1.6 KiB
Java

/*
* Copyright (C) 2024 Minecon724
* Tweaks724 is licensed under the GNU General Public License. See the LICENSE.md file
* in the project root for the full license text.
*/
package eu.m724.tweaks.sleep;
import org.bukkit.GameRule;
import org.bukkit.Server;
import org.bukkit.World;
import org.bukkit.plugin.Plugin;
import org.bukkit.scheduler.BukkitRunnable;
public class TimeForwardRunnable extends BukkitRunnable {
private final Server server;
private final World world; // TODO multi worlds
private final double percentage;
public TimeForwardRunnable(Plugin plugin) {
this.server = plugin.getServer();
this.world = server.getWorld("world");
this.percentage = (world.getGameRuleValue(GameRule.PLAYERS_SLEEPING_PERCENTAGE) / 100.0);
}
@Override
public void run() {
int playersSleeping = SleepState.playersSleeping;
//System.out.println(playersSleeping);
if (playersSleeping == 0) return;
int onlinePlayers = (int) (server.getOnlinePlayers().size() / percentage); // TODO optimize remove size every tick maybe
double sleepPercentage = (double) playersSleeping / onlinePlayers;
// we want sleep to take 200 ticks which is 10 seconds assuming all palyres onilien
long time = world.getTime();
long untilDay = 23459 - time;
if (untilDay == 0) return;
long perSkip = 200 + (100000 / -untilDay);
perSkip = Math.clamp(perSkip, 20, 200);
perSkip = (long) (perSkip * sleepPercentage);
world.setTime(world.getTime() + perSkip);
}
}