Skip to content

Nyaadanbou/wakame

Repository files navigation

内置资源包分发服务器的正确用法

如果想使用萌芽内置的 HTTP 服务器分发资源包 (self_host), 必须添加以下变量到服务端启动参数的 -jar 之前:

-Djava.net.preferIPv4Stack=true

Koish 伤害系统对原版特性的影响

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点的耐久度将舍弃, 原版如此)、单次最大/最小损失耐久度, 其中伤害值为不考虑抗性提升伤害减免下的伤害 (原版如此), 若产生负值会强制置零.

原因: 原版机制下, 若受到高额伤害, 盔甲会直接清空耐久, 不合适.

About

Koish - 核心玩法实现.

Resources

Stars

Watchers

Forks

Contributors