Minestom은 개발자가 Mojang의 코드 없이 자신만의 Minecraft 서버 소프트웨어를 만들 수 있는 오픈 소스 라이브러리입니다.
Mojang의 바닐라 서버와 Minestom 기반 서버의 주요 차이점은 우리 서버에는 기본적으로 어떤 기능도 포함되어 있지 않다는 것입니다! 그러나 우리는 귀하가 무엇이든 쉽게 가능하게 할 수 있도록 설계된 완전한 API를 보유하고 있습니다.
이는 최종 사용자가 사용하기 위한 개발자 API가 아닙니다. Bukkit/Forge/Sponge를 이것으로 바꾸는 것은 API를 구현하지 않기 때문에 작동하지 않습니다 .
Minestom은 Bukkit/Forge/Sponge처럼 설치되지 않습니다. Minestom은 Java 라이브러리이므로 다른 Java 라이브러리를 로드하는 것과 동일한 방식으로 로드해야 합니다. 이는 Minestom을 종속성으로 추가하고, 코드를 추가하고, 직접 컴파일해야 함을 의미합니다.
Minestom은 Maven Central에서 사용할 수 있으며 다음과 같이 설치할 수 있습니다(Gradle/Groovy):
repositories {
mavenCentral()
maven { url ' https://jitpack.io ' }
}
dependencies {
implementation ' net.minestom:minestom-snapshots:<???> '
}
Minestom 라이브러리를 사용하는 방법의 예는 여기에서 확인할 수 있습니다. 또는 공식 위키나 javadocs를 확인할 수도 있습니다.
Minecraft는 출시 이후 많은 발전을 이루었습니다. 오늘날 대부분의 서버는 바닐라 기능을 활용하지 못하고 심지어 바닐라 기능으로 인해 어려움을 겪기도 합니다. 우리의 대상 고객은 바닐라 기능의 이점을 거의 얻지 못하는 서버를 만들고 싶은 사람들입니다. 예: 크리에이티브, kitpvp. 목표는 필요한 사람들에게 더 많은 성능을 제공하는 것입니다. 즉, 속도를 저하시키는 모든 바닐라 기능을 제거하는 것보다 원하는 모든 누락된 바닐라 기능을 구현하는 데 더 적은 시간이 걸릴 때 Minestom을 사용하는 것이 합리적입니다.
Minestom은 완벽하지 않습니다. 우리의 선택은 어떤 경우에는 훨씬 더 좋아지고 어떤 경우에는 더 나빠집니다.
게임에 기본적으로 아무것도 포함되지 않더라도 추가하는 방법을 단순화했습니다. 여기 미리보기가 있습니다.
이것이 우리의 주요 개념입니다. 세상은 친구들과 함께 생존하기에 좋지만 규모가 커지면 관리하기 어려워질 수 있습니다. 가장 좋은 예는 스카이블럭이나 미니게임에서 찾을 수 있는데, 각 부분을 제대로 분리하지 못하고 모든 것을 파일에 저장해야 하는 것은 말할 것도 없고, 불필요한 데이터가 포함되어 있어 오버헤드도 발생합니다. 인스턴스는 이에 대한 경량 솔루션으로, 모든 청크를 메모리에만 보유할 수 있고 이를 사용자 정의 직렬화 등을 통해 즉시 다른 플레이어에게 복사 및 전송할 수 있습니다.
이동 중에 직접 인스턴스를 생성할 수 있다는 것은 필수입니다. 이를 통해 더 많은 프로젝트를 추진할 수 있다고 믿습니다.
인스턴스에는 성능상의 이점도 있습니다. 완전히 단일 스레드이거나 월드당 하나의 스레드를 사용하는 다른 인스턴스와는 달리 우리는 설정된 수의 스레드(풀)를 사용하여 인스턴스와 독립적으로 모든 청크를 관리하므로 더 많은 CPU 성능을 사용합니다.
Minestom은 기본적으로 상자가 무엇인지 모르므로 상자가 인벤토리를 열었다고 알려주어야 합니다. 모든 "특수 블록"(시각적일 뿐만 아니라)에는 특수 핸들러가 필요합니다. 이 핸들러를 적용하면 간단하게 어디에나 배치할 수 있는 블록이 생깁니다. 그러나 모든 블록은 시각적으로 존재하며 기본적으로 상호 작용이 없습니다.
"수동적" 또는 "공격적" 몬스터라는 용어는 존재하지 않으며, 너무 가까이 다가오는 플레이어에게 날아다니는 닭을 만드는 것을 아무도 막지 못합니다. NMS를 사용하여 그렇게 하는 것은 난독화와 큰 상속으로 인해 정말 혼란스럽습니다.
이는 Minecraft가 많이 발전한 분야이며 이제 인벤토리는 클릭 가능한 항목과 콜백이 있는 클라이언트<->서버 인터페이스로 많이 사용됩니다. 우리는 솔루션을 프로그래밍할 필요 없이 이러한 상호 작용을 기본적으로 지원합니다.
명령은 클라이언트와 서버 간의 가장 간단한 통신 방법입니다. 1.13 Minecraft는 "Brigadier"라는 새로운 라이브러리를 통합한 이후 args 유형의 잠재력을 최대한 활용하도록 설계된 API를 통합했습니다.
#mcdevs
- 프로토콜 및 파일 형식 연구.기여 파일을 참조하세요! 모든 WIP 기능은 초안 PR로 미리 볼 수 있습니다.
이 프로젝트는 Apache 라이센스 버전 2.0에 따라 라이센스가 부여됩니다.