개인 자료란 (JE)

  서버 커뮤니티

Profile HAN1110 대표칭호 없음

HAN1110 9899e780ba984d89824a90ee8deb7cb2

Profile

질문하기 Java

플레이어 닉네임 + 사유 밴 + 시간걸기

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

대충 제가 구현하는게 뭐냐면 그 Watchdog 밴 맞아요


package watchdog.command;


import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor;


import watchdog.utilities.Timer;


import java.util.List;


import org.bukkit.ChatColor;


public class CommandMain implements CommandExecutor, TabExecutor {
    
    public Timer timer = new Timer();
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        
        if (label.equalsIgnoreCase("watchdog")) {
            if (sender.isOp()) {
                sender.sendMessage(ChatColor.DARK_PURPLE + "[Watchdog] " + ChatColor.AQUA + ">> " + ChatColor.WHITE + "Not Making. Wait for Update");
            } else {
                sender.sendMessage(ChatColor.DARK_PURPLE + "[Watchdog] " + ChatColor.AQUA + ">> " + ChatColor.WHITE + "Not Op user can't use AntiCheat Command");
            }
            return true;
        } else if (label.equalsIgnoreCase("ban")) {
            
        }
        
        return false;
    }


    @Override
    public List<String> onTabComplete(CommandSender sender, Command cmd, String alias, String[] args) {
        return null;
    }
}

현재 소스가 이정도인데

이제 여기서 ban 에서

/ban 플레이어_닉네임 시간 사유

순서로 만드려하거든요?

이제 딴건 다 알겠어요

근데 저기 뒤쪽에 커맨드 붙이는걸 못하곘어요

어떻게 하나요?

13개의 댓글

윈초
2022.03.19

파라미터에 있는 args변수가 명령어에 argument를 담고있습니다

HAN1110
2022.03.20
@윈초

혹시 그럼 플레이어 닉네임 목록은 어떻게 arg 에 담나요?

윈초
2022.03.20
@HAN1110

arg에 담는다는건, 탭컴플리터 말씀이신가요?

HAN1110
2022.03.20
@윈초

tabcompleter 는 이미 할수있고

/ban <유저 이름> <시간> <사유>

순서인데 여기서 사유는 할수 있게됬지만

유저이름과 시간을 설정을 못하겠네요.

윈초
2022.03.20
@HAN1110

args[0]은 유저이름이구요, Bukkit.getPlayer(닉네임)으로 Player,받아올수 있어요

시간은 args[1]을 int로 바꾸시면 되죠

HAN1110
2022.03.21
@윈초

args[0] 을 어떻게 int 로 바꾸나요?

HAN1110
2022.03.21
@HAN1110

그 ban 을 할때 플레이어 닉네임을 어떻게 가져오는지 모르겠어요

윈초
2022.03.21
@HAN1110

밴할때 플레이어 닉네임이 필요한가요?

player.banPlayer("사유") 로 밴할수 있는데요.

HAN1110
2022.03.22
@윈초

자기 자신은 할수 있어도

다른 유저를 밴해야하잖아요

윈초
2022.03.22
@HAN1110

Bukkit.getPlayer(닉네임)으로 가져올수 있다고 위에 적어뒀는데요,

윈초
2022.03.21
@HAN1110

Integer.parseInt(String)

구글에 java string to int 만 검색해도 나오는내용인데요,

코코냐
2022.03.20

답변의 경우 이미 다른 답변이 있어 생략하지만, 약간의 팁을 드리자면 기간밴은 타이머로 관리하는 것 보다는 접속 시도시에만 확인하는 것이 효율 면에서 더 좋습니다. 지금 방식으로는 100명을 기간밴 해버리면 타이머도 100개가 돌아가버리니까요..

HAN1110
2022.03.20
@코코냐

그 문제는 해결됬습니다

banPlayer("reason",time) 으로 해결했네요