如果想使用萌芽内置的 HTTP 服务器分发资源包 (self_host), 必须添加以下变量到服务端启动参数的 -jar 之前:
-Djava.net.preferIPv4Stack=true
Koish 为了实现更加丰富有趣的伤害机制, 通过多种手段重写了服务端的伤害系统.
Koish 的伤害系统代码注入点位于 Bukkit 伤害事件触发完成之后, 服务端 actuallyHurt 函数调用之前.
期间会修改 Bukkit 伤害事件中各修饰器的值, 并调用 PostprocessDamageEvent; 或是直接取消 Bukkit 事件.
为了版本可维护性与客制化, 简化/移除了一些原版机制, 对原版特性产生的影响将在下方列出.
移除了一些无伤大雅, 与元素机制不太兼容, 或是有替代品的原版机制.
移除了原版盔甲值/盔甲韧性/魔咒效果组件 minecraft:armor_effectiveness 的伤害减免.
原因: Koish 有专门的元素防御力机制.
移除了原版魔咒保护系数的伤害减免.
原因: Koish 有专门的元素防御力机制.
移除了女巫会置零伤害源为自身的魔法伤害、会将带有 minecraft:witch_resistant_to 标签的伤害乘以15%的特性.
原因: Koish 有专门的元素机制; 而该机制基于原版伤害类型, 思路不合且移除该特性无伤大雅.
移除了原版带有 minecraft:damages_helmet 标签的伤害会被头盔减免25%, 并双倍消耗头盔耐久的特性.
原因: Koish 有专门的元素机制; 而该机制基于原版伤害类型, 思路不合且移除该特性无伤大雅.
移除了原版带有 minecraft:freeze_hurts_extra_types 标签的实体类型收到的冰冻伤害乘以5的特性.
原因: Koish 有专门的元素机制; 而该机制基于原版伤害类型, 思路不合且移除该特性无伤大雅; 建议通过元素承伤倍率实现类似功能.
修改了与元素机制不太兼容的原版机制, 实现元素机制与原版的有机统一.
无懈可击期间新伤害大于旧伤害则完整受到一次新伤害, 小于等于旧伤害的新伤害会直接取消事件.
无懈可击记录的旧伤害 lastHurt 为最终伤害, 而非原版“减去被盔甲的护甲值与其保护魔咒、抗性提升效果等因素影响之前的伤害值”.
玩家的伤害无视无懈可击, 这要求通过武器本身的冷却去限制玩家输出, 玩家空手伤害的冷却可以通过配置文件修改.
原因: Koish 有专门的元素机制; 原版无懈可击期间新旧伤害作差, 无法妥善的区分各元素; 该机制仍然可以起到密集伤害防护目的.
玩家举盾格挡时, koish:blocking_damage_reduction 属性会生效, 按元素减少伤害, 单种元素伤害最低减少到0.
原因: Koish 有专门的元素机制; 原版格挡几乎相当于取消伤害事件, 不合理.
TODO, 目前抗性提升状态效果直接没效果.
原因: TODO.
盔甲指玩家的四个盔甲槽, 狼的Body槽 (若物品为狼铠, 则不使用此机制, 而是原版的1耐久抵消1伤害的机制), 马的Body槽 (原版会尝试扣除马凯的耐久度, 但马铠本身并没有耐久度组件).
可通过配置文件指定不使盔甲损失耐久度的伤害类型, 可实现溺水、挤压、着火等具有防御穿透的伤害不扣除盔甲耐久度 (配合 damage_type_mappings.yml).
可通过配置文件指定每点伤害损失的耐久度 (不足1点的耐久度将舍弃, 原版如此)、单次最大/最小损失耐久度, 其中伤害值为不考虑抗性提升伤害减免下的伤害 (原版如此), 若产生负值会强制置零.
原因: 原版机制下, 若受到高额伤害, 盔甲会直接清空耐久, 不合适.