https://github.com/gloomn/blogMCPluginProjects
GitHub - gloomn/blogMCPluginProjects
Contribute to gloomn/blogMCPluginProjects development by creating an account on GitHub.
github.com
플러그인 코드들은 모두 여기 있으니 코드가 필요하시면 다운로드 하시면 됩니다!
이전 강의
https://syntaxack.tistory.com/entry/minecraftplugin9
마인크래프트 플러그인 강좌 9강 - GUI 투표 시스템 만들기(paper)
이전 강의https://syntaxack.tistory.com/entry/minecraftplugin8 마인크래프트 플러그인 강좌 8강 - 특정 아이템을 들면 버프 주기이전강의저번 강좌에서는 쿨타임 시스템을 구현해 보았다.https://syntaxack.tistory.
syntaxack.tistory.com
config.yml이란?
config.yml은 마인크래프트 플러그인 설정 파일이다.
플러그인을 사용하는 서버 운영자가 직접 값을 수정할 수 있도록 돕는 외부 설정 파일이다.
예를 들어
- 채팅 색상
- 금지어 목록
- 최대 포인트 수치
- GUI 제목
같은 값을 우리는 코드에서 수정하고 , 생성하였는데 이를 config.yml에서 읽어오면 훨씬 더 유연한 플러그인이 된다.
1. 프로젝트 생성하기
Intellij를 실행해서 새로운 마인크래프트 프로젝트를 만들어준다.
프로젝트 생성 방법을 모르면 아래 링크를 눌러 한 번만 보면 된다.
https://syntaxack.tistory.com/entry/minecraftplugin1
마인크래프트 플러그인 강좌 1강 - 첫 플러그인 만들기
이전 강의https://syntaxack.tistory.com/entry/minecraftplugin0 마인크래프트 플러그인 강좌 0강 - 준비하기마인크래프트 플러그인이란?마인크래프트 플러그인은 마인크래프트 내에서 기능을 확장할 수 있도
syntaxack.tistory.com
1. paper/spigot/sponge 템플릿에서 여러분이 사용하는 버킷 플러그인을 선택한다.
2. 빌드 시스템은 Gradle를 선택한다.
3. 언어는 자바를 선택한다.
4. 마인크래프트 버전은 여러분이 플러그인을 적용항 버전과 paper 버전이 일치하도록 선택한다.
예를 들어서 마인크래프트 버전 1.21.4, paper 버전 1.21.4 이면 1.21.4를 선택한다.
5. 플러그인 이름과 클래스 이름을 적는다.
생성을 눌러준다.
https://syntaxack.tistory.com/entry/minecraftpluginproblem1
마인크래프트 플러그인 강좌 - 잘못된 Gradle JVM 구성을 발견했습니다.
IntelliJ를 사용해서 마인크래프트 플러그인 프로젝트를 만들었을 때 잘못된 Gradle JVM 설정이라는 알람이 뜰 때가 있다.이는 JDK와 Gradle이 호환되지 않아서 발생하는 문제이다.이때는 인터넷 검색
syntaxack.tistory.com
만약 Gradle과 JVM 버전이 안 맞는다는 오류가 뜨면 위의 포스트를 보면 된다.
2. Gradle build 설정
우리는 jar 파일로 빌드할 때 빌드 위치를 바로 플러그인 폴더로 빌드되게 설정할 것이다.
build.gradle 파일을 열어준다.
tasks.jar{
archiveFileName = 'configTest1.jar'
destinationDirectory = file('C:\\Users\\kijoon\\Desktop\\Server\\plugins')
}
3. config.yml 파일 만들기
resources 폴더에 만들어준다.
4. config.yml 파일 작성하기
plugin-name: "채팅 필터 플러그인"
max-points: 100
간단하게 채팅 필터 플러그인이라고 이름을 붙여보자.
그리고 max 포인트를 100으로 잡아보자
5. 자바 코드로 읽기
package org.blog.configTest1;
import org.bukkit.plugin.java.JavaPlugin;
public final class ConfigTest1 extends JavaPlugin {
@Override
public void onEnable() {
// config.yml이 존재하지 않으면 기본값 저장
saveDefaultConfig();
// 값 읽기
String pluginName = getConfig().getString("plugin-name");
int maxPoints = getConfig().getInt("max-points");
getLogger().info("플러그인 이름: " + pluginName);
getLogger().info("최대 포인트: " + maxPoints);
}
@Override
public void onDisable() {
// 플러그인 종료 시 처리
}
}
onEnable()과 onDisable() 함수는 아래 강좌에서 설명했습니다.
https://syntaxack.tistory.com/entry/minecraftplugin1
마인크래프트 플러그인 강좌 1강 - 첫 플러그인 만들기
이전 강의https://syntaxack.tistory.com/entry/minecraftplugin0 마인크래프트 플러그인 강좌 0강 - 준비하기마인크래프트 플러그인이란?마인크래프트 플러그인은 마인크래프트 내에서 기능을 확장할 수 있도
syntaxack.tistory.com
saveDefaultConfig();
이 함수는 resources/config.yml 파일이 존재하지 않으면 기본값을 plugins/플러그인이름/config.yml에 복사한다.
서버에서 처음 실행할 때 플러그인이 설정 파일을 자동으로 생성하도록 도와준다.
String pluginName = getConfig().getString("plugin-name");
getConfig()는 config.yml 파일을 읽어오는 메서드이다.
getString("plugin-name")은 config.yml 파일에서 plugin-name 항목에 있는 값을 문자열로 읽어온다.
따라서 pluginName에는 "채팅 필터 플러그인" 값이 저장된다.
int maxPoints = getConfig().getInt("max-points");
getInt("max-points")는 config.yml에서 "max-points"라는 항목의 값을 정수(int)로 읽어온다.
따라서 maxPoints에는 100이 저장된다.
getLogger().info("플러그인 이름: " + pluginName);
getLogger().info("최대 포인트: " + maxPoints);
우리가 config.yml에 설정한 것들을 출력해준다.
6. plugin.yml 작성하기
name: configTest1
version: '1.0-SNAPSHOT'
main: org.blog.configTest1.ConfigTest1
api-version: '1.21'
그대로 초기 설정대로 두면 된다.
7. jar 파일로 빌드하기
8. 테스트하기
서버를 실행해보면
plugins 폴더에 플러그인 폴더가 만들어지고, config.yml 파일이 만들어진다.
우리가 아까 사용한 saveDefaultConfig() 덕분이다.
이렇게 말이다.
서버 로그를 보면
정상적으로 실행되는 것을 볼 수 있다.
9. config.yml 수정하고 결과 보기
여기서 config.yml을 수정해보자.
저장하고, 서버에서 reload를 해준다.
그럼 이렇게 값이 바뀌는 것을 볼 수 있다.
10. 마무리
다음 강의에서는 saveDefaultConfig()와 saveConfig()의 차이점, 실시간 반영 방법을 알아보겠다.
설정 파일이 바뀌었을 때마다 서버를 껐다 켜야 할까?
코드에서 설정을 바꾸고 저장하는 방법은?
'마인크래프트 플러그인' 카테고리의 다른 글
마인크래프트 플러그인 강좌 12강 - [config.yml] getString, getInt, getBoolean 값 읽기 실습 (0) | 2025.06.22 |
---|---|
마인크래프트 플러그인 강좌 11강 - [config.yml] saveDefaultConfig(), saveConfig(), reloadConfig() 차이와 실시간 적용 방법 (2) | 2025.06.22 |
마인크래프트 플러그인 강좌 9강 - GUI 투표 시스템 만들기(paper) (6) | 2025.06.21 |
마인크래프트 플러그인 강좌 8강 - 특정 아이템을 들면 버프 주기 (0) | 2025.06.21 |
마인크래프트 플러그인 강좌 7강 - 쿨타임 시스템 구현하기 (1) | 2025.06.15 |