이번엔 밤시간대를 낮으로 바꿔주는 명령어를 추가해볼 것이다.

먼저 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는 아직 연구가 더 필요
}