单方块机器

基本信息

Draconic Evolution 共注册 18 个单方块机器。它们全部继承 BlockDE,各自在构造函数中调用 ModBlocks.register(this) 或 ModBlocks.register(this, XxxItemBlock.class) 完成注册。

来源:ModBlocks.java:98-141(实例化)、common/blocks/machine/ 与 common/blocks/ 下的各方块类。

注册名 显示名 硬度 爆炸抗性 材质 TileEntity
weatherController 气象控制器 5.0 10.0 Material.iron TileWeatherController
sunDial 日晷 5.0 10.0 Material.iron TileSunDial
grinder 怪物粉碎机 5.0 2000.0 Material.iron TileGrinder
potentiometer 电位器 0.3 0.1 Material.circuits TilePotentiometer
rainSensor 雨水传感器 0.3 0.5 Material.circuits TileRainSensor
particleGenerator 粒子发生器 5.0 10.0 Material.iron TileParticleGenerator
playerDetector 玩家探测器 5.0 10.0 Material.iron TilePlayerDetector
playerDetectorAdvanced 高级玩家探测器 5.0 10.0 Material.iron TilePlayerDetectorAdvanced
energyInfuser 能量注入器 5.0 10.0 Material.iron TileEnergyInfuser
generator 发电机 5.0 10.0 Material.iron TileGenerator
dissEnchanter 祛魔台 5.0 10.0 Material.iron TileDissEnchanter
upgradeModifier 升级调整器 5.0 10.0 Material.iron TileUpgradeModifier(注册名为 TileEnhancementModifier)
flowGate 阀门 5.0 10.0 Material.iron TileFluxGate / TileFluidGate
dislocatorInhibitor 磁力屏蔽器 5.0 10.0 Material.iron TileDislocatorInhibitor
longRangeDislocator 长距离错位宝石 5.0 10.0 Material.iron 无(纯方块逻辑)
energyCrystal 能量中继器/收发器 5.0 10.0 Material.glass TileEnergyRelay / TileEnergyTransceiver / TileWirelessEnergyTransceiver
customSpawner 稳定刷怪笼 10 2000 Material.iron TileCustomSpawner
xRayBlock 透视之火 10 10.0 Material.iron 无

硬度 / 抗性中标注为 5.0 / 10.0 的方块没有在自己的构造函数里调用 setHardness() / setResistance(),继承 BlockDE 构造函数默认值(BlockDE.java:17-27)。上方表格只列出经逐个读取构造函数确认的值。

功能

能量中继器 / 收发器(energyCrystal)

这是 DE 的 RF 传输 家族,不是储能晶体。共 6 个 meta,按功能两两分组(EnergyCrystal.java:177-180):

meta TileEntity 作用
0、1 TileEnergyRelay 被动中继,相邻的两个收发器之间自动搭链
2、3 TileEnergyTransceiver 有向收发器,facing 决定能量流向(6 个朝向)
4、5 TileWirelessEnergyTransceiver 无线收发器,无需可见连线
  • meta 1 / 3 决定初始朝向(getSubBlocks 同时列出 meta 0 与 1、meta 0 与 2 等,见 EnergyCrystal.java:56-62)。
  • 收发器的碰撞箱随 tile.facing 动态变化(EnergyCrystal.java:145-170),例如 facing == 0 时碰撞箱为 y ∈ [0.59, 1.0],facing == 1 时为 y ∈ [0.0, 0.41]。
  • 材质为 Material.glass,脚步声为 soundTypeGlass。

阀门(flowGate)

单一方块 + ItemBlock,通过 meta 切换流体 / RF 两种模式(FlowGate.java:56-59):

return metadata < 6 ? new TileFluxGate() : new TileFluidGate();
  • meta 0–5 → TileFluxGate(RF 流量控制)
  • meta ≥ 6 → TileFluidGate(流体流量控制)
  • 创造标签中同时列出 new ItemStack(item)(默认 meta 0)与 new ItemStack(item, 1, 6)(流体模式),见 FlowGate.java:62-65。
  • 本地化键分为 flowGate / flowGateFlux / flowGateFluid 三套。

长距离错位宝石(longRangeDislocator)

这是一个已知的死功能,见下方「已知缺陷」。

  • 只有 meta 0 与 meta 1 两个变体(LongRangeDislocator.java:60-63),其中 meta 0 的方块代码在创造标签中被注释掉,创造模式只显示 meta 1。

  • onBlockActivated 对 所有 meta 都直接返回 false,原本的 return teleportPlayer(world, player, false) 已被注释(LongRangeDislocator.java:66-75):

    if (meta == 0) return false; // return teleportPlayer(world, player, false);
    else if (meta == 1) return false;
    else { LogHelper.error("Invalid LRT Metadata"); return false; }
    
  • 实际生效的入口是 onNeighborBlockChange(LongRangeDislocator.java:78-86):当 meta == 1 且方块被间接红石充能时,寻找附近玩家并调用 teleportPlayer(world, player, true),即 admin 模式。

稳定刷怪笼(customSpawner)

  • 刷怪列表由配置项 spawnerList 与 spawnerListType 决定(ConfigHandler.java:60-61)。默认值为三个示例名:ExampleMob1、ExampleMob2、ExampleMob3 (these examples can be deleted)(ConfigHandler.java:79-80)。
  • 硬度 10 / 抗性 2000,采集等级为镐 1。
  • 相关本地化:msg.spawnerInfo0 – msg.spawnerInfo9,info.de.itemStorage 等。

气象控制器(weatherController)

  • 可切换晴 / 雨 / 雷暴三态,本地化键 gui.de.rain.on / gui.de.rain.off / gui.de.rain.storm。
  • 生成龙心时可附加负面效果:MinecraftForgeEventHandler.java:359-360 对僵尸施加 PotionEffect(5, 10000, 3)(伤害增加)与 PotionEffect(11, 10000, 2)(抗性),玩家则获得 PotionEffect(2, 500, 3)(移动加速)。

磁力屏蔽器(dislocatorInhibitor)

  • 范围可调,支持白名单 / 黑名单两种模式,切换模式有 4 档循环(gui.de.dislocatorInhibitor.tooltip.activity.never / cycle / without / with / always 共 5 档,gui.de.dislocatorInhibitor.tooltip.range.increase / decrease 调整范围)。

数值

数值名 值 来源
BlockDE 默认硬度 / 抗性 5.0 / 10.0 BlockDE.java:19-20
怪物粉碎机爆炸抗性 2000.0 machine/Grinder.java:46
龙箱爆炸抗性 2000.0 DraconiumChest.java:58
稳定刷怪笼硬度 / 抗性 10 / 2000 CustomSpawner.java 构造函数
阀门流体模式 meta 阈值 < 6 为 RF,>= 6 为流体 machine/FlowGate.java:57-59
能量收发器 meta 映射 0-1 中继 / 2-3 收发 / 4-5 无线 machine/EnergyCrystal.java:177-180
LRD admin 探测半径 5 ConfigHandler.java:352(Admin Dislocator Detect Range)
LRD admin 最小 / 最大距离 1000 / 10000 ConfigHandler.java:349-350

交互

触发 行为
右键绝大多数机器 打开对应 GUI(GUIGrinder / GUIGenerator / GUIEnergyInfuser / GUISunDial / GUIWeatherController / GUIPlayerDetector / GUIEnergyInfuser / GUIDissEnchanter / GUIParticleGenerator / GUIUpgradeModifier / GUIFlowGate / GUIDislocatorInhibitor)
右键能量收发器 旋转 facing,碰撞箱随之变化
红石充能 meta 1 的长距离错位宝石 传送范围内最近玩家到随机地表坐标(admin 模式)
破坏阀门 关闭后不再维持 RF / 流体流动

已知缺陷

LongRangeDislocator 的非 admin 传送是死代码。

ConfigHandler 声明了 dislocator_Min_Range 与 dislocator_Max_Range 两个字段(ConfigHandler.java:68-69),并被 LongRangeDislocator.java:126-129 读取,但它们唯一的一次赋值在文件末尾被整段注释掉(ConfigHandler.java:499-500):

* //dislocator_Min_Range = config.get("Long Range Dislocator", "Admin Dislocator Min Range", 1000000).getInt(1000000);
* //dislocator_Max_Range = config.get("Long Range Dislocator", "Admin Dislocator Max Range", 29000000).getInt(29000000);

后果:

  1. 这两个 int 字段永远保持 Java 默认值 0。
  2. 非 admin 分支会执行 rand.nextInt(0 - 0),即 Random.nextInt(0),按 JDK 规范会抛 IllegalArgumentException。
  3. 该分支当前不可达,因为唯一的调用点 teleportPlayer(world, player, false) 已在 LongRangeDislocator.java:69 被注释。因此这个缺陷目前不会崩溃游戏,但它同时意味着普通玩家的长距离错位传送功能在当前版本中不存在。

对照:admin_dislocator_Min_Range / admin_dislocator_Max_Range / admin_dislocator_Detect_Range 三个字段是正常生效的(ConfigHandler.java:349-353)。

合成配方

以上机器均通过 CraftingHandler 的 90 条配方注册。机器方块普遍使用 ShapedOreEnergyRecipe(addEnergy 辅助方法,CraftingHandler.java:1077),即以「龙尘 / 觉醒龙锭」等物品字典名作为材料。完整统计见 合成配方系统。

相关条目