单方块机器
基本信息
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);
后果:
- 这两个
int字段永远保持 Java 默认值0。 - 非 admin 分支会执行
rand.nextInt(0 - 0),即Random.nextInt(0),按 JDK 规范会抛IllegalArgumentException。 - 该分支当前不可达,因为唯一的调用点
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),即以「龙尘 / 觉醒龙锭」等物品字典名作为材料。完整统计见 合成配方系统。