Skip to content

Commit b07d9f5

Browse files
committed
Refactored Importer player data handling
Updated `loadPlayers` to use `group.persistPlayerData` for streamlined logic. Modified `readPlayer` method signature to include `PlayerData` directly, improving error handling and import flexibility.
1 parent 518f0ee commit b07d9f5

File tree

1 file changed

+12
-14
lines changed

1 file changed

+12
-14
lines changed

src/main/java/net/thenextlvl/perworlds/importer/Importer.java

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,9 @@
33
import net.thenextlvl.perworlds.PerWorldsPlugin;
44
import net.thenextlvl.perworlds.WorldGroup;
55
import net.thenextlvl.perworlds.data.PlayerData;
6-
import org.bukkit.generator.WorldInfo;
76
import org.jspecify.annotations.NullMarked;
87

98
import java.io.IOException;
10-
import java.nio.file.Files;
119
import java.nio.file.Path;
1210
import java.util.HashSet;
1311
import java.util.Map;
@@ -60,22 +58,22 @@ public Set<WorldGroup> loadGroups() throws IOException {
6058
}
6159

6260
public void loadPlayers(Set<WorldGroup> groups) throws IOException {
63-
// todo: extract to readPlayer
64-
readPlayers().forEach((uuid, name) -> {
65-
groups.stream().forEach(group -> group.getWorlds().map(WorldInfo::getName)
66-
.map(this.dataPath.resolve("worlds")::resolve)
67-
.map(path -> path.resolve(name + ".json"))
68-
.filter(Files::isRegularFile)
69-
.findAny().ifPresent(path -> {
70-
// todo: load player data from path into the current group
71-
})
72-
);
73-
});
61+
readPlayers().forEach((uuid, name) -> groups.forEach(group -> {
62+
var offlinePlayer = plugin.getServer().getOfflinePlayer(uuid);
63+
group.persistPlayerData(offlinePlayer, playerData -> {
64+
try {
65+
readPlayer(uuid, name, group, playerData);
66+
} catch (IOException e) {
67+
plugin.getComponentLogger().error("Failed to import player data for {} ({}) in group {}",
68+
name, uuid, group.getName(), e);
69+
}
70+
});
71+
}));
7472
}
7573

7674
public abstract Map<String, Set<String>> readGroups() throws IOException;
7775

7876
public abstract Map<UUID, String> readPlayers() throws IOException;
7977

80-
public abstract PlayerData readPlayer(UUID uuid, String name, WorldGroup group) throws IOException;
78+
public abstract void readPlayer(UUID uuid, String name, WorldGroup group, PlayerData data) throws IOException;
8179
}

0 commit comments

Comments
 (0)