무료M-Core

설정 · 데이터베이스 · 다국어 · 명령어 · GUI · 지역 · 스코어보드 · 홀로그램을 하나의 플러그인으로 묶은 개발용 코어. 서버에 jar 하나만 넣으면 됩니다.

0 다운로드 0 팔로워

====================================================================
한 줄 소개
====================================================================
설정 · 데이터베이스 · 다국어 · 명령어 · GUI · 지역 · 스코어보드 · 홀로그램을
하나의 플러그인으로 묶은 개발용 코어. 서버에 jar 하나만 넣으면 됩니다.

====================================================================
소개
====================================================================
ModernCore 는 플러그인을 만들 때마다 매번 다시 짜게 되는 부분
— 설정 파일 읽기, DB 연결, 메시지 번역, 명령어 등록, GUI 페이지 처리,
스코어보드 깜빡임, 홀로그램 정리 — 을 한곳에 모아 둔 코어 라이브러리입니다.

서버에는 ModernCore 하나만 설치하고, 다른 플러그인은 plugin.yml 에
depend: [M-Core] 한 줄만 적으면 됩니다. Kotlin 런타임과 코루틴도
ModernCore 가 제공하므로 플러그인마다 중복으로 번들할 필요가 없습니다.

플러그인이 꺼질 때 명령어 · GUI · DB 커넥션 풀 · 모듈 · 코루틴 · 홀로그램이
전부 자동으로 정리됩니다. 정리를 빠뜨려 생기는 메모리 누수와 유령 엔티티가
구조적으로 생기지 않습니다.

====================================================================
주요 기능
====================================================================
[설정] 여러 yml 파일을 이름으로 불러오고, 타입 지정해서 읽고, 통째로 리로드.
[데이터베이스] MySQL · MariaDB · PostgreSQL · SQLite. HikariCP 풀, 테이블 빌더,
키-값 저장소. JDBC 드라이버는 서버가 시작할 때 자동으로 내려받습니다.
[EveryDB] everydb.kr 연동 클라이언트. API 키를 ModernCore 에 한 번만 넣어 두면
모든 플러그인이 공유합니다.
[다국어] 한국어 · 영어 · 일본어 기본 지원. 플레이어가 /lang ko 를 한 번 치면
ModernCore 기반 모든 플러그인이 그 언어로 말합니다. auto 로 두면
클라이언트 언어를 따라갑니다. 메시지는 lang/messages_*.yml 에서
서버 관리자가 직접 고칠 수 있습니다.
[명령어] 코드로 쓰는 명령어 DSL. plugin.yml 에 명령어를 적지 않아도 되고,
하위 명령어 · 인자 타입 · 권한 · 탭 완성이 자동으로 붙습니다.
[모듈] 기능을 모듈로 나누고 의존 관계를 적어 두면 활성화 순서를 자동 정렬합니다.
[색상] 2색 · 3색 그라데이션, 무지개, <gradient:#aaa:#bbb> 태그, 레거시 & 코드.
[GUI] 일반 GUI 와 페이지 GUI. 플러그인이 꺼지면 열려 있던 GUI 가 모두 닫힙니다.
[GUI 레이아웃] GUI 의 제목 · 줄 수 · 배경 · 버튼 배치 · 클릭 동작을 plugins/<플러그인>/gui/
폴더의 yml 로 뺄 수 있습니다. 관리자가 파일을 고치고 리로드하면 바로 반영됩니다.
[지역] 직육면체 · 구 · 다각형 지역. PVP · BUILD · BREAK · INTERACT · DAMAGE ·
MOB_SPAWNING · EXPLOSION · ITEM_DROP · 출입 메시지 플래그를 코어가 직접
적용하고, 출입 시 이벤트를 발생시킵니다. regions.yml 에 자동 저장됩니다.
[스코어보드] 제목 · 줄을 람다로 주면 주기적으로 갱신되고, 플레이어가 나가면 자동
정리됩니다. Folia 는 스코어보드 API 자체를 지원하지 않는데, ModernCore 는
그때 사이드바 패킷을 직접 보내므로 같은 코드가 양쪽에서 그대로 돌아갑니다.
[홀로그램] 텍스트 디스플레이 기반. 플레이어마다 다른 내용, 클릭 처리, 정렬 · 배경색 ·
크기 · 시야 거리 조절. 서버가 비정상 종료된 뒤 남은 엔티티도 다음 시작 때
자동으로 치웁니다.
[패킷] NMS 패킷 송신과 가로채기. 버전별 매핑은 코어가 처리합니다.
[스케줄러] Folia 와 일반 Paper 를 같은 코드로 지원합니다. 엔티티용 · 위치용 ·
전역용 · 비동기 예약을 구분해서 제공하므로 Folia 스레드 규칙을 지키기 쉽습니다.

====================================================================
설치
====================================================================

  1. ModernCore.jar 를 서버의 plugins 폴더에 넣습니다.
  2. 서버를 시작하면 plugins/M-Core/config.yml 이 만들어집니다.
  3. 다국어 기본 언어, EveryDB 키, 데이터베이스 설정을 필요에 따라 채웁니다.

ModernCore 를 쓰는 플러그인은 plugin.yml 에 아래 한 줄만 추가하면 됩니다.

depend: [M-Core]

====================================================================
개발자 빠른 시작
====================================================================
class MyPlugin : ModernPlugin() {

override fun onEnableModern() {
val db = core.database.connectFromConfig()

command("hello") {
val target = playerArgument().optional()
executes {
val who = getOrNull(target) ?: player
sendLang("hello", "name" to who.name) // 플레이어 언어로 번역
}
}

core.scoreboards.create("main") {
title("<gradient:#00ffea:#7b2fff>SERVER</gradient>")
lines { player -> listOf("<gray>이름 <white>${player.name}") }
updateEvery(20)
}
}
}

플러그인이 꺼질 때 위에서 만든 것들은 따로 정리하지 않아도 모두 해제됩니다.

====================================================================
명령어 · 권한
====================================================================
/moderncore (mcore, mc-core) 코어 상태 · 플러그인 목록 · 모듈 목록 · 리로드
/lang (language, 언어) 플레이어 언어 선택 (en / jp / ko / auto)

mservice.core.admin /moderncore 사용 (기본: OP)
mservice.core.region.bypass 모든 지역 보호 플래그 무시 (기본: OP)

====================================================================
호환성
====================================================================
서버 Paper 1.21.x · Folia 지원
자바 Java 21
언어 Kotlin 2.1 (런타임은 ModernCore 가 제공)
의존성 없음. JDBC 드라이버는 필요할 때 자동으로 내려받습니다.