🇺🇦 Українська (Ukrainian - Ukraine)
🇺🇦 Українська (Ukrainian - Ukraine)
Зовнішній вигляд
🇺🇦 Українська (Ukrainian - Ukraine)
🇺🇦 Українська (Ukrainian - Ukraine)
Зовнішній вигляд
Ця сторінка написана для версії:
1.21.4
Ця сторінка написана для версії:
1.21.4
Типи шкоди визначають типи шкоди, яку можуть отримати сутності. Починаючи з Minecraft 1.19.4, з'явилося створення нових типів пошкоджень стають керованими даними, тобто вони створюються за допомогою файлів JSON.
Створімо спеціальний тип шкоди під назвою Tater. Почнімо з того, що створимо JSON файл для вашого типу шкоди. Цей файл буде розміщено в каталозі data
вашого мода, у підкаталозі з назвою damage_type
.
resources/data/fabric-docs-reference/damage_type/tater.json
Він має таку структуру:
{
"exhaustion": 0.1,
"message_id": "tater",
"scaling": "when_caused_by_living_non_player"
}
Цей спеціальний тип шкоди збільшує 0,1 у виснаженні від голоду кожного разу, коли гравець отримує шкоду, коли шкоду нанесено живим джерелом, проте не є гравцем (наприклад, блоком). Крім того, сума завданої шкоди буде збільшуватися зі складністю у світі
INFO
Зверніться до Minecraft Wiki, щоб дізнатися про всі можливі ключі та значення.
Коли нам потрібно отримати доступ до нашого спеціального типу пошкодження через код, ми будемо використовувати його RegistryKey
для створення екземпляра з DamageSource
.
Коли нам потрібно отримати доступ до нашого спеціального типу пошкодження через код, ми будемо використовувати його RegistryKey
для створення екземпляра з DamageSource
.
public static final RegistryKey<DamageType> TATER_DAMAGE = RegistryKey.of(RegistryKeys.DAMAGE_TYPE, Identifier.of(FabricDocsReference.MOD_ID, "tater"));
Щоб продемонструвати використання власних типів шкоди, ми використаємо власний блок, нехай це буде Tater Block. Зробімо так, що коли жива істота наступає на Tater Block, вона отримує тип шкоди Tater.
Ви можете перевизначити onSteppedOn
, щоб завдати цієї шкоди.
Ви можете перевизначити onSteppedOn
, щоб завдати цієї шкоди.
DamageSource damageSource = new DamageSource(
world.getRegistryManager()
.getOrThrow(RegistryKeys.DAMAGE_TYPE)
.getEntry(FabricDocsReferenceDamageTypes.TATER_DAMAGE.getValue()).get()
);
Потім ми викликаємо entity.damage()
з нашим DamageSource
і сумою.
entity.damage(serverWorld, damageSource, 5.0f);
Повна реалізація блоку:
public class TaterBlock extends Block {
public TaterBlock(Settings settings) {
super(settings);
}
@Override
public void onSteppedOn(World world, BlockPos pos, BlockState state, Entity entity) {
if (entity instanceof LivingEntity && world instanceof ServerWorld serverWorld) {
DamageSource damageSource = new DamageSource(
world.getRegistryManager()
.getOrThrow(RegistryKeys.DAMAGE_TYPE)
.getEntry(FabricDocsReferenceDamageTypes.TATER_DAMAGE.getValue()).get()
);
entity.damage(serverWorld, damageSource, 5.0f);
}
}
}
Тепер щоразу, коли жива істота наступає на наш спеціальний блок, вона отримує 5 шкоди (2,5 серця), нашим типом шкоди.
Ви можете визначити повідомлення про смерть для типу шкоди у форматі death.attack.message_id
у нашому файл en_us.json
(це англійська, для української створіть uk_ua.json
) мода.
{
// ...
"death.attack.tater": "%1$s died from Tater damage!",
// ...
}
Після смерті від нашого типу шкоди ви побачите таке повідомлення про смерть:
Після смерті від нашого типу шкоди ви побачите таке повідомлення про смерть:
Деякі типи шкоди можуть обійти обладунки, ефекти тощо. Теґи використовуються для керування такими властивостями типів шкоди.
Ви можете знайти наявні теґи типу шкоди в data/minecraft/tags/damage_type
.
INFO
Зверніться до Minecraft Wiki, щоб отримати повний список теґів типу шкоди.
Додамо наш тип шкоди Tater до теґу типу шкоди bypasses_armor
.
Додамо наш тип шкоди Tater до теґу типу шкоди bypasses_armor
.
data/minecraft/tags/damage_type/bypasses_armor.json
З таким змістом:
{
"values": [
"fabric-docs-reference:tater"
]
}
Переконайтеся, що ваш теґ не замінює наявний теґ, встановивши для ключа replace
значення false
.