개인 자료란 (JE)

  서버 커뮤니티

Profile HeartPattern 대표칭호 없음
Profile

강좌 자바 에디션(JE) 플러그인 개발

Kotlin을 사용한 플러그인 작성

2020.03.31 조회 수 6177 추천 수 7
분야 플러그인 
장르 개발자 툴 
게임버전 모든버전 
API 스피곳, 페이퍼 

이 글은 intelliJ IDEA와 gradle, 그리고 spigradle을 사용합니다.


먼저, intelliJ IDEA에서 새로운 Gradle 프로젝트를 생성합니다.921da9cacc5965e2f80d475f648cadae.png

왼쪽창에서 Gradle을 선택한 후, Kotlin DSL build script와 Kotlin/JVM에 체크를 한 뒤 Next를 눌러 다음 페이지로 넘어갑니다.


7e5c6a040870af93d0466af518f196b0.png

프로젝트의 이름과 저장할 위치를 지정해줍니다. Finish를 눌러 프로젝트를 생성해줍니다.

22beb7fa6105d7dca595ffad0d056afe.png

프로젝트를 생성한 직후, intelliJ는 gradle을 설정하기 시작합니다. 위의 사진과 같이 아래쪽 창에 CONFIGURE SUCCESSFUL 메세지가 표시될때까지 기다려줍니다. 

cf5dff5ac2620c52d3d997be9426c385.png

Project WIndow(왼쪽창)에서 build.gradle.kts를 클릭해 해당 파일을 엽니다. intelliJ IDEA가 기본적인 설정을 해주었지만, 버킷 플러그인을 개발하기 위해서는 몇가지 추가적인 설정을 해주어야합니다. 또한 plugin.yml을 쉽게 사용하기 위해 EntryPoint님의 Spigradle을 설정합니다.


import kr.entree.spigradle.kotlin.spigot

plugins {
kotlin("jvm") version "1.3.71"
id("kr.entree.spigradle") version "1.2.2"
}

group = "kr.heartpattern" // 본인의 홈페이지 주소 또는 이메일 주소를 거꾸로 적음
version = "1.0.0"

repositories {
maven("https://maven.heartpattern.kr/repository/maven-public/") // 마인크래프트 관련 artifact들을 모아둔 repo
}

dependencies {
implementation(kotlin("stdlib-jdk8")) // kotlin stdlib

compileOnly(spigot("1.12.2")) // spigot api
}

spigot { // plugin.yml 설정
authors = listOf("HeartPattern")
}

val shade = configurations.create("shade")
shade.extendsFrom(configurations.implementation.get())

tasks {
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}

jar {
from(
shade.map {
if (it.isDirectory)
it
else
zipTree(it)
}
)
}
}

build.gradle.kts의 내용을 위와 같이 수정합니다.

118844100e762769b017980033778231.png

오른쪽의 gradle버튼을 눌러 창을 연 뒤, 첫번째 버튼(reimport all gradle project)를 눌러 변경된 설정을 반영합니다. gradle버튼이 없는 경우 alt키를 두번 눌러 버튼을 띄울 수 있습니다.

152224834e64c27c59d9c8ebef5f5547.png

src/main/kotlin 아래에 적당한 패키지와 SamplePlugin.kt 파일을 만들고, 아래와 같이 내용을 작성합니다.

package kr.heartpattern.kotlinpluginsample

import org.bukkit.plugin.java.JavaPlugin

class SamplePlugin: JavaPlugin(){
override fun onEnable() {
logger.info("Plugin enabled")
}

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

0f1deeec5fe39217ab4ac055b9470e5b.png

다시 gradle창을 열어 build 태스크를 더블클릭하여 빌드합니다. 빌드된 파일은 build/libs 폴더 아래에 생성됩니다.
6b780963fe17f5ef9beb8dca9cb3ed27.png

해당 파일을 적용하고 서버를 실행하면 위의 사진과 같이 정상적으로 적용된 것을 볼 수 있습니다.


14개의 댓글

윈초
2020.03.31

저도 따라서 해볼께요! 감사합니다!

YeeV
2020.03.31

감사합니다!

JSD-ITHAN
2020.04.03

코틀린 배워보고 싶었는데 감사합니다!!

윈초
2020.05.09

'오른쪽의 gradle버튼을 눌러 창을 연 뒤, 첫번째 버튼(reimport all gradle project)를 눌러 변경된 설정을 반영합니다. gradle버튼이 없는 경우 alt키를 두번 눌러 버튼을 띄울 수 있습니다.'

를 하려 하는데

kotlin("jvm") version "1.3.71"

쪽에서 오류가 나네요.. 어떻게 해야할까요..?

윈초
2020.05.09
@윈초

아! 해결 했습니다..!!

ingpungya
2021.02.17
@윈초

저도 같은 에러가 발생하는데 어떻게 해결이 가능할까요?

Phrack_
2020.05.10

흥미롭네요..감사합니다

hooss-only
2020.09.25

JDK 8 어떻게 얻나요? 꼭 JDK 8을 써야하는건가요?

Maguni
2020.10.10

빌드를 할때 플러그인 파일 생성 위치를 바꿀수는 읎나요?

그래이들은 별로 안써봐서.. ㅜㅜ

마왕__
2020.12.17

difficulty hard다 ㅠㅠㅠㅠㅠㅠㅠㅠ 너무 어려워

명이
2020.12.22

굿

자바보다 쉽워서 조아조아

neinerror
2021.01.02

자바에서 코틀린으로 전향한 1인

명이
2021.01.07

커멘드는 어떻게 등록하지

Bruny009
2021.06.22

spigot 에서 오류나는데 이유가 뭘까요..

 

뉴스 및 창작물
/files/thumbnails/520/751/003/262x150.crop.jpg?20240328020349

레드스톤

마인크래프트 노트블록으로 만든 『 Bling‐Bang‐Bang‐Born 』 1

Sonttukk

2024-03-23

1

/files/thumbnails/467/742/003/262x150.crop.jpg?20240311163123

레드스톤

[노트블럭커버] MILGRAM -ミルグラム(밀그램)- / 아마네 「숙청 행진」 제 2심 2

리비온

2024-03-11

0

/files/thumbnails/846/741/003/262x150.crop.jpg?20240310221214

레드스톤

워든 vs 라마 200마리 1

GlassesFilm

2024-03-10

0

/files/thumbnails/542/739/003/262x150.crop.jpg?20240309070457

레드스톤

[고인의 명복을 빕니다][노트블럭]드래곤볼 GT 오프닝 - 점점 마음이 끌려

리비온

2024-03-09

0

/files/thumbnails/326/738/003/262x150.crop.jpg?20240328020414

레드스톤

마인크래프트 노트블록으로 만든 『 Build Our Machine 』

Sonttukk

2024-03-07

0

/files/thumbnails/952/735/003/262x150.crop.jpg?20240303230423

소식

복잡한 설치 없이 마크 애드온을 즐겨보세요! 새로운 블록, 몹, 조합법 등!

도라

2024-03-03

0

/files/thumbnails/212/735/003/262x150.crop.jpg?20240303113438

레드스톤

성장속도 실험

GlassesFilm

2024-03-03

3