This commit is contained in:
boybook
2025-12-01 20:59:16 +08:00
parent 12738a142c
commit 760c2dd9ad
5535 changed files with 21070 additions and 2021 deletions

View File

@@ -0,0 +1,89 @@
# 更加自然的地表结构
>本篇教程获得第一期知识库必看教程奖。
>
>获奖作者凌峰轨迹lf。
该教程需要开发者了解结构生成规则的json结构 。
不知道各位开发者在生成地表结构时有没有遇到过以下问题:
1. 结构会刷在水面上。
2. 对于一些凹凸不平的地形,结构部分浮空,显得不自然。
![img](./images/0_0.png)
![img](./images/0_1.png)
## 对于问题一
解决方法很简单由于MC的水平面高度是固定的因此将地表结构避免生成于该高度下即可。
可以如下图所示写法在结构的生成规则中的y加入判断 。对于会ModSDK的开发者建议直接通过监听当结构低于某高度时取消放置
![image-20230207095731485](./images/0_2.png)
## 对于问题二
有两种解决办法,适用于不同情况下的大小结构。
对于较小的结构来说可以通过以下方法让结构生成在平地上避免出现因地形凹凸而浮空显得不自然的情况其中v.structure_x_length写结构的x方向长度z同理 。复杂式已规避结构生成在水平面下v.min_y = v.min_y - 0 中的0为结构下嵌高度适用于一些带地下室或者地板的结构不要忘了放好结构空位
![img](./images/0_3.png)
![img](./images/0_4.png)
![img](./images/0_5.png)
molang复杂式已去换行可直接复制黏贴运用至y中注意根据自己的结构大小设置参数
`v.structure_x_length = 6;v.structure_z_length = 5;v.check_pos_x = v.worldx;v.check_pos_z = v.worldz;v.min_y = query.heightmap(v.check_pos_x, v.check_pos_z);loop(v.structure_x_length , {loop(v.structure_z_length ,{v.min_y != query.heightmap(v.check_pos_x, v.check_pos_z) ? {v.min_y = -999;break;};v.check_pos_z = v.check_pos_z + 1;});(v.min_y == -999) ? break;v.check_pos_x = v.check_pos_x + 1;v.check_pos_z = v.worldz;});(query.heightmap(v.worldx, v.worldz) <= 64 || v.min_y == -999) ? {v.min_y = -999;} : {v.min_y = v.min_y - 0;};return v.min_y; `
加入这样的判断会导致结构生成的概率降低(因为一些不符合要求的结构没有正常生成),所以可以适当调整一下生成的概率。
不过使用该方法时需要注意: 不太适应较大的结构(结构越大,对应其长宽的平地越少),且有时会在一些地形平坦的地方发现结构扎堆,当然你也可以降低该结构在一些地形平坦的群系(平原,沙漠)的生成概率。
![img](./images/0_6.png)
![img](./images/0_7.png)
既然以上这种方法对于大型结构不适应,那还有一种方法,见下图:
![img](./images/0_8.png)
![img](./images/0_9.png)
molang复杂式已去换行可直接复制黏贴运用至y中注意根据自己的结构大小设置参数
`v.structure_x_length = 6;v.structure_z_length = 5;v.struc_min_height_drop = 3;v.struc_pos_x = v.worldx;v.struc_pos_z = v.worldz;v.struc_height_drop = 0;v.max_struc_y = query.heightmap(v.struc_pos_x, v.struc_pos_z);v.min_struc_y = query.heightmap(v.struc_pos_x, v.struc_pos_z);loop(v.structure_x_length , {loop(v.structure_z_length , {v.max_struc_y = math.max(v.max_struc_y,query.heightmap(v.struc_pos_x, v.struc_pos_z));v.min_struc_y = math.min(v.min_struc_y,query.heightmap(v.struc_pos_x, v.struc_pos_z));v.struc_pos_z = v.struc_pos_z + 1;});v.struc_pos_x = v.struc_pos_x + 1;v.struc_pos_z = v.worldz;});v.struc_height_drop = v.max_struc_y - v.min_struc_y;v.struc_height_drop <= v.struc_min_height_drop ? {v.struc_height_drop = 1;} : {v.struc_height_drop = 0;};(v.min_struc_y * v.struc_height_drop) <= 64 ? {v.min_struc_y = -999;} : {v.min_struc_y = v.min_struc_y - 0;};return v.min_struc_y;`
ps该复杂式若有用起来问题请在评论区反馈我还没有实践理论上可行绝对不是因为我建筑烂做不出大结构瑟瑟发抖.jpg
这种方法通过判断结构生成范围内的最大高度差来决定是否生成若最大高度差低于设定值即地形起伏不大就可以生成可以通过修改复杂式中的v.struc_min_height_drop来控制结构生成范围内的最大能容忍的高度差即v.struc_min_height_drop越大结构可生成在的地形起伏上限越大。
并且为了结构不悬浮,该复杂式将其生成位置设立为其范围内的最低高度,这样结构的生成就不会浮空,显得自然一些了。
不过请注意,由于复杂式是将结构范围内的高度都遍历一遍,所以还是不建议用此方法高机率地生成过宽大的结构 。
![img](./images/0_10.png)
ps不知道有没有开发者用国际版的写法在中国版正常生成结构我一开始学习结构生成时尝试用过但似乎有点问题。
模组开发新手,刚学习编程,有什么地方有问题的可以在评论区指出改进。
不知道各位精通SDK的开发者对于结构生成有没有更好的优化方案期待.jpg

View File

@@ -0,0 +1,12 @@
# MC地形生成与柏林噪声原理
> 本篇教程获得第一期知识库必看教程奖。
>
> 获奖作者:南山陶然客。
很多开发者都听说过柏林噪声因为众所周知MC的地形生成算法里就用到了柏林噪声算法但是很多人都是知其然而不知其所以然我做了一期视频详细地给出了推导过程虽然可能对实际的开发用处不大但是绝对能帮你回忆尘封多年的数学知识当然如果你是中学生的话那更简单了视频里用到的数学大都是课堂上的知识绝对不会陌生。
视频已在B站分享可搜索 **Minecraft地形生成与柏林噪声 (一) 详解噪声** 进行观看。
感兴趣的可以看看(多多评论哦)。

View File

@@ -0,0 +1,140 @@
# 使用chunker进行存档转换格式
>本篇教程获得第二期知识库必看教程奖。
>
>获奖作者:从不咕咕的鸽纸。
## 前言
很久以前我曾经写过一篇转换地图存档格式的教程[使用MCC Toolcheast转换地图存档](https://www.mcbbs.net/thread-1070066-1-1.html)但教程中涉及的软件已停止维护官网也失效了况且原来的软件也不是非常好用。最近我发现了一个网站可以在线转换地图存档并且功能十分齐全在此分享给大家。这个网站不仅可以进行Java版地图转基岩版、基岩版地图转Java版也可以进行升降地图版本的操作比如把Java版1.16地图降到Java版1.12对于一些服主来说也是非常实用。接下来我将介绍这个网站具体如何使用。为了方便打字下面我将把Java版称作 **JE** ,基岩版称作 **BE** ;上传的地图版本称为 **源版本** ,想要转换到的地图版本称为 **目标版本**
## 如何使用
首先是网站链接:[https://chunker.app/](https://chunker.app/)。
**关于网站:**
这个网站是我的世界基岩版官方精选服务器**The Hive**https://hivegames.io/推出的在线地图转换服务。考虑到Hive服务器和Mojang的合作关系这个网站也算是有Mojang官方背书了值得信任。对于Hive服务器本身不再做更多介绍这不是本教程的主要内容。
接下来我开始介绍如何使用这个网站进行地图转换:
1. **访问网站**
在浏览器(推荐使用谷歌浏览器或以谷歌为内核的浏览器访问,目前不需要科学手段访问,可直连,但访问速度较慢)
地址栏输入[https://chunker.app/](https://chunker.app/),跳转到此页面:
![img](./images/2_0.png)
为了方便大家对应网站内容,我将使用原英文页面进行讲解。看不懂英文的建议上完九年义务教育或者开个翻译器去。
2. **上传需要转换的地图存档**
网站提供了两种上传方式,一种是 **Choose world folder** 即选择世界文件夹这里是指从你的Minecraft游戏中选择一个世界。
基岩版的世界存档路径是"安装我的世界基岩版的系统盘`如C:\Users\你的计算机用户名\appData\Local\Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang`
`\minecraftWorlds"`Java版的地图存档路径是`启动器路径\.minecraft\saves`
另一种是 **Upload archive** ,即上传存档,你可以直接上传外部下载的地图存档或者自己打包好的地图存档。
支持zip格式JE地图格式和mcworld格式BE地图格式。两种上传方式在上传完之后的操作没有差别这里以第一种上传方式为例
![img](./images/2_1.png)
以基岩版为例找到自己想要转换的地图文件夹只选中不用进入下级文件夹由于文件夹中显示的地图名字。是随机字符你还需要提前确认哪个是你要上传的地图。打开地图文件夹找到“levelname.txt”打开就能看到该文件夹对应的地图的原名了。
![img](./images/2_2.png)
![img](./images/2_3.png)
![img](./images/2_4.png)
选择好地图后,点击 **upload** 上传。
![img](./images/2_5.png)
浏览器可能会提示问你是否上传,确定即可,然后等待上传完成。
![img](./images/2_6.png)
提示“**Ready To Upload准备好上传**”即为成功上传到网站,然后点击 **START UPLOAD开始上传** 进入下一步。
等待上传结束后,会自动进入这个页面:
![img](./images/2_7.png)
标有粉色 **SOURCE VERSION** 图标的意为 **源版本** ,也就是你刚刚上传的这个地图的版本,是由网站自动识别的。通常来说识别的非常精准。如果标有黄色 **BETA** 图标的意为 **测试版** ,这代表该版本处于测试中,可能无法完美转换地图。然后选中你想转换到的目标版本(**注意目前无论是JE还是BE1.18.0以上版本的地图都不能完美地转换到JE1.12.2及以下版本虽然网站提供了选项但实际转换到JE1.12.2及以下版本的时候会出现丢失区块的问题)**
![img](./images/2_8.png)
这里以转换到JE1.16.5为例,选中目标版本后,右下方有 **ADVANCED MODE高级模式****CONVERT & DOWNLOAD转换下载** 两个选项。后者是不做任何修改直接把地图转换并下载,但我个人推荐还是先打开高级模式查看源地图是否有问题以及进行一些需要的修改。
![img](./images/2_9.png)
进入高级模式首先会展示地图的2D平面图也就是右侧的 **WORLD PREVIEW** ,地图预览),这有点像卫星地图一样。此时如果你想要更改你的目标版本,还可以点击右下角的 **SWITCH MODE切换版本** 重新选择目标版本;如果通过平面图检查地图无误后且不需要做任何修改了,可以点击右下角的“**CONVERT转换**”直接进入地图转换流程。如果想要进一步操作,右侧列表中还有许多设置项。
**WORLD SETTINGS世界设置**
![img](./images/2_10.png)
这里提供了一些世界基本设置,如 **Difficulty** 游戏难度, **Gamemode** 游戏模式(从左到右依次为生存,冒险,创造,观察者),上方还有**GAMERULES** 游戏规则如禁止TNT爆炸、禁止生物破坏等等。都是一眼就能看明白的设置项看不懂英文的可以使用翻译器辅助。
**Dimensions/Pruning维度/修剪)**
![img](./images/2_11.png)
**Output Dimension** 是输出维度,在这里你可以选择转换后的地图保留哪些维度,从左到右依次为没有任何维度、 全部维度、仅下界、仅末路之地。
**Prune chunks outside of a region** 是修剪区域外的区块。开启后你可以指定X Z轴坐标在此范围内的区块会保留范围外的区块将会被删去 **(谨慎使用!)** 。
**BLOCK MappING (方块转换)**
![img](./images/2_12.png)
如果你是从高版本转换为低版本,一些高版本方块可能无法在低版本地图中正常使用。在这里,你可以选择将某一方块转换为另一种方块代替。左侧 **Input Block** 是输入方块,右侧 **Output Block** 是输出方块。举例,在左侧选择 **minecraft:bedrock基岩方块** ,在右侧选择 **minecraft:air空气方块** ,那么该地图转换后地图内所有基岩方块都会被替换为空气方块。
![img](./images/2_13.png)
**CONVERTER SETTINGS转换器设置**
![img](./images/2_14.png)
这里是对转换工具本身的一些设置,如是否转换物品等。没有特殊需要的话不要动这里的设置项。
好了,现在你已经完成所有转换前准备了,你可以正式开始转换地图了!
在确认无误后,点击右下角 **CONVERT转换** ,然后等待排队(非使用高峰期的话基本上不需要排队)。
![img](./images/2_15.png)
![img](./images/2_16.png)
出现 **Ready To Download** 就成功了!接下来点击右下角 **DOWNLOAD下载** 将转换好的地图下载下来即可!
至此地图转换流程就全部结束了,想要再转换别的地图的话点击 **RESTART** 重启转换工具即可。

View File

@@ -0,0 +1,148 @@
# 3D模型转化为有色建筑
>本篇教程获得第二期知识库必看教程奖。
>
>获奖作者yourzard。
**默认以下:**
- 你懂得如何使用blender、sketchUp2021、Magicavoxel等3D建模软件。
- 你懂得如何使用java版我的世界WorldEdit插件。
- 你懂得如何将地图转换版本。
好的,教程开始。
**总流程:**
1. 模型格式转化。
2. 模型上色。
3. 转化格式。
4. 生成建筑。
5. 存档格式转换。
使用常用建模软件比如maya、c4d、3dmax、blender等打开后缀为obj/stl/fbx/gltf/dae等通用格式的模型文件。
![img](./images/3_0.png)
![img](./images/3_1.png)
将其转换为stl格式的无贴图纹理的白模。随后打开此网站[https://drububu.com/miscellaneous/voxelizer/index.html?out=stl](https://drububu.com/miscellaneous/voxelizer/index.html?out=stl)。
![img](./images/3_2.png)
打开文件这里选择刚刚转化好的stl文件。
![img](./images/3_3.png)
根据你需要的大小调整。
![img](./images/3_4.png)
导出为vox后缀的文件之后使用magicavoxel打开。 **记住在MV中需要合并整个模型为一个方框框住的才能正确导出**
**错误示范:**
![img](./images/3_5.png)
**正确示范:**
![img](./images/3_6.png)
接下来需要对模型进行上色,但你要注意,并不是任何颜色都能被正确识别的。
只能正确识别最多16种颜色这里我使用混凝土块的颜色色板你可以保存这个色板后导入MV中的color中。
![img](./images/3_7.png)
**色板:**
如果模型是左右对称的,你也可以使用镜像上色来同时完成左右两边的上色。
这里我们跳过上色步骤默认你会使用MV的笔刷等功能
我们来看看上色成果。
![img](./images/3_8.png)
保存这个vox模型最好有备份。
接着,继续在刚刚那个网站打开这个模型。
![img](./images/3_9.png)
导出为.schematic文件。
之后将xxx.schematic文件导入到路径中
AppData\Roaming\.minecraft\config\worldedit\schematics
![img](./images/3_10.png)
接下来使用小木斧,标记两个点或一个点。
![img](./images/3_11.png)
使用命令//schematic load fanhaokemake44这里的名字是你定义的
![img](./images/3_12.png)
![img](./images/3_13.png)
输入//paste文件较大就等待生成。
![img](./images/3_14.png)
接下来我们就可以看到模型成功生成了这区别于其他没有颜色的模型这是支持16种颜色的。
![img](./images/3_15.png)
注意在MV软件中的旋转方向会影响最终生成的旋转方向若出现了不同于16种混凝土颜色的色彩会被错误识别成其他方块。
在将vox导出为schematic文件那一步需要调整生成方块的类型全部为混凝土且没有勾选其他方块。
![img](./images/3_16.png)
接下来就是常规的转换存档格式了将JAVA转为基岩版网上有教程。
但要注意的是,这种方法生成的模型,全部都是空心的,并不能以此生成大规模的地形。
此方法的应用场景是服务器的大型雕塑,以及各种复杂模型的建造 **此类模型在mc中无法直接建造需要用建模软件** 。