简单之血

简单之血

添加简单的血液粒子效果。

怪物

Simple Blood

*添加了简单的血液粒子。*

当实体受到伤害时,它们会根据造成的伤害比例流血。轻击会产生小而短暂的飞溅,重击则会引发剧烈的血液喷溅。低生命值的实体会缓慢滴血,致命一击则会触发更大的死亡喷溅。

在 Ko-fi 上支持我

功能

击中喷溅 + 死亡喷溅 + 血迹

不同颜色的血液

铁傀儡碎片粒子

水下血雾

一切均可配置

配置

所有效果均可通过 Mod Menu 完全自定义。

针对模组开发者

Simple Blood 公开了一个客户端 API,用于完全控制您模组中实体的血液行为。请从您的 客户端初始化器 中调用它。您注册的所有内容都会覆盖配置和默认设置;每个选项都是可选的,因此您只需设置想更改的部分。

import com.bloodmod.BloodModAPI;

// 通过原始 ID 字符串注册适用于所有加载器和 MC 版本:
BloodModAPI.registerEntityBlood("yourmod:custom_mob", new BloodModAPI.BloodSettings()
        .setColor(0xFF0000)             // 血液颜色 0xRRGGBB(或 setColor(r, g, b))
        .setCanBleed(true)
        .setCanDripAtLowHealth(true)    // 受伤时持续滴血
        .setTransformToStains(true));   // 地面血迹 + 水下雾气

// 您也可以通过 EntityType 注册:
BloodModAPI.registerEntityBlood(YourEntities.CUSTOM_MOB, new BloodModAPI.BloodSettings()
        .setColor(0x8B0000));

所有 BloodSettings 选项

颜色

  • setColor(int rgb) / setColor(int r, int g, int b) — 静态血液颜色。
  • setColorProvider(Function<LivingEntity, Integer>) — 为每个实体实例解析的 动态 颜色(例如,跟随实体的色调或状态)。返回 null 以回退。

核心行为

  • setCanBleed(boolean) — 是否流血。
  • setCanDripAtLowHealth(boolean) — 对构造体/亡灵设为 false。
  • setTransformToStains(boolean) — 地面血迹 + 水下血雾云。

水与环境

  • setCreatesFogUnderwater(boolean) — 独立强制启用水下血雾行为。
  • setParticlesDespawnInWater(boolean) — 粒子在接触水时消失(类似雪傀儡风格)。
  • setBleedWhenAsphyxiating(boolean) — 重新 启用 因溺死/窒息/脱水导致的流血(Simple Blood 默认抑制这些情况)。

数量、大小与声音

  • setParticleSizeMultiplier(float) — 液滴大小(1.0 = 默认)。
  • setBurstIntensityMultiplier(float) — 每次击中/死亡的粒子数量。
  • setDripIntensityMultiplier(float) — 低生命值时的滴血量。
  • setBloodSound(SoundEvent) — 自定义血液声音。
  • setSoundEnabled(boolean) — 按实体的声音开关。

高级设置

  • setBleedPredicate(BiPredicate<LivingEntity, DamageSource>) — 完全控制哪些攻击会流血;返回 true 表示流血。覆盖默认的窒息过滤逻辑。

示例

// 跟随实体的动态颜色:
BloodModAPI.registerEntityBlood("yourmod:rainbow_slime", new BloodModAPI.BloodSettings()
        .setColorProvider(e -> ((RainbowSlime) e).getTintRGB()));

// 流树液的树人:棕色,无滴血,无血迹:
BloodModAPI.registerEntityBlood("yourmod:treant", new BloodModAPI.BloodSettings()
        .setColor(0x5B3A1A)
        .setCanDripAtLowHealth(false)
        .setTransformToStains(false));

// 在脱水时确实流水的元素生物:
BloodModAPI.registerEntityBlood("yourmod:water_elemental", new BloodModAPI.BloodSettings()
        .setBleedWhenAsphyxiating(true));

// 流大量鲜血但永远不会因摔落伤害流血的巨型 Boss:
BloodModAPI.registerEntityBlood("yourmod:colossus", new BloodModAPI.BloodSettings()
        .setParticleSizeMultiplier(1.5f)
        .setBurstIntensityMultiplier(2.0f)
        .setBleedPredicate((entity, source) -> !source.is(DamageTypes.FALL)));

全局控制

// 阻止这些伤害类型对 ANY(任何)实体产生血液:
BloodModAPI.addNonBleedingDamageType(DamageTypes.IN_FIRE);
BloodModAPI.addNonBleedingDamageType(DamageTypes.LAVA);

BloodModAPI.getRegisteredEntities();            // 已注册 ID 的 Set<String>
BloodModAPI.unregisterEntityBlood("yourmod:x"); // 移除一个实体

内置的溺水/窒息/脱水抑制始终生效,除非实体通过 setBleedWhenAsphyxiating(true) 或其自身的 bleedPredicate 选择退出。

在 GitHub 上报告问题或建议功能