개인 자료란 (JE)

  서버 커뮤니티

Profile openkufo 대표칭호 없음

openkufo ded498bef6bf43e39a1b5c7140da31e5

Profile

질문하기 Java

닉네임 바탕색 및 코드 정리

2020.12.28 조회 수 105 추천 수 0
이해도 플러그인 
게임버전 (JE) 버킷 

(다른 질문)

먼저, 질문(개발) 게시판과 스크립트 Q&A 게시판의 차이점을 몰라 이 게시판에 작성했습니다.

스크립트 Q&A 게시판에 작성하려하니 스크립트 버전을 입력하는 양식이 있었는데, 그건 무엇을 의미하는건가요?


(제목의 질문)

cch님의 Eclipse로 플러그인 제작하기 강좌를 보고

spigot-1.16.4 라이브러리를 통해 Eclipse에서 Java로 플러그인을 제작해보고 있습니다.

만든 플러그인은 /test [ID] {TRUE | FALSE} 명령어를 입력했을 때

아이디가 볼드체로 바뀌는 플러그인인데 혹시 닉네임 부분의 바탕색을 바꿀순 없는지 알고 싶습니다.


그리고 다음은 제 코드인데, 더 깔끔하게(혹은 가독성 있게 정리할 수 있는 테크닉이 있을까요?

주석은 원래 안달지만 이 게시글 올리면서 달았습니다.

public class PaulCommand implements CommandExecutor{


    @Override
    public boolean onCommand(CommandSender sender, Command command, String s, String[] chatArray) {
        String cmdName = command.getName();

        if(cmdName.equals("setname")) { // setname 명령어 입력
            setName(sender, chatArray);
            return false;
        }
        
        return false;
    }
    
    boolean setName(CommandSender sender, String[] chatArray) {
        
        Player player = (Player) sender; // 커맨드를 입력한 플레이어를 저장할 변수
        String playerName = ""; // 플레이어의 이름(ID)를 저장할 변수
        int chatArrayNum = 0;   // 커맨드에 인자가 얼마나 들어있는지 비교할 변수
        
        if(chatArray.length == 0) { // 에러 방지
            player.sendMessage("/setname [ID] {TRUE(T) | FALSE(F)} 형식으로 입력하세요");
            return false;
        }

        // 커맨드 첫 번째 인자로 아이디 입력시 접속해 있는 플레이어들의 아이디와 비교 후 저장
        for(Player p : Bukkit.getOnlinePlayers()) {
            if(chatArray[0].equals(p.getName())) {
                player = p;
                playerName = "§l" + p.getName();
                chatArrayNum++;
            }else {
                playerName = "§l" + player.getName();
            }
        }
        
        if(chatArrayNum == 1 && chatArray.length == 1) { // 에러 방지
            player.sendMessage("/setname [ID] {TRUE(T) | FALSE(F)} 형식으로 입력하세요");
            return false;
        }
        
        switch(chatArray[chatArrayNum].toUpperCase()) {
            case "TRUE":
            case "T": {
                player.setDisplayName(playerName);
                player.sendMessage("이름 두껍게 변경");
                break;
            }
            
            case "FALSE":
            case "F": {
                player.setDisplayName(player.getName());
                player.sendMessage("이름 복원");
                break;
            }
    
            default: {
                player.sendMessage("/setname [ID] {TRUE(T) | FALSE(F)} 형식으로 입력하세요");
                break;
            }
        }
        
        return false;
    }
    
}

Warning
댓글이 없습니다.

새로운 댓글을 등록해 주세요!