如果我没理解错的话,是想实现如下效果:
客户端 mod: A, B, C
服务器1 mod: A
服务器2 mod: B, C
通过跨服来实现不同子服务器体验不同的mod。
研究了一下好像不行(也可能是我没找对其他方法)
首先mohist的确有server_modlist_whitelist这一项,我估计大家都是配对的(的确是一个str list)但楼主截图报错发生的不是在服务端 而是在客户端,从日志看,client先问服务端要了一次服务端的mod list (在选服务器界面就发生了,点刷新能看到对应的日志)
日志上可以看到,“ Received FML ping data from server at localhost:25565: FMLNETVER=3, mod list is compatible : false, channel list is compatible: false, extra server mods: {mohist=1.20.1}” 服务端发起过来,这边验证mod list 和 channel list兼容性都是false,原因是 Client has mods that are missing on server: [create, ponder](我这边服务端是无mod, 客户端是含一个机械动力mod),这边的校验过不去,是客户端这边直接拒了,所以还没到mohist那边server_modlist_whitelist那个校验部分。上面这段判断在forge的net.minecraftforge.client.ForgeHooksClient中
看上去直接就是拿服务端发过来的包和当前客户端对一下,如果有对不上的那个modsMatch就是False,这边也没额外能设置或者其他什么的,所以感觉不太行。如果这步校验过去了,点击服务器进行登录,服务端那边再会校验一次客户端的mod列表那个server_modlist_whitelist才开始作用,所以大家才会设置了但并不奏效。