创建一个多人Minecraft服务器并允许我的Mod用于Minecraft Forge

时间:2016-02-29 09:14:24

标签: server minecraft minecraft-forge

我创建了一个Mod,我创建了自定义块和命令,现在我准备好了。通过安装我的Mod,我能够在Minecraft的单人游戏中使用它。但我想要做的是创建一个多人Minecraft服务器,这将允许许多玩家使用我的Mod。有没有人知道如何做到这一点?我想我遇到了这个麻烦,因为我不理解Forge中服务器端和客户端之间的区别,我不知道我的Mod是客户端还是服务器端。我希望有人可以帮助解决这个问题:) 最好, 萨拉。

1 个答案:

答案 0 :(得分:1)

一个mod在两个地方运行:

服务器上执行实际地图修改,广告资源更新等操作... 这一切都在服务器上得到保存,处理和更新。

客户端上,所有渲染都会发生。这是小怪移动的地方,阻挡他们的图像/纹理,播放声音等等。

现在服务器和客户端之间存在一些重叠,因为客户端试图“预测”服务器上会发生什么(删除块,阻止替换)等等...但是客户端预测会发生的chanes会被覆盖服务器将块更新推送到客户端。

服务器始终处于领先地位。客户总是遵循。从来没有反过来。 如果在服务器上没有发生这种情况,那么其他玩家就不会发生这种情况。

这就是为什么你做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下运行选项旁边是一个箭头,如果单击它,您可以选择运行服务器实例。 运行它,设置它(接受eula.txt),然后启动客户端实例并连接到服务器以测试yoru mod。 事情可能比这复杂得多,但这应该为您提供一个区分服务器和客户端的小基础。