高级无线设置工具
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | ae2stuff:AdvWirelessKit |
| 英文名 | Advanced Wireless Setup Kit |
| 中文名 | 无中文翻译(lang/zh_CN.lang 缺该键,见下方缺陷) |
| 实现 | net.bdew.ae2stuff.items.AdvWirelessKit(SimpleItem + AdvItemLocationStore) |
| 最大堆叠 | 1(AdvWirelessKit.scala:32) |
| 创造标签 | itemGroup.bdew.ae2stuff |
功能
高级无线设置工具是 无线设置工具 的队列版:NBT 里的 loc 从单个 Compound 变成 Compound 列表,可一次预置多个坐标。它有两种模式:
| 模式常量 | 值 | 行为 |
|---|---|---|
MODE_QUEUING |
0 | 每次右键接入器入队一个坐标,连接后自动弹出队首 |
MODE_BINDING |
1 | 退回单坐标行为,行为等同普通无线设置工具 |
模式切换
潜行 + 右键(onItemRightClick,AdvWirelessKit.scala:51-72):
- 若此刻按下 模式切换按键 → 不切模式,而是清空整个队列(
while (hasLocation(stack)) popLocation(stack)),并提示ae2stuff.wireless.advtool.queueing.clear - 否则
toggleMode(stack)在MODE_QUEUING/MODE_BINDING之间轮转((mode + 1) % 2,misc/AdvItemLocationStore.scala:122-133),并播报...queueing.activated或...binding.activated
NBT 无 mode 键时 getMode 写入并返回 MODE_QUEUING,即默认是队列模式(AdvItemLocationStore.scala:111-120)。
NBT 结构
| 键 | 类型 | 含义 |
|---|---|---|
loc |
NBTTagList(COMPOUND) | 坐标队列,队首 = 索引 0 |
dim |
int | 维度 id,整个队列共用一个 |
mode |
int | 0 = 队列,1 = 绑定 |
popLocation 弹出队首后,若列表空则同时移除 loc 与 dim(AdvItemLocationStore.scala:103-106)。
addLocation 有两条拒绝规则(AdvItemLocationStore.scala:23-46):
- 已有
dim且与新维度不同 → 返回 false(但代码未 return,继续执行入队,见下方缺陷) - 队列中已存在同坐标的非中枢接入器 → 返回 false
维度限制
与普通工具一致:不能跨维度。dim 字段是队列级单值,所以一次预置的坐标必须全在同一维度。
无序队列
getNextLocation 取索引 0(AdvItemLocationStore.scala:76-79),因此是先进先出。坐标被消费的顺序等于写入顺序。
配方:默认配置下无获取途径
recipes.cfg 全文只给 无线设置工具 一条配方(:50),没有 [I:ae2stuff:AdvWirelessKit] 的任何产出。Recipes.scala:11-14 那条无序配方是 AdvWirelessKit → AdvWirelessKit,只用于清除 NBT,无法从无到有。
在默认 tuning.cfg + recipes.cfg 下,本物品只能通过刷怪笼战利品、自定义配方或 /give 获得。
已知缺陷
- 缺中文翻译:
src/main/resources/assets/ae2stuff/lang/zh_CN.lang全文 49 行,缺item.ae2stuff.AdvWirelessKit.name。en_US.lang:13与de_DE.lang:11都有该键。中文环境下物品名显示为item.ae2stuff.AdvWirelessKit.name addLocation缺少提前返回:misc/AdvItemLocationStore.scala:31-33维度不同时写的是false而非return false,方法会继续走到:42完成入队并返回true——跨维度检查实际不生效isHub判定反了::38的条件是if (pos == loc && !isHub) return false,即只禁止把非中枢坐标重复入队,允许中枢重复入队