
里程碑 - 框架与追踪
实现功能,允许内容包添加可追踪的里程碑,并附带多种奖励功能。
里程碑 - 框架与追踪
插件概览
本插件围绕在资源编辑器中创建“里程碑”的系统构建,这些里程碑可在游戏内追踪,用于玩家进度引导、方向指示和探索奖励。完成里程碑后,既可以奖励物品,也可以启动复杂的交互链。
玩家须知
本模组本身不向游戏添加任何里程碑,它只是为数据包添加自己的里程碑创建了基础框架,因此将是所有使用本插件的数据包的依赖项。如需一个基础的里程碑数据包,你可以下载包含162个通用里程碑及各种奖励的简单里程碑数据包。如果你想添加自己的里程碑,请继续阅读。
模组创作者须知
目的
目前,本插件主要通过资源编辑器使用,但随着我扩展其功能和范围,我将构建一个基于代码的集成API。我的目标是创建一个集中式系统,用于各种基于事件的追踪,并允许数据包创建者对里程碑的追踪和交互方式拥有高度控制权,使其能够与其他系统连接,实现复杂的世界进度管理。
功能概览
里程碑插件为各种玩家活动提供全面的追踪:
- 破坏方块 - 追踪玩家破坏特定方块或方块类型的行为
- 放置方块 - 监控玩家放置方块的行为
- 使用方块 - 追踪与方块的交互(营火、工作台等)
- 交互式拾取 - 监控玩家使用F键拾取物品(农作物、蘑菇、已放置物品)
- 自动拾取 - 追踪从地面自动收集的物品(掉落物、物品栏转移、怪物掉落)
- 合成 - 追踪玩家合成特定物品的行为
- 击杀实体 - 记录玩家击败实体的行为
- 发现区域 - 追踪玩家进入新区域的行为
- 发现生物群系 - 监控玩家发现新生物群系的行为
- 运行时刷新 - 在资源编辑器中创建的新里程碑无需重启服务器即可立即生效
每种里程碑类型支持:
- 精确匹配 - 针对特定的方块/物品/实体ID
- 部分匹配 - 匹配包含目标字符串的任何ID(例如,"Ore"匹配所有矿石类型)
- 唯一追踪 - 统计唯一类型而非总数(可与部分匹配一起使用)
- 目标列表 - 追踪多个特定ID的进度
- 区域上下文 - 将追踪限制在特定区域(生物群系发现)
命令
插件提供了几个游戏内命令:
/milestones- 打开带有分类筛选功能的里程碑UI浏览器/listmilestones- 列出所有已注册的里程碑(管理员/调试用)/availablemilestones- 显示玩家可用的里程碑
所有命令都遵循 Hytale 的权限系统。
使用方法
资源概览
里程碑创建为 JSON 资源文件,放置在资源包的 Server/Milestones/ 目录下。每个里程碑都是一个独立的 JSON 文件,插件会在服务器启动时自动加载。
基本结构:
{
"DisplayName": "里程碑名称",
"Description": "玩家需要完成的任务",
"IconText": "🎯",
"Type": "BREAK_BLOCK",
"TargetId": "Block_Stone",
"RequiredCount": 10,
"Category": "Mining",
"ShowReward": true,
"Rewards": [
{
"ItemId": "Tool_Pickaxe",
"Quantity": 1
}
],
"XpReward": 50
}
可用类型:
BREAK_BLOCK- 追踪破坏的方块PLACE_BLOCK- 追踪放置的方块USE_BLOCK- 追踪方块交互INTERACTABLE_PICKUP- 追踪交互式物品拾取(F键 - 收获农作物、拾取已放置物品)ITEM_PICKUP- 追踪自动物品拾取(地面掉落物、物品栏转移、怪物掉落)ITEM_COLLECTION- (旧版,请改用 INTERACTABLE_PICKUP)CRAFTING- 追踪合成的物品ENTITY_KILL- 追踪击杀的实体(支持 TrackUnique 以统计唯一实体类型数量)ZONE_DISCOVERY- 追踪进入的区域BIOME_DISCOVERY- 追踪发现的生物群系
唯一追踪:
大多数类型支持 "TrackUnique": true 配合 "PartialMatch": true,用于统计唯一变体数量而非总数:
ENTITY_KILL配合 TrackUnique - 统计击杀的唯一敌人类型数量(例如,5种不同的哥布林变体 = 5进度)CRAFTING配合 TrackUnique - 统计合成的唯一配方数量BREAK_BLOCK配合 TrackUnique - 统计破坏的唯一方块类型数量- 以及更多……
通用字段:
DisplayName- 在UI中显示(必填)Description- 在UI中显示(必填)IconText- 表情符号或文本图标(可选)IconItemId- 用作图标的物品ID(可选)Type- 里程碑类型(必填)Category- UI分类分组(可选)ShowReward- 在UI中显示奖励(默认:false)XpReward- 完成时奖励的经验值(可选)Rewards- 物品奖励列表(可选)
资源深入解析
匹配模式:
精确匹配(默认):
{
"Type": "BREAK_BLOCK",
"TargetId": "Alchemy_Cauldron",
"PartialMatch": false,
"RequiredCount": 2
}
仅追踪精确匹配 "Alchemy_Cauldron" 的对象。
部分匹配:
{
"Type": "ITEM_COLLECTION",
"TargetId": "Armor",
"PartialMatch": true,
"RequiredCount": 5
}
追踪任何包含 "Armor" 的物品ID(例如,Armor_Bronze_Chest、Armor_Wood_Chest)。
唯一追踪:
{
"Type": "BREAK_BLOCK",
"TargetId": "Rock",
"PartialMatch": true,
"TrackUnique": true,
"RequiredCount": 2
}
统计匹配 "Rock" 的不同类型方块被破坏的数量(非总数量)。
目标ID列表:
{
"Type": "CRAFTING",
"TargetIds": [
"Armor_Bronze_Chest",
"Armor_Wood_Chest",
"Armor_Leather_Heavy_Chest"
],
"RequiredCount": 2
}
统计所有列出的ID的总计数。
区域上下文(仅生物群系发现):
{
"Type": "BIOME_DISCOVERY",
"TargetId": "biome",
"PartialMatch": true,
"TrackUnique": true,
"ZoneContext": "Devastated_Lands",
"RequiredCount": 2
}
仅统计在指定区域内发现的生物群系。
奖励系统:
物品奖励:
"Rewards": [
{
"ItemId": "Armor_Bronze_Chest",
"Quantity": 1
},
{
"ItemId": "Container_Bucket",
"Quantity": 5
}
]
经验值奖励:
"XpReward": 100
注意: 经验值奖励当前已存储但尚未实现游戏内功能。此功能计划在未来的更新中添加。
交互链:
"OnCompleteInteractionId": "CustomRewardInteraction"
在里程碑完成时触发自定义交互(需要自定义交互资源)。
前置条件:
"PrerequisiteMilestones": [
"Beginner_Mining_Quest",
"First_Ore_Collection"
]
里程碑仅在完成前置条件后才可用。
自定义交互
插件提供了两个自定义交互,可在资源编辑器中用于NPC、方块、物品和其他交互内容:
检查里程碑交互
ID: *CheckMilestone
检查玩家是否已完成特定里程碑,并通过通知提供反馈。
使用场景:
- 将NPC对话或任务进度锁定在里程碑完成之后
- 锁定门或区域,直到达成特定里程碑
- 根据里程碑状态创建条件性奖励或交互
- 向玩家提供进度反馈
配置:
{
"Type": "*CheckMilestone",
"Milestone ID": "my_milestone_id"
}
行为:
- 如果完成: 发送绿色成功通知,显示里程碑名称 + "Complete",返回 Finished 状态(交互成功)
- 如果未完成: 发送黄色警告通知,显示进度(例如,"Mining Challenge - Progress: 3/10"),返回 Failed 状态(交互失败)
- 如果无效: 如果未找到里程碑ID,发送红色危险通知,返回 Failed 状态
示例用法 - 门控NPC对话:
{
"RootInteractions": [
{
"Type": "*CheckMilestone",
"Milestone ID": "Complete_Basic_Training"
},
{
"Type": "*Dialogue",
"DialogueId": "Advanced_Trainer_Welcome"
}
]
}
仅当 "Complete_Basic_Training" 里程碑完成后,对话才会触发。
打开里程碑UI交互
ID: *OpenMilestonesUI
为玩家打开里程碑浏览器UI,方便查看所有可用里程碑及其进度。
使用场景:
- 在世界中添加里程碑公告板或任务发布者
- 创建专门的里程碑查看站
- 通过NPC或告示牌提供快速UI访问
- 设计里程碑中心或成就殿堂
配置:
{
"Type": "*OpenMilestonesUI"
}
行为:
- 打开完整的里程碑UI,带有分类筛选功能
- 显示所有可用里程碑、进度和奖励
- 始终返回 Finished 状态
示例用法 - 任务公告板:
{
"RootInteractions": [
{
"Type": "*OpenMilestonesUI"
}
]
}
将其附加到方块或NPC上,创建交互式里程碑查看器。
组合设置
渐进式任务链:
// milestone_mining_1.json
{
"DisplayName": "采矿初体验",
"Type": "BREAK_BLOCK",
"TargetId": "Block_Ore_Copper",
"RequiredCount": 1,
"Rewards": [{"ItemId": "Tool_Pickaxe_Basic", "Quantity": 1}]
}
// milestone_mining_2.json
{
"DisplayName": "矿石收集者",
"Type": "BREAK_BLOCK",
"TargetId": "Ore",
"PartialMatch": true,
"RequiredCount": 2,
"PrerequisiteMilestones": ["First_Steps_in_Mining"]
}
收集挑战:
{
"DisplayName": "盔甲收集者",
"Type": "ITEM_COLLECTION",
"TargetIds": [
"Armor_Bronze_Chest",
"Armor_Wood_Chest",
"Armor_Leather_Heavy_Chest",
"Armor_Cloth_Cotton_Chest"
],
"RequiredCount": 2,
"ShowReward": true
}
探索成就:
{
"DisplayName": "世界探索者",
"Type": "ZONE_DISCOVERY",
"TargetIds": [
"Zone_Emerald_Grove",
"Zone_Howling_Sands",
"Zone_Borea",
"Zone_Devastated_Lands"
],
"RequiredCount": 2
}
数据包分发
本插件不附带里程碑资源。要使用它:
- 安装插件 - 下载并安装此插件JAR文件
- 下载里程碑数据包 - 获取单独的、定义实际里程碑的里程碑资源包
- 安装数据包 - 将里程碑数据包资源放置到服务器的资源目录中
对于数据包创作者:
- 在
Server/Milestones/中创建您自己的里程碑JSON文件 - 将本插件列为依赖项
- 将您的数据包作为资源包单独分发
相关模组/数据包
- 简单里程碑数据包 - 包含162个通用里程碑及各种奖励的入门合集(单独分发)
开发与支持
- 资源编辑器集成,便于轻松创建里程碑
- 使用Hytale的ECS进行持久化数据存储
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。