在我的世界地下城开发mod的第一天
主要代码:
// peeper_behavior.json
{
"format_version": "1.19.0",
"minecraft:entity": {
"description": {
"identifier": "dungeons:peeper_creeper",
"is_spawnable": true,
"is_summonable": true,
"is_experimental": false
},
"components": {
// 基础属性
"minecraft:physics": {},
"minecraft:health": {
"value": 20
},
"minecraft:movement": {
"value": 0.25
},
// 视线检测组件
"minecraft:sensor": {
"sensors": {
"player_looking": {
"event": "dungeons:player_looking",
"event_filters": {
"all_of": [
{
"test": "is_family",
"subject": "other",
"value": "player"
},
{
"test": "facing_entity",
"subject": "other",
"operator": "<",
"value": 15 // 15度视角阈值
}
]
}
}
}
},
// AI行为树
"minecraft:behavior.melee_attack": {
"priority": 3,
"speed_multiplier": 1.0
},
"minecraft:behavior.explode": {
"priority": 1,
"fuse_length": 0.5, // 半秒后爆炸
"power": 4,
"breaks_blocks": true,
"conditions": {
"distance_to_target": "< 3"
}
}
},
// 事件响应
"events": {
"dungeons:player_looking": {
// 被注视时冻结移动
"add": {
"component_groups": ["freeze_movement"]
}
},
"dungeons:start_chase": {
// 开始追击时同步玩家速度
"trigger": {
"event": "minecraft:entity_spawned",
"target": "self"
},
"set_property": {
"movement_speed": "query.target(0).movement_speed"
}
}
},
// 组件组
"component_groups": {
"freeze_movement": {
"minecraft:movement": {
"value": 0
}
}
}
}
}
实现说明:
-
视线检测
使用facing_entity
检测组件,当玩家视角与生物角度小于15度时触发冻结事件。 -
动态速度同步
通过set_property
在追击事件中实时获取玩家速度值,并应用到生物移动组件。 -
快速爆炸机制
设置fuse_length
为0.5秒,当距离玩家小于3格时立即触发爆炸。 -
状态切换
使用组件组动态修改移动速度,实现冻结/追击的状态切换。