From 60cf457230f5639f5842bb050b735cb4c969085b Mon Sep 17 00:00:00 2001 From: cneicy Date: Fri, 4 Sep 2026 23:03:02 +0800 Subject: [PATCH] docs --- .gitignore | 1 + README.md | 4 ++ THIRD-PARTY-NOTICES.md | 89 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 94 insertions(+) create mode 100644 THIRD-PARTY-NOTICES.md diff --git a/.gitignore b/.gitignore index 27545c5..72438ca 100644 --- a/.gitignore +++ b/.gitignore @@ -143,3 +143,4 @@ GeneratedServers/ExampleGreedMod.Rules/* !GeneratedServers/ExampleGreedMod.Rules/ExampleGreedMod.Rules.csproj !GeneratedServers/ExampleGreedMod.Rules/pack-mod.ps1 GeneratedModSdk/ +.mimosa/ diff --git a/README.md b/README.md index 53c6d70..639a16a 100644 --- a/README.md +++ b/README.md @@ -43,3 +43,7 @@ https://git.crash.work/ShrinkSDK/Installer.git#v0.2.4 随后在 Unity 打开 `ShrinkSDK/包管理`。UI Toolkit 窗口会显示直接与间接依赖的真实安装状态,并按 Context 组合基础、应用宿主、独立功能和模块集成组织固定版本包与推荐组合。安装器只合并 `com.cneicy` registry 和依赖数据,不写认证信息,也不复制模板到 `Assets`。 发布、子模块迁移和独立开发宿主生成规则位于 [Tools/RepositoryMigration/Initialize-ShrinkSdkPackageRepositories.ps1](Tools/RepositoryMigration/Initialize-ShrinkSdkPackageRepositories.ps1)。架构约束与跨包验证要求见 [DESIGN.md](DESIGN.md)。 + +## 第三方与合规 + +概念参考(NeoForge / Minecraft Forge、MessagePipe)与随仓库分发的第三方二进制(Kcp-CSharp.dll 等)的许可证遵从情况见 [THIRD-PARTY-NOTICES.md](THIRD-PARTY-NOTICES.md)。 diff --git a/THIRD-PARTY-NOTICES.md b/THIRD-PARTY-NOTICES.md new file mode 100644 index 0000000..5b2ef7e --- /dev/null +++ b/THIRD-PARTY-NOTICES.md @@ -0,0 +1,89 @@ +# 第三方声明(THIRD-PARTY NOTICES) + +本文件说明 ShrinkSDK Workspace 的第三方概念参考、依赖与对应许可证遵从情况。最后核对日期:2026-08-29。 + +## 结论速览 + +| 对象 | 关系 | 许可证 | 义务 | +| --- | --- | --- | --- | +| NeoForge / Minecraft Forge | 设计概念参考(未复制代码) | LGPL-2.1 | 无强制义务,本文档致谢 | +| MessagePipe(Cysharp) | 设计概念参考(未复制代码、未引入包) | MIT | 无强制义务,本文档致谢 | +| AlicizaX(GitHub 组织) | 无引用 | MIT / Apache-2.0 | 无 | +| Kcp-CSharp.dll | 内嵌二进制(`Assets/Modules/ShrinkNetwork/Plugins/`) | MIT | 保留版权与许可声明(见下) | +| System.Runtime.CompilerServices.Unsafe.dll | 内嵌二进制(`Assets/Modules/ShrinkNetwork/Plugins/`) | MIT | 保留版权与许可声明(见下) | +| UniTask | 包管理器依赖(不随本仓库再分发) | MIT | 许可文本随包分发 | +| MessagePack | 包管理器依赖(不随本仓库再分发) | MIT | 许可文本随包分发 | +| Newtonsoft.Json | 包管理器依赖(不随本仓库再分发) | MIT | 许可文本随包分发 | + +## 概念参考归致 + +### NeoForge / Minecraft Forge(LGPL-2.1) + +`ShrinkEventBus` 与 `ShrinkModFramework` 在 API 语义与设计思路上参考了 Forge / NeoForge: + +- 五级订阅优先级 `ShrinkEventPriority.Highest / High / Normal / Low / Lowest` 对应 Forge `EventPriority`; +- `[ShrinkSubscribe(receiveCanceled: ...)]` 对应 `@SubscribeEvent(receiveCanceled = ...)`; +- `EventResult { DEFAULT, ALLOW, DENY }` 对应 Forge `Event.Result`; +- `IShrinkEventBus.Attach(object)` 的对象注册范式对应 `MinecraftForge.EVENT_BUS.register(...)`。 + +以上为 API 概念与命名语义层面的借鉴。实现(IL 后处理静态绑定、泛型静态槽位通道、UniTask 调度集成、写时复制 handler 快照等)均为本项目原创,未复制 NeoForge / Minecraft Forge 的任何源代码,因此不构成 LGPL-2.1 意义上的衍生作品。该边界与 `Docs/JustAnyProjectArchitectureAudit.md`(A.3 参考边界)的既有声明一致。 + +### MessagePipe(MIT) + +MessagePipe 未作为依赖引入,EventBus 也不提供 `IPublisher/ISubscriber` 拆分或 DI 集成,与 MessagePipe 的 API 形态不构成高度相似。仅借鉴其"独立 broker + 稳定 handler 快照 + 低分配发布路径"的实现思路(见 `Docs/JustAnyProjectArchitectureAudit.md` A.3),不构成代码衍生。 + +### AlicizaX + +本仓库及全部子模块未引用、未复制、未派生 https://github.com/AlicizaX 下任何仓库的代码或资产。 + +## 随本仓库分发的第三方二进制 + +以下 DLL 直接存放在 `Assets/Modules/ShrinkNetwork/Plugins/`,随仓库与构建产物分发,按 MIT 要求保留其版权与许可声明: + +### Kcp-CSharp.dll + +- 来源:https://github.com/Molth/Kcp-CSharp (NuGet 包 `Kcp-CSharp` 1.0.8) +- 用途:`ShrinkNetwork` KCP 传输层 +- 许可证:MIT,Copyright (c) 2024 Nevin +- 上游协议实现 KCP:https://github.com/skywind3000/kcp ,MIT,Copyright (c) 2017 Lin Wei (skywind3000 at gmail.com) + +### System.Runtime.CompilerServices.Unsafe.dll + +- 来源:NuGet 包 `System.Runtime.CompilerServices.Unsafe` +- 许可证:MIT,Copyright (c) .NET Foundation and Contributors + +### MIT 许可证全文(适用于上述两个组件) + +```text +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +``` + +## 包管理器依赖(不随本仓库再分发) + +以下依赖通过 Unity Package Manager 或 NuGet 引入,许可证文本随各自包分发,此处仅作登记: + +- UniTask 2.5.10 — MIT — Copyright (c) 2019 Yoshifumi Kawai / Cysharp, Inc. — https://github.com/Cysharp/UniTask +- MessagePack 3.1.4 — MIT — Copyright (c) 2017 Yoshifumi Kawai and contributors — https://github.com/MessagePack-CSharp/MessagePack-CSharp +- Newtonsoft.Json 13.0.3 — MIT — Copyright (c) 2007 James Newton-King — https://github.com/JamesNK/Newtonsoft.Json +- Unity 官方包 — 按 Unity 各自许可条款分发 + +## 维护者注意 + +- `ShrinkNetwork` 模块独立发布时,应把"随本仓库分发的第三方二进制"一节同步进该模块仓库(模块是独立公开仓库,根仓库声明不能覆盖其独立分发路径)。 +- Mod SDK 导出器(`ShrinkModSdkExporter`)目前只导出 ShrinkSDK 自有程序集;若未来把上述第三方 DLL 一并打包进导出包,必须在导出包内附带对应许可声明。