0
语境

我正在编写一个需要替换世界上的块的结构模型。

代码

目前我正在使用World#setBlockState(pos, state)

BlockPos pos = new BlockPos(x, y, z);
BlockState state = Blocks.STONE.getDefaultState();
world.setBlockState(pos, state);
问题

这似乎可行,但是如果我右键单击替换的块,它们会变回原来的块

我也试过这个Block.replace(world.getBlockState(pos), state, world, pos),但这重现了。

目前,该 mod 只应该在客户端使用minecraft-1.17.1.

问题

这是因为客户端无法以这种方式修改世界吗?

如果没有,可能是什么问题,我该如何解决?

4

1 回答 1

0

正如你提到的,它在客户端。所以,你可以改变一切,它只会是视觉的。

它在右键单击时替换了块,因为服务器发送了世界上存在的真实块(而不是视觉块)。

如果你想做这样的事情,那可能会很困难。所有在服务器上手动放置块的客户端都是作弊的,因为他们正在制作基本的 Minecraft 中不允许的东西。

但是,也许有可能:

  1. 使用event更改将要放置的块,而不是放置默认的然后更改它,您可以直接在服务器上更改它。

  2. 运行命令以更改块,例如/setblockwiki

于 2021-09-04T12:30:43.437 回答