🇺🇦 Українська (Ukrainian - Ukraine)
🇺🇦 Українська (Ukrainian - Ukraine)
Зовнішній вигляд
🇺🇦 Українська (Ukrainian - Ukraine)
🇺🇦 Українська (Ukrainian - Ukraine)
Зовнішній вигляд
Ця сторінка написана для версії:
1.21.4
Ця сторінка написана для версії:
1.21.4
Статусні ефекти, також відомі як ефекти, — це статус, який може вплинути на сутність. Вони можуть бути позитивні, негативні або нейтральні. Базова гра застосовує ці ефекти різними способами, такими як їжа, зілля тощо.
Команда /effect
може бути використана для застосування ефектів до сутності.
Тут ми додамо новий спеціальний ефект під назвою Tater, який дає вам одне очко досвіду за кожен ігровий такт.
StatusEffect
Створімо спеціальний клас ефекту, розширивши StatusEffect
, який є базовим класом для всіх ефектів.
public class TaterEffect extends StatusEffect {
protected TaterEffect() {
// category: StatusEffectCategory - describes if the effect is helpful (BENEFICIAL), harmful (HARMFUL) or useless (NEUTRAL)
// color: int - Color is the color assigned to the effect (in RGB)
super(StatusEffectCategory.BENEFICIAL, 0xe9b8b3);
}
// Called every tick to check if the effect can be applied or not
@Override
public boolean canApplyUpdateEffect(int duration, int amplifier) {
// In our case, we just make it return true so that it applies the effect every tick
return true;
}
// Called when the effect is applied.
@Override
public boolean applyUpdateEffect(ServerWorld world, LivingEntity entity, int amplifier) {
if (entity instanceof PlayerEntity) {
((PlayerEntity) entity).addExperience(1 << amplifier); // Higher amplifier gives you experience faster
}
return super.applyUpdateEffect(world, entity, amplifier);
}
}
Подібно до реєстрації блоків і предметів, ми використовуємо Registry.register
для реєстрації нашого власного ефекту в реєстрі STATUS_EFFECT
. Це можна зробити в нашому ініціалізаторі.
public class FabricDocsReferenceEffects implements ModInitializer {
public static final RegistryEntry<StatusEffect> TATER;
static {
TATER = Registry.registerReference(Registries.STATUS_EFFECT, Identifier.of("fabric-docs-reference", "tater"), new TaterEffect());
}
@Override
public void onInitialize() {
// ...
}
}
Значок статусного ефекту — це PNG розміром 18x18, який з’явиться на екрані інвентарю гравця. Розмістіть ваш значок у:
resources/assets/fabric-docs-reference/textures/mob_effect/tater.png
Як і будь-який інший переклад, ви можете додати запис із форматом ID "effect.mod-id.effect-identifier": "Значення"
у мовний файл.
{
"effect.fabric-docs-reference.tater": "Tater"
}
Варто поглянути на те, як ви зазвичай застосовуєте ефект до сутності.
TIP
For a quick test, it might be a better idea to use the previously mentioned /effect
command:
effect give @p fabric-docs-reference:tater
Щоб застосувати внутрішній ефект, потрібно використати метод LivingEntity#addStatusEffect
, який приймає StatusEffectInstance
і повертає логічне значення, яке вказує, чи було успішно застосовано ефект.
var instance = new StatusEffectInstance(FabricDocsReferenceEffects.TATER, 5 * 20, 0, false, true, true);
entity.addStatusEffect(instance);
Аргумент | Тип | Опис |
---|---|---|
effect | RegistryEntry<StatusEffect> | Запис реєстру, який представляє ефект. |
duration | int | Тривалість ефекту в тактах; не секунд |
amplifier | int | Підсилювач до рівня ефекту. Він не відповідає рівню ефекту, а додається зверху. Отже, amplifier 4 => рівень 5 |
ambient | boolean | Це складно. Це в основному вказує, що ефект був доданий середовищем (наприклад, маяк) і не має прямої причини. Якщо true , значок ефекту в HUD буде показане накладення водянистого кольору. |
particles | boolean | Чи слід показувати частинки. |
icon | boolean | Чи показувати значок ефекту в HUD. Ефект буде показано в інвентарі незалежно від цього прапорця. |
INFO
Щоб створити зілля, яке використовує цей ефект, перегляньте зілля.