危险物品模块

基本信息

属性 值
包 com.dreammaster.modhazardousitems(6 文件 + cause/ 2 文件)
处理器 HazardousItemsHandler(HazardousItemsHandler.java:37)
开关 CoreModConfig.Modules.HazardousItems,默认 false
实例化点 MainRegistry.PreLoad(MainRegistry.java:200-203)
配置文件 config/GTNewHorizons/HazardousItems.xml(HazardousItemsHandler.java:55)
序列化 JAXB(javax.xml.bind.JAXBContext / Marshaller / Unmarshaller)
示例配置 仓库内 exampleconfigs/HazardousItems.xml
指令 /hazarditems(见 指令)

功能

一个完全由 XML 配置驱动的伤害/状态系统:玩家背包里或脚下出现某些物品或流体时,自动扣血并附加药水效果。

启用后 PreLoad 会实例化处理器并把静态引用挂到 MainRegistry.Module_HazardousItems:

if (CoreModConfig.Modules.HazardousItems) {
    Module_HazardousItems = new HazardousItemsHandler();
}

(MainRegistry.java:200-203)

配置文件格式

HazardousItems.xml 的根元素是 HazardousItemList,含两类子元素(取自 exampleconfigs/HazardousItems.xml):

<Item> — 普通物品

<Item ItemName="minecraft:lava_bucket" ExactNameMatch="true" OnContactCheck="false" InventoryCheck="true">
    <DamageEffect Source="inFire" Amount="0.5"/>
    <PotionEffect PotionID="19" TickDuration="100" Level="1"/>
</Item>
属性 含义
ItemName 物品名,用原版 minecraft:命名空间 写法
ExactNameMatch true = 精确匹配;false = 名称包含即匹配(会误伤 itemWaterTank 之类的同前缀物品)
OnContactCheck true = 检查玩家脚下方块;false = 不检查
InventoryCheck true = 检查背包

<Fluid> — 流体

<Fluid FluidName="minecraft:water" ExactNameMatch="true" OnContactCheck="true" InventoryCheck="false">
    <PotionEffect PotionID="10" TickDuration="100" Level="1"/>
</Fluid>

<Fluid> 用于流体容器物品(如水桶)与玩家浸在流体中两种情形。仓库注释明确:流体在 1.7.10 已是方块,因此命名要写成 minecraft:water 这样的完整形式。

子效果

元素 含义
<DamageEffect> Source(伤害源,见 HazardDamageSources)+ Amount(伤害量)
<PotionEffect> PotionID + TickDuration + Level

关键方法

方法 作用 位置
HazardousItemsHandler() 构造器,拼出配置文件路径 config/GTNewHorizons/HazardousItems.xml :53-56
HasConfigChanged() 判断是否有未保存的改动 :58
onPlayerTick(TickEvent.PlayerTickEvent) 每 tick 扫描玩家状态并施加效果 :63
InitSampleConfig() 写入示例配置 :126
SaveHazardousItems() 覆盖写回 XML,失败记 error 日志 :156-167
LoadConfig() 载入;文件不存在则自动创建 :176-179

本模块是 4 个模块中唯一带存档安全闸的:/hazarditems reload 在 HasConfigChanged() 为真时会拒绝执行,除非显式加 force(HazardousItemsCommand.java:57-59)。

数值

数值名 值
文件数 6 + 2(cause/)
配置文件路径长度 config/%s/HazardousItems.xml,%s = GTNewHorizons
默认状态 关闭
子效果类型 2(DamageEffect、PotionEffect)
匹配模式类型 2(ExactNameMatch 精确 / 包含)
触发方式 2(OnContactCheck 脚下 / InventoryCheck 背包)

交互

触发 行为
玩家背包含匹配 <Item> 扣血 + 附加药水效果
玩家脚下是匹配的方块 同上(需 OnContactCheck="true")
玩家浸在匹配流体中 同上(<Fluid> 的接触判定)
/hazarditems save 覆盖写回 HazardousItems.xml
/hazarditems reload 重载;有未存改动则拒绝
/hazarditems reload force 强制重载
/hazarditems listpotions 列出所有可用药水 id
/hazarditems listdamagesources 列出 HazardDamageSources.DAMAGE_SOURCES 的键集
模块关闭 玩家完全不受影响,指令也不存在

相关条目