MPMPESCore 的 C++ 重写(进行中)。
- 目标:兼容 Minecraft: 基岩版 0.14.x(协议 70,与 PHP 版
MPMPESCore一致) - 来源:
~/MPMPESCore(Genisys / PocketMine-MP 分支) - 许可:与上游一致,LGPL-3.0(衍生)
- 此代码100%AI生成 请勿找茬
已实现:
- RakLib 可靠会话(Phase 0–1)
server.properties+ CLI + 多语言插件(docs/PLUGINS.md)- 进服路径:Login → PlayStatus → StartGame → FullChunk → PLAYER_SPAWN
- 地图生成:flat / void / normal-stub 列式 chunk
- 多世界:
worlds.txt+/worlds/goto <world>/spawn - 挖放方块:
UpdateBlock世界同步 +LevelEvent破坏粒子 / 点击音 - 创造背包 + 玩家物品栏 +
MobEquipment热键 - 合成 stub:
CraftingData基础配方 +CraftingEvent接受结果 - 生物 AI:猪/鸡/牛/羊/僵尸(游荡 + 重力),
AddEntity/MoveEntity/RemoveEntity - 铁轨自动合并:普通轨/动力轨/探测轨/激活轨放置与破坏时按邻居重算 meta(直轨/弯轨/坡轨)
- 矿车/铁路:物品 328 放轨生成实体 84,右键乘坐,
SetEntityLink,轨上滑动;攻击矿车掉落 - 红石子集:红石粉强度 BFS、拉杆、红石火把、中继器、红石块、红石灯、动力轨供电;比较器 149/150(读箱子填充;0.14 客户端可能显示异常)
- 命令:
/help/list/me/worlds/goto/spawn/gm/give/spawnmob/clear - 插件事件:join/quit/chat/command/move/block/world_load + 告示牌 API v3
未实现 / 粗糙处:
- 客户端 Batch zlib 解压
- 完整合成校验 / 熔炉 UI 计时
- 路径寻路、仇恨 AI、死亡掉落实体
- 完整红石准连接 / 中继器 tick 延迟仿真 / 活塞
- 区块落盘、完整地形噪声
cd ~/MPMPESCoreCpp
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j"$(nproc)"打 tag v* 会自动编译并上传 Release:
| 产物 | 架构 |
|---|---|
mpmpes-linux-x86_64 |
Linux x86_64 (glibc) |
mpmpes-linux-x86_64-static |
Linux x86_64 全静态 |
mpmpes-linux-aarch64 |
Linux ARM64 |
mpmpes-linux-armv7 |
Linux ARMv7 hard-float |
mpmpes-linux-s390x |
Linux IBM Z (s390x) |
mpmpes-linux-ppc64le |
Linux POWER LE |
mpmpes-linux-riscv64 |
Linux RISC-V 64 |
mpmpes-macos-x86_64 / arm64 |
macOS Intel / Apple Silicon |
Windows 暂未出包(源码仍为 POSIX socket/
dlfcn);请用 WSL 或 Linux 二进制。
# 示例:本机发版
git tag v0.5.0 && git push origin v0.5.0
# 或 Actions → Build & Release → Run workflowcd ~/MPMPESCoreCpp
cp -n server.properties.example server.properties # 首次
./build/mpmpes --config server.properties
# 或
./build/mpmpes --port 19132 --motd 金安卓 --plugins-dir plugins
./build/mpmpes --no-plugins默认端口 19132。server.properties 里 gamemode= 控制新玩家默认模式(0/survival 或 1/creative);老玩家读 players/*.dat。
| 操作 | 说明 |
|---|---|
| 挖 | 创造:START_BREAK 立即挖;生存:STOP_BREAK/RemoveBlock |
| 放 | 手持方块右键 → UseItem |
| 创造栏 | 登录时下发 ContainerSetContent(0x79) |
| 刷怪 | 手持刷怪蛋右键,或 /spawnmob pig|zombie |
| 模式 | /gm 0 生存 / /gm 1 创造 |
| 示例 | 语言 | 依赖 |
|---|---|---|
| HelloC / HelloCpp | C/C++ .so 原生 |
CMake 自动编 |
| HelloPython | Python 子进程 | python3 |
仅保留 C/C++/native 与 Python。PHP / Node / Go / Rust 示例与加载路径已删除,避免额外运行时拖慢服务端。热路径约定见 docs/PLUGINS.md。
| 模块 | PHP 路径 | C++ 路径 |
|---|---|---|
| Binary | src/raklib/Binary.php |
include/mpmpes/binary/ |
| RakLib | src/raklib/ |
include/mpmpes/raklib/ + src/raklib/ |
| Protocol | src/pocketmine/network/protocol/ |
include/mpmpes/protocol/ |
| Level/Chunk | src/pocketmine/level/ |
include/mpmpes/level/ |
| Item | src/pocketmine/item/ |
include/mpmpes/item/Item.hpp |
| Entity | src/pocketmine/entity/ |
include/mpmpes/entity/Entity.hpp |
| Server | src/pocketmine/Server.php |
src/server/Server.cpp |
- 先网络后玩法:RakLib → MCPE packet → Player → Level / Entity
- 协议常量对齐 PHP
Info.php(CURRENT_PROTOCOL=70) - 不依赖 PHP / pthreads;单进程 + 可选后续工作线程
- s390x / x86_64 均可编(无架构特化汇编)
见 LICENSE(待从 PHP 核心复制 LGPL 文本)。上游致谢:PocketMine-MP、iTXTech Genisys、mpmpes。