이번엔 밤시간대를 낮으로 바꿔주는 명령어를 추가해볼 것이다.
먼저 MainCommand.kt를 열고 밑 코드에 몇 줄 추가해보았다.
override fun onCommand(sender: CommandSender?, command: Command?, label: String?, args: Array<out String>?): Boolean {
if (sender is Player) {
if (command != null) {
when (command.name) {
"hello" -> {
sender.sendMessage("Hello " + sender.name + "!")
}
"help" -> {
sender.sendMessage("sry, there is no help... so can u wait?")
}
"day" -> { //추가된 코드
if(!setDay) {
setDay = true
sender.sendMessage("Days activated")
}
else {
setDay = false
sender.sendMessage("Days off")
}
}
}
}
}
return true
}
이제 이 코드를 가지고 Main.kt를 수정해보았다.
먼저 day라는 변수를 지정해주자. 타입은 Boolen이다.
var setDay = true
그리고 바로 아래에 함수 하나 만들어 주었다.
public fun setDay() : Runnable { //Runnable 클래스 상속 & 클래스 정의
var r : Runnable = Runnable { //Runnable 클래스 상속 & 변수 r 정의 및 Runnable(동작 상태일떄) 어떤 코드를 수행할지의 함수 정의
if(setDay){ //만약 이 클래스가 동작가능하다면
val worlds = Bukkit.getWorlds() //Bukkit의 getWorld함수를 통해 worlds 정의
for(world in worlds){ //worlds변수에 있는 world만큼 반복 -> 즉, 단 world는 하나밖에 없으니 전체 월드에 선언한다.
if(world.time > 13000) { //world의 시간대 체킹
world.time = 0 //아침으로 변경
}
}
}
}
return r; //클래스 리턴
}
그리고 이 코드에 몇줄 추가해주었다.
override fun onEnable() {
logger.info("Plugin enabled")
Bukkit.getPluginManager().registerEvents(this,this); //이벤트를 this로 지정
Bukkit.getScheduler().runTaskTimer(this, setDay(), 20*3, 20*30) //eventTrigger,class,time(int),time(int)<-time는 아직 연구가 더 필요
}