伤害免疫机制重做

伤害免疫机制重做

一个重新设计伤害无敌机制的模组。

ReHurtTime 以轻量且原版友好的方式重做了 Minecraft 的伤害无敌机制。

默认情况下,大多数伤害来源会绕过标准的无敌时间,使实体能更一致地受到伤害。对于被绕过的伤害,击退默认被禁用,以保留原始手感。

所有设置均可在游戏内的配置界面进行调整。

默认行为

  • 玩家受到无敌时间的保护。
  • 环境伤害(火焰、甜浆果丛等)不包含在内。
  • 篝火伤害不会绕过无敌时间。
  • 仅当最后的伤害来源带有 minecraft:no_knockback 标签时,才会应用击退。

重要提示:更新到新版本后,请重置模组配置(删除配置文件或在游戏内重置),以应用更新后的默认谓词。

高级配置

绕过无敌谓词(配置:bypassesInvulnerabilityPredicate)

getEntityType(entity) != 'minecraft:player' 
&& !include(getSourceTags(source), 'neoforge:is_environment') 
&& getSourceType(source) != 'minecraft:campfire'

应用击退谓词(配置:appliesKnockbackPredicate)

include(getSourceTags(getLastDamageSource(entity)), 'minecraft:no_knockback')

表达式 API

本模组使用 AviatorScript 进行高级自定义。 文档:AviatorScript Wiki

可用变量:

LivingEntity entity, DamageSource source

可用方法:

String getEntityType(Entity entity), Set<String> getEntityTags(Entity entity)
String getSourceType(DamageSource source), Set<String> getSourceTags(DamageSource source)
String getItemType(ItemStack stack), Set<String> getItemTags(ItemStack stack)
DamageSource getLastDamageSource(Entity entity), Entity getEntity(DamageSource source)
Entity getDirectEntity(DamageSource source), ItemStack getWeaponItem(DamageSource source)

日志(配置:logEnabled)

将 logEnabled 设置为 true,可在控制台输出详细的伤害信息以用于调试。你也可以返回一个 HashMap 来完全自定义日志格式。