错误排查 - woshiermuqwq/mythic-chinese GitHub Wiki
以下内容仅存于存放在Mobs文件夹内的任意文档内
某实 体:
type: fallingblock
Display: 'Example's Mob: <mob.level>'
Damage: 0
Health: 0
Armor: 0
- 不要在实体内部名内打空格
-
某实 体
-->某实体
-
- 字符大小写错误
-
type
-->Type
-
- 实体种类错误(导致生成后变为原版骷髅)
-
-
fallingblock
-->falling_block
-
-
- 不要将实体种类设为无血量属性的实体(不包括盔甲架、Marker)
-
- 显示名最好不要包括 ' 与 :, 请使用占位符(&cq、&co)替代它们,
- Display: 'Example
'
s Mob:
<mob.level>' -- > Display: 'Example<&cq>
s Mob<&co>
<mob.level>'`
- Display: 'Example
- 实体属性值为0时无效(该错误不会导致实体无法被读取)
- Damage:
0
--> Damage:0.001
- Damage:
某实体:
Type: zombie
Options:
ApplyInvisiblity: true
PreventSunburn: true
NoAI: 1
MovementSpeed: 0
- 选项名错误(导致选项无效)
- ApplyInvisiblity --> ApplyInvisibility
- 不支持的Minecraft版本(导致选项无效)
- 如PreventSunburn, 更新Minecraft到1.12.2以上, 最好顺带更新MythicMobs
- 所写值类型错误(导致报错与无法读取)
- NoAI: 1 --> NoAI: true
- 实体属性值为0时无效(该错误不会导致实体无法被读取)
- MovementSpeed:
0
--> MovementSpeed:0.001
或 MovementSpeed:-1
- MovementSpeed:
某实体:
Type: zombie
Skill:
- damage ~ontimer: 20
- damage ~ondamaged
- 少写字符
- Skill
:
--> Skills:
- Skill
- 语法(缩进)错误
-
-
damage -->-
damage
-
- 字符大小写错误(触发器, 导致触发器工作异常)
- ~on
t
imer: 20 --> ~onT
imer: 20 - 只有 ~onTimer 有严格的大小写限制
- ~on
- 多写字符(导致该项无效)
- ~onTimer
: 20
-->~onTimer
:20``
- ~onTimer
以下内容常见于存放在Mobs文件夹与Skills文件夹内的任意文档
这是个实体:
Type: zombie:
Skills:
- damage{1}
- 无目标选择器(导致技能作用于自身)
- 无目标选择器时, 技能目标默认为自身(技能文档内的技能除外)
- damage{1}
@trigger
- 无目标选择器(导致技能在实体攻击/受伤/死亡后触发)
- 无目标选择器时, 触发器默认为~onCombat
- damage{1} @trigger
~onInteract
- 未写入技能修改项(导致技能无效)
- damage{
1
} @trigger ~onInteract --> damage{a=1
} @trigger ~onInteract - 仅Skill技能无需写入修改项:
skill(s)=技能组名
- damage{
这是个实体:
Type: zombie:
Skills:
- damage{a=1} \@trigger ~onTimer:20
- "这是个技能"技能组是由 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
-
条件(?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}
-
条件(Conditions:)检测对象错误(导致技能无法激活)
- 检测对象是16格方块半径 球体范围内的所有实体, 应使用
TargetConditions
- 检测对象是16格方块半径 球体范围内的所有实体, 应使用
- 再次使用目标选择器(导致不符合条件的实体也会受技能影响)
- 删除
@eir{r=16}
- 因为在检测的时候已经过滤了不符合条件的实体, 再次使用将导致无条件的选取, 选取将包括已被排除在外的实体
- 删除
- 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
- 字符大小写错误
-
id
-->Id
-
- 与实体配置一致, 字符一般不能包括 ' 与 :
- 第二行Lore少打了个 ' 以包裹字符串
- 伪装一点作用都没: 伪装没装/版本不支持(加群710180212提供报错截图)
- 伪装玩家皮肤无法加载: 服务器网络不好/换伪装版本
- 伪装成玩家: Xikage或Ashijin: 伪装配置错误, 后台应生成提示
- 确保已安装前置: Protocollib
若版本在 1.16 以上, 请使用 Paper 及其分支
首先先确保技能已加载, 通过输入/mm t cast
, 随后按TAB来补全技能名
以检测是否被加载, 无法补全证明格式有误, 根据后台提示修正格式.
- 无法命中非玩家实体: 确保已开启 hitnonplayers(
- projectile{hnp=true;ot=...
) - 报错关键字: BoundOf: 换用较低的MM版本(若你是1.13以下)
- stopatblock/entity为true仍然不会停下: 速度过快可能穿过实体
如果你的 Damage 没有效果:
- 确保技能已被激活
- 尝试其它目标选择器
- 排除伤害硬直(
preventimmunite=true
)
若伤害数值为1: - 检查amount的值(若为公式则检测其是否正确)