mirror of
https://github.com/Suiranoil/SkinRestorer.git
synced 2026-01-16 04:42:12 +00:00
add ServerUtils for scheduling server tasks
This commit is contained in:
@@ -5,6 +5,7 @@ import net.lionarius.skinrestorer.platform.Services;
|
||||
import net.lionarius.skinrestorer.skin.SkinValue;
|
||||
import net.lionarius.skinrestorer.skin.provider.SkinShuffleSkinProvider;
|
||||
import net.lionarius.skinrestorer.util.PlayerUtils;
|
||||
import net.lionarius.skinrestorer.util.ServerUtils;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
@@ -40,7 +41,7 @@ public class SkinShuffleCompatibility {
|
||||
if (!property.hasSignature())
|
||||
return;
|
||||
|
||||
server.execute(() -> {
|
||||
ServerUtils.scheduleServerTask(server, () -> {
|
||||
SkinRestorer.applySkin(
|
||||
server,
|
||||
Collections.singleton(player.getGameProfile()),
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
package net.lionarius.skinrestorer.util;
|
||||
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class ServerUtils {
|
||||
|
||||
private ServerUtils() {}
|
||||
|
||||
public static void scheduleServerTask(MinecraftServer server, Consumer<MinecraftServer> task) {
|
||||
ServerUtils.scheduleServerTask(server, task, 0);
|
||||
}
|
||||
|
||||
public static void scheduleServerTask(MinecraftServer server, Runnable task) {
|
||||
ServerUtils.scheduleServerTask(server, task, 0);
|
||||
}
|
||||
|
||||
public static void scheduleServerTask(MinecraftServer server, Consumer<MinecraftServer> task, int tickDelay) {
|
||||
server.execute(new ScheduledTickTask(server, task, server.getTickCount() + tickDelay));
|
||||
}
|
||||
|
||||
public static void scheduleServerTask(MinecraftServer server, Runnable task, int tickDelay) {
|
||||
server.execute(new ScheduledTickTask(server, _server -> task.run(), server.getTickCount() + tickDelay));
|
||||
}
|
||||
|
||||
public record ScheduledTickTask(MinecraftServer server, Consumer<MinecraftServer> task,
|
||||
int tickTarget) implements Runnable {
|
||||
@Override
|
||||
public void run() {
|
||||
if (this.server.getTickCount() >= this.tickTarget)
|
||||
this.task.accept(this.server);
|
||||
else
|
||||
this.server.execute(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user