提问者:小点点

创建多人Minecraft服务器并允许我的Mod在Minecraft Forge中使用


我做了一个Mod,在那里我创建了我的自定义块和命令,现在我已经准备好了。通过安装我的Mod,我可以在《我的世界》的单人游戏中使用它。但我想做的是创建一个多人游戏《我的世界》服务器,允许许多玩家使用我的Mod。有人知道怎么做吗?我想我遇到这个问题是因为我不理解Forge中服务器端和客户端之间的区别,也不知道我的Mod是客户端还是服务器端。我希望有人能帮我解决这个问题:)最好,萨拉。


共1个答案

匿名用户

一个mod在两个地方运行:

在服务器上,它进行实际的地图修改、库存更新等...所有这些都在服务器上保存、处理和更新。

在客户端上,所有渲染都发生了。这是暴民移动、块获取图像/纹理、播放声音等的地方。

现在服务器和客户端之间有一些重叠,因为客户端试图“预测”服务器上将会发生什么(数据块被移除、数据块被替换)等等...但是,当服务器向客户机推送块更新时,客户机预测将发生的变化将被覆盖。

服务器总是领先的。客户总是跟随。从来没有反过来。如果它没有发生在服务器上,它根本没有发生在其他玩家身上。

这就是为什么您要进行像if(! world.isRemote())这样的检查来测试您是否真的在服务器上。

尝试在服务器上保留全局修改代码。它会将更新自动推送到客户端。做你的块替换,块挖掘,块设置为空气都在一个

if(!world.isRemote()) {
    world.setBlockToAir(new BlocPos(1,1,1));
    // whatever world modifying code there is.
}

如果您需要执行客户端渲染操作,请在客户端完成所有操作。为此使用客户端代理,并在普通代理中为其提供空方法,这些方法也在服务器上执行。

阅读www.minecraftforge.net/wiki/Proxies

myMod.proxy.spawnSparklyThingies(new BlockPos(3,3,3));

做你只想在客户端上呈现的事情。

当你在一个单人游戏世界里,服务器和客户端是合并的。然而你应该编码你的mod,就好像它们没有合并一样,这样它们也可以在服务器上使用。

在eclipse中,run选项旁边有一个箭头,如果单击它,您可以选择运行服务器实例。运行它,设置它(接受eula. txt),然后启动客户端实例并连接到服务器以测试yoru mod。事情可能会变得比这复杂得多,但这应该会为您区分服务器和客户端提供一个小基础。