티스토리 뷰

728x90

 

2022.08.14 - [코딩/Java] - Java로 마인크래프트 플러그인 만들기

 

Java로 마인크래프트 플러그인 만들기

원본 영상 - TechnoVision의 스피곳 플러그인 강좌 #2 2022.08.14 - [코딩/Java] - Java로 마인크래프트 플러그인 개발 세팅하기 Java로 마인크래프트 플러그인 개발 세팅하기 원본 영상 - TechnoVision의 스피곳.

devgarlic.tistory.com

해당 내용에서 이어집니다 :)

오늘은 TechnoVision 영상에 포함된 것이 아닌, 따로 새로운 내용을 준비해서 올려본다.

오늘 설명할 내용은 모두 이 링크에 담겨있으니, 이해할 수 있다면 직접 깃허브를 보며 따라해보자 :D

 

※ 필자도 이걸 작성하면서 공부했기에, 오류가 있다면 날카롭게 지적해주길 바란다. 

정확한 피드백은 정확한 글을 만든다 :)

 

https://github.com/GalaKrond-jkr0404/ExampleGradleSpigotPlugin

 

GitHub - GalaKrond-jkr0404/ExampleGradleSpigotPlugin: An example of spigot plugin settings with gradle

An example of spigot plugin settings with gradle. Contribute to GalaKrond-jkr0404/ExampleGradleSpigotPlugin development by creating an account on GitHub.

github.com

 

1. Gradle이 무엇인가?

Gradle의 로고

Gradle(그래들) 은 오픈소스 자동 빌드 도구이며, Java, Groovy, Kotlin 등의 언어를 지원한다.

자동 빌드가 무엇인지를 간단하게 설명하면,  자바 파일은 .jar 로 뭉쳐진 압축 파일로 배포가 된다.

.jar 파일 속에는 우리가 작성한 클래스들과 불러온 API들, 그리고 이들이 사용하는 파일, 이미지, 데이터 등이 포함되는데,

이를 자동으로 편리하게 .jar 파일로 뭉쳐주는 역할을 하는 것이 바로 Gradle이라고 할 수 있겠다.

원래 Maven이라는 시스템이 따로 존재했으나, Maven의 문제점을 해결하기 위해서 만들어진 것이 바로 이놈.

이놈을 사용함으로써 우리는 더욱 편하게 .jar 파일을 제작, 배포하고 테스트할 수 있게 되는 것이다.

 

2. Gradle이 포함된 Java 플러그인 프로젝트를 생성해보자

물론 Gradle이 플러그인 제작에만 쓰이는 것은 아니나, 일단은 우리가 만드는 Java 플러그인에 적용해보자.

새 프로젝트를 열어보고 다음과 같이 설정해준다.

이름과 위치까지 똑같이 할 이유는 없다...

 

언어는 우리가 사용하던 자바 그대로 갈거고, 시스템 빌드가 Gradle로 바뀐 것을 볼 수 있다.

Gradle DSL이란 Domain Specific Language, 특정 분야에 특화된 언어를 의미한다. 

말 그대로 우리가 Gradle을 사용할 때 쓸 언어를 정하는 것이고, 나는 Groovy를 선택하겠다.

Kotlin은 한번도 건드려 본 적도 없고, 우리가 지금 Gradle을 복잡한 코드를 짤 정도로 사용하지 않기 때문이다. 

 

막 뭐가 뜨고 파일도 생기고 그러죠? 그거 맞아요

 

plugins {
    id 'java'
}

group 'org.example'
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'
}

test {
    useJUnitPlatform()
}

대략적으로 설명하면 junit은 .jar 파일을 끊임없이 생성하지 않고 바로 테스트하는 것을 도와주는 것이나,

우리는 플러그인 테스트를 위해 직접 서버에서 돌려봐야 하기에 필요가 없다.

지우고 해당 내용으로 교체해주자. test 폴더도 필요가 없으니 두번 삭제해주자.

 

plugins {
    id 'java'
}

group 'org.example'
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
    maven {
        url = 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/'

        // As of Gradle 5.1, you can limit this to only those
        // dependencies you expect from it
        content {
            includeGroup 'org.bukkit'
            includeGroup 'org.spigotmc'
        }
    }
    /*
     As Spigot-API depends on the BungeeCord ChatComponent-API,
    we need to add the Sonatype OSS repository, as Gradle,
    in comparison to maven, doesn't want to understand the ~/.m2
    directory unless added using mavenLocal(). Maven usually just gets
    it from there, as most people have run the BuildTools at least once.
    This is therefore not needed if you're using the full Spigot/CraftBukkit,
    or if you're using the Bukkit API.
    */
    maven { url = 'https://oss.sonatype.org/content/repositories/snapshots' }
    maven { url = 'https://oss.sonatype.org/content/repositories/central' }
    // mavenLocal() // This is needed for CraftBukkit and Spigot.
}

dependencies {
    implementation('org.spigotmc:spigot-api:1.19-R0.1-SNAPSHOT')  // The Spigot API with no shadowing. Requires the OSS repo.
}

  세부 내용은 https://www.spigotmc.org/wiki/spigot-gradle/ 를 참고하자.

 

그래들을 새로고침하자

그래들을 리로드하고, 이전에 했듯이 메인 파일과 plugin.yml을 작성할 차례다.

다만 그래들의 기본 세팅 덕분에 뭔가 좀 달라져 있을 텐데, 

src 파일이 파란색이었던 이전과 달리 이번엔 src / main / java가 파란색 폴더다. 

그리고 옆에 resources라는 폴더도 보인다.

파란색 폴더가 의미하는 건 소스 코드 폴더를 의미하는 건데, 우리는 저 소스 코드 바로 하위에 패키지를 작성한다.
패키지를 작성하고 나서 resources 폴더에 plugin. yml 파일을 작성해주면 된다. 

 

대략 이렇게

이제 파일을 다 작성했다면 빌드를 할 차례다.

우측 상단의 Gradle -> Task -> Build를 눌러주자.

 

빌드가 성공했다면, build/libs 폴더에 .jar 파일이 하나 있을 것이다.

파일을 Server / plugins에 넣고 start.bat 파일을 통해서 서버를 실행했을 때 메시지가 나타난다면 끝.

다음 시간에는 본격적으로 플러그인 개발에 들어가보도록 하겠다

 

글이 유용했다면 하트와 댓글을, 필자에게 큰 힘이 됩니다 :D

728x90
댓글
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함