力场

基本信息

属性 值
注册名(方块) malisisdoors:forcefieldDoor
注册名(物品) malisisdoors:forcefieldItem
方块类 net.malisis.doors.door.block.ForcefieldDoor(继承 Block,实现 ITileEntityProvider)
物品类 net.malisis.doors.door.item.ForcefieldItem
TileEntity net.malisis.doors.door.tileentity.ForcefieldTileEntity(注册名 forcefieldTileEntity,Registers.java:453)
材质 Material.anvil(ForcefieldDoor.java:48)
爆炸抗性 60000000(ForcefieldDoor.java:49)
可破坏性 setBlockUnbreakable()——生存模式无法破坏(ForcefieldDoor.java:50)
脚步声 soundTypePiston(ForcefieldDoor.java:51)
贴图 malisisdoors:forcefield(ForcefieldDoor.java:52)
结构尺寸 3×3×1(ForcefieldDoor.java:69)

功能

用物品字典式的控制器开合的固定能量力场。力场方块本身是控制器载体,不能由玩家直接放置获得——它由手持 力场控制器 右键方块来创建或拆除。

放置与拆除(ForcefieldDoor.onBlockActivated,ForcefieldDoor.java:81-96):

  1. 仅服务端处理(world.isRemote 直接返回)
  2. 玩家必须手持 forcefieldItem,否则无反应:EntityUtils.isEquipped(player, MalisisDoors.Items.forcefieldItem)(ForcefieldDoor.java:84)
  3. 潜行 + 控制器 → 拆除整个多方块:MultiBlock.destroy(world, x, y, z),并把玩家手中控制器能量清零(MalisisDoors.Items.forcefieldItem.setEnergy(player.getCurrentEquippedItem(), 0),ForcefieldDoor.java:86-90)
  4. 不潜行 + 控制器 → 开合力场:te.openOrCloseDoor()(ForcefieldDoor.java:92)

方块自身的 onBlockPlacedBy(ForcefieldDoor.java:68-79)用 3×3×1 的 MultiBlock 展开:按玩家朝向 mb.setDirection(side),若 mb.placeBlocks() 返回 false(空间不足)则把手中物品数量加回,即放置失败自动退还。

放置限制:只允许放在顶面(side != 1 返回 false),且下方方块必须为实心(ForcefieldDoor.java:58-65)。

数值

数值名 值 出处
爆炸抗性 60000000 ForcefieldDoor.java:49
破坏方式 不可破坏(setBlockUnbreakable) ForcefieldDoor.java:50
多方块尺寸 3 × 3 × 1 ForcefieldDoor.java:69
控制器持有要求 必须是 forcefieldItem ForcefieldDoor.java:84

合成配方

方块无独立配方,需由控制器在世界中创建。控制器配方(Registers.java:454-468):

ABA
CDC
AEA
字符 物品
A 钻石 Items.diamond ×4(出现在 4 个格子)
B 黑曜石 Blocks.obsidian ×1
C 红石中继器 Items.repeater ×2
D 末影眼 Items.ender_eye ×1
E 比较器 Items.comparator ×1

相关条目