*이 글은 Spigot 1.19.3 버전을 기준으로 하여 제작되었습니다.
이전 화
https://zepelown.tistory.com/49
이전 화까지는 플레이어에게 직접 메시지를 보내는 것으로
위와 같이 플레이어에게만 오는 메시지와 서버 전체 공지사항을 달랐습니다.
저 공지사항을 수정하는 방법에 대해 알려드리겠습니다.
아주 간단합니다.
@EventHandler
public void onPlayerJoin(PlayerJoinEvent e){
Player player = e.getPlayer();
TestPlugin plugin = TestPlugin.getPlugin();
String playerName = player.getName();
FileConfiguration config = plugin.getConfig();
ChatManager.sendConfigMessageToPlayer(player, "join-message.message");
e.setJoinMessage("TEST");
}
이를 토대로 코드를 수정했습니다.
JoinEvent.java
package io.github.zepelown.testplugin.event;
import io.github.zepelown.testplugin.ChatManager;
import io.github.zepelown.testplugin.TestPlugin;
import org.bukkit.ChatColor;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class JoinEvent implements Listener {
@EventHandler
public void onPlayerJoin(PlayerJoinEvent e){
Player player = e.getPlayer();
TestPlugin plugin = TestPlugin.getPlugin();
String playerName = player.getName();
FileConfiguration config = plugin.getConfig();
e.setJoinMessage(ChatManager.getConfigMessage("join-message.message").replace("{playername}",playerName));
}
}
ChatManager.java
package io.github.zepelown.testplugin;
import org.bukkit.ChatColor;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
public class ChatManager {
static TestPlugin plugin = TestPlugin.getPlugin();
private static String prefix = ChatColor.GRAY+"["+ChatColor.YELLOW+"테스트"+ChatColor.GRAY+"]";
public static void sendConfigMessageToPlayer(Player player, String path){
FileConfiguration config = plugin.getConfig();
player.sendMessage(prefix + ChatColor.translateAlternateColorCodes('&',config.getString(path)
.replace("{playername}",player.getName())));
}
public static void sendMessageToPlayer(Player player, String string){
player.sendMessage(prefix + string);
}
public static String getConfigMessage(String path){
FileConfiguration config = plugin.getConfig();
return (prefix + ChatColor.translateAlternateColorCodes('&',config.getString(path)));
}
}
ChatManager가 색깔코드를 변환한 string을 반환할 수 있도록
getConfigMessage 메서드를 만들었습니다.
JoinEvent가 이제 string을 받고
replace를 통해 변수를 넣어줍니다.
Config.yml
댓글