OpenSource-Hub

Pumpkin

애플리케이션

Pumpkin-MC/Pumpkin

Rust로 구축된 고성능 Minecraft 서버.

개요

Pumpkin은 Rust로 완전히 작성된 Minecraft 서버로, 성능, 호환성 및 보안에 중점을 두고 있습니다. Java와 Bedrock 에디션을 모두 지원하며, 멀티스레딩을 활용해 속도를 향상시키고, 구성 옵션, 플러그인 및 프록시 지원을 제공합니다. 이 프로젝트는 활발히 개발 중이며, 빠르고 커스터마이징 가능한 서버 대안이 되는 것을 목표로 하고 있습니다.

README 미리보기

\n\n# Pumpkin\n\n\n[](https://discord.gg/wT8XjrjKkf)\n[](https://opensource.org/licenses/gpl-3-0)\n\n\n\n[Pumpkin](https://pumpkinmc.org/) is a Minecraft server built entirely in Rust, offering a fast, efficient,\nand customizable experience. It prioritizes performance and player enjoyment while adhering to the core mechanics of the game.\n\n\n\n\n\n\n## Goals\n\n- **Performance**: Leveraging multi-threading for maximum speed and efficiency.\n- **Compatibility**: Supports the latest Java & Bedrock Minecraft server version while adhering to Vanilla game mechanics.\n- **Security**: Prioritizes security by preventing known security exploits.\n- **Flexibility**: Highly configurable, with the ability to disable unnecessary features.\n- **Extensibility**: Provides a foundation for plugin development.\n\n> [!IMPORTANT]\n> Pumpkin is currently under heavy development.\n>\n> [See what needs to be done before the 1.0.0 Release](https://github.com/Pumpkin-MC/Pumpkin/issues/449)\n\n## Features\n\n- [x] Configuration (toml)\n- [Tracking: Protocol](https://github.com/Pumpkin-MC/Pumpkin/issues/1401)\n  - [x] Server Status/Ping\n  - [x] Encryption\n  - [x] Packet Compression\n  - [x] Java Edition\n  - [x] Bedrock Edition (W.I.P)\n  - ...\n- [Tracking: World](https://github.com/Pumpkin-MC/Pumpkin/issues/1403)\n  - [x] Player Tab-list\n  - [x] Scoreboard\n  - [x] World Loading\n  - [x] World Time\n  - [x] World Borders\n  - [x] World Saving\n  - [x] Lighting\n  - [x] Entity Spawning\n  - [x] Bossbar\n  - [x] Chunk Loading (Vanilla, Linear, Pump)\n  - [Chunk Generation](https://github.com/Pumpkin-MC/Pumpkin/issues/36)\n  - [x] Chunk Saving (Vanilla, Linear, Pump)\n  - [Redstone](https://github.com/Pumpkin-MC/Pumpkin/issues/1402)\n  - [x] Liquid Physics\n  - ...\n- [Tracking: Player](https://github.com/Pumpkin-MC/Pumpkin/issues/1405)\n  - [x] Skins\n  - [x] Teleport\n  - [x] Movement\n  - [x] Animation\n  - [x] Inventory\n  - [Combat](https://github.com/Pumpkin-MC/Pumpkin/issues/1404)\

FAQ (5)

문제 해결
Pumpkin 서버에서 채워진 지도가 포함된 청크가 리로드 후 시드로부터 재생성되는 문제를 어떻게 해결하나요?

이는 Pumpkin 0.2.0+26.3–26.51의 NBT 직렬화 버그로 인해 발생합니다. MapDecorationsImpl은 기본 DataComponentImpl::write_data를 사용하며, 이는 minecraft:map_decorations에 대해 TAG_Compound(0x0A) 대신 NbtTag::End(0x00)를 출력합니다. 유효하지 않은 NBT로 인해 리로드 시 청크를 읽을 수 없게 되고, Pumpkin은 이를 재생성하면서 블록 엔티티를 파괴합니다.

수정 방법: map_decorations가 컴파운드 태그로 기록되도록 하는 fix(data): prevent map decoration NBT corruption 변경 사항이 포함된 빌드로 Pumpkin을 업데이트하세요.

영향을 받는 버전에서의 우회 방법: 월드를 백업한 후, Pumpkin으로 제공하기 전에 모든 아이템에서 minecraft:map_decorations 컴포넌트를 제거하세요. 실제 지도 이미지는 data/minecraft/maps/*.dat에 남아 있고 올바르게 직렬화된 minecraft:map_id 컴포넌트에 의해 참조되므로 손실되지 않습니다. 이미 재생성된 청크는 백업에서 복원해야 하며, 해당 블록 엔티티는 덮어쓰여진 리전 파일에서 복구할 수 없습니다.

원본 Issue #3698
문제 해결
Pterodactyl 또는 Pelican에서 Minecraft 서버 콘솔 명령어가 한 줄씩 뒤처지는 이유는 무엇인가요?

Pumpkin에서 pumpkin.toml의 [commands] 섹션에 use_tty = false를 설정한 후 서버를 재시작하세요:

[commands]
use_tty = false

이렇게 하면 첫 번째 명령이 실행되지 않고 각 명령이 다음 명령이 전송된 후에야 실행되는 문제가 해결됩니다. 이 문제는 Rustyline 의존성의 TTY 처리 버그로 인해 발생하며, 업스트림 수정 사항은 커밋 f2bbcc5에 존재하지만 이슈가 보고된 시점에는 아직 릴리스된 버전에 포함되지 않았습니다.

원본 Issue #3696
문제 해결
/fill을 사용하여 넓은 영역의 묘목을 채울 때 서버가 코어 덤프와 함께 충돌하는 이유는 무엇인가요?

이 크래시는 제한 없는 재귀적인 neighbor/shape 블록 업데이트로 인해 발생합니다. 묘목, 압력판 및 이와 유사한 자가 파괴 블록의 대규모 그룹은 worker 스택이 오버플로될 때까지 업데이트를 재귀적으로 전파합니다. neighbor 업데이트를 제한된 반복적 작업 스택을 통해 처리하는 수정 사항이 포함된 빌드로 서버를 업데이트하세요. 영향을 받는 버전에서의 해결 방법으로, fill을 더 작은 볼륨으로 나누세요. 예를 들어 16×16×16 대신 16×16×1 레이어로 분할합니다:

/fill ~ ~ ~ ~15 ~ ~15 minecraft:acacia_sapling
/fill ~ ~1 ~ ~15 ~1 ~15 minecraft:acacia_sapling
/fill ~ ~2 ~ ~15 ~2 ~15 minecraft:acacia_sapling

전체 볼륨이 채워질 때까지 Y 좌표를 계속 증가시키세요. 패치되기 전까지 한 번의 명령으로 대략 512–576개 이상의 묘목 또는 압력판 블록을 채우지 마세요.

원본 Issue #2016
문제 해결
왜 부패하는 잎 블록은 소리 없이 사라지는 대신 블록 파괴 소리를 재생하나요?

이 문제는 잎사귀 부패 로직이 world.break_block(...)를 호출하여 블록 파괴 사운드와 파티클 효과가 발생하기 때문에 생깁니다. 부패하는 잎사귀는 world.set_block_state(...)를 사용하여 소리 없이 제거되어야 하며, 이는 바닐라 동작과 일치합니다. 이 수정은 커밋 742beaf6f9f84fb99a04402434f6c6feb86667d1에서 도입되었습니다. PR fix(block): don't play break effects when leaves decay가 포함된 빌드로 서버를 업데이트하세요. 포크를 유지 관리하는 경우, 잎사귀 부패의 world.break_block(...) 호출을 world.set_block_state(...)로 교체하세요.

원본 Issue #3058
문제 해결
Pumpkin Minecraft 서버에서 측면에서 점화했을 때 네더 포탈이 부분적으로 깨진 상태로 생성되는 문제를 어떻게 해결할 수 있나요?

이 문제는 Pumpkin Java Edition 빌드 0.2.0+26.3부터 26.51까지에 영향을 미칩니다. 포털이 측면 흑요석 블록에서 점화되면, NetherPortal::create가 바닐라의 UPDATE_KNOWN_SHAPE 플래그 없이 포털 블록을 배치하게 되며, 이로 인해 생성 도중 발생하는 이웃 업데이트가 점화된 불과 일부 포털 블록을 제거합니다.

해결 방법: 이슈 #3839를 수정하는 PR fix(portal): write nether portal blocks without neighbour shape updates가 포함된 릴리스 또는 빌드로 Pumpkin을 업데이트한 후, 서버를 재시작하고 포털을 다시 점화하세요.

임시 해결 방법: 측면이나 수직 면 대신 포털의 하단/바닥 흑요석 블록에 부싯돌과 강철을 사용하세요. 다시 점화하기 전에 남아 있는 불이나 불완전한 포털 블록을 모두 제거하세요.

원본 Issue #3839