Minecraft(我的世界)中文论坛

标题: 完全自定义世界生成

作者: (=°ω°)丿    时间: 2020-1-18 13:50
标题: 完全自定义世界生成
本帖最后由 隐退 于 2020-1-18 14:20 编辑

大致目标:编写一个数据包来完全自定义世界生成。
步骤:(以下讨论中将所有 X 轴和 Z 轴坐标相同的区块视为同一区块)

问题:
自己的方案:
生成函数:
标记:
使用方块代替药水云,但是 不知道如何检测比较方便

希望可以得到更好的解决方案。


作者: Chelover_C60    时间: 2020-1-18 13:50
1、生成函数的生成步骤
旅行风筝的建筑生成思路(部分参考自ruhuasiyu的更多合成)是:
当检测到没有标记时,做标记并激活一个战利品表(只有一个随机池,且拥有指定的启动概率)并spreadplayers,这样检测生成的是什么物品即可,如果没有物品就不生成。

然后针对地形生成,可以一次性先生成一个大概,然后再通过随机marker稍作修饰,这样应该会比一层一层fill少用一些命令。

2、使用何种标记对资源占用最少
基岩就是最好的标记,检测y=0处是否有基岩即可(如果你决定在y=0处生成基岩)


感觉这种东西可以发到别的技术性讨论的板块
作者: ⊙u⊙    时间: 2020-1-18 18:13
本帖最后由 ⊙u⊙ 于 2020-1-18 00:52 编辑

[ruby=直觉告诉我不ok]我看了一下更多合成的数据包,区块生成标记那里写得不太行。[/ruby]
写之前说一下,方便和更好(特指性能)几乎是相反的两面。

首先,检测区块是否已执行过生成函数。通过检测marker判断。
检测区块y=0里一个角落(或中心)是否存在此marker。

marker可以是方块/实体
方块的话可用如barrier/void_air/cave_air等方块,生成完毕后以后还需要存储/读取数据的可改用jukebox。
  *方块的话,该方块上方记得setblock一个基岩
实体的话可用AEC这种超轻量级别的marker。
使用哪种marker就得根据你生成什么来衡量了。我个人是偏向jukebox。

marker的定位
如前面所说,检测区块里固定的一个位置。在此固定点放置marker
计算方面,获取玩家xz坐标,除以16,获取除16的可执行次数,获取余数。之后就可以通过positioned找到这个区块中的固定点。

定位之后就是执行自定义生成,这方面不太懂就不说了。
生成的步骤也和你要生成什么有关,也不说了...
作者: mc3124076548    时间: 2020-1-19 13:47
本帖最后由 mc3124076548 于 2020-1-19 23:48 编辑

那你是真的牛啤(管理员)