본문 바로가기

마인크래프트

[Bukkit] 플러그인 명령어 개발

728x90

BukkitCommand 상속 받은 구현체 작성하기

먼저 명령어 실행부를 작성하자.

import org.bukkit.command.CommandSender
import org.bukkit.command.defaults.BukkitCommand

class MyCommand : BukkitCommand(
    "my-command", "내가 만든 명령어", "/my-command", listOf(),
) {
    override fun execute(sender: CommandSender, commandLabel: String, args: Array<out String>): Boolean {
        sender.sendMessage("Hello, world!")
        return true
    }
}

 

 

BukkitCommand의 생성자에는 이름(name), 설명(description), 사용법 메시지(usageMessage), 별칭(aliases)을 넣으면 된다.

여기서는 각각 "my-command", "내가 만든 명령어", "/my-command", listOf()를 넣었다.

 

execute 메서드 구현에는 명령어 실행 시 수행할 동작을 작성하면 된다.

sender는 명령어를 실행한 주체(e.g. 플레이어), args에는 명령어 실행 시 입력한 인자가 넘어온다.

여기서는 sender에게 "Hello, world!"라는 메시지를 보내고 true를 반환하도록 했다.

 

commandMap에 명령어 등록하기

앞에서 작성한 명령어를 실제로 사용하기 위해선 commandMap에 등록해야 한다.

import org.bukkit.plugin.java.JavaPlugin

class MyPlugin : JavaPlugin() {
    override fun onEnable() {
        server.commandMap.register(name.lowercase(), MyCommand())
    }
}

 

플러그인 활성화 시(onEnable) 접두사(fallbackPrefix)와 명령어(command) 객체를 commandMap에 등록(register)하면 된다.

접두사는 같은 이름의 명령어가 여러 개 있을 경우 구분자 역할을 한다. (마인크래프트 기본 명령어 또는 타 플러그인 명령어와의 충돌 방지)

여기서는 플러그인의 이름을 접두사로, 앞에서 작성한 명령어 클래스의 객체를 넣었다.

 

728x90