叶洛莉兰
想生成一种范围是25x100x25的树,结果在生成世界时出现这种错误:
mod loaded a new chunk [6, -15] in dimension 4711 (relger) while populating chunk [7, -16], causing cascading worldgen lag.
Please report this to the mod's issue tracker. This log can be disabled in the Forge config.

查了一些资料之后,好像这个错误是由于树过大,超出了一个区块导致的
请问一下有什么解决的办法吗?
暮色mod里面也有很多超出一个区块的树,但是在运行暮色mod的时候就没有出现这个错误

3TUSK
本帖最后由 3TUSK 于 2020-6-20 15:13 编辑
超出了一个区块导致的

准确地说,你的树的范围覆盖到了还没生成的区块里。

解决方案是让你的生成点往已经生成的区块靠近。原版矿物生成我记得是对 x 和 z 各加 8。你这个…… 直接加个 24 吧。

叶洛莉兰
3TUSK 发表于 2020-6-19 15:01
准确地说,你的树地范围覆盖到了还没生成的区块里。

解决方案是让你的生成点往已经生成的区块靠近。原版 ...

xz增加24之后世界生成确实快了不少,非常感谢!可是报错信息依然有,有没有什么办法让它不报错呢?
我去查看了暮色的源码,暮色的苍穹树似乎也是偏移xz增加8,但没有报这个错误,请问这是为什么呢?

3TUSK
叶洛莉兰 发表于 2020-6-20 11:59
xz增加24之后世界生成确实快了不少,非常感谢!可是报错信息依然有,有没有什么办法让它不报错呢?
我去 ...

报错可以屏蔽,如果你仔细看这个报错的话,它的确提到了「可以在 Forge 的配置文件里关闭提示」。
但屏蔽报错只是治标不治本的方法。这个问题具体可以有多严重,以及之前我提到的解决方案的原理可以参考 https://www.mcbbs.net/thread-798107-1-1.html(原帖 https://old.reddit.com/r/feedthebeast/comments/5x0twz)。


我去翻了一下暮色是怎么写的。很抱歉我也没搞明白它是怎么做到的。

czh2005
简直是太有用了,谢谢作者。

南柯郡守
我没有研究过地形生成

所有想问下 比如说 生成树木部分给他仍在异步里面
有没有实现的可能?

叶洛莉兰
3TUSK 发表于 2020-6-20 15:21
报错可以屏蔽,如果你仔细看这个报错的话,它的确提到了「可以在 Forge 的配置文件里关闭提示」。
但屏蔽 ...

非常感谢。那个帖子我也去看了。我再好好看一看暮色以及其他的mod的源码吧

叶洛莉兰
南柯郡守 发表于 2020-6-20 19:21
我没有研究过地形生成

所有想问下 比如说 生成树木部分给他仍在异步里面

emmmm我有考虑过这种方式 我的这边这种树木的生成量较少 可以弄一个额外的数组储存溢出的部分 等相应区块加载的时候再去生成 或者也可以用类似原版里跨区块结构的生成方法(这个我还没有仔细看过)
这两种方法我都还没有尝试过

南柯郡守
叶洛莉兰 发表于 2020-6-20 19:48
emmmm我有考虑过这种方式 我的这边这种树木的生成量较少 可以弄一个额外的数组储存溢出的部分 等相应区块 ...

我觉得直接点就是把现在生成树木这一句代码直接放进一个匿名内部类
比如原本

生成树木

改成

异步{
生成树木
}

871980112
可以可以可以

871980112
我也试试去

叶洛莉兰
本帖最后由 叶洛莉兰 于 2020-6-21 00:13 编辑
南柯郡守 发表于 2020-6-20 20:07
我觉得直接点就是把现在生成树木这一句代码直接放进一个匿名内部类
比如原本

大概是可行的,只是我Java异步这一块没有掌握好不太会,惭愧orz
我又进行了一些偏移值的调整,解决了这个问题。若需要请见我本贴的另一个回复。

叶洛莉兰
本帖最后由 叶洛莉兰 于 2020-6-21 01:00 编辑
3TUSK 发表于 2020-6-20 15:21
报错可以屏蔽,如果你仔细看这个报错的话,它的确提到了「可以在 Forge 的配置文件里关闭提示」。
但屏蔽 ...

我又翻看了一遍暮色的代码,发现他在生成树的函数里用了这个方法:world.isAreaLoaded()来检测那个区块是否加载,若没有加载则跳过那一部分的生成。

以下这一段是我之前编辑的,在我重新测试后发现并不准确orz{
并且我又调整了xz的偏移值进行多次测试,发现一件神奇的事情:在这个树生成于区块(x,z)的时候,若它延伸到了(x+1,z)、(x,z+1)、(x-1,z)、(x,z-1)、(x-1,z-1)这几个区块,都不会报错;然而(x+1,z+1)这个区块就会报错了,偏移值过大过小都不行。
现在我的树是29,y,29的大小,我给它偏移值rand.nextInt(14)-2之后就没有报错的情况出现了。
}


南柯郡守
叶洛莉兰 发表于 2020-6-21 00:12
我又翻看了一遍暮色的代码,发现他在生成树的函数里用了这个方法:world.isAreaLoaded()来检测那个区块是 ...

所以是把树缩小了是吧

叶洛莉兰
南柯郡守 发表于 2020-6-21 00:18
所以是把树缩小了是吧

暮色mod中的方法是把一棵树分成多个部分来生成 也算是一种把树缩小了吧

叶洛莉兰
并且非常迷惑的是,加了rand(14)-2的偏移之后,进入世界后最初生成的区块都没有报错的问题,反而是一些比较偏远的区块在报错,而那些区块中有时甚至没有这种树的生成。
mc特性??

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