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