### 使用方法
#### 加锁 (Lock)
1. 玩家需要持有待加锁的物品。
2. 输入命令 `/nl lock <password>` 或 `/nbtlock lock <password>` 来锁定手中的物品。这里 `<password>` 是你设定用于解锁此物品的密码,它将被用来加密和解密NBT数据。
#### 解锁 (Unlock)
1. 玩家需要持有加锁后的物品。
2. 输入命令 `/nl unlock <password>` 或 `/nbtlock unlock <password>` 来尝试解锁手中的物品。这里 `<password>` 是之前锁定时设置的密码,如果正确输入后,该物品将恢复原样。
### 详细教程
#### 步骤一:加锁
1. 打开你的Minecraft游戏并进入一个已经安装了 `/nbtlock` 插件的世界。
2. 使用你的手点击要加密保护的物品以确保它在你手中。
3. 输入命令格式:`/nl lock <password>`,比如输入 `/nl lock secretcode`。确认密码后敲回车。
#### 步骤二:解锁
1. 确保你想解密并恢复原状的加锁后的物品在你手里。
2. 使用正确的密码来尝试解锁。命令格式为 `/nl unlock <password>`,比如输入 `/nl unlock secretcode` 并确认后敲回车。
### 原理解析
该插件的核心逻辑是读取玩家手中的物品NBT数据,并根据提供的密码计算出加密密钥(使用MD5算法),然后将这些信息存储在一个特殊的“PAPER”物品中,以标签的形式保存。具体如下:
1. **锁功能**:
– 从玩家手中获取当前物品。
– 提取并序列化物品的NBT数据为字符串形式。
– 使用给定密码计算MD5哈希值作为AES加密密钥。
– 加密提取到的NBT数据。
– 创建一个新的“PAPER”物品,设置type标签等于原物品ID,data标签存储加密后的NBT数据。
2. **解锁功能**:
– 从玩家手中获取当前物品(必须是锁过的纸)。
– 使用给定密码计算MD5哈希值作为AES解密密钥。
– 解密并解析data标签中存储的数据到原始的NBT格式。
– 创建一个新物品,设置其类型为type标签指定的内容,并应用恢复后的NBT数据。
通过这种方式,玩家可以通过简单的命令操作来保护他们的珍贵物品不受恶意修改或破坏。