ArkFac
대표칭호 없음
ArkFactorial d27c7bdb61f74f2ea2ca7ce363658bf3
이해도 | 플러그인 |
---|---|
게임버전 (JE) | 버킷 |
intellij Minecraft Development 플러그인을 이용하여 생성한 PaperMC 1.18.1 에서 동작하는 플러그인입니다
명령어를 입력할경우 init함수가 실행되도록까지는 구현을 해두었고 하고싶은것은
1. init함수가 실행될경우 플레이어팀, 관전자팀, 스코어보드 objective 생성 후 변수로 저장(만약 있다면 생성하지 않고 그대로 가져오기)
2. 저장해둔 변수를 가지고 모든 플레이어를 플레이어팀에 참가시키고, 모든 플레이어에 대해서 생성시킨 object에 값 할당
이 두가지를 하고싶어서 구글링을 해보았고 제 나름대로 코드를 짜봤습니다
public class Game { private final Intime plugin; Team playerTeam, observerTeam; Objective timeObj; boolean playingGame = false; int playerDefaultTime = 1500; // 단위 = 초 public Game(Intime plugin) { this.plugin = plugin; } void init() { this.playerTeam = findOrMakeTeam("player"); this.observerTeam = findOrMakeTeam("observer"); this.timeObj = findOrMakeObjective("time", "dummy", "time"); playingGame = true; for (Player p : Bukkit.getOnlinePlayers()) { setScoreboardVal(p, timeObj, playerDefaultTime); observerTeam.addPlayer(p); } timeObj.setDisplaySlot(DisplaySlot.PLAYER_LIST); } private Team findOrMakeTeam(String name){ ScoreboardManager manager = Bukkit.getScoreboardManager(); Scoreboard scoreboard = manager.getNewScoreboard(); Team tmp = scoreboard.getTeam(name); if (tmp == null) { tmp = scoreboard.registerNewTeam(name); } return tmp; } private Objective findOrMakeObjective(String name, String criteria, String displayName) { ScoreboardManager manager = Bukkit.getScoreboardManager(); Scoreboard scoreboard = manager.getNewScoreboard(); Objective tmp = scoreboard.getObjective("name"); if (tmp == null) { tmp = scoreboard.registerNewObjective(name, criteria, displayName); } return tmp; } private void setScoreboardVal(Player p, Objective obj, int val) { obj.getScore(p).setScore(val); } }
다음과 같이 코드를 작성하였고 명령어를 통하여 init 함수를 실행시켰고, 이 과정에서 logger을 통하여 함수가 실행되었고, 지역변수에 각각 null이 아닌 변수가 할당되는것을 확인했음에도 인게임에서 확인해보면 objective가 생성 및 탭창에 표시, 팀 생성 및 참여중 아무것도 이루어진게 없었습니다. 함수가 실행되는 과정에서 그 어떠한 오류도 콘솔창에는 나타나지 않았으며 혹시나 팀, objective가 이미 있으면, 하다못해 플레이어의 스코어보드에 값이 할당되어있다면 작동할까 싶어서 테스트해봤지만 작동하지 않았습니다. 혹시 제가 어디에서 잘못하고있는건지 알려주실 수 있을까요?
ArkFac
2022.02.15해결했습니다 manager.getNewScoreboard(); 를 Smanager.getMainScoreboard();로 바꾸어 해결했습니다