磁力仪
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | RandomThings:magneticForce |
| 类 | lumien.randomthings.Items.ItemMagneticForce |
| GUI ID | GuiIds.MAGNETIC_FORCE = 10(GuiIds.java:15) |
| 传送长度 | MagneticForceTeleportLength,默认 200 tick(RTConfiguration.java:289-290) |
| 数据持久化 | 存档根目录 RandomThings.dat(RandomThings.java:201) |
| 开关 | Items.MagneticForce(RTConfiguration.java:216) |
功能
磁力仪是一个跨玩家传送工具:设定一个在线目标玩家后,把两人都拉到一起。
GUI 打开与权限
右键打开 GUI ID 10,坐标用玩家自身位置填充(ItemMagneticForce.java:19-27):
par3EntityPlayer.openGui(RandomThings.instance, GuiIds.MAGNETIC_FORCE, par2World,
(int) par3EntityPlayer.posX, (int) par3EntityPlayer.posY, (int) par3EntityPlayer.posZ);
容器的访问权限做了三重校验(Container/ContainerMagneticForce.java:14-18):
return ConfigItems.magneticForce && player.getCurrentEquippedItem() != null
&& player.getCurrentEquippedItem().getItem() == ModItems.magneticForce;
即必须手持磁力仪才能操作界面。目标玩家的名字输入还会校验在线状态与权限(zh_CN.lang:158-161):
| 键 | 中文 | 含义 |
|---|---|---|
text.magneticForce.notOnline |
离线 | 目标不在线 |
text.magneticForce.invalidUsername |
无效的用户名 | 名字不存在 |
text.magneticForce.noRights |
没有权利 | 无操作权限 |
text.magneticForce.notYourself |
不能指向你自己 | 不能自指 |
粒子反馈
操作过程通过 MessageMagneticForceParticle 封包在两端播放 ParticleMagneticForce 粒子(Client/Particle/ParticleMagneticForce.java)。
数据持久化
磁力仪的传送记录存在世界存档根目录的 RandomThings.dat 中,由 RandomThings.initializeModNBT 创建(RandomThings.java:200-225),在服务器启动时由 MagneticForceHandler.INSTANCE.readFromNBT(modNBT) 读入(RandomThings.java:171)。读取失败时游戏会用 text.error.nbt 提示"末影邮件及磁力仪等物品将在游戏重启后消失"(zh_CN.lang:156)。
数值
| 数值名 | 值 |
|---|---|
| GUI ID | 10 |
传送长度(TELEPORT_LENGTH) |
200 tick = 10 秒(RTConfiguration.java:289-290) |
| 常量位置 | MagneticForceHandler.TELEPORT_LENGTH |
| 访问条件 | 手持磁力仪 + Items.MagneticForce 开启 |
| 持久化文件 | <存档根>/RandomThings.dat |
交互
| 触发 | 行为 |
|---|---|
| 右键 | 打开 GUI ID 10 |
| 选择目标玩家 | 双方拉向对方,伴随粒子效果 |
| 目标离线 | 提示「离线」 |
| 选择自己 | 提示「不能指向你自己」 |
合成配方
xex
xmx
xpx
| 字符 | 物品 |
|---|---|
e |
末影珍珠(Items.ender_pearl) |
m |
绿宝石(gemEmerald) |
p |
纸(Items.paper) |
来源:Library/Recipes.java:386-397,受 ConfigItems.magneticForce 约束。