同步官网文档8m_25d

This commit is contained in:
kwiilh
2025-08-25 18:36:29 +08:00
parent 4dc0ecf18d
commit 9e8855eeb4
5089 changed files with 8798 additions and 4799 deletions

View File

@@ -0,0 +1,67 @@
# 手把手教你如何制作发光的生物
>本篇教程获得第一期知识库必看教程奖。
>
>获奖作者:大肥免。
相信很多小伙伴刚开始都有过想做发光贴图的想法叭~肥免也一样!
![image-20230207093419422](./images/0_0.png)
由于肥免刚当开发者一年,所以下面有些专业术语呀或者什么表述不当的地方还望谅解呐。
这里肥免将会分享如何制作发光贴图!!
这里以一个自定义实体进行示例。
## 一、准备好一个自定义实体
如何准备一个自定义实体可以去找找官方教程或者拿编辑器点一点也可以喔~
## 二、修改materials
打开rp/entity/xxx.json文件因为比较方便所以直接引用“蜘蛛”的materials如图所示。
![image-20230207093525249](./images/0_1.png)
## 三、制作发光贴图
这里我们使用blockbench软件将纹理直接导入编辑。
![image-20230207093557631](./images/0_2.png)
选择“画板模式-橡皮擦工具”,调整擦除透明度,擦除后,**越透明则发光越亮!**
![image-20230207093628490](./images/0_3.png)
保存贴图!
## 四、将贴图转为tga格式
小伙伴们可能没有ps用格式工厂也可以直接将贴图进行转换为tga格替换原先的贴图
![image-20230207093704526](./images/0_4.png)
原先的贴图可以选择留下来,但是名称记得要修改喔~
![image-20230207093725550](./images/0_5.png)
由于我们rp/entity/xxx.json 已经引用了文件前缀为 lajitong 的贴图,所以就不用改啦~直接进游戏测试!
## **五、完成**
![image-20230207093807598](./images/0_6.png)
**啊~好亮~好可怕的眼睛!**

View File

@@ -0,0 +1,388 @@
# 发光自定义实体
> 本篇教程获得第一期知识库必看教程奖。
>
> 获奖作者:魔灵工作室-创造者MC。
⚠️警告:本教程默认您会自定义实体。
⚠️警告:本教程最好使用电脑。
✅提示:本教程国际版和网易版通用。
✅提示:本教程最后有示例包可供参考。
让我们先看看本教程的最终效果:
<iframe frameborder="0" height="600" width="800" allowfullscreen="allowfullscreen" src="http://cc.163.com/v/core/externplayer/63e36ff129279d2f4acfc025/"/>
本教程Addon层次结构
```yaml
- TMSLightDemoRP
- animations
- entity
- models
- entity在models文件夹内
- render_controllers
- textures
- TMSLightDemoBP
- entities
```
请先按照上面的文件夹层次结构创建好你的Addon。
首先我们打开Blockbench本教程使用4.4.1版本)新建一个基岩版模型。
![img](./images/1_0.png)
我们随便造个模型。
![img](./images/1_1.png)
生成一下贴图。
![img](./images/1_2.png)
现在是这个样子。
![img](./images/1_3.png)
`ctrl+s`,把模型和贴图保存到指定的文件夹里。
![img](./images/1_4.png)
接下来是重头戏我们要让贴图动起来。这里我使用AE做动态贴图大家也可以用其他软件只要最后你得到一张张的逐帧图片就可以。
![img](./images/1_5.png)
注意本教程不教AE如何使用这不是这个教程的重点请自行学习或用你熟悉的工具软件代替。
用你的贴图新建一个合成注意帧速率和持续时间的设置一般1秒就够了。我们选择25帧每秒也就是说最后会得到25张图片。
![img](./images/1_6.png)
给纹理图片加个效果。简单起见,我这里使用“色相/饱和度”效果,做一个动态颜色变化。
![img](./images/1_7.png)
设置一下关键帧。
![img](./images/1_8.png)
现在播放预览一下,效果应该是这样的。
![img](./images/1_9.gif)
接下来进行输出添加到渲染队列一定要注意红框中的设置我们最后得到的是png序列图片。
![img](./images/1_10.png)
选择输出位置。
![img](./images/1_11.png)
最后点击渲染按钮,得到这些图片。
![img](./images/1_12.png)
这时你可能会产生一个疑问,这么多图片,难道我们每一张都要手动处理吗?太麻烦了吧。
别急,继续看。
打开Photoshop。
![img](./images/1_13.png)
打开我们在AE渲染得到的第一张纹理图片。
![img](./images/1_14.png)
接下来是一个批量处理图片的技巧我们利用Photoshop自带的“动作”功能即可批量处理图片非常方便
打开“动作”面板(找不到的可以在软件顶部菜单栏中的“窗口”中找到)点击红框内的按钮,新建一个动作(你也可以点击旁边的文件夹按钮,新建一个组,再在里面新建一个动作),然后会弹出一个对话框。
![img](./images/1_15.png)
点击弹出对话框右边的“记录”按钮后会看到这里的圆点按钮变红并呈现按下去的样子。此时您在ps内的操作都会被自动记录接下来不要有任何多余的操作哦
![img](./images/1_16.png)
然后开始处理图片,让指定区域发光。(这里处理成发光的方法有很多,我这里只写了其中一种方法)。
切换到“通道”面板点击红框内的加号按钮新建一个alpha通道。
![img](./images/1_17.png)
默认alpha通道是全黑的按一下ctrl+i键让alpha通道全白如下图所示。
![img](./images/1_18.png)
然后我想要的效果是只让模型的东西南北四个面发光顶面和底面不发光我们借助Blockbench看一下纹理的哪些部分是东西南北面。
![img](./images/1_19.png)
然后回到ps里选择RGB通道用矩形选框工具选中东西南北四个面得到选区。
![img](./images/1_20.png)
再点击alpha通道向选区内填充黑色黑色区域即为完全发光区域若填充不同程度的灰色还能有不同程度的发光效果
![img](./images/1_21.png)
回到RGB通道按下ctrl+shift+s进行另存为操作注意此时动作仍然在记录选择保存类型为tga。
![img](./images/1_22.png)
点击保存按钮后弹出如下图所示对话框这里一定要选32位/像素并勾选上压缩非常重要如果不选32位/像素图片会不带alpha通道。如果不勾选压缩图片会有足足1MB的大小
![img](./images/1_23.png)
确定后再观察下动作面板,已经记录了存储动作。然后我们就可以点击红框内的按钮,结束记录了。
![img](./images/1_24.png)
再看一下文件夹注意tga图片的大小如果是1MB那很可能你没有勾选压缩
![img](./images/1_25.png)
接下来是体现“动作”功能的时候了我们把其他未处理的图片都拖入ps中注意关掉ps中原来的图片
待所有图片打开完毕后,点击顶部菜单栏上的`文件`->`自动`->`批处理`
![img](./images/1_26.png)
设置好下图红框内的选项动作7是我刚刚录制的动作的名称
![img](./images/1_27.png)
点击确定按钮ps就会为每一张图片执行咱们之前录好的动作执行结束后去文件夹里看一下把原来png格式的图片删除结果如下。可以用ps打开几个看看对不对
![img](./images/1_28.png)
接下来又是重头戏先理一下思路到这里我们完成了addon的创建模型的制作以及模型纹理的初步处理。
现在我们可以看到这些纹理图片的命名明显不合适我们需要批量重命名这些文件。我这里提供了一个自己用Python写的小工具可实现文件的批量重命名。
下载链接:[python自动化](https://creatormc.lanzoul.com/ie1P70ceaawj)。
下载后解压,我们把这个文件复制到这里。
![img](./images/1_29.png)
使用他需要先把我们的纹理文件夹重命名成`tms`
![img](./images/1_30.png)
然后在资源管理器的地址栏上输入cmd并回车在这个位置打开命令提示符窗口。
![img](./images/1_31.png)
随后输入如下图所示的内容并回车
警告此处需要python2.7的运行环境(下同)
输入:
```bash
python 批量重命名.py template_dynamic_light_entity_
```
这里的文件名后面的参数,表明了重命名文件的前缀,就是说重命名的图片文件的名字的前面的部分,程序会挨个遍历`tms`文件夹内的图片并给前缀名字加上从0开始的编号形成新的名字。
![img](./images/1_32.png)
执行完后再次观察文件夹,我们发现名字都变成我们想要的形式了。
![img](./images/1_33.png)
然后我们再从上面下载的压缩包中复制这个文件到此处。这个程序就如文件名的意思一样,帮助我们直接生成动态贴图对应的自定义实体客户端文件。
![img](./images/1_34.png)
相同的方法,执行下图命令。这里最后一个参数的意思是纹理贴图所在的目标文件夹的路径,和前一个程序一样,在最后会加上编号。
输入:
```bash
python 生成客户端实体定义文件.py textures/moling/template_dynamic_light_entity_
```
![img](./images/1_35.png)
执行完后再看文件夹出现了一个新的json文件。
![img](./images/1_36.png)
把这个文件剪切到表层的entity文件夹里。用代码编辑器这里我用的是vscode萝卜青菜各有所爱打开注意下图黄色框内的内容替换成我们自己的模型和identifier。
![img](./images/1_37.png)
注意路径位置,我这里发生了改变,上图黄色框中的图片路径,不是真实的图片路径,我们去移动一下图片(注意下图红框内的路径)。
![img](./images/1_38.png)
这样两边就对应起来了然后我们改一下materials如下图所示。这是一种发光材料。
![img](./images/1_39.png)
现在就差一点了,加油,坚持就是胜利!
我们现在再打开Blockbench然后打开我们的模型给他加个1秒的空动画这里为什么这么做继续往下看会有解释这里先跟着做注意动画是循环的
![img](./images/1_40.png)
注意是1秒。
![img](./images/1_41.png)
然后回到代码编辑器,把我们的动画加上,让他默认一直播放。
![img](./images/1_42.png)
到这里可能有人已经注意到了,我们还缺一个渲染控制器。
接下来,把上面下载的压缩包内的这个文件拿过来。
![img](./images/1_43.png)
然后按照相同的方法执行,这次文件名后面不需要有参数。
![img](./images/1_44.png)
执行完后,渲染控制器也被生成了。
![img](./images/1_45.png)
我们把渲染控制器放进`render_controllers`文件夹内,然后我们打开观察一下,这个渲染控制器里面到底写了什么。
下图就是生成的渲染控制器,我们可以看到红框内的表达式`query.anim_time * 30`这是什么意思呢?
前面的`query.anim_time`是一个`molang`查询他会返回自当前动画开始以来的时间这就是为什么我们前面需要加个1秒的空动画的原因就是想要让这个查询生效。后面的*30就没什么了只是让他变化的速度快一些达到连续切换图片的效果形成“动态”纹理。
![img](./images/1_46.png)
理所当然的,加了渲染控制器,我们肯定也要改变一下客户端实体定义文件。给这个文件的渲染控制器改成我们生成的这个渲染控制器。如下图所示。
![img](./images/1_47.png)
然后简单写个行为,保证这个实体能正常生成即可。
![img](./images/1_48.png)
然后就可以进游戏测试啦!就会出现一开始的视频里的效果!
![img](http://worldtj.photo.store.qq.com/psc?/world/O0cFsaTfOlqjIAnYAvw8WhB*.xzBY2DMPr4siDGSOAxCrAp.DW00iRuC4n*bNWxfFsMD4MEhTzBWoe1kC6gJoHtZ87lv*KXsjTXHwVjRVEo!/b=&bo=XgFeAV4BXgERHyg!&ek=1&tl=1)
🆓本期教程示例:[动态发光自定义实体Demo](https://creatormc.lanzoul.com/iCmjl0ceahaj)。
🆓Python自动化工具[python自动化生成json](https://creatormc.lanzoul.com/ie1P70ceaawj)。

View File

@@ -0,0 +1,60 @@
# 酷炫的生物外壳
> 本篇教程获得第一期知识库必看教程奖。
>
> 获奖作者:橘子气泡水。
**效果图**
![img](./images/2_0.png)
**效果视频**
![img](./images/2_1.png)
![img](./images/2_2.png)
![img](./images/2_3.png)
![img](./images/2_4.png)
![img](./images/2_5.png)
![img](./images/2_6.png)
![img](./images/2_7.png)
![img](./images/2_8.png)
![img](./images/2_9.png)
![img](./images/2_10.png)
![img](./images/2_11.png)
![img](./images/2_12.png)

View File

@@ -0,0 +1,49 @@
# 火把物品材质
> 本篇教程获得第二期知识库优秀教程奖。
>
> 获奖作者Blusk147。
![img](./images/3_0.png)
[zip文件提取码4个0 ](https://pan.baidu.com/s/1mBDZZnkoiuSFslyOZOb62g?pwd=0000)。
## 制作方法
1. 在材质包目录创建名为 **blocks.json** 的文件。
![img](./images/3_1.png)
2. 将下方代码复制到 **blocks.json** 内。
```json
{
"format_version":[
1,
1,
0
],
"torch":{
"textures":"torch_on",
"blockshape":"torch",
"carried_textures":"missing_tile"
}
}
```
![img](./images/3_2.png)
3. 制作一个火把材质贴图,并保存到目录/textures/blocks命名为missing_tile。
![img](./images/3_3.png)
完。

View File

@@ -0,0 +1,87 @@
# 画图3D构造像素画
>本篇教程获得第二期知识库优秀教程奖。
>
>获奖作者鱼摆摆Gokotta。
**今天为大家带来的是一款好用却常常被人忽视的一款软件——画图3D。**
![img](./images/4_0.png)
画图3D是微软发行的图片处理工具在window10/11上预装如果没有可以前往微软商店自行下载。
首先我们打开画图3D**|画面设置|** 。
![img](./images/4_1.png)
在最上面一行我们可以看到画布两个字。点击画布,右边的方框内是:
- 调整分辨率。
- 是否透明。
- 画布调整选项。
将其设置为画材质常用的16×16之后我们点击画笔。
![img](./images/4_2.png)
这是画材质常用的选项:
- 记号笔:带有渐变的绘制工具。
- 橡皮擦:顾名思义。
- 签字笔:纯色绘制工具。
我们点击画面上方的2D图形选项这里可以画基础的图形。首先我们绘制一个蓝色圆。
![img](./images/4_3.png)
然后使用记号笔对它进行明暗处理。
![img](./images/4_4.png)
最后不要忘记,物品一般附带有边框,这样会使图形突出画面,给人一种美感。
![img](./images/4_5.png)
这样一个水球就画好了。
接着来了解 **渐变处理**
首先我们将画面拉到最大,使用你想要渐变的两种或多种颜色。排列在画上,然后点击左上角的选择选项。
![img](./images/4_6.png)
将图形扩起来。
![img](./images/4_7.png)
拉长之后,我们就会得到一条很自然的渐变线了。
![img](./images/4_8.png)
不同的拉伸有不同的效果。
![img](./images/4_9.png)
**第一次做分享不是很熟练,已经尽我可能去把过程描述的详细,新人或者电脑内存不足的,可以尝试使用这个软件。**
**如有冒犯轻喷,仅作分享。**

View File

@@ -0,0 +1,49 @@
# 制作半透明发光体
>本篇教程获得第一期知识库必看教程奖。
>
>获奖作者:魔灵工作室-创造者MC。
⚠️警告:本教程默认您会自定义实体。
✅提示:本教程网易版和国际版通用。
先来看看最终效果。
(左:半透明发光,右:半透明不发光)
![img](./images/5_0.png)
下图是我一个组件里的。
![img](./images/5_1.png)
## 教程开始
首先我们把实体纹理图片处理成半透明png格式即可。
![img](./images/5_2.png)
然后在此路径下创建这个文件(或者从官方包里复制过来)`资源包/materials/entity.material`
打开文件,写成下图所示。
![img](./images/5_3.png)
接下来直接使用这个material就行了。
![img](./images/5_4.png)
以上就是本教程的内容比较简单所以我就不提供下载demo了。希望能帮到有需要的人。

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 705 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 232 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

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中无法直接建造需要用建模软件** 。

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Some files were not shown because too many files have changed in this diff Show More