# NOTICE —— 第三方归属声明

**YES-SB（YSM × 拔刀剑重锋 兼容修复）**

本文件说明本项目与第三方项目之间的关系。**本项目不包含、不再分发下述任何项目的代码或美术资源**；
所有第三方内容都只在**运行时**通过其公开 API 访问，或以"复刻其行为语义"的方式重新实现。

---

## 一、本项目自身

| 项 | 内容 |
|---|---|
| 名称 | YES-SB（YSM × 拔刀剑重锋 兼容修复） |
| 协议 | **MIT** —— 完整文本见 [LICENSE](LICENSE) |
| 版权 | Copyright (c) 2026 YES-SB contributors |

---

## 二、移植的代码：车万女仆（Touhou Little Maid）

本项目的**女仆拔刀剑功能**部分（`dev.yessb.compat.TlmMaidBridge`、
`dev.yessb.compat.TlmMaidCombatBridge`，以及 `dev.yessb.mixin.tlm` 下的三个混入）
**按行为语义复刻了车万女仆的两处实现**（下述文件均已在其 `1.20` 与 `1.21` 公开分支中核对）：

- 来源：`TartaricAcid/TouhouLittleMaid`

### 1. 渲染

- 文件：`src/main/java/com/github/tartaricacid/touhoulittlemaid/compat/slashblade/SlashBladeRender.java`
- 复刻内容：`renderMaidMainhandSlashBlade` / `renderMaidOffhandSlashBlade` /
  `renderGeckoMaidBackSlashBlade` 的**完整变换链与出鞘判定**（`translate` / `rotate` / `scale` 的数值
  与顺序原样照抄，包括 `scale 0.01`、`rotZ(-15)`、"动作后 5 刻内出鞘"等）。
  本项目不修改这些数值（仅把缩放调整为原值的 90%，作为可配置项）。

### 2. 挥刀逻辑

- 文件：`src/main/java/com/github/tartaricacid/touhoulittlemaid/compat/slashblade/SlashBladeCompat.java`
- 复刻内容：`swingSlashBlade(EntityMaid, ItemStack)` 的**行为语义与全部数值**——
  "物品是拔刀剑 **且** 当前任务是攻击任务"的前置判定、摆动角取 `[-30, 30)`、
  以"中心偏移为零 / 不静音 / 非暴击 / 伤害倍率 `1.0` / 击退 `smash`"调用拔刀剑的公开 API 生成斩击特效、
  以及把"刚刚挥过刀"写入刀状态的时间戳。
  与其**上游调用点**一致：挂在"实体挥刀"这一时机上，且在同一帧内先做上述两件事、再走原版逻辑。
- **本项目的实现方式**：`TlmMaidCombatBridge` 是**自行编写**的，不复制其代码文件；
  唯一被原样固定的东西是**观感与手感所依赖的数值**（见上），以及"必须两边各写一次时间戳"这一行为。
- ⚠️ **注意本项并不注入车万女仆**：因为 1.21.1 的发布版里那个覆写方法**已不存在**，
  本项目改为挂在**原版** `net.minecraft.world.entity.LivingEntity#swing(InteractionHand)` 上，
  自行判定"是不是女仆"。也就是说这一处**没有修改车万女仆的任何字节码**。

**依其协议要求，保留其版权声明如下：**

```
MIT License

Copyright (c) 2019-2024 tartaric_acid, for the code part

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.
```

> ⚠️ **注意其协议原文中的限定语 `for the code part`：上述 MIT 只覆盖车万女仆的
> 代码部分，其美术资源（模型、贴图、音效等）不在 MIT 授权范围内。**
> 本项目**不使用**车万女仆的任何美术资源。

---

## 三、参考的源码：Yes Steve Model（公开源码仓库）

本项目的**动画相关部分**（`dev.yessb.compat.YsmSlashBladeModule`、
`dev.yessb.compat.SlashBladeBridge#comboAnimationName`）**参考了其公开源码的行为语义**。

- 来源：`YesSteveModel/YesSteveModel`，分支 **`dev/1.20`**（默认分支）
- 协议：**Apache-2.0**（`LICENSE` 为 Apache 2.0 全文）
- 参考的文件：`client/compat/slashblade/`
  （`SlashBladeAnimation` / `SlashBladeCompat` / `SlashBladeResharped` / `SlashBladeRender`）与 `init/ModItemTags`
- 参考的语义：
  - "是否拔刀剑"的判定条件；
  - 由拔刀剑连招状态算出动画名的规则（含超时窗口、`combo_a4_ex → combo_a4ex` 的归一化、
    `standby` 超时 `-553`、居合斩的空中变体）；
  - 主动画前缀 `slashblade:` 与其回退行为。

本项目是**参照该语义自行实现**的，未复制其代码文件。

> **⚠️ 版本与协议上的重要区分（务必看清）**
>
> | | 公开源码仓库 | 本项目实际注入的目标 |
> |---|---|---|
> | 产物 | 下一代重构版（`gradle.properties` → `3.0-dev-forge+mc1.20.1`） | `2.6.5-neoforge+mc1.21.1` 发布版 |
> | 平台 | Forge / Minecraft **1.20.1** / Java 17 | NeoForge / Minecraft **1.21.1** / Java 21 |
> | 协议 | **Apache-2.0**（仅覆盖其原创代码；内置模型资产、第三方作品各有其自身协议，见其 `NOTICE.md`） | **All Rights Reserved**（`META-INF/neoforge.mods.toml` → `license="All rights reserved"`） |
> | 源码可得性 | 公开，但 README 自述"**未完成、请勿用于生产环境**"，且"网络协议与模型管理代码尚未提交" | **无对应源码，且类名经过混淆** |
>
> 因此：**公开源码只用于语义对照，不替代注入靶点**。本项目实际注入的是那个 ARR 的 2.6.5 构建，
> 对该构建**不复制、不内嵌、不再分发任何代码或资源**，仅在运行时以 Mixin 补充返回值。
>
> 该注入的授权与上游答复见 **第五节**；本项目已就"为定位问题做过局部字节码层面的分析"
> 一事主动向作者说明，作者已知悉并表示理解。

---

## 四、用于了解架构：YesSteveModel-Native

- 来源：`YesSteveModel/YesSteveModel-Native`
- 协议：**Apache-2.0**
- 关系：**仅用于阅读**其模块划分与渲染组织方式（例如确认骨骼层级与模型状态的归属），
  以判断某些方案是否可行。**未使用其任何代码。**

---

## 五、运行时注入的对象：Yes Steve Model（已获作者同意）

本项目的**动画修复**部分（`dev.yessb.compat.YsmSlashBladeModule`、
`dev.yessb.mixin.ysm` 下的两个混入）以 Mixin **在运行时补充返回值**的方式，
作用在 **Yes Steve Model 的 1.21.1 发布版构建**（发布版协议为 All Rights Reserved）之上。

- 本项目**不复制、不内嵌、不再分发该构建的任何代码或资源**；
- 被补充的部分是**上游尚未实现的占位实现**（其拔刀剑联动在 2.6.5 时还是空桩：
  判定恒 `false`、取名为空），本项目只把"是否拔刀剑"与"取动画名"两个返回值补成真实语义；
- **原因已由作者答复确认**：并非有意停用，而是当时 **1.21.1 上尚未发布拔刀剑**、适配还没做；
  作者并明确表示**之后会做**这份适配。
- **本项目就该运行时注入已获得作者同意**，作者亦同意本项目**保留到官方正式修复为止**；
  本项目已主动向作者说明"为定位问题做过局部字节码层面的分析"一事。
- **退役承诺**：上游发布正式修复后，本项目会做出声明、标注对应功能失效，必要时从 CurseForge 撤下
  （按社区惯例**归档而非删除**，避免破坏锁定 file ID + 哈希的整合包）。

> 因为所有注入都带版本白名单与 failure-soft，靶点变化时会自动跳过
> （表现为功能不生效，不会崩溃），所以退役不存在紧急时间窗。

---

## 六、运行时调用的公开 API：拔刀剑：重锋

- 来源：`SlashBlade:Resharped`（`Quarkrus/SlashBlade_Resharped`）
- 协议：**代码 MIT / 美术资源 All Rights Reserved**
- 关系：本项目在**运行时调用其公开类**，例如：
  - `mods.flammpfeil.slashblade.client.renderer.layers.LayerMainBlade`（腰挂刀渲染层）
  - `mods.flammpfeil.slashblade.client.renderer.util.BladeRenderState`（部件渲染）
  - `mods.flammpfeil.slashblade.capability.slashblade.BladeStateAccess`（连招状态读取）
  - `mods.flammpfeil.slashblade.registry.ComboStateRegistry`（连招状态表）
  - `mods.flammpfeil.slashblade.util.AttackManager#doSlash`（斩击特效实体，女仆挥刀用）
  - `mods.flammpfeil.slashblade.util.KnockBacks#smash`（同上）

  这些依赖**仅在编译期存在，运行时不打包进本项目的 jar**；
  且**不引用、不再分发其任何美术资源**。

  > 关于 `doSlash` 的一个事实（本项目据此设计，非猜测）：它在**客户端直接 `return null`**，
  > 因此刀光只能由服务端生成、再由原版实体同步发给客户端。
  > 本节与第二节第 2 条是同一件事的两面，README §3.5 有完整的信号链说明。

---

## 七、其它

- **Minecraft / NeoForge / Sponge Mixin**：通过各自的官方公开 API 与标准 Mixin 机制接入，
  本项目不包含其任何代码。
- 本项目**不含**上述任何项目的代码或资源文件。
  上述归属声明是为了**尊重与致谢**，同时也是履行 MIT 的署名义务。

---

## 八、免责与再分发提示

本项目以 MIT 协议授权（仅覆盖本项目自己的代码）。

**若你要基于本项目二次开发并分发，上述各方的权利与义务仍需你自行确认**，
包括但不限于：车万女仆协议中的 `for the code part` 限定、
拔刀剑美术资源的 All Rights Reserved，以及 Yes Steve Model 发布版自身的授权条款。
（本项目针对 YSM 的运行时注入**已另行获得其作者同意**；
该同意是**针对本项目**的，不自动延伸到你二次开发后的产物。）

本项目的设计目标是**不与上游产生授权冲突**：不复制、不内嵌、不再分发任何第三方内容，
只在运行时通过公开 API 互操作。请保持这一原则。
