Spigot 코드까지 뜯어보며, 어떻게 작성해야할지 분석해보았다.

여기에 내가 지금까지 분석한 걸 올릴려 한다.

우선 가장 중요한 것부터 말하겠다.

이게 지금 Kotlin에서 마크 자바 플긴을 쓰는 방법이고,

간단하고 명료하다.

<aside> 💡 마크 Java 플긴 문법을 Kotlin문법으로 바꿔라!!!!

</aside>

간단하다. Java 문법을 Kotlin문법으로 바꾸면 끝이다.

쉬워보이는가?

그렇다면 내 메인 함수와 커멘드 함수를 보여주겠다.

여기서 각자가 분석해서 써보길 바란다.

package kr.heartpattern.kotlinpluginsample

import org.bukkit.command.Command
import org.bukkit.command.CommandExecutor
import org.bukkit.command.CommandSender
import org.bukkit.command.PluginCommand
import org.bukkit.entity.Player
import org.bukkit.event.EventHandler
import org.bukkit.event.Listener
import org.bukkit.event.player.PlayerJoinEvent
import org.bukkit.plugin.java.JavaPlugin

open class Main: JavaPlugin(), Listener, CommandExecutor{
    private sealed class MainCommand

    override fun onEnable() { //자바에선 @override라고 하지만 코틀린에선 이렇다
        logger.info("Plugin enabled")
    }

    override fun onDisable(){
        logger.info("Plugin disabled")
    }

}
package kr.heartpattern.kotlinpluginsample

import org.bukkit.command.Command
import org.bukkit.command.CommandExecutor
import org.bukkit.command.CommandSender
import org.bukkit.command.PluginCommand
import org.bukkit.entity.Player
import org.bukkit.event.EventHandler
import org.bukkit.event.Listener
import org.bukkit.event.player.PlayerJoinEvent
import org.bukkit.plugin.java.JavaPlugin

class MainCommand:Main(), Listener, CommandExecutor{
    @EventHandler //이벤트 핸들러
    public fun joinEvent(event: PlayerJoinEvent){ //서버 참가시
        event.player.sendMessage("Hello user! Welcome to my Server") //메세지 호출
    }

    override fun onCommand(sender: CommandSender?, command: Command?, label: String?, args: Array<out String>?): Boolean {
        if (sender is Player) { //sender의 형이 Player의 형과 같은가?
            if (command != null) { //명령어가 null이 아니면
                when (command.name) {
                    "hello" -> { //커멘드 이름이 hello일때
                        sender.sendMessage("Hello " + sender.name + "!") //hello 출력
                    }
                }
            }
        }
        return true
    }
}

그리고 마크 플긴 빌드에 영향을 주는 yml파일도 올리겠다.

name: $MCKotlinPL
main: $pluginMain
depend: [Kotlin]
api-version: '1.15'
version: $1.0.0

commands:
  hello:
    description: None
    usage: /<command>