블로그 글의 형식을 더 깔끔하고 보기 좋게 다듬어 드리겠습니다. 다음은 정리된 형태의 블로그 글입니다:
위 링크를 참고하여 기본적인 학습을 진행하세요.
![]() | ![]() |
|---|---|
| 현재 선택된 파일이 main 파일입니다. | main 파일을 보면, 위와 같이 플러그인 활성화 및 비활성화 시 동작하는 메소드들이 정의되어 있습니다. |
build.gradle 설정ShadowJar는 라이브러리와 의존성을 함께 묶어 하나의 JAR 파일로 만들어주는 플러그인입니다. 일반 JAR 파일을 생성하면 의존하는 라이브러리가 포함되지 않아 플러그인에 오류가 발생할 수 있습니다. ShadowJar를 사용하면 이러한 문제를 해결할 수 있습니다.
일반 JAR의 문제점
해결 방법
ShadowJar를 사용하여 플러그인에 필요한 모든 라이브러리를 함께 묶어 JAR 파일을 생성합니다.Lombok은 Java 코드에서 getter, setter 등을 자동으로 생성해주는 라이브러리입니다. 이를 통해 코드가 깔끔해지고 유지보수가 용이해집니다.
MongoDB를 사용하기 위한 드라이버입니다.
build.gradle 파일 설정아래는 작자가 애용하는 build.gradle 파일의 설정입니다:
plugins {
id 'java'
id "com.github.johnrengelman.shadow" version "8.1.1"
}
// ShadowJar 설정
shadowJar {
manifest {
attributes 'Main-Class': 'my.package.MyMain'
}
// JAR 추출 디렉토리
destinationDirectory.set(file("/Users/admin/Desktop/project/MineServer/plugins"))
}
group = 'org.dev'
version = '1.0-SNAPSHOT'
repositories {
mavenCentral()
maven {
name = "papermc-repo"
url = "https://repo.papermc.io/repository/maven-public/"
}
maven {
name = "sonatype"
url = "https://oss.sonatype.org/content/groups/public/"
}
}
dependencies {
// libs 내의 JAR 파일을 의존성으로 추가
implementation fileTree(include: ['*.jar'], dir: 'libs')
// MongoDB 드라이버
implementation 'org.mongodb:mongodb-driver-sync:4.11.0'
// Lombok
annotationProcessor 'org.projectlombok:lombok:1.18.30'
compileOnly 'org.projectlombok:lombok:1.18.30'
// Paper API
compileOnly "io.papermc.paper:paper-api:1.18.2-R0.1-SNAPSHOT"
}
// Java 버전 설정
def targetJavaVersion = 17
java {
def javaVersion = JavaVersion.toVersion(targetJavaVersion)
sourceCompatibility = javaVersion
targetCompatibility = javaVersion
if (JavaVersion.current() < javaVersion) {
toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion)
}
}
tasks.withType(JavaCompile).configureEach {
if (targetJavaVersion >= 10 || JavaVersion.current().isJava10Compatible()) {
options.release = targetJavaVersion
}
}
processResources {
def props = [version: version]
inputs.properties props
filteringCharset 'UTF-8'
filesMatching('plugin.yml') {
expand props
}
}
Minecraft 서버는 크게 Bungeecord와 Bukkit 서버로 나눌 수 있습니다.
