Kzeroko KTM2

声望数据

实体阵营、亲缘规则、玩家阵营归属能力及阵营关系规则。

更新于 2026/9/30 10 分钟阅读

实体阵营规则决定实体属于哪些阵营、承担哪些角色;关系规则决定阵营之间是友好、中立还是敌对,以及敌对的一方会不会见面就主动追杀。玩家通过阵营归属能力加入阵营。一个实体可以同时匹配多个文件,匹配结果会共同参与判定。

文件放在哪里

实体规则使用data/<namespace>/reputation/entity_factions/*.json,关系规则使用data/<namespace>/reputation/faction_relations/*.json。每个文件是一条规则,资源ID来自命名空间和文件路径,不在JSON内另写ID或版本字段。

不同资源ID的实体规则累加,不按文件名互相覆盖。关系规则按优先级和关系类别解决冲突。相同资源路径先按数据包优先级选择资源。

玩家的阵营归属是一个 Origins 能力,所以和其他能力一样放在data/<namespace>/powers/*.json,通过种族、职业或其他能力授予途径到达玩家身上。

最小示例

以下文件只保留内置村民规则中的一个匹配项;它能匹配村民,但不添加阵营或角色:

{
  "entity_types": ["minecraft:villager"]
}

字段

实体阵营

任一匹配项接受实体,规则即匹配该实体。每条规则至少要写entity_types、entity_groups、spawn_groups三者之一。

字段类型默认值作用
entity_typesarray<string>[]实体ID或以#开头的标签;[]不匹配实体。只检查ID语法,不要求已注册。
entity_groupsarray<string>[]生物类别,取值见下表。匹配属于其中任一类别的生物。
spawn_groupsarray<string>[]生成类别,取值见下表。匹配注册在其中任一类别下的所有实体类型。
factionsarray<string>[]添加静态阵营。ID规范化后按需创建,不查询外部注册表。
dynamic_factionsarray<string>[]只接受minecraft:villager_profession,也可省略命名空间写villager_profession。为村民添加minecraft:villager_profession/<profession_id>,其他实体不产生此项。
rolesarray<string>[]规范化角色名。防卫者检查使用protector;其他名称可加载,但这里没有对应行为。重复值合并。
include_structure_origin_factionsbooleanfalse实体支持结构来源记录时,收集其已保存的来源阵营。不会仅因实体站在结构内就赋予阵营。
affinitybooleanfalse设为true时这是一条亲缘规则:它添加的阵营只影响关系和索敌,不会改变你的声望,不会让实体成为目击者,也不会出现在声望报告里。

亲缘规则是在实体原有身份上追加阵营,而不是替换身份,它的阵营也不会让成员互相复仇。只被亲缘规则匹配的敌对生物仍会获得隐式的isekaiexpansion:side/monster,如果它还有身份规则,伤害它的声望代价仍由身份规则决定。

entity_groups的取值就是原版给每个生物划分的生物类别,也就是亡灵杀手、节肢杀手和穿刺判定用的那套类别:

取值匹配对象
default没有特殊类别的所有生物。
undead僵尸、骷髅、溺尸、幻翼等亡灵生物。
arthropod蜘蛛、蠹虫、末影螨、蜜蜂等节肢生物。
illager掠夺者、卫道士、唤魔者、幻术师,以及基于它们制作的模组灾厄村民。
aquatic鱼、鱿鱼、海豚、守卫者、海龟、美西螈,以及基于原版水生生物制作的模组生物。

spawn_groups的取值是原版的生成类别:

取值匹配对象
monster敌对生物。
creature陆地动物。
ambient蝙蝠。
axolotls美西螈。
underground_water_creature发光鱿鱼。
water_creature鱿鱼、海豚等按生物类生成的水生生物。
water_ambient鱼类。
misc其余所有实体,包括玩家和非生物实体。

阵营关系

字段类型默认值作用
source_factionsarray<string>必填行为方的规范化阵营ID;空列表不匹配。
target_factionsarray<string>必填目标方的规范化阵营ID;空列表不匹配。
relationenum(friendly, neutral, hostile)必填去除两端空白且不区分大小写。友好别名:ally、allied、alliance;敌对别名:enemy、war。其他值使文件加载失败。
bidirectionalbooleantrue同时交换行为方与目标方进行匹配。
priorityinteger0匹配时数值高者优先。没有显式截断,应写32位有符号整数。同优先级依次取敌对、友好、中立。
proactivebooleanfalse设为true时,行为方的生物会主动追杀目标方的生物和玩家;双向时反过来也一样。只有hostile关系可以设为主动,其他关系会使文件加载失败。

关系对索敌的影响如下。hostile允许生物攻击另一方成员,哪怕它自己的AI不会挑起这场战斗。friendly否决攻击。neutral不表态,交给生物自己的AI决定,所以捕食者照样会猎杀和自己共享阵营的猎物。对玩家的友好关系会在该玩家最后一次伤害这只生物后失效 100 tick(5 秒),期间若有其他来源伤害它则提前结束,所以被激怒的生物会还手。共享身份阵营且彼此友好的成员还会互相复仇,详见声望与阵营;让阵营对自身写一条中立关系即可关闭这一点。

主动关系会追加一次搜寻。没有目标的生物每秒一次,在跟随范围内寻找最近的追杀对象;跟随范围钳制在 8–48 格之间,没有该属性时按 24 格计算。候选对象在计入优先级和运行时覆盖后仍须判定为敌对,并且生物必须能看见、能察觉到它。玩家按身上的形态判定,所以变身成被追杀形态的玩家同样会被追杀。已驯服的生物,以及正被玩家骑乘的坐骑,不会主动开始追杀。

玩家阵营归属

内置鱼人族将此成员身份放在mermaid_aqua_affinity的kinship子能力下;trait_mermaid仅作为种族标记。

玩家默认不属于任何阵营,和玩家的一切战斗都交给原版AI决定。类型为isekaiorigins:faction_membership的能力会让持有者加入指定阵营。把它放在一个种族所有进化阶段都包含的特性能力上,整条进化线就共享这份归属。

{
  "type": "isekaiorigins:faction_membership",
  "factions": ["isekaiexpansion:side/merfolk"]
}
字段类型默认值作用
typeidentifier必填使用isekaiorigins:faction_membership。
factionsarray<string>必填持有者加入的阵营ID,规范化规则与实体规则的阵营相同。
conditionobject缺省标准 Origins 实体条件。条件不满足时,持有者不算该阵营成员。

阵营归属只影响关系和索敌,没有自己的声望,也不会出现在声望报告里。

完整示例

内置的海洋生物规则会给水生生物,以及#isekaiexpansion:sea_creatures里列出的Myths of the Sea生物,添加一个亲缘阵营:

{
  "entity_types": ["#isekaiexpansion:sea_creatures"],
  "entity_groups": ["aquatic"],
  "factions": ["isekaiexpansion:side/sea"],
  "affinity": true
}

共享阵营默认视为友好,不做处理的话,守卫者就不会再去捕猎鱿鱼。让阵营对自身写一条关系,就能去掉这个默认:

{
  "source_factions": ["isekaiexpansion:side/sea"],
  "target_factions": ["isekaiexpansion:side/sea"],
  "relation": "neutral"
}

内置的魔物群体反过来使用同一套写法。isekaiexpansion:side/monster对自身中立,共享它不会让任何人结盟;每个群体再以优先级 10 恢复自己的同族关系:

{
  "source_factions": ["isekaiexpansion:side/raider"],
  "target_factions": ["isekaiexpansion:side/raider"],
  "relation": "friendly",
  "priority": 10
}

以下关系让海洋对鱼人族玩家和鱼人族市民友好,优先级高于任何优先级为 0 的敌对关系:

{
  "source_factions": ["isekaiexpansion:side/merfolk", "isekaiexpansion:citizen_origin/mermaid"],
  "target_factions": ["isekaiexpansion:side/sea"],
  "relation": "friendly",
  "priority": 20
}

内置的灾厄与巨龙世仇只在一个方向上主动。灾厄村民见到#isekaiexpansion:dragons里的 Saints Dragons 巨龙就会追杀,巨龙则由它自己的AI还击。Saints Dragons 把巨龙的目标保存在自己的大脑里,替巨龙发起的追杀留不住:

{
  "source_factions": ["isekaiexpansion:side/raider"],
  "target_factions": ["isekaiexpansion:side/dragon"],
  "relation": "hostile",
  "bidirectional": false,
  "proactive": true,
  "priority": 10
}

阵营ID会去除两端空白、转小写,把反斜杠和竖线替换为斜杠、空格替换为下划线;空白ID变为unknown。角色名采用同样的大小写和空格处理,但不转换竖线,也不把空名改为unknown。实体ID与标签仍须使用合法资源ID语法。生物类别和生成类别名称会去除两端空白,不区分大小写。

校验

缺少必填键、已读取字段类型错误、非法实体ID语法、未知生物类别、未知生成类别、未知动态阵营类型或关系值会使该文件失败。实体规则如果entity_types、entity_groups、spawn_groups一个都没写,也会失败;非敌对关系设为主动同样会失败。日志记录错误后继续处理其他文件。两个加载器都会用本轮成功读取的规则替换旧表;坏文件对应的旧规则不会保留。未知字段被忽略,不提供版本兼容转换。空对象缺必填键;空白文本不是合法JSON。

合法但尚未注册的实体ID可以加载,实际匹配时不会命中不存在的类型。空标签和空匹配数组不命中;空阵营列表不贡献阵营。未知静态阵营ID会按需创建,不是错误。多条实体规则可以共同贡献;关系规则先比较较高优先级,同级时敌对优先于友好,友好优先于中立。

若没有关系规则命中,双方共有阵营时视为友好,否则视为中立。显式规则可以覆盖这个共有阵营的默认结果,包括行为方与目标方写同一个阵营的规则。

重载

两个目录都是服务端数据资源,在启动和/reload时读取。重载替换规则表,后续阵营与关系查询使用新规则。每种实体类型匹配到哪些规则会按类型缓存,规则或标签重载时清空。这里没有把整张规则表同步给客户端的路径;玩家看到的声望报告与游戏结果来自运行时查询。阵营归属能力随 Origins 能力加载器加载。

相关页面

玩家行为的声望结算见声望,村民报价格式见交易覆盖。