跳到正文

Stamina Attributes

作者:TheRedBrain

A small API that adds a stamina system controlled by entity attributes.

收藏

截图

介绍

中文介绍正在准备中,下面暂时显示原文。

Stamina Attributes

This API adds a stamina system controlled by entity attributes.

Default implementation

LivingEntities can have up to _staminaattributes:max_stamina_ amounts of stamina. Stamina is regenerated by _staminaattributes:stamina_regeneration_ every _staminaattributes:stamina_tick_threshold_ ticks.

When stamina is reduced, regeneration is stopped for _staminaattributes:stamina_regeneration_delay_threshold_ ticks.

When stamina is <= 0, regeneration is stopped for _staminaattributes:depleted_stamina_regeneration_delay_threshold_ ticks.

_staminaattributes:reserved_stamina_ describes the percentage amount of maximum stamina that is currently not available.

_staminaattributes:item_use_stamina_cost_ is the amount of stamina that is reduced when using an item with a stamina cost.
There are two ways to give an item a stamina cost:

  1. Items in the “staminaattributes:using_costs_stamina” item tag reduce stamina by _staminaattributes:item_use_stamina_cost_ when they are used once. When stamina is < 0 the use action is not performed. In that case the item gets a cooldown, configured in the server config.
  2. Items in the “staminaattributes:continuous_using_costs_stamina” item tag reduce stamina by _staminaattributes:item_use_stamina_cost_ every tick while they are used. When stamina is < 0, the usage is cancelled. In that case the item gets a cooldown, configured in the server config.

The different _staminaattributes:\*\_tick_stamina_cost_ attributes describe the stamina cost for the corresponding activity. This cost is
applied every tick (20x per second). This includes the following activities:

  • sprinting
  • sneaking
  • walking
  • swimming
  • walking underwater
  • walking in water
  • climbing

The different _staminaattributes:\*\_action_stamina_cost_ attributes describe the stamina cost for the corresponding actions. This cost is
applied once every time the action is performed. This includes the following actions:

  • jumping
  • sprint jumping
  • attack blocking
  • attacking
  • block breaking

Several activities and actions can be configured to require stamina. If stamina is 0 or lower, they can’t be performed.
This includes:

  • jumping
  • sprinting
  • swimming
  • attacking
  • block breaking
  • attacking
  • attack blocking

Blocks that can be broken instantly by hand (blocks with a “destroyTime” of 0) can be excluded from the stamina
requirement.

Exhaustion

If a player has 0 or less stamina, they are exhausted, which means that a status effect is applied. This status effect
is defined in the server config.

This feature can be enabled in the server config, but it’s disabled by default.

Default attribute values

  • _staminaattributes:max_stamina_: 10 (10 for players)
  • _staminaattributes:stamina_regeneration_: 0 (1 for players)
  • _staminaattributes:stamina_tick_threshold_: 20
  • _staminaattributes:stamina_regeneration_delay_threshold_: 20
  • _staminaattributes:depleted_stamina_regeneration_delay_threshold_: 60
  • _staminaattributes:reserved_stamina_: 0
  • _staminaattributes:item_use_stamina_cost_: 0 (0.05 for players)
  • _staminaattributes:sprinting_tick_stamina_cost_: 0 (0.05 for players)
  • _staminaattributes:sneaking_tick_stamina_cost_: 0 (0.05 for players)
  • _staminaattributes:walking_tick_stamina_cost_: 0
  • _staminaattributes:swimming_tick_stamina_cost_: 0 (0.05 for players)
  • _staminaattributes:walking_underwater_tick_stamina_cost_: 0 (0.05 for players)
  • _staminaattributes:walking_in_water_tick_stamina_cost_: 0 (0.05 for players)
  • _staminaattributes:climbing_tick_stamina_cost_: 0 (0.05 for players)
  • _staminaattributes:jumping_action_stamina_cost_: 0 (1 for players)
  • _staminaattributes:sprint_jumping_action_stamina_cost_: 0 (1 for players)
  • _staminaattributes:attack_blocking_action_stamina_cost_: 0 (1 for players)
  • _staminaattributes:attacking_action_stamina_cost_: 0 (1 for players)
  • _staminaattributes:block_breaking_action_stamina_cost_: 0 (1 for players)

All default values for players can be set in the server config.

Default item tags

“staminaattributes:using_costs_stamina”:

{
	"values": [
		"minecraft:snowball"
	]
}

“staminaattributes:continuous_using_costs_stamina”:

{
	"values": [
		"minecraft:bow",
		"minecraft:crossbow",
		"minecraft:shield"
	]
}

Customization

The client config allows customizing the HUD element.

Using the stamina system

Java

Casting a “LivingEntity” to the “StaminaUsingEntity” interface gives access to all relevant methods.

Data packs

Stamina Attributes implements several data driven methods to interact with the current stamina value of an entity.

  • the “staminaattributes:add_stamina” enchantment effect allows adding a defined amount to the current stamina
  • the “staminaattributes:stamina_using_entity” entity sub predicate passes when the current stamina of an entity matches the defined range

Example

This enchantment reduces stamina of the attacker by 2, as long as the attacker has at least 5 stamina:

{
	"anvil_cost": 1,
	"description": {
		"translate": "enchantment.staminaattributes.test"
	},
	"effects": {
		"minecraft:post_attack": [
			{
				"affected": "attacker",
				"effect": {
					"type": "staminaattributes:add_stamina",
					"amount": {
						"type": "minecraft:linear",
						"base": -2.0,
						"per_level_above_first": -2.0
					}
				},
				"enchanted": "attacker",
				"requirements": {
					"condition": "minecraft:entity_properties",
					"entity": "direct_attacker",
					"predicate": {
						"type_specific": {
							"type": "staminaattributes:stamina_using_entity",
							"stamina_amount": {
								"min": 5.0
							}
						}
					}
				}
			}
		]
	},
	"max_cost": {
		"base": 25,
		"per_level_above_first": 8
	},
	"max_level": 1,
	"min_cost": {
		"base": 5,
		"per_level_above_first": 8
	},
	"slots": [
		"hand"
	],
	"supported_items": "#minecraft:swords",
	"weight": 5
}

常见问题

Stamina Attributes 支持哪些 Minecraft 版本?

Stamina Attributes 支持 Minecraft Java 版 1.20.1–26.1.2,共 8 个版本,可用的加载器:Fabric。下载时注意选择和你游戏版本一致的文件。

Stamina Attributes 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 Fabric,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。运行环境:客户端和服务端都要装。

评论

登录后评论和评分

TheRedBrain 的其他作品

查看全部 →