CombatEdit
一个服务端 Fabric 模组,将 1.8 风格的战斗机制带回现代版本的 Minecraft!还可配置所有实体和物品的默认属性以及默认物品组件。
要求
此模组无需客户端安装或 Fabric API(必要的 Fabric API 模块已随模组打包),但若要通过 GUI 配置属性,则需要 Mod Menu 来打开配置界面。
功能
此模组的默认设置会恢复 1.8 风格的战斗机制。此外(自 2.1 版本起),可通过选项界面或配置文件配置以下选项(参见[配置](#配置)):
- 所有生物实体的默认实体属性(最大生命值、攻击伤害、攻击速度、移动速度等)
- 所有物品类型的默认物品属性修饰符(额外攻击伤害、攻击速度等)
- 所有物品类型的默认物品组件(耐久度、不可破坏性、附魔等)
- 应启用或禁用哪些攻击音效
- 是否启用 1.8 风格的击退效果
请注意,虽然在游戏世界中更改物品和实体的默认值是可行的,并且我已尽力使其尽可能无缝地工作,但这仍可能导致意外行为和(可能较小的)错误。
配置
CombatEdit 使用不同的概念来配置自身:
设置文件
这是玩家配置模组的主要方式。设置文件中的配置优先于基础配置文件和配置文件扩展配置,并且设置文件决定使用哪个基础配置文件。对于用户来说,配置设置的主要方式是通过 ModMenu 在模组列表中访问 GUI 界面(选择 CombatEdit 后点击齿轮按钮)。设置文件保存在 Minecraft/服务器目录下的 config/combatedit/settings.json 中。
要在服务器上配置这些选项,您可以在客户端上使用配置界面创建并保存配置,然后将配置文件(位于 config/combatedit/settings.json)上传到服务器目录中的相同位置。
基础配置文件
基础配置文件决定实体和物品属性的主要配置。CombatEdit 包含两个基础配置文件:
- 1.8 战斗配置文件(
combatedit:18combat),默认启用,将实体和物品属性值设置为类似于现代版本的 1.8 战斗(使用与基岩版相同的伤害值) - 原版配置文件(
combatedit:vanilla),保持默认的实体和物品属性不变。
数据包创建者可以提供自己的基础配置文件(参见[数据包](#数据包))以创建不同的基础配置。
配置文件扩展
配置文件扩展允许调整基础配置文件的配置(例如添加额外的物品修饰符或覆盖基础配置文件中设置的其他内容)。它们面向希望为基础配置文件提供不同物品或实体设置的模组开发者(例如,通过更改自定义物品在 1.8 战斗配置文件中的伤害值,以补偿缺乏攻击冷却时间作为平衡措施)。更多信息请参见[模组开发者](#模组开发者)。
数据包
基础配置文件和配置文件扩展都可以包含在数据包中。以下目录树描述了放置基础配置文件和配置文件扩展文件的位置。
-
data:数据包内的数据目录 - ``:您的自定义数据包命名空间
-
combatedit:所有 CombatEdit 相关的数据包文件都位于此处 -
profile_extensions:包含配置文件扩展。 - `
`
- `
:包含扩展基础配置文件
:
的 .json` 配置文件扩展文件
-
base_profiles:包含基础配置文件.json文件。在此处创建名为.json的文件将创建一个 ID 为:的基础配置文件。
模组开发者
模组开发者可以像数据包创建者一样,通过将 JSON 格式的基础配置文件放置在其 data 资源目录中,使用与上述数据包相同的目录结构来包含基础配置文件。此外,还可以以编程方式提供配置文件扩展:只需创建一个实现 [CombatEditInitListener 接口](src/main/java/net/rizecookey/combatedit/api/CombatEditInitListener.java) 的类,并在您的 fabric.mod.json 中将其指定为名为 combatedit 的新入口点。
JSON 格式规范
本节解释各种配置类型的 JSON 格式。基础配置文件和配置文件扩展的示例数据包可在 [examples](examples) 目录中找到。
基础配置文件
JSON 格式的基础配置文件是一个包含以下键的 JSON 对象:
-
name:您的基础配置文件的显示名称。可以是文本组件或简单字符串。 -
description:您的基础配置文件的描述。可以是文本组件或简单字符串。 -
configuration:此基础配置文件的功能配置。参见[功能配置](#功能配置)。
配置文件扩展
JSON 格式的配置文件扩展是一个包含以下键的 JSON 对象:
-
priority:一个整数,指定此配置文件扩展的优先级。优先级值越大,当扩展中的覆盖与其他扩展冲突时,此配置文件扩展具有优先权。 -
configuration_overrides:一个功能配置,指定此扩展所做的覆盖。参见[功能配置](#功能配置)。
功能配置
功能配置格式在基础配置文件、配置文件扩展和设置文件中是通用的。它具有以下键:
-
configuration_version:一个整数,指定功能配置的版本,如果格式发生破坏性更改,可能会更改。当前配置版本为3。 -
entity_attributes:一个[实体属性](#实体属性)对象数组,指定实体类型的默认属性。 -
item_attributes:一个[物品属性](#物品属性)对象数组,指定物品的默认属性修饰符。 -
item_components:一个[物品组件](#物品组件)对象数组,指定物品的默认组件。 -
enabled_sounds:一个从声音 ID 到布尔值的映射,指定哪些声音是启用还是禁用。目前,以下声音是可配置的: minecraft:entity.player.attack.nodamageminecraft:entity.player.attack.knockbackminecraft:entity.player.attack.weakminecraft:entity.player.attack.strongminecraft:entity.player.attack.sweepminecraft:entity.player.attack.crit-
misc_options:一个配置[杂项选项](#杂项选项)的对象。
实体属性
实体属性条目具有以下结构:
-
entity_id:要修改的实体类型的标识符 -
base_values:一个属性基础值对象数组,具有以下键: -
attribute:要更改其值的属性的标识符 -
base_value:用于指定属性的基础值 -
override_default:布尔选项。如果设置为true,则在应用此实体属性条目中指定的更改之前,会移除实体的默认属性
物品属性
物品属性条目具有以下结构:
-
item_id:要修改的物品的标识符 -
modifiers:一个属性修饰符对象数组,具有以下结构: -
attribute:要添加修饰符的属性 -
modifier_id:属性修饰符的唯一标识符。可选,如果未指定,则使用随机标识符 -
value:修饰符的值 -
operation:修饰符的操作类型。可以是以下之一: -
"add_value":将此修饰符的值添加到实体的属性基础值中 -
"addmultipliedbase":将属性的基础值乘以指定值,并将结果添加到总属性值中 -
"addmultipliedtotal":将基础值和所有"addmultipliedbase"类型修饰符的总和相乘,并将结果添加到总属性值中 -
slot:物品必须处于哪个槽位才能使修饰符生效。可以是以下之一: -
"any":在所有槽位中生效 -
"mainhand":当物品握在主手时生效 -
"offhand":当物品握在副手时生效 -
"hand":当物品握在任何手中时生效 -
"feet":当物品装备在靴子槽位时生效 -
"legs":当物品装备在护腿槽位时生效 -
"chest":当物品装备在胸甲槽位时生效 -
"head":当物品装备在头盔槽位时生效 -
"armor":当物品装备在任何盔甲槽位(玩家或动物)时生效 -
"body":当物品装备在动物身上时生效 -
"saddle":当物品装备在马鞍槽位时生效 -
override_default:布尔选项。如果设置为true,则在应用此条目指定的更改之前,会移除物品的默认属性修饰符
物品组件
物品组件条目具有以下结构:
-
item_id:要修改其组件的物品的标识符 -
changes:一个要进行的组件更改数组,具有以下结构: -
component_type:要更改其值的组件类型的标识符 -
change_type:此条目要进行的更改,可以是: -
"set":如果要为此组件类型设置新值 -
"remove":如果要从物品中完全移除此组件的默认值 -
value:为此组件设置的值。如果组件类型没有值或更改类型为"remove",则为可选
杂项选项
-
enable18_knockback:一个布尔值,指定是否启用 1.8 击退效果,而不是现代 Minecraft 版本中的默认击退效果。 -
disablesweepingwithout_enchantment:一个布尔值,指定如果使用的物品没有横扫附魔,是否应禁用横扫效果。