如何给WaylandCraft贡献代码:GPLv3授权与LLM贡献政策的完整指南
【免费下载链接】waylandcraftWayland Compositor in Minecraft项目地址: https://gitcode.com/gh_mirrors/wa/waylandcraft
WaylandCraft 是一个把Wayland 合成器搬进 Minecraft的开源模组:你可以在游戏世界里以 3D 窗口运行真实的 Linux 应用。本文将带你从零了解如何给 WaylandCraft 贡献代码——包括 GPLv3 授权的责任、项目独特的 LLM(大语言模型)贡献政策、本地构建环境与代码结构速览,帮助你顺利提交第一个 Pull Request。
为什么值得给 WaylandCraft 贡献代码
WaylandCraft 采用Java(Minecraft 模组层)+ Rust(Wayland 服务器核心)双语言架构,同时覆盖 Fabric Mixin、EGL/DMABuf 渲染、Wayland 协议处理等多种技术栈,是学习游戏模组与桌面系统交叉领域难得的实战项目。
项目当前基于 Minecraft 26.1.2 与 Fabric 加载器(版本信息见 gradle.properties),主要依赖包括 xkbcommon 1.11.0 与 xwayland-satellite,完整系统要求可参考 README.md。
贡献前必读:GPLv3 授权意味着什么
WaylandCraft 使用GPLv3(GNU 通用公共许可证 v3),完整文本见 LICENSE。对贡献者而言,核心要点有:
- 传染性条款:你的修改一旦分发,必须同样以 GPLv3 开放,不能混入专有代码;
- 源码开放义务:发布修改版时须提供对应的完整源码,并附带许可证文本;
- 专利授权:贡献者自动授予使用者免费、全球性的必要专利许可(GPLv3 第 11 条);
- 无担保原则:代码按"原样"提供,贡献不会附带任何质保或赔偿义务(GPLv3 第 15、16 条)。
一句话总结:贡献前请确认你的代码(包括从其他项目借鉴的部分)能够兼容 GPLv3,尤其是从其他许可证项目中复制的片段,务必先核对许可证兼容性。
LLM 贡献政策:AI 生成代码如何提交 ⚠️
这是 WaylandCraft 最需要留意的贡献规则,原文位于 README.md:
- 可合并的贡献必须"未大量使用 LLM"完成。项目出于代码质量、版权与伦理考量,对 AI 生成内容持谨慎态度;
- 如果你借助 LLM 完成了有价值的贡献,请不要直接提交正式 PR,而是:
- 明确披露使用了 LLM;
- 以Draft(草稿)Pull Request形式提交;
- 草稿 PR 可能需要由人类程序员仔细审查甚至完全重写,之后才可作为正式 PR 重新提交。
💡 实用建议:把 LLM 当作理解代码库、定位问题的辅助工具;最终提交的核心改动,请确保是你自己编写并能解释每一行的代码。
环境准备与本地构建步骤
开发环境要求见 README.md:
| 组件 | 要求 |
|---|---|
| 操作系统 | Linux |
| JDK | Java 25 SDK |
| Rust 工具链 | 完整 Rust 开发环境(native 核心使用 Rust 2024 edition,见 native/Cargo.toml) |
| 系统依赖 | xkbcommon 1.11.0、xkbcli、xwayland-satellite |
构建与运行的最快路径:
git clone https://gitcode.com/gh_mirrors/wa/waylandcraft cd waylandcraft ./build.sh # 所有参数会透传给 cargo build ./gradlew runClient # 直接进入开发运行环境构建成功后,最终 jar 包位于build/libs目录。
快速熟悉代码结构:Java 与 Rust 双栈
贡献前建议先通读这两个入口文件,它们分别是 Java 侧与 Rust 侧的"总调度":
- Java 模组入口:WaylandCraft.java —— 模组初始化、键位注册(
V应用启动器 /G键盘捕获 /B窗口管理器)都在onInitializeClient中完成; - Rust 核心入口:lib.rs —— 定义 Wayland 服务器状态
WLCState与合成器事件循环,是协议请求(移动/最大化/全屏等)的汇聚点。
各模块职责速查(详细文件列表可自行浏览对应目录):
| 模块路径 | 职责 |
|---|---|
| src/main/java/dev/evvie/waylandcraft/bridge/ | 与 Rust 端通信的桥接层(表面、顶层窗口、DMABuf 反馈) |
| src/main/java/dev/evvie/waylandcraft/gui/ | 游戏内 GUI:应用启动器、窗口管理器屏幕 |
| src/main/java/dev/evvie/waylandcraft/mixin/ | Fabric Mixin 注入点(键盘、鼠标、帧率限制等) |
| native/src/seat.rs | 指针/键盘等 Wayland seat 输入处理 |
| native/src/output.rs | 输出面(游戏视口)与 DMABuf 管理 |
| native/src/satellite.rs | xwayland-satellite 子进程管理(X11 应用支持) |
| src/main/java/dev/evvie/waylandcraft/settings/ | 设置系统与配置管理 |
提交 PR 前的自检清单 ✅
- 代码符合 GPLv3,无不可兼容的第三方片段;
- PR 描述中如实说明是否使用了 LLM(使用则提交为 Draft 并披露);
./build.sh编译通过,./gradlew runClient中功能实际验证过;- 修改符合所在模块的既有编码风格(Java 侧 Tab 缩进、Rust 侧标准格式化);
- 涉及系统依赖的改动,已更新 README.md 的依赖说明。
常见问题(新手视角)
Q:我从未写过 Minecraft 模组,可以先从哪儿入手?从纯 Java 的 gui/ 或 settings/ 模块开始,风险低、易验证,适合练手。
Q:修 Bug 需要先理解 Rust 端吗?不一定。多数窗口交互问题发生在 Java 层(如 WaylandCraft.java 的输入转发逻辑),仅当涉及协议行为时才需要进入 native/src/。
Q:贡献会被拒绝吗?只要遵守 GPLv3 与 LLM 政策、代码质量达标,项目对社区贡献持开放态度——关键在于如实披露与保持透明度。
祝你顺利发出第一个 PR,让 Minecraft 里的 Wayland 世界更完善 🚀
【免费下载链接】waylandcraftWayland Compositor in Minecraft项目地址: https://gitcode.com/gh_mirrors/wa/waylandcraft
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考