renzd2001 发表于 2020-5-31 14:18
我刚刚在判断Biome的语句后添加了这段代码:
强行将此位置的Biome设置成我用 getBukkitBiome()方法获取的B ...
MC在地形生成的时候群系代码为
- biome.getBiome(x >> 2, y >> 2, z >> 2)
也就是这个坐标是缩小4倍的,你需要按比例扩大
疾风暗影 发表于 2020-6-1 00:38
MC在地形生成的时候群系代码为
谢谢!这样问题应该就可以解决啦!
疾风暗影 发表于 2020-6-1 00:38
MC在地形生成的时候群系代码为
你好大佬,抱歉再次打扰,我刚才试了一下你说的 通过>>2运算把 x和z坐标缩小到原来的四分之一,生物群系的大小确实正确了。
但是出现了现在这个情况:

可以很明显看到,河流宽度正常了,而且河流和沙漠的分界也是正常平滑的。
但是图中显示,我正处在河流群系中,而地面特征却是沙漠应有的特征...
并且可以看出,地面特征是以4x4方块为基本单位的,而不是应有的1x1
然而,我的代码中,生物群系的生成和地面特征的设置是完全基于同一个生物群系:
- Biome b = provider.getBukkitBiome(((chunkX*16+X) >> 2), ((chunkZ*16+Z) >> 2));
- int baseHeight = 83;
- int extraHeight = 3;
- Material surfaceBlock = Material.GRASS_BLOCK;
- Material subSurfaceBLock = Material.DIRT;
- biome.setBiome(X, Z, b);
- if (b.equals(Biome.DESERT)) {baseHeight = 83; extraHeight = 3; surfaceBlock = Material.SAND; subSurfaceBLock = Material.SAND;}
(p.s.我用1.14.4版本重新试了一下,是不会出这种错的,会不会是1.15.2的问题。。?)
谢谢!
renzd2001 发表于 2020-6-1 12:05
你好大佬,抱歉再次打扰,我刚才试了一下你说的 通过>>2运算把 x和z坐标缩小到原来的四分之一,生物群系 ...
疑似是客户端区块表与服务端不一致,重启客户端试试
疾风暗影 发表于 2020-6-2 00:46
疑似是客户端区块表与服务端不一致,重启客户端试试
大佬晚上好,我把服务器版本换成1.14.4后就解决啦!
不过还是谢谢大佬的建议(我在1.15.2版本也试过重启客户端,但是问题依然存在。感觉是spigot的问题,或者是什么其他小问题)
现在已经可以生成比较平滑且还能看的地形了(平滑算法我找不到比较好的,所以使用的是收集附近方块高度并求平均值的笨方法)
现在的情况:

真的是非常感谢!!!!