Fix shutdown crash with PDC (rollback switch to using task)

feat/data-edit-commands
William278 2 years ago
parent 4288742052
commit ce3350c6fa

@ -436,11 +436,9 @@ public class BukkitPlayer extends OnlineUser {
@Override
public CompletableFuture<PersistentDataContainerData> getPersistentDataContainer() {
final CompletableFuture<PersistentDataContainerData> future = new CompletableFuture<>();
final Map<String, PersistentDataTag<?>> persistentDataMap = new HashMap<>();
Bukkit.getScheduler().runTask(BukkitHuskSync.getInstance(), () -> {
final PersistentDataContainer container = player.getPersistentDataContainer();
final PersistentDataContainer container = player.getPersistentDataContainer();
return CompletableFuture.supplyAsync(() -> {
container.getKeys().forEach(key -> {
BukkitPersistentTypeMapping<?, ?> type = null;
for (BukkitPersistentTypeMapping<?, ?> dataType : BukkitPersistentTypeMapping.PRIMITIVE_TYPE_MAPPINGS) {
@ -453,10 +451,8 @@ public class BukkitPlayer extends OnlineUser {
persistentDataMap.put(key.toString(), type.getContainerValue(container, key));
}
});
future.complete(new PersistentDataContainerData(persistentDataMap));
});
return future.exceptionally(throwable -> {
return new PersistentDataContainerData(persistentDataMap);
}).exceptionally(throwable -> {
BukkitHuskSync.getInstance().log(Level.WARNING,
"Could not read " + player.getName() + "'s persistent data map, skipping!");
throwable.printStackTrace();
@ -477,7 +473,7 @@ public class BukkitPlayer extends OnlineUser {
.ifPresentOrElse(mapping -> mapping.setContainerValue(container, player, key),
() -> BukkitHuskSync.getInstance().log(Level.WARNING,
"Could not set " + player.getName() + "'s persistent data key " + keyString +
" as it has an invalid type. Skipping!"));
" as it has an invalid type. Skipping!"));
}
});
}).exceptionally(throwable -> {

Loading…
Cancel
Save