개인 자료란 (JE)

  서버 커뮤니티

Profile HeartPattern 대표칭호 없음
Profile

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

Kotlin을 사용한 플러그인 작성

2020.03.31 조회 수 6565 추천 수 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

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


16개의 댓글

윈초
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

커멘드는 어떻게 등록하지

강예준개발자
2024.05.21
@명이

자바와 비슷하게..?

Bruny009
2021.06.22

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

 

강예준개발자
2024.05.07

Gradle이 없고 자바 밖에 앖는데...

뉴스 및 창작물
/files/thumbnails/150/925/003/262x150.crop.jpg?20241123005717

건축

응답하라 1988 ?

팀뉴일리시

2024-11-23

1

/files/thumbnails/761/908/003/262x150.crop.jpg?20241025153749

건축

서울 숭례문(崇禮門) 5

KHC

2024-10-25

2

/files/thumbnails/578/899/003/262x150.crop.jpg?20241010142350

건축

경주 월정교 1

KHC

2024-10-10

2

/files/thumbnails/219/899/003/262x150.crop.jpg?20241009200950

건축

송전탑+도시 2

dbasd12

2024-10-09

2

/files/thumbnails/246/898/003/262x150.crop.jpg?20241008102328

레드스톤

단다단 - 오토노케(オトノケ) | 마인크래프트 노트블럭 커버

노트블럭전문가

2024-10-08

1

/files/thumbnails/348/896/003/262x150.crop.jpg?20241006103035

디도스/봇테러등등을 낚는 방법 4

물귀신

2024-10-06

3

/files/thumbnails/839/895/003/262x150.crop.jpg?20241006021227

SRV레코드는 보안도메인이 아닙니다. [서버오픈시 필독]

물귀신

2024-10-05

4