Compare commits

...

2 Commits

3 changed files with 24 additions and 7 deletions

View File

@ -5,6 +5,7 @@ import fr.pandacube.lib.paper.reflect.wrapper.craftbukkit.CraftServer;
import fr.pandacube.lib.paper.reflect.wrapper.minecraft.nbt.CompoundTag; import fr.pandacube.lib.paper.reflect.wrapper.minecraft.nbt.CompoundTag;
import fr.pandacube.lib.paper.reflect.wrapper.minecraft.nbt.NbtIo; import fr.pandacube.lib.paper.reflect.wrapper.minecraft.nbt.NbtIo;
import fr.pandacube.lib.paper.util.PlayerDataWrapper; import fr.pandacube.lib.paper.util.PlayerDataWrapper;
import fr.pandacube.lib.paper.util.PlayerDataWrapper.PlayerDataLoadException;
import fr.pandacube.lib.paper.world.WorldUtil; import fr.pandacube.lib.paper.world.WorldUtil;
import fr.pandacube.lib.players.standalone.AbstractOffPlayer; import fr.pandacube.lib.players.standalone.AbstractOffPlayer;
import fr.pandacube.lib.reflect.wrapper.ReflectWrapper; import fr.pandacube.lib.reflect.wrapper.ReflectWrapper;
@ -155,12 +156,16 @@ public interface PaperOffPlayer extends AbstractOffPlayer {
*/ */
default CompoundTag getPlayerData() { default CompoundTag getPlayerData() {
if (isOnline()) if (isOnline())
throw new IllegalStateException("Cannot access data file of " + getName() + " because theyre online."); throw new IllegalStateException("Cannot access data file of " + getName() + " because they're online.");
return ReflectWrapper.wrapTyped(Bukkit.getServer(), CraftServer.class) try {
.getServer() return ReflectWrapper.wrapTyped(Bukkit.getServer(), CraftServer.class)
.getPlayerList() .getServer()
.playerIo() .getPlayerList()
.load(getName(), getUniqueId().toString()).orElse(null); .playerIo()
.load(getName(), getUniqueId().toString()).orElse(null);
} catch (Exception|LinkageError e) {
throw new PlayerDataLoadException(getName(), getUniqueId(), e);
}
} }
/** /**

View File

@ -103,7 +103,8 @@ public class GameWorldUtils implements Listener {
} }
w.setAutoSave(false); w.setAutoSave(false);
gameWorld.put(world, w); gameWorld.put(world, w);
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "mvm set hidden true "+copiedName); if (Bukkit.getPluginManager().getPlugin("Multiverse-Core") != null)
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "mvm set hidden true "+copiedName);
operationOnLoad.accept(w); operationOnLoad.accept(w);
return w; return w;
} }

View File

@ -21,6 +21,7 @@ import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.Objects; import java.util.Objects;
import java.util.TreeMap; import java.util.TreeMap;
import java.util.UUID;
import java.util.function.IntUnaryOperator; import java.util.function.IntUnaryOperator;
/** /**
@ -362,4 +363,14 @@ public record PlayerDataWrapper(CompoundTag data) {
return null; return null;
} }
} }
public static class PlayerDataLoadException extends RuntimeException {
public PlayerDataLoadException(String playerName, UUID playerId, Throwable cause) {
super("Unable to load data of player " + playerName + " (" + playerId + ")", cause);
}
}
} }