🇨🇳 中文 (Chinese - China)
🇨🇳 中文 (Chinese - China)
外观
🇨🇳 中文 (Chinese - China)
🇨🇳 中文 (Chinese - China)
外观
本页面基于这个版本编写:
1.20.4
本页面基于这个版本编写:
1.20.4
状态效果,又称效果,是一种可以影响实体的条件。 它们的性质可以是正面的,负面的或者中性的。 游戏本体通过许多不同的方式应用这些效果,如食物和药水等等。
命令 /effect
可被用于给实体应用效果。
在这篇教程中我们将加入一个叫 土豆 的新状态效果,它会每游戏刻给你 1 点经验。
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(LivingEntity entity, int amplifier) {
if (entity instanceof PlayerEntity) {
((PlayerEntity) entity).addExperience(1 << amplifier); // Higher amplifier gives you experience faster
}
return super.applyUpdateEffect(entity, amplifier);
}
}
与注册方块和物品类似,我们使用 Registry.register
将我们的自定义状态效果注册到 STATUS_EFFECT
注册表。 这可以在我们的模组入口点内完成。 这可以在我们的模组入口点内完成。
public class FabricDocsReferenceEffects implements ModInitializer {
public static final StatusEffect TATER_EFFECT;
static {
TATER_EFFECT = Registry.register(Registries.STATUS_EFFECT, Identifier.of("fabric-docs-reference", "tater"), new TaterEffect());
}
@Override
public void onInitialize() {
// ...
}
}
您可以为您的状态效果指定名称并提供一个纹理(texture)图标,这将显示在玩家背包中。
状态效果图标是 18x18 的 PNG。 将您的自定义图标放在: 将您的自定义图标放在:
resources/assets/fabric-docs-reference/textures/mob_effect/tater.png
像其它翻译一样,您可以添加一个 ID 格式的条目 "effect.<mod-id>.<effect-identifier>": "Value"
到语言文件中。