天辉胡萝卜
renzd2001 发表于 2020-5-31 14:18
我刚刚在判断Biome的语句后添加了这段代码:

强行将此位置的Biome设置成我用 getBukkitBiome()方法获取的B ...

MC在地形生成的时候群系代码为
  1. biome.getBiome(x >> 2, y >> 2, z >> 2)
复制代码


也就是这个坐标是缩小4倍的,你需要按比例扩大

renzd2001
疾风暗影 发表于 2020-6-1 00:38
MC在地形生成的时候群系代码为



谢谢!这样问题应该就可以解决啦!

renzd2001
疾风暗影 发表于 2020-6-1 00:38
MC在地形生成的时候群系代码为

你好大佬,抱歉再次打扰,我刚才试了一下你说的 通过>>2运算把 x和z坐标缩小到原来的四分之一,生物群系的大小确实正确了。
但是出现了现在这个情况:


可以很明显看到,河流宽度正常了,而且河流和沙漠的分界也是正常平滑的。
但是图中显示,我正处在河流群系中,而地面特征却是沙漠应有的特征...
并且可以看出,地面特征是以4x4方块为基本单位的,而不是应有的1x1
然而,我的代码中,生物群系的生成和地面特征的设置是完全基于同一个生物群系:
  1. Biome b = provider.getBukkitBiome(((chunkX*16+X) >> 2), ((chunkZ*16+Z) >> 2));
  2.                     int baseHeight = 83;
  3.                     int extraHeight = 3;
  4.                         Material surfaceBlock = Material.GRASS_BLOCK;
  5.                         Material subSurfaceBLock = Material.DIRT;
  6. biome.setBiome(X, Z, b);
  7. if (b.equals(Biome.DESERT)) {baseHeight = 83; extraHeight = 3; surfaceBlock = Material.SAND; subSurfaceBLock = Material.SAND;}
复制代码
以上可以看到,我用了同一个参数: b 来进行 设置biome 和 设置地面特征 这两个操作,结果biome是正确的,地面特征确实错的????
(p.s.我用1.14.4版本重新试了一下,是不会出这种错的,会不会是1.15.2的问题。。?)
谢谢!

天辉胡萝卜
renzd2001 发表于 2020-6-1 12:05
你好大佬,抱歉再次打扰,我刚才试了一下你说的 通过>>2运算把 x和z坐标缩小到原来的四分之一,生物群系 ...

疑似是客户端区块表与服务端不一致,重启客户端试试

renzd2001
疾风暗影 发表于 2020-6-2 00:46
疑似是客户端区块表与服务端不一致,重启客户端试试

大佬晚上好,我把服务器版本换成1.14.4后就解决啦!
不过还是谢谢大佬的建议(我在1.15.2版本也试过重启客户端,但是问题依然存在。感觉是spigot的问题,或者是什么其他小问题)

现在已经可以生成比较平滑且还能看的地形了(平滑算法我找不到比较好的,所以使用的是收集附近方块高度并求平均值的笨方法)

现在的情况:


真的是非常感谢!!!!

第一页 上一页 下一页 最后一页