nms-packet-senderlisted
Install: claude install-skill MrPippi/MJP-Claude-Skills
# NMS Packet Sender / NMS 封包發送器
## 技能名稱 / Skill Name
`nms-packet-sender`
## 目的 / Purpose
產生標準的 NMS 封包發送工具類,涵蓋單人、多人、廣播、延遲發送等情境。所有發送點透過 `ServerPlayer.connection.send(Packet<?>)` 進入 Netty write queue。
## NMS 版本需求 / NMS Version Requirements
- Paper 1.21 – 1.21.3
- Paperweight userdev 1.7.2+
- Mojang mappings(已由 Paper 1.20.5+ 原生支援)
## 觸發條件 / Triggers
- 「封包發送」「packet sender」「自定義封包」「custom packet」
- 「Clientbound」「推送封包」「send packet」
- 「PacketPlayOut」「ProtocolLib 替代」
## 輸入參數 / Inputs
| 參數 | 範例 | 說明 |
|------|------|------|
| `package_name` | `com.example.network` | 產出類別所在 package |
| `class_name` | `PacketSender` | 工具類名稱 |
| `include_batch` | `true` | 是否產生批次/廣播方法 |
| `include_async` | `true` | 是否產生延遲/非同步發送方法 |
## 輸出產物 / Outputs
- `PacketSender.java` — 主工具類(static 方法)
- `PacketBuilder.java`(選)— 常見 Clientbound 封包建構器
## Paperweight 建置設定 / Build Setup
參見 `Skills/paper-nms/PLATFORM.md`。關鍵依賴:
```groovy
dependencies {
paperweight.paperDevBundle('1.21.1-R0.1-SNAPSHOT')
}
```
## 代碼範本 / Code Template
### `PacketSender.java`
```java
package com.example.network;
import net.minecraft.network.protocol.Packet;
import net.minecraft.server.level.ServerPlayer;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.craftbukkit.v1_21_R1.entity.CraftPlayer;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import java.util.Collection;
import java.util.Objects;
@SuppressWarnings("UnstableApiUsage")
public final class PacketSender {
private PacketS