Proper exception handling when not able to load player data file
This commit is contained in:
parent
fcac9af7d1
commit
d1a04a7a66
@ -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 they’re 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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user