尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

如何从源码构建Pufferfish:Patch fork开发模式与Gradle构建完整教程

如何从源码构建Pufferfish:Patch fork开发模式与Gradle构建完整教程 如何从源码构建PufferfishPatch fork开发模式与Gradle构建完整教程【免费下载链接】PufferfishA high-performance fork of Paper designed for large servers.项目地址: https://gitcode.com/gh_mirrors/puf/PufferfishPufferfish 是一款专为大型服务器打造的高性能 Minecraft 服务端它是 Paper 的高度优化分支fork。本文将带你完整走一遍「克隆仓库 → 理解 Patch 结构 → Gradle 构建」的全流程让你从零开始构建出自己的 Pufferfish 服务端 JAR 包。一、Pufferfish 是什么Pufferfish 由 Pufferfish Host 团队开发主打大玩家量服务器的性能与稳定性更快的实体 Tick、8 倍地图渲染速度、30% 更快的漏斗处理、内置零开销 Profiler并且完全兼容所有 Paper 插件。想自己编译、魔改或跟进上游更新你只需要了解它的Patch fork 开发模式和Gradle 构建命令本文 10 分钟讲清楚。二、环境准备构建 Pufferfish 需要什么构建前请确认本机已安装依赖要求说明JDK21 或更高1.21.1 版本端需要较新 JavaGit任意较新版本拉取代码、应用 Patch内存4G构建脚本默认分配 4G JVM 内存项目根目录的 gradle.properties 中可以看到构建配置org.gradle.jvmargs-Xmx4G mcVersion1.21.1 paperRef7c9240f4a63b13be1fdcedbfb0270f9b49b75518其中paperRef锁定了上游 Paper 的精确提交保证每次构建结果一致——这是 Patch fork 项目的典型做法。三、克隆仓库获取 Pufferfish 源码git clone https://gitcode.com/gh_mirrors/puf/Pufferfish cd Pufferfish四、看懂仓库结构Patch fork 是怎么工作的Pufferfish 并不直接存放Paper 的完整源码而是用Patch补丁文件来描述对上游的修改。仓库核心结构如下Pufferfish/ ├── patches/ │ ├── api/ # 5 个 API 层补丁 │ └── server/ # 32 个服务端补丁 ├── scripts/ │ ├── apatch.sh # 手工应用/重建补丁脚本 │ ├── upstream.sh # 一键跟进上游更新脚本 │ └── upstreamCommit.sh # 自动生成上游更新提交 ├── gradle.properties # 版本与上游引用配置 ├── settings.gradle.kts # 定义 pufferfish-api / pufferfish-server 两个子模块 └── gradlew # Gradle 构建入口 补丁是怎么命名的补丁采用「序号-主题.patch」格式打开 patches/server/ 目录就能看到优化全景例如0008-Optimize-mob-spawning.patch—— 优化刷怪性能0015-Flare-Profiler.patch—— 内置零开销 Profiler0032-TPS-catchup.patch—— TPS 追赶机制0025-Fix-Paper-6045-block-goal-shouldn-t-load-chunks.patch—— 修复区块加载问题每个补丁就是一个标准的 git 差异文件构建时 Gradle 会自动把它们依次应用到拉取下来的 Paper 源码上再编译打包。五、Gradle 构建命令一行命令出 JAR方式 1标准构建开发验证用./gradlew build执行后 Gradle 会完成拉取指定提交的 Paper 源码 → 应用 37 个补丁 → 编译 → 测试 → 打包。构建产物一般位于子模块的build/libs目录下。方式 2paperclip 构建发行用./gradlew paperclippaperclip会打出一个可直接部署的服务端 JARPaperclip 格式适合放到服务器上直接运行。这是 Pufferfish 官方推荐的分发构建方式。提示Gradle Wrappergradle/wrapper/gradle-wrapper.properties已锁定 Gradle 8.8无需你本机预装特定版本./gradlew会自动下载。六、Patch 开发工作流如何给 Pufferfish 加补丁如果你是开发者两个脚本值得收藏位于 scripts/ 目录1️⃣ apatch.sh —— 手工打补丁# 应用新补丁支持 3-way 合并失败时用 wiggle 自动修复冲突 ./scripts/apatch.sh patches/server/0033-Your-Feature.patch # 重置到干净的上游状态 ./scripts/apatch.sh --reset它会先尝试git am -3若失败则用wiggle工具自动掰合冲突非常适合处理上游代码变动后补丁对不上的情况。2️⃣ upstream.sh —— 跟进上游更新./scripts/upstream.sh该脚本会自动完成读取gradle.properties中的旧paperRef检查 Paper 上游是否有新提交更新引用 →applyPatches→rebuildPatches→ 重新打包自动生成带变更说明的提交由 scripts/upstreamCommit.sh 完成脚本最后会提示 please review before pushing——提交前请务必人工审查这是 Patch fork 维护的核心纪律。✅七、常见问题 FAQQ构建失败提示 Java 版本不够安装 JDK 21 并设置JAVA_HOMEPufferfish 当前针对 1.21.1 开发见gradle.properties中mcVersion。Q为什么仓库里看不到 Paper 的源码文件因为源码在上游仓库只保存补丁。构建时 Gradle 会拉取paperRef指定的 Paper 提交并叠加补丁这正是 Patch fork 的轻量优势——仓库小、更新快、无代码漂移。Q许可证是什么补丁文件遵循 GPL-3.0见 PATCH-LICENSE其余文件为 MIT 许可。八、总结步骤命令/操作克隆git clone https://gitcode.com/gh_mirrors/puf/Pufferfish标准构建./gradlew build发行构建./gradlew paperclip应用补丁./scripts/apatch.sh patch文件跟进上游./scripts/upstream.sh到这里你既掌握了 Pufferfish 的源码构建方法也理解了 Patch fork 这类项目的开发套路——它同样适用于 Fork 维护、大型上游项目定制等场景。动手试试吧你的高性能服务端 JAR 只差一条./gradlew paperclip【免费下载链接】PufferfishA high-performance fork of Paper designed for large servers.项目地址: https://gitcode.com/gh_mirrors/puf/Pufferfish创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表