diff --git a/src/main/java/org/mvplugins/multiverse/inventories/commands/PlayerDataImportCommand.java b/src/main/java/org/mvplugins/multiverse/inventories/commands/PlayerDataImportCommand.java index 30966164..ce4f57f1 100644 --- a/src/main/java/org/mvplugins/multiverse/inventories/commands/PlayerDataImportCommand.java +++ b/src/main/java/org/mvplugins/multiverse/inventories/commands/PlayerDataImportCommand.java @@ -63,16 +63,16 @@ void onCommand(MVCommandIssuer issuer, World world) { continue; } UUID playerUUID = UUID.fromString(Files.getNameWithoutExtension(playerDataFile.getName())); - Try profileData = playerDataExtractor.extract(playerDataFile.toPath()); - playerDataFutures.add(profileDataSource - .getGlobalProfile(GlobalProfileKey.of(playerUUID)) - .thenCompose(profileDataSource::updateGlobalProfile) - .thenCompose(ignore -> profileDataSource.getPlayerProfile( - ProfileKey.of(ContainerType.WORLD, world.getName(), ProfileTypes.getDefault(), playerUUID))) - .thenCompose(playerProfile -> { - playerProfile.update(profileData.get()); - return profileDataSource.updatePlayerProfile(playerProfile); - })); + playerDataExtractor.extract(playerDataFile.toPath()) + .onSuccess(profileData -> playerDataFutures.add(profileDataSource + .getGlobalProfile(GlobalProfileKey.of(playerUUID)) + .thenCompose(profileDataSource::updateGlobalProfile) + .thenCompose(ignore -> profileDataSource.getPlayerProfile( + ProfileKey.of(ContainerType.WORLD, world.getName(), ProfileTypes.getDefault(), playerUUID))) + .thenCompose(playerProfile -> { + playerProfile.update(profileData); + return profileDataSource.updatePlayerProfile(playerProfile); + }))); } CompletableFuture.allOf(playerDataFutures.toArray(new CompletableFuture[0])) .thenRun(() -> issuer.sendMessage("Successfully imported all player data from " + world.getName() + ".")); diff --git a/src/main/java/org/mvplugins/multiverse/inventories/profile/nbt/PlayerDataExtractor.java b/src/main/java/org/mvplugins/multiverse/inventories/profile/nbt/PlayerDataExtractor.java index 6b7ba13b..425bbd2a 100644 --- a/src/main/java/org/mvplugins/multiverse/inventories/profile/nbt/PlayerDataExtractor.java +++ b/src/main/java/org/mvplugins/multiverse/inventories/profile/nbt/PlayerDataExtractor.java @@ -83,7 +83,10 @@ public Try extract(Path path) { profileData.set(Sharables.TOTAL_EXPERIENCE, playerData.getInt("XpTotal")); return profileData; - }).onFailure(Throwable::printStackTrace); + }).onFailure(ex -> { + Logging.warning("Failed to extract player data from %s: %s", path, ex.getMessage()); + ex.printStackTrace(); + }); } private ItemStack[] extractItems(@Nullable ListTag inventoryList, int dataVersion, int inventorySize) throws IOException {