技巧问题

技巧问题

动态升级、玩家属性等。高度可配置。

冒险

技能问题

模组概览

bisecthosting

动态升级、玩家属性等更多内容。高度可配置。

目录

概览

技能问题为玩家提供了在 Minecraft 中达到高经验等级的手段。也就是说,当玩家首次达到某些等级时,他们的属性会变得更好。为了避免混淆,本模组将此类等级称为里程碑。但是等等,你可能会问什么是属性?我们稍后会讲到,事实上本模组提供了不少功能,因此每一类功能都会在其各自的章节中详细说明。

里程碑

如前所述,里程碑是玩家首次达到的经验等级。一旦玩家达到了某个里程碑,即使玩家失去了等级(例如通过附魔),其收益也不会丢失。唯一的例外是玩家死亡,这会将里程碑等级回退到其先前值的可配置百分比(默认为 80%)。

属性

属性是原版功能,允许增强/削弱实体的属性。随着里程碑等级的提升,玩家的属性会变得更好。本模组提供了一个 json 配置文件,允许定义哪些属性应随里程碑等级增长以及增长的范围。可以定义低于原版默认值的属性范围。以下是默认属性配置的概览:

key bonus min_factor max_factor
generic.max_health 0 0.8 2
generic.armor_toughness 3 0 1
generic.knockback_resistance 0.25 0 1
generic.movement_speed 0 0.95 1.15
generic.attack_damage 0 0.9 1.25
generic.attack_speed 0 0.9 1.25
generic.attack_knockback 0.25 0 1

在默认配置下,玩家初始时某些属性会低于原版。例如,玩家至少需要达到里程碑等级 35 才能拥有原版的移动速度,达到里程碑等级 40 才能拥有原版的攻击伤害和攻击速度。

配置的根节点必须是一个包含单一字段 attributes 的对象,该字段是一个属性对象数组。以下是属性对象各字段的简要说明:

字段 描述
key 在 Minecraft wiki 的属性章节中定义的属性名称(适用于生物实体或玩家)。支持来自其他模组的属性,只需在前面加上模组 id,例如 <modid>:<key>(默认 modid 为 minecraft)。
bonus 该值会加到属性的默认基础值上,在其乘以系数之前,无论玩家的里程碑等级如何。
min_factor 当玩家处于里程碑等级 0 时,应用于属性默认基础值(在加上 bonus 之后)的系数。
max_factor 当玩家达到最大里程碑等级(默认为 140)时,应用于属性默认基础值(在加上 bonus 之后)的系数。

奖励

奖励提供了一种灵活的方式来扩展里程碑系统,通过提供在玩家达到特定里程碑等级后为其运行 Minecraft 命令的可能性。附加属性有助于指定命令应在何种确切情况下执行,因为命令的效果可能有各种结果。

默认配置定义了在升级时向玩家显示的标题。

配置的根节点必须是一个包含单一字段 milestones 的对象,该字段是一个里程碑对象数组。以下是里程碑对象各字段的简要说明:

字段 描述 默认值
level 执行命令所需达到的里程碑等级。 0
level_step 如果 level_range 大于 0,则决定为等级创建里程碑的间隔。 1
level_range 将为 level(含)到 level + level_range(不含)之间的等级定义里程碑。 1
level_inject 一个令牌,在命令字面量中会被替换为里程碑等级(如果为空则无效)。 ""
on_level_up 决定当玩家升级时是否应执行命令。 true
on_respawn 决定当玩家死亡后重生时是否应(再次)执行命令。 false
on_login 决定当玩家登录世界时是否应(再次)执行命令。 false
is_volatile 决定当玩家高于里程碑等级时是否应(再次)执行命令(仅在重生时和/或登录时)。 false
commands Minecraft 命令字面量的列表。这些命令将始终按给定顺序执行。 []

可以为同一等级定义多个里程碑(或让它们重叠)。它们的命令将按照配置文件中里程碑定义的升序执行。

惩罚

惩罚与奖励类似,它们都允许定义在特定情况下应执行的命令。确切地说,惩罚在玩家死亡重生后执行一次,针对玩家已丢失的里程碑等级。此功能旨在提供一种选项来移除由奖励命令施加的持久性效果,但也可能有其他用途。

本模组默认不定义任何惩罚。

配置的根节点必须是一个包含单一字段 milestones 的对象,该字段是一个里程碑对象数组。以下是里程碑对象各字段的简要说明:

字段 描述 默认值
level 执行命令所需丢失的里程碑等级。 0
level_step 如果 level_range 大于 0,则决定为等级创建里程碑的间隔。 1
level_range 将为 level(含)到 level + level_range(不含)之间的等级定义里程碑。 1
level_inject 一个令牌,在命令字面量中会被替换为里程碑等级(如果为空则无效)。 ""
commands Minecraft 命令字面量的列表。这些命令将始终按给定顺序执行。 []

尽管惩罚与奖励类型相同,但上表中未提及的任何设置在设置后都不会产生效果。

区块经验

本模组的另一个方面是一个平衡功能,它限制了玩家在短时间内于某一区域内可获取的经验量。玩家拾取的经验会在玩家周围的 3x3 区块区域内累积,直至达到最大值。一个区块中累积的经验越多,玩家在该区块中拾取经验球时获得的经验就越少(默认最低降至 20%)。区块会从累积的经验中缓慢恢复。

在默认设置下,玩家可以拾取大约 2400 点经验(从 0 级起约 37 级),之后区块经验池才会达到阈值。这样一个区块需要 40 分钟才能完全恢复。不过实际上会更有动态性一些,因为区块一直在从累积的经验中恢复。此功能可以通过将 chunk_xp_scale 设置为 0 来完全禁用。

方块

技能压力板

技能压力板合成配方

顾名思义,技能压力板是一种只能由玩家激活的压力板。输出信号的强度取决于站在其上的玩家的里程碑等级。具体来说,里程碑等级 0 的玩家信号强度为 1,达到最大里程碑等级(默认为 140)的玩家信号强度为 15。

在默认设置下,信号强度每 10 级增加 1(即等级 10、20、...、140)。

经验传感器

经验传感器合成配方

经验传感器是一种测量区块中可用经验的方块。如果该区域最近没有拾取过经验(即区块没有累积经验),则发出强度为 15 的红石信号;如果区块已达到其阈值,则发出强度为 0 的信号。

配置

如前所述,本模组为大多数功能提供了默认行为。许多方面都可以更改。存在以下配置文件:

路径 描述
<MINECRAFT_FOLDER>/config/skillissue-common.toml 通用模组配置。
<MINECRAFT_FOLDER>/config/skillissue/attributes.json 里程碑属性定义。
<MINECRAFT_FOLDER>/config/skillissue/rewards.json 里程碑奖励定义。
<MINECRAFT_FOLDER>/config/skillissue/penalties.json 里程碑惩罚定义。

要将任何配置恢复为默认值,只需删除相应的配置文件即可。

命令

命令 描述 权限等级
skillissue level get <target> 获取玩家的里程碑等级。 1
skillissue level set <targets> <value> 设置玩家的里程碑等级(应用升级奖励)。 2
skillissue chunkxp get <position> 获取指定位置区块中累积的经验。 1
skillissue chunkxp set <position> <value> 将指定位置区块的累积经验设置为给定值。 2

更多想法

  • 一个具有不同属性集、奖励和惩罚的职业系统。
  • 切换到数据包格式来定义属性、奖励和惩罚?让我知道你更喜欢哪种。

使用场景

本模组本身带有一个相当微妙的默认配置,旨在适合不同的模组整合包。但由于其高度可配置的特性,可以实现许多可能性。以下是一些随机的想法:

  • 逐步解锁其他模组的技能和功能(例如 Epic Fight 或 ParCool)。
  • 冒险地图格式,在升级时奖励玩家更好的盔甲、工具等。
  • 根据玩家等级解锁配方和物品。
  • 创建一份随等级提升而扩展的指南(例如使用标题和/或发放成书)。
  • 使用记分板添加等级显示,或在等级提升时奖励玩家其他 UI 功能。
  • 超级硬核模式,属性起始系数极低,最高等级为 1000。