RPG背包

RPG背包

这个模组增加了流行RPG中常见的新装备槽位和其他机制。

RPG 背包

添加了一个带有更多装备槽位和其他装备相关机制的新背包界面。

扩展背包界面

扩展背包界面是本模组最显著的功能。

但是,可以在服务器配置中禁用它。禁用后,所有依赖它的其他功能也将一并禁用。

新装备槽位

这些新装备槽位的工作方式与现有的四个盔甲槽位类似。

所有槽位均可单独配置。可配置选项包括:

  • 槽位是否启用
  • 槽位是否可见
  • 物品是否可以被手动放入槽位
  • 物品是否可以被手动从槽位中取出
  • 槽位的位置

背包中可访问的新槽位有:

  • 1 个腰带槽位
  • 1 个项链槽位
  • 2 个戒指槽位(第二个默认禁用)
  • 1 个手套槽位
  • 1 个肩甲槽位
  • 1 个圣物槽位
  • 1 个职业物品槽位(默认不可见且无法手动交互)

“法术”槽位

还有 8 个“法术”槽位,由“rpginventory:active_spell_slot_amount”实体属性直接控制。该属性的值决定启用多少个槽位。

服务器配置中的“default_spell_slot_amount”选项控制每位玩家默认激活的法术槽位数量。

法术槽位最初设计用于配合 Spell Engine 驱动的法术书使用,但也适用于其他物品。

手持槽位改造

这是对现有副手槽位的扩展。新的“手持槽位”将“替换”当前选中的快捷栏槽位。

两个手持槽位中的物品都可以“收鞘”(通过按下快捷键),此时可以重新访问快捷栏槽位。再次按下快捷键时,物品将重新拔出。

收鞘的物品会渲染在玩家模型上。具体位置可以在客户端配置中设置,并且“rpginventory:not_shown_when_in_sheathed_hand”和“rpginventory:not_shown_when_in_sheathed_offhand”物品标签中的物品在处于这些槽位时不会被渲染。

当手持槽位改造激活时,原版的“交换手持物品”快捷键会被禁用。使用数字键将背包物品交换到快捷栏仍然有效。

双手姿态

这是一种特殊情况,仅副手被收鞘。这会导致独特的情况:主手槽位被占用,而副手槽位为空。 可以通过按下快捷键来切换双手姿态。如果主手槽位中的物品位于“rpginventory:non_two_handed_items”物品标签中,则无法切换。

双手姿态本身不提供任何新功能,但像 Better Combat Extension 这样的模组可以利用它。

空手物品

当一只手没有收鞘,但对应槽位中没有物品时,玩家的手并不是空的。此时会手持对应“空手槽位”中的物品。

空手槽位总是包含一个名为“空手武器”的物品。这从技术上来说是一种武器。当安装了 Better Combat 时,这可以允许空手战斗。

备用手持槽位

这两个槽位可以持有与常规手持槽位相同的物品,但持有的物品不视为“已装备”(属性修饰符/附魔等效果不生效)。

可以通过按下快捷键将手持槽位中的物品与对应备用手持槽位中的物品交换。主手和副手有独立的按键。还有一个快捷键可以同时交换双手的物品。

技术性装备槽位

手持槽位改造的机制使用了各种“隐藏”的装备槽位:

  • 1 个收鞘主手槽位
  • 1 个收鞘副手槽位
  • 1 个空主手槽位
  • 1 个空副手槽位
  • 1 个备用主手槽位
  • 1 个备用副手槽位

附加快捷键设置

手持槽位改造的所有快捷键操作都有可配置的附加效果:

  • 对对应槽位中的物品应用冷却时间
  • 体力需求/消耗(如果安装了 Stamina Attributes)

状态效果界面

处于激活状态且可见的状态效果会列在背包界面的右侧。它们按类别(负面、正面和中立)排序。效果可以有描述(通过在语言文件中为 <effect_translation_key>.description 赋值来添加),描述也会被显示。

“rpginventory:food_effects”效果标签中的效果会显示在单独的列表中。

槽位提示

装备槽位现在可以有提示文本。只有当槽位和鼠标指针上的物品堆都为空时才会显示。此功能可以在客户端配置中禁用。

其他设置和功能

玩家背包中的 2x2 合成网格可以被禁用。


附加功能

这些功能独立于扩展背包界面工作。

进度锁定物品

带有“rpginventory:advancement_locked”组件的物品堆具有 3 种不同的“状态”模式之一,该模式保存在组件中。

不同的模式有:

  • 'not_unlocked'(未解锁)
  • 'unlocked'(已解锁),优先级最低。只有当物品处于此模式时才能被装备和使用。
  • 'locked'(已锁定),优先级最高。

“advancement_locked”组件有 5 个字符串字段:

  • “unlock_advancement”:'解锁进度'的 ID。如果玩家已解锁此进度,状态将更改为 'unlocked',否则状态为 'not_unlocked'。如果此字段为空字符串,物品不能处于 'not_unlocked' 状态。

  • “lock_advancement”:'锁定进度'的 ID。如果玩家已解锁此进度,状态将为 'locked'。如果此字段为空字符串,物品不能处于 'locked' 状态。

  • “not_unlocked_tooltip_text”:当物品状态为 'not_unlocked' 时,此字符串可选地显示在物品提示中。支持本地化。

  • “tooltip_text”:当物品状态为 'not_unlocked' 时,此字符串可选地显示在物品提示中。支持本地化。

  • “locked_tooltip_text”:当物品状态为 'not_unlocked' 时,此字符串可选地显示在物品提示中。支持本地化。

包含状态模式为 'not_unlocked' 或 'locked' 物品的背包槽位,可以可选地显示槽位覆盖层。

专属装备

装备可以属于多个“专属装备组”,这些组定义为保存在“rpginventory:exclusive_equipment”数据组件中的字符串。每个组在任何时候只能出现在一件已装备的物品上。如果在其他物品上检测到某个组,这些物品将被移入普通背包或掉落在地上。

玩家制造物品

带有“rpginventory:saves_crafting_player”组件的物品堆将保存制造它们的玩家。该玩家会显示在物品提示的一行中(可以在客户端配置中禁用)。

这纯粹是装饰性的。

玩家绑定物品

物品可以绑定到某个玩家。绑定物品只能由该玩家使用。玩家绑定物品会额外显示一行提示文本,显示玩家名称。(可以在客户端配置中禁用)

包含绑定给其他玩家的物品的背包槽位会有一个可配置颜色的覆盖层。这可以在客户端配置中禁用。

如何将物品绑定到玩家

如果物品堆带有“rpginventory:bounds_to_player”组件,当它被放入玩家背包时,该物品堆将自我绑定到该玩家。 此时,“rpginventory:bounds_to_player”组件将被移除,并添加“rpginventory:player_bound”组件。该组件保存一个玩家档案。

装备更换限制

服务器配置设置“allow_equipment_changes”控制物品是否可以放入或移出装备槽位。

当玩家拥有“rpginventory:civilisation”状态效果时,可以不受配置设置限制地将物品放入或移出装备槽位。

当玩家拥有“rpginventory:wilderness”状态效果时,不能将物品放入或移出装备槽位,不论配置设置如何。

带有“rpginventory:ignores_equipment_change_restrictions”组件的物品堆会忽略这些限制。

不可用物品

位于“unusable_when_low_durability”物品标签或带有“rpginventory:unusable_when_low_durability”数据组件的物品与鞘翅具有相同的行为。当耐久度耗尽时,它们不会被摧毁,而是变得不可用,直到被修复。不可用的物品会使用不同的翻译键(默认键 + "_broken")。

包含不可用物品的背包槽位会有一个可配置颜色的覆盖层。这可以在客户端配置中禁用。

人偶与配装物品

人偶是一种方块,具有类似于玩家装备槽位的存储槽位。放置在这些槽位中的物品构成一套“配装”,玩家可以装备。装备配装会用配装物品的副本填充玩家的装备槽位。只有空的或包含配装物品的槽位才会被填充。

对于非创造模式的玩家,可以使用方块实体数据禁用更改和/或装备配装物品。

配装物品

根据服务器配置设置,“rpginventory:is_destroyed_on_death”或“rpginventory:is_kept_on_death”数据组件之一会被应用到配装物品上。

这些物品通常也不能从槽位中移除,只能在与方块实体(人偶)交互时移除。

附加物品提示

这些可以在客户端配置中设置,包括位置。

  • 配装物品
  • 玩家绑定物品(对配装物品禁用)
  • 玩家制造物品(对配装物品禁用)
  • 进度锁定物品(对配装物品禁用)
  • 物品是否在“two_handed_items”物品标签中。
  • 物品可以装备在哪些槽位,这由物品标签控制。

PVP 死亡

当具有“rpginventory:pvp”状态效果的玩家生命值降至零时,他们不会被杀死,而是触发此功能。

效果包括:

  • 移除所有状态效果(pvp 效果和“rpginventory:kept_on_pvp_death”状态效果标签中的所有条目除外)
  • 重置玩家资源(生命值、法力、体力等)
  • 将“pvp 效果”的增幅等级降低一级
  • 如果新的增幅等级大于或等于零:
    • 将玩家传送到特定位置(默认是出生点/世界出生点,安装 Script Blocks 后改为其“位置访问点”)
  • 如果新的增幅等级小于零:
    • 将玩家传送到他们的出生点/世界出生点

死亡时的背包变化

RPG 背包添加了多种机制,影响玩家死亡时背包中物品的处理方式。

当原版“keep_inventory”游戏规则设置为 true 时,所有物品都会被保留。

当装备了“sacrificed_to_keep_inventory_on_death”物品标签中的物品(在装备、饰品或副手槽位)时,“rpginventory:keep_inventory”状态效果会被应用。

当玩家拥有该状态效果死亡时,所有位于“sacrificed_to_keep_inventory_on_death”物品标签中的已装备物品都会被摧毁。背包的其余部分将被保留,不受游戏规则和“消失诅咒”等效果的影响。

原版附魔“消失诅咒”仅在未牺牲任何物品以保留背包时才会生效。

剩余物品在以下条件下会被保留:

  • 它们具有“rpginventory:is_kept_on_death”组件
  • 它们位于“rpginventory:empty_hand_weapons”物品标签中

未被保留的物品在以下条件下会被摧毁:

  • 服务器配置设置“destroy_dropped_items_on_death”设置为 true
  • 它们具有“rpginventory:is_destroyed_on_death”组件

其余物品会像平常一样掉落。

状态效果

当"building_mode_status_effect_identifier"是有效的状态效果标识符,且玩家拥有该状态效果时,一些机制会被忽略。

  • 每件物品都可以用来攻击和破坏方块
  • 双手行为如同收鞘状态,因此手持槽位包含选中的快捷栏槽位中的物品,就像原版一样。

与其他模组的集成和兼容性

背包属性(Backpack Attribute)

可以添加一个按钮到背包界面,用于打开背包界面(Backpack Screen)。2x2 合成网格必须被禁用。

背包大小属性(Inventory Size Attributes)

HUD 中的快捷栏可以配置为仅显示已启用的快捷栏槽位。

Spell Engine(仅限 1.21.1)

Spell Engine 的状态效果 API 用于多种机制,当满足特定条件时会对玩家应用“隐藏状态效果”。

  • 当主手物品位于“rpginventory:two_handed_items”物品标签中,且副手槽位不为空/未收鞘时,玩家无法攻击、使用物品或施放法术。
  • 当主手物品不在“rpginventory:attack_items”物品标签中,且服务器配置选项“allow_attacking_with_non_attack_items”设置为 false 时,玩家无法攻击。

玩家属性界面(Player Attribute Screen)(仅限 1.21.1)

当安装了“玩家属性界面”模组时,RPG 背包界面中会激活一个用于切换属性界面的按钮。

RPG 制造(RPG Crafting)(仅限 1.21.1)

可以添加一个按钮到背包界面,用于打开手动合成界面(Hand Crafting Screen)。2x2 合成网格必须被禁用。

Numismatic Overhaul(仅限 1.21.1)

钱包组件(purse widget)会显示在 RPG 背包界面上。

Trinkets(仅限 1.21.1)

Trinkets 槽位会显示在 RPG 背包界面上。

所有 Trinkets 槽位都有一个提示文本。可以在语言文件中使用以下模式设置:

{
	"slot.tooltip.<group_name>.<slot_name>": "测试槽位"
}

当字符串为空时,不会显示提示。