private static final String PLAYER_NAMES_FILE = "player_names.txt";
@SubscribeEvent
public void onPlayerJoin(PlayerEvent.PlayerLoggedInEvent event) {
PlayerEntity player = event.getPlayer();
ITextComponent name = player.getDisplayName();
String playerName = name.getString();
savePlayerName(playerName);
}
private void savePlayerName(String playerName) {
Set<String> existingNames = readPlayerNames();
if (!existingNames.contains(playerName)) {
existingNames.add(playerName);
writePlayerNames(existingNames);
}
}
private Set<String> readPlayerNames() {
Set<String> playerNames = new HashSet<>();
try {
if (Files.exists(Paths.get(PLAYER_NAMES_FILE))) {
playerNames = new HashSet<>(Files.readAllLines(Paths.get(PLAYER_NAMES_FILE)));
}
} catch (IOException e) {
e.printStackTrace();
}
return playerNames;
}
private void writePlayerNames(Set<String> playerNames) {
try (BufferedWriter writer = new BufferedWriter(new FileWriter(PLAYER_NAMES_FILE))) {
for (String name : playerNames) {
writer.write(name);
writer.newLine();
}
} catch (IOException e) {
e.printStackTrace();
}
}