이 글은 Spigot 1.19.3 버전을 기준으로 하여 제작되었습니다.
이전 강의
https://zepelown.tistory.com/56
이전 강의에서 플레이어에게 랭크를 임의로 부여하였습니다.
이 랭크를 채팅이랑 탭리스트에 표시해 보도록 하겠습니다.
이번 강의는 그렇게 어렵지 않으니 금방 따라하실 수 있을 겁니다.
먼저 채팅 앞에 칭호를 붙여보겠습니다.
새로운 클래스를 만들어줄게요.
ChatEvent.java
package io.github.zepelown.testplugin.event;
import io.github.zepelown.testplugin.TestPlugin;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;
public class ChatEvent implements Listener {
static TestPlugin plugin = TestPlugin.getPlugin();
@EventHandler
public void onChat(AsyncPlayerChatEvent e) {
Player player = e.getPlayer();
String rank = plugin.getConfig().getString("players." + player.getName() + ".rank");
e.setFormat("[" + rank + "] " + player.getName() + " : " + e.getMessage());
}
}
정말 간단합니다.
rank 값은 config에서 불러오고
setFormat 메서드를 사용해 채팅의 형식을 정해줍니다.
여기서 e.getMessage()를 빼먹으면 채팅이 나오지 않으니 주의해 주세요.
자세한 디테일(색깔)은 이후 강의에서 직업, 랭크들을 상세하게 다룰 때
한 번에 정리할 예정입니다.
만약 색깔을 추가하고 싶다면
더보기
10강에서 보여드렸던
config에 색깔 코드를 부여하는 방식을 사용하면 됩니다.
https://zepelown.tistory.com/49
이 강의를 참고하시길 바랍니다.
한번 직접 만들어보는 것도 충분히 도움 되실 겁니다.
탭 리스트에 칭호를 뜨게 하는 방법은 더 쉽습니다.
플레이어가 입장할 때 칭호를 부여하면 됩니다.
JoinEvent.jar
package io.github.zepelown.testplugin.event;
import io.github.zepelown.testplugin.ChatManager;
import io.github.zepelown.testplugin.TestPlugin;
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;
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();
//만약 플레이어의 정보가 없다면
if (!config.contains("players." + playerName)) {
if (config.getBoolean("message.new-player-join-message.display-message"))
plugin.getServer().broadcastMessage(ChatManager.getConfigMessage("message.new-player-join-message.message").replace("{playername}", playerName));
config.set("players." + playerName + ".rank", "newbie");
config.set("players." + playerName + ".job", "jobless");
} else {
ChatManager.sendMessageToPlayer(player, "최근 접속 시간 : " + config.getString("players." + playerName + ".recent-join-date"));
}
player.setPlayerListName("[" + config.getString("players." + playerName + ".rank") + "] " + playerName);
if (config.getBoolean("message.join-message.display-message"))
e.setJoinMessage(ChatManager.getConfigMessage("message.join-message.message").replace("{playername}", playerName));
plugin.saveConfig();
}
}
코드가 딱 한 줄 추가 됐습니다.
player.setPlayerListName("[" + config.getString("players." + playerName + ".rank") + "] " + playerName);
결과물입니다.
'마인크래프트 > 플러그인 제작 강좌(자바)' 카테고리의 다른 글
[인텔리제이로 마크 플러그인 개발하기](보충)Config 분할하기 (0) | 2023.03.07 |
---|---|
[인텔리제이로 마크 플러그인 개발하기]13. Custom Config에 관하여 (Config 파일 여러 개 만들기, 플레이어 등급 관리하기) (1) | 2023.02.10 |
[인텔리제이로 마크 플러그인 개발하기]11. config.yml 제작하기 3편 (플레이어 데이터 저장 및 신규 유저 환영 메시지 작성하기) (13) | 2023.01.27 |
[인텔리제이로 마크 플러그인 개발하기](보충) 플레이어 퇴장시 공지사항(PlayerQuitEvent 와 PlayerKickEvent의 관계) (5) | 2023.01.21 |
[인텔리제이로 마크 플러그인 개발하기](보충) 플레이어 입장 시 공지사항 수정하기 (2) | 2023.01.19 |
댓글