Added skin support with caching

This commit is contained in:
Martin Olischläger 2023-04-17 17:59:29 +02:00
parent 9b2884b85d
commit 38d46dccf8
2 changed files with 23 additions and 1 deletions

View File

@ -4,6 +4,7 @@ import eu.mhsl.craftattack.worldmuseum.commands.GamemodeCommand;
import eu.mhsl.craftattack.worldmuseum.commands.GcCommand;
import eu.mhsl.craftattack.worldmuseum.commands.TeleportCommand;
import eu.mhsl.craftattack.worldmuseum.listener.*;
import eu.mhsl.craftattack.worldmuseum.skins.SkinCache;
import eu.mhsl.craftattack.worldmuseum.util.Config;
import eu.mhsl.craftattack.worldmuseum.worlds.World;
import eu.mhsl.craftattack.worldmuseum.worlds.WorldManager;
@ -61,7 +62,7 @@ public class Main {
globalEventHandler.addListener(PlayerLoginEvent.class, event -> {
final Player player = event.getPlayer();
player.setSkin(PlayerSkin.fromUsername(player.getUsername()));
SkinCache.setSkin(player);
event.setSpawningInstance(startworld);
player.setRespawnPoint(startworld.getSpawn());

View File

@ -0,0 +1,21 @@
package eu.mhsl.craftattack.worldmuseum.skins;
import net.minestom.server.MinecraftServer;
import net.minestom.server.entity.Player;
import net.minestom.server.entity.PlayerSkin;
import net.minestom.server.timer.ExecutionType;
import net.minestom.server.timer.TaskSchedule;
import java.util.HashMap;
import java.util.Map;
public class SkinCache {
private static final Map<String, PlayerSkin> skins = new HashMap<>();
public static void setSkin(Player p) {
MinecraftServer.getSchedulerManager().scheduleTask(() -> {
p.setSkin(skins.computeIfAbsent(p.getUsername(), PlayerSkin::fromUsername));
System.out.println("Es sind jetzt " + skins.size() + " Skins im Cache.");
}, TaskSchedule.immediate(), TaskSchedule.stop(), ExecutionType.ASYNC);
}
}