728x90
이번 주 목표
마인크래프트 친구 추가 라이브러리 완성
오늘 목표
마인크래프트 친구 추가 라이브러리 완성
오늘 한 것
마인크래프트 친구 추가 라이브러리 완성
1. 마인크래프트 친구 추가 라이브러리
👥 Add Friend
https://github.com/verdantjuly/addfriend
package org.pubdevz.addfriend;
import dev.jorel.commandapi.CommandAPICommand;
import dev.jorel.commandapi.arguments.PlayerArgument;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.StandardOpenOption;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class AddFriend extends JavaPlugin implements Listener {
private File dataFolder;
@Override
public void onEnable() {
dataFolder = new File(getDataFolder(), "friendList");
if (!dataFolder.exists()) {
dataFolder.mkdirs();
}
new CommandAPICommand("addfriend")
.withArguments(new PlayerArgument("user"))
.executesPlayer((player, args) -> {
Player targetPlayer = (Player) args.get("user");
if (targetPlayer == null) {
player.sendMessage("플레이어를 찾을 수 없습니다.");
} else {
try {
writeFile(targetPlayer.getName(), player.getName(), player);
} catch (IOException e) {
player.sendMessage("친구 추가 중 오류가 발생했습니다.");
e.printStackTrace();
}
}
})
.register();
new CommandAPICommand("listfriend")
.executesPlayer((player, args) -> {
try {
readFile(player, player.getName());
} catch (IOException e) {
player.sendMessage("친구 목록을 불러오는 중 오류가 발생했습니다.");
e.printStackTrace();
}
})
.register();
new CommandAPICommand("removefriend")
.withArguments(new PlayerArgument("user"))
.executesPlayer((player, args) -> {
Player targetPlayer = (Player) args.get("user");
if (targetPlayer == null) {
player.sendMessage("플레이어를 찾을 수 없습니다.");
} else {
deleteFile(player, player.getName(), targetPlayer.getName());
}
})
.register();
}
private void writeFile(String username, String playerName, Player player) throws IOException {
String directoryPath = "./plugins/addFriend/friendList/";
File directory = new File(directoryPath);
File file = new File(directory, playerName + ".txt");
List<String> existingFriends = new ArrayList<>();
if (file.exists()) {
try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
String line;
while ((line = reader.readLine()) != null) {
existingFriends.add(line.trim());
}
}
}
if (existingFriends.contains(username)) {
player.sendMessage(username + "님은 이미 친구 목록에 있습니다.");
} else {
try (BufferedWriter writer = new BufferedWriter(new FileWriter(file, true))) {
writer.write(username);
writer.newLine();
player.sendMessage(username + "님이 친구로 등록되었습니다.");
}}
}
private void readFile(Player player, String playerName) throws IOException {
String filePath = "./plugins/addFriend/friendList/" + playerName + ".txt";
File file = new File(filePath);
if (!file.exists() || file.length() == 0) {
player.sendMessage("친구 목록이 비어 있습니다.");
return;
}
try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
String line = null;
boolean hasFriends = false;
while ((line = reader.readLine()) != null) {
player.sendMessage(line);
hasFriends = true;
}
if (!hasFriends) {
player.sendMessage("친구 목록이 비어 있습니다.");
}
} catch (IOException e) {
player.sendMessage("친구 목록을 불러오는 데 실패했습니다.");
throw e;
}
}
private void deleteFile(Player player, String playerName, String username) {
String filePath = "./plugins/addFriend/friendList/" + playerName + ".txt";
File file = new File(filePath);
try {
List<String> lines = Files.readAllLines(file.toPath());
List<String> updatedLines = lines.stream()
.filter(line -> !line.equalsIgnoreCase(username))
.collect(Collectors.toList());
Files.write(file.toPath(), updatedLines, StandardOpenOption.WRITE, StandardOpenOption.TRUNCATE_EXISTING);
player.sendMessage(username + "님이 친구 목록에서 삭제되었습니다.");
} catch (IOException e) {
player.sendMessage("친구 삭제 중 오류가 발생했습니다.");
e.printStackTrace();
}
}
}
KPT
Keep
열심히 하는 것, 즐겁게 하는 것
Problem
기초 지식이 부족한 것
Try
열심히 하기
소감
maven에 대한 지식이 없어서 종속성을 추가하고 빌드하는데 꽤나 애를 먹었다.
모든 것에 대해 자세히 아는 사람이 되고 싶다.
'verdantjuly > Today I Learned' 카테고리의 다른 글
TIL 20240508 (0) | 2024.05.08 |
---|---|
TIL 20240501 (2) | 2024.05.01 |
TIL 20240413 (0) | 2024.04.13 |
TIL 20240406 (0) | 2024.04.06 |
TIL 20240405 (0) | 2024.04.06 |