力场
基本信息
| 属性 | 值 |
|---|---|
| 注册名(方块) | 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):
- 仅服务端处理(
world.isRemote直接返回) - 玩家必须手持
forcefieldItem,否则无反应:EntityUtils.isEquipped(player, MalisisDoors.Items.forcefieldItem)(ForcefieldDoor.java:84) - 潜行 + 控制器 → 拆除整个多方块:
MultiBlock.destroy(world, x, y, z),并把玩家手中控制器能量清零(MalisisDoors.Items.forcefieldItem.setEnergy(player.getCurrentEquippedItem(), 0),ForcefieldDoor.java:86-90) - 不潜行 + 控制器 → 开合力场:
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 |