본문 바로가기
마인크래프트/플러그인 제작 강좌(자바)

[인텔리제이로 마크 플러그인 개발하기](보충) 플레이어 입장 시 공지사항 수정하기

by Zepelown 2023. 1. 19.

*이 글은 Spigot 1.19.3 버전을 기준으로 하여 제작되었습니다.

 

이전 화

https://zepelown.tistory.com/49

 

[인텔리제이로 마크 플러그인 개발하기]10. config.yml 제작하기 2편 ( config에 변수 및 색깔 코드 넣

*이 글은 Spigot 1.19.3 버전을 기준으로 하여 제작되었습니다. 이전 화 https://zepelown.tistory.com/48 [인텔리제이로 마크 플러그인 개발하기]9. config.yml 파일 제작하기 1편 (플레이어 입장 메시지 만 *이

zepelown.tistory.com


이전 화까지는 플레이어에게 직접 메시지를 보내는 것으로

 

위와 같이 플레이어에게만 오는 메시지와 서버 전체 공지사항을 달랐습니다.

 

저 공지사항을 수정하는 방법에 대해 알려드리겠습니다.

 

아주 간단합니다.

 

@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

댓글