错误排查 - woshiermuqwq/mythic-chinese GitHub Wiki

实体配置相关错误

以下内容仅存于存放在Mobs文件夹内的任意文档内

基础项

某实 体:
 type: fallingblock
 Display: 'Example's Mob: <mob.level>'
 Damage: 0
 Health: 0
 Armor: 0
  1. 不要在实体内部名内打空格
    • 某实 体 --> 某实体
  2. 字符大小写错误
    • type --> Type
  3. 实体种类错误(导致生成后变为原版骷髅)
      1. fallingblock --> falling_block
      1. 不要将实体种类设为无血量属性的实体(不包括盔甲架、Marker)
  4. 显示名最好不要包括 ':, 请使用占位符(&cq、&co)替代它们,
    • Display: 'Example's Mob:<mob.level>' -- > Display: 'Example<&cq>s Mob<&co> <mob.level>'`
  5. 实体属性值为0时无效(该错误不会导致实体无法被读取)
    • Damage: 0 --> Damage: 0.001

实体选项

某实体:
 Type: zombie
 Options:
  ApplyInvisiblity: true
  PreventSunburn: true
  NoAI: 1
  MovementSpeed: 0
  1. 选项名错误(导致选项无效)
    • ApplyInvisiblity --> ApplyInvisibility
  2. 不支持的Minecraft版本(导致选项无效)
    • 如PreventSunburn, 更新Minecraft到1.12.2以上, 最好顺带更新MythicMobs
  3. 所写值类型错误(导致报错与无法读取)
    • NoAI: 1 --> NoAI: true
  4. 实体属性值为0时无效(该错误不会导致实体无法被读取)
    • MovementSpeed: 0 --> MovementSpeed: 0.001 或 MovementSpeed: -1

技能配置项

某实体:
 Type: zombie
 Skill:
  - damage ~ontimer: 20
  - damage ~ondamaged
  1. 少写字符
    • Skill: --> Skills:
  2. 语法(缩进)错误
    • - damage --> - damage
  3. 字符大小写错误(触发器, 导致触发器工作异常)
    • ~ontimer: 20 --> ~onTimer: 20
    • 只有 ~onTimer 有严格的大小写限制
  4. 多写字符(导致该项无效)
    • ~onTimer: 20 --> ~onTimer:20``

技能组配置相关错误

以下内容常见于存放在Mobs文件夹与Skills文件夹内的任意文档

目标选择器/触发器/技能修改项的缺失

这是个实体:
 Type: zombie:
 Skills:
 - damage{1}
  1. 无目标选择器(导致技能作用于自身)
    • 无目标选择器时, 技能目标默认为自身(技能文档内的技能除外)
    • damage{1} --> damage{1} @trigger
  2. 无目标选择器(导致技能在实体攻击/受伤/死亡后触发)
    • 无目标选择器时, 触发器默认为~onCombat
    • damage{1} @trigger --> damage{1} @trigger ~onInteract
  3. 未写入技能修改项(导致技能无效)
    • damage{1} @trigger ~onInteract --> damage{a=1} @trigger ~onInteract
    • Skill技能无需写入修改项: skill(s)=技能组名

对于触发者(Trigger)的误解

这是个实体:
 Type: zombie:
 Skills:
 - damage{a=1} \@trigger ~onTimer:20
  1. "这是个技能"技能组是由 onTimer激活的, 而 onTimer 的触发者是施法者, 所以该技能会伤害施法者本身
    • onTimer:20 --> onAttack/onDamaged/onInteract
    • @trigger --> @eir/@mir/@pir/@target/@parent...

选取范围过大

这是个实体:
 Type: zombie:
 Skills:
 - damage{a=1} @pir{r=1024} ~onTimer:20

选取范围过大将导致MythicMobs花费时间与大量资源去检测, 上千格方块的检测范围通常导致tps跌落至个位数(上限20的情况下)

条件错误

这是个实体:
 Type: zombie:
 Skills:
 - damage{a=1} @eir{r=16} ?isplayer ~onTimer:20
  1. 条件(?isplayer)检测对象错误(导致技能无法激活)
    • 确保MythicMobs版本不低于4.13
    • 施法者为检测对象, 但是并非玩家 ?player --> ?monster
这是个实体:
 Type: zombie:
 Skills:
 - skill:某技能组 @eir{r=16} ?ismonster ~onTimer:20
某技能组:
 Condiitons:
 - isplayer
 Skills:
 - damage{a=1} @eir{r=16}
  1. 条件(Conditions:)检测对象错误(导致技能无法激活)
    • 检测对象是16格方块半径 球体范围内的所有实体, 应使用 TargetConditions
  2. 再次使用目标选择器(导致不符合条件的实体也会受技能影响)
    • 删除 @eir{r=16}
    • 因为在检测的时候已经过滤了不符合条件的实体, 再次使用将导致无条件的选取, 选取将包括已被排除在外的实体
  3. Conditions, 不是Condiitons

生成相关错误

随机生成相关错误

测试随机生成:
 Action: ADD
 Type: 实体
 BIOME: OCEAN,PLAINS
 Chance: 0.01
 Priority: 10
 UseWorldScaling: false
 Worlds: world
 Conditions:
 - region{name=测试}
  • 确保世界名正确, 且世界名必须被设定
  • 确保条件符合(在这指的是该世界存在该区域)
  • 确保已在Config.yml内的RandomSpawns部分开启 GeneraSpawnPoints
  • 确保周围有不处在创造模式的玩家
  • 确保没有其它因素(ESS、CMI等)限制生成, 测试方法:
    • 启动本地服务器
    • 仅安装MythicMobs与MythicLib

定点生成相关错误

使用 /mm s stats 生成点名 以获取出错生成点的各项值

  • 确保MaxMobs不为-1(常见于更新MythicMobs后)
  • 确保优化插件不涉及实体(常见于扫地大妈等插件)
  • 低版本MythicMobs漏洞

物品相关错误

某物品:
 id: 1(或Stone)
 Display: 'Someone's Item:lol'
 Lore:
 - 'This is someone's item'
 - '$player_name$: are u sure?
 Options:
  HideFlags: true
  1. 字符大小写错误
    • id --> Id
  2. 与实体配置一致, 字符一般不能包括 ':
  3. 第二行Lore少打了个 ' 以包裹字符串

伪装相关错误

  • 伪装一点作用都没: 伪装没装/版本不支持(加群710180212提供报错截图)
  • 伪装玩家皮肤无法加载: 服务器网络不好/换伪装版本
  • 伪装成玩家: Xikage或Ashijin: 伪装配置错误, 后台应生成提示
  • 确保已安装前置: Protocollib

Projectile 相关错误

若版本在 1.16 以上, 请使用 Paper 及其分支
首先先确保技能已加载, 通过输入/mm t cast , 随后按TAB来补全技能名
以检测是否被加载, 无法补全证明格式有误, 根据后台提示修正格式.

  • 无法命中非玩家实体: 确保已开启 hitnonplayers- projectile{hnp=true;ot=...
  • 报错关键字: BoundOf: 换用较低的MM版本(若你是1.13以下)
  • stopatblock/entity为true仍然不会停下: 速度过快可能穿过实体

Damage及其分支 相关错误

如果你的 Damage 没有效果:

  • 确保技能已被激活
  • 尝试其它目标选择器
  • 排除伤害硬直(preventimmunite=true)
    若伤害数值为1:
  • 检查amount的值(若为公式则检测其是否正确)
⚠️ **GitHub.com Fallback** ⚠️