资讯动态

Pumpkin 第三方资产与许可声明全解:Minecraft 兼容数据的来源、许可证边界与合规使用

发布时间:2026/10/2 15:15:45 来源:尧图企业网站定制
游戏开发【免费下载链接】PumpkinEmpowering everyone to host fast and efficient Minecraft servers项目地址https://gitcode.com/GitHub_Trending/pum/Pumpkin点击查看免费下载Pumpkin 是一个用 Rust 编写的高性能 Minecraft 服务端实现其目标是让任何人都能快速搭建高效的服务端。要让一个独立实现的服务端与官方客户端互通就不可避免地要携带大量来自 Minecraft 本体及社区生态的映射数据、协议字段与游戏资产。assets/NOTICE.md正是这一整套「第三方资产与归属声明」的权威清单它逐类说明了仓库内第三方数据文件的来源、版权归属与许可证边界。本文将以此声明为骨架结合仓库内实际文件与源码调用证据完整梳理 Pumpkin 的资产构成、许可框架及其在代码中的真实用法帮助开发者理解「哪些数据可以自由修改、哪些必须保留归属、哪些受制于 EULA」并为自建兼容层项目提供可直接套用的合规清单。一、为什么一个 Minecraft 服务端需要大量第三方资产Minecraft 客户端与官方服务端之间的通信并不仅是「转发玩家坐标」还涉及方块状态编码、物品数据组件、实体类型 ID、流体属性、合成配方、战利品表、世界生成参数等一系列需要与官方数据严格一致的映射。任何第三方的服务端实现包括 Pumpkin都必须复刻这些数据否则客户端解析会出现偏差导致区块渲染异常、物品失效或协议不同步。assets/NOTICE.md开篇即点明这些文件的三大用途Minecraft 协议兼容protocol compatibility让服务端能正确编码、解码官方协议包服务端模拟server emulation在服务端侧复现方块、物品、实体、流体等游戏行为世界生成world generation复刻生物群系、噪声、结构等生成逻辑。正因这些文件是「从官方客户端与服务端发行版中提取或派生」而来它们不能简单地并入项目自己的开源许可而需要单独建立归属与合规框架。assets/NOTICE.md正是为此而存在的核心合规文档。二、Minecraft 官方资产与数据包仅用于兼容不并入 GPLv32.1 涉及的文件清单assets/NOTICE.md列出的官方衍生资产包括assets/datapack/文档原文写作assets/datapacks/仓库实际目录名为assets/datapack/assets/blocks.jsonassets/items.jsonassets/entities.jsonassets/fluids.jsonassets/properties.jsonassets/en_us_java.json从仓库实际内容看assets/datapack/是一个结构完整的官方数据包包含data/minecraft/与data/c/两个命名空间规模十分庞大仅data/minecraft/recipe/就有数百个合成配方 JSON、data/minecraft/loot_table/覆盖 1200 方块与上百种实体掉落、data/minecraft/structure/携带 1500 个结构 NBT 文件此外还有advancement/、tags/、worldgen/、enchantment/、trim_material/等完整目录树。顶层 JSON 文件则承担「运行时元数据」的角色例如assets/blocks.json以block_entity_types如furnace、chest、sign、trial_spawner等方块实体类型与方块碰撞形状shapes中的min/max三维边界为核心内容assets/items.json为每个物品定义数字 ID 与完整数据组件如minecraft:item_model、minecraft:max_stack_size、minecraft:rarity、minecraft:enchantments等可视为官方物品注册表的静态快照assets/en_us_java.jsonJava 版完整英文语言表涵盖 UI、进度、成就、死亡消息等全部本地化键。2.2 版权与条款边界assets/NOTICE.md明确声明版权归属© Mojang Studios / Microsoft Corporation来源从 Minecraft 客户端与服务端发行版中提取或派生用途限制仅用于兼容性、服务端模拟与互操作性受 Minecraft 最终用户许可协议EULA与 Mojang 品牌及资产使用指南约束许可例外这些文件不受 Pumpkin 自身 GPLv3 许可证管辖其知识产权仍归 Mojang Studios 所有。这意味着项目对官方数据采取了「兼容用途例外」策略允许随仓库分发以保证开箱即用但修改、再分发或用于非兼容目的时仍需以 EULA 为准。2.3 代码如何消费这些资产include_str 内嵌与代码生成这些资产并非「只存在于仓库中却无人使用」。从源码中可以清楚看到它们被编译期内嵌进二进制crates/pumpkin-data/src/generated/context_provider.rs 中大量使用include_str!(../../../../assets/datapack/data/minecraft/context_int_provider/...)与include_str!(../../../../assets/datapack/data/minecraft/context_float_provider/...)把酿造、堆肥、烹饪相关的配方参数 JSON 直接编译进pumpkin-datacrate同目录下的enchantment_provider.rs同样通过include_str引用assets/datapack/data/minecraft/enchantment_provider/下的装备附魔、袭击掉落等数据服务器图标也来自资产目录crates/pumpkin/src/server/connection_cache.rs通过include_bytes!(../../../../assets/default_icon.png)将assets/default_icon.png作为默认服务器图标。可以看出assets/是crates/pumpkin-data生成模块与crates/pumpkin服务端运行时的数据底座资产文件一旦缺失这些 crate 将无法编译。三、Bedrock 与 Geyser 映射MIT 协议下的基岩版兼容层3.1 涉及的文件清单Pumpkin 同时支持 Java 版与基岩版Bedrock协议见 crates/pumpkin-protocol/src/bedrock/ 与 crates/pumpkin/src/net/bedrock/其基岩版数据来自 GeyserMC 生态。assets/NOTICE.md将整个assets/bedrock/目录列为「Bedrock Geyser Mappings」。仓库中assets/bedrock/实际包含biome_definitions.nbt、biomes.json基岩版生物群系定义block_states.nbt、blocks.nbt基岩版方块状态与方块注册数据creative_items.json创造模式物品栏条目item_components.nbt、item_data_overrides.json物品组件与数据覆盖player_geometry.json玩家几何模型runtime_item_states.json运行时物品状态表README.md与LICENSE-GEYSER随目录附带来源说明与许可证文本。3.2 许可证与数据来源assets/NOTICE.md明确版权归属© 2019–2026 GeyserMC 及贡献者许可证MIT License具体文本见 assets/bedrock/LICENSE-GEYSERBDS 数据说明部分基岩版状态元数据依据标准 Minecraft 使用指南从 BDSBedrock Dedicated Server中挖掘而来。从 assets/bedrock/LICENSE-GEYSER 可以看到标准 MIT 许可全文其核心条款包括允许自由使用、复制、修改、合并、出版、分发、再许可与销售副本唯一硬性要求是在软件及其衍生作品中保留上述版权声明与许可声明同时以「AS IS」形式提供作者与版权持有者不对任何索赔或损害承担责任。对使用方而言这意味着可以自由地将这些基岩版映射用于自身项目甚至闭源商业软件但必须保留 GeyserMC 的版权声明与 MIT 许可文本这正是 Pumpkin 将LICENSE-GEYSER原样保留在assets/bedrock/内的原因。四、Conventional Tagsc:跨加载器通用标签规范assets/NOTICE.md第四部分专门说明了数据包中的通用标签文件位置assets/datapack/26_2/data/c/tags/文档原文如此仓库实际路径为assets/datapack/data/c/tags/标准依据Fabric 与 NeoForge 的 Conventional / Common Tags 规范许可证Apache-2.0 / MIT。所谓 Conventional Tags惯用标签是 Fabric 与 NeoForge 生态共同约定的、以c:前缀命名空间的跨加载器物品/方块/实体分类体系例如c:items/、c:blocks/、c:fluids/、c:enchantment/、c:worldgen/等。它解决了「不同模组对同一类资源命名不统一」的问题只要所有加载器都遵循同一套c:标签定义模组之间就能以标准化的方式互相识别矿石、木料、染料、药水等类别。从仓库实际内容看assets/datapack/data/c/tags/下包含block/132 个 JSON、item/270 个 JSON、fluid/12 个、enchantment/7 个、entity_type/6 个、potion/1 个与worldgen/95 个等子目录是完整、可落地的标签数据集。由于这些标签数据以 Apache-2.0 / MIT 双许可发布Pumpkin 可以将其并入仓库并用于实现与 Fabric / NeoForge 生态一致的标签语义。五、Pumpkin 自身代码的双重许可策略assets/NOTICE.md的最后一部分厘清了「第三方数据」与「项目自有代码」之间的许可分界5.1 服务端源码GPLv3所有原创的 Pumpkin 服务端源码、自定义工具与代码生成器均采用GNU General Public License v3.0GPLv3许可依据见仓库根目录 LICENSE工作区级 Cargo.toml 中license GPL-3.0与之对应且整个 workspace 启用了极其严格的 Clippy 门禁all、nursery、pedantic、cargo全部deny并禁止unwrap/expect/panic等体现了对源码质量的工程化约束。5.2 插件 APIMIT OR Apache-2.0pumpkin-plugin-api与pumpkin-plugin-wit两个 crate 采用MIT OR Apache-2.0 双许可允许插件作者按自己的偏好选择许可证据一crates/pumpkin-plugin-api/Cargo.toml 中license MIT OR Apache-2.0证据二crates/pumpkin-plugin-wit/ 目录下同时携带LICENSE-APACHE与LICENSE-MIT两个许可文件。这种「服务端 GPLv3 插件 API 宽松许可」的设计意图很清晰插件生态是服务端的「外部扩展」若插件 API 同样采用 GPL则会强制所有插件以 GPL 开源而采用 MIT/Apache 双许可后插件作者可以自由选择许可包括闭源商业许可从而降低生态参与门槛。5.3 插件 API 的工程背景从 crates/pumpkin-plugin-api/src/lib.rs 的文档注释可以确认Pumpkin 插件是编译为 WebAssembly 的组件一个插件由实现Plugintrait 的类型构成并通过register_plugin!宏注册插件 API 依赖wit-bindgen与postcard序列化以及serde_json并通过[package.metadata.component] target ../pumpkin-plugin-wit将 API 与 crates/pumpkin-plugin-wit/v0.1/ 下的 40 个.wit接口定义涵盖advancement、inventory、world、player、scheduler、scoreboard等绑定在一起。换句话说双许可策略服务于一个真实存在的 WASM 插件架构而非仅为声明而声明。六、合规使用清单与最佳实践综合assets/NOTICE.md与仓库实际结构可以总结出一份可供其他兼容层项目直接复用的合规清单资产类别仓库位置版权归属许可证合规要点Minecraft 官方数据与数据包assets/datapack、assets/blocks.json、assets/items.json 等Mojang Studios / MicrosoftEULA Mojang 品牌指南不适用 GPLv3仅限兼容、模拟、互操作用途修改与再分发以 EULA 为准Bedrock/Geyser 映射assets/bedrockGeyserMCMIT见 LICENSE-GEYSER必须保留版权声明与 MIT 文本可用于闭源商业项目Conventional Tagsassets/datapack/data/c/tagsFabric / NeoForge 生态Apache-2.0 / MIT按规范维护c:命名空间标签即可服务端源码与代码生成器crates/、tools/pumpkin-codegenPumpkin 项目GPLv3见 LICENSE修改与分发衍生作品需以 GPLv3 开源插件 API 与 WIT 接口crates/pumpkin-plugin-api、crates/pumpkin-plugin-witPumpkin 项目MIT OR Apache-2.0插件作者可任选其一在实践中以下几类操作是最容易踩到许可边界的需要特别注意修改官方数据文件assets/blocks.json、assets/items.json等一旦被修改其衍生状态仍受 EULA 约束不能以 GPLv3 名义重新许可分发时的归属保留任何二次分发都必须保留assets/NOTICE.md本身以及assets/bedrock/LICENSE-GEYSER的版权声明MIT 的「保留声明」条款是硬性义务插件生态的许可选择基于pumpkin-plugin-api开发插件时可以自由选择 MIT 或 Apache-2.0乃至商业许可但基于服务端内部 API 修改服务端本体则须遵循 GPLv3版本同步工作区版本号0.2.026.3-26.51暗示当前资产集对应某一具体 Java/基岩版版本26.3 / 26.51升级游戏版本时需要同步更新资产数据与协议实现避免新旧数据混用导致兼容性漂移。七、小结assets/NOTICE.md虽然篇幅不长却是理解 Pumpkin 合规架构的关键文档它把「Mojang 官方数据EULA」「GeyserMC 映射MIT」「Fabric/NeoForge 标签Apache-2.0/MIT」「服务端本体GPLv3」「插件 APIMIT OR Apache-2.0」五类资产与代码的许可边界一次性讲清并与仓库内的 LICENSE、assets/bedrock/LICENSE-GEYSER、crates/pumpkin-plugin-api/Cargo.toml 等文件互相印证。对开发者而言这份文档既是「哪些资产能怎么用」的权威答案也是一个高性能 Minecraft 服务端在开源与合规之间取得平衡的完整范本既保证了开箱即用的兼容体验又通过精细的许可分层保护了官方知识产权与插件生态的开放性。赞分享游戏开发【免费下载链接】PumpkinEmpowering everyone to host fast and efficient Minecraft servers项目地址https://gitcode.com/GitHub_Trending/pum/Pumpkin点击查看免费下载相关推荐RomPatcher.js移动端适配在手机上使用ROM补丁工具的最佳实践RomPatcher.js移动端适配在手机上使用ROM补丁工具的最佳实践 RomPatcher.js是一款基于HTML5开发的在线ROM补丁工具支持IPS、.NET 资产许可模型runtime 仓库中许可证与第三方声明的分发规范.NET 资产许可模型runtime 仓库中许可证与第三方声明的分发规范 .NET 是面向云、移动、桌面与 IoT 应用的开源跨平台运行时。作为一个包含 Co语言运行时标准库JIT编译编译器VancedManager开源许可证合规性检查与第三方库声明VancedManager开源许可证合规性检查与第三方库声明 你是否在使用开源项目时因许可证合规问题而困扰是否担心项目中第三方库的许可证冲突风险本文将深入移动开发上一篇终极Alpine.js自定义魔法属性指南轻松扩展$root与$refs功能的实用技巧下一篇Get All Kittens创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑