磁力仪

基本信息

属性 值
注册名 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 约束。

相关条目