LocusAzzurro
本帖最后由 LocusAzzurro 于 2021-6-10 13:25 编辑


http://ww1.sinaimg.cn/mw690/0062Lzp6gw1eze0i4ri0aj30m80go778.jpg



使用表达式来生成任何你想要的东西!

大家好,这里Az,最近完成了对WorldEdit中//generate 指令的研究,在这里与大家分享一下获得的成果,发掘这个功能更多的潜能。


目录

I.指令简介
II.指令结构与使用方式
III.可用标示
IV.坐标范围
V.等式与不等式
VI.空心图形标示的使用
VII.逻辑门的使用与多面体
VIII.函数的使用
IX.源坐标的使用
X.移动后源坐标的使用
XI.例子-曲面
XII.例子-多面体
XIII.使用例子
XIV.相关资料与来源
XV.后记


阅读提示:你可能需要如下知识来理解本文并了解它的使用方式


注意本文内容与Perlin噪声研究文章所讨论内容并无关联,二者为WorldEdit下的不同功能

WorldEdit插件系列教程(作者 shengjing1): http://www.mcbbs.net/thread-68779-1-1.html
WorldEdit插件资源(作者 sjjklh): http://www.mcbbs.net/thread-68815-1-1.html
WorldEdit插件简短介绍:
WorldEdit是一个常用的地图编辑工具,玩家可以利用它进行许多建筑中的操作,加快施工速度,同时也提供了许多便捷的功能。




2015/12/27 18:54 GMT+1 一次施工完成
2015/12/27 19:21 GMT+1 二次施工完成
2020/09/08 19:32 GMT+1 图片重修复与纯文本流线化完成


LocusAzzurro
本帖最后由 LocusAzzurro 于 2020-9-8 15:36 编辑

I.指令简介

//generate 为WorldEdit中的一个指令,可简写为//gen或//g,作用是按照用户给出的一个表达式生成对应的形状。这个是WorldEdit一个非常强大的功能,理论上下可以生成任何使用表达式表示的物体,但实际使用有一个较大的限制,由于Minecraft单指令可以输入的最大字符数,过长的表达式无法输入,但就算如此,这个指令仍然可以用来完成一些复杂的操作,在Minecraft各个领域得到应用。在这里我将与各位讲解一下这个指令的使用方法,使用时的注意事项,以及我研究与找到的一些实际使用方法与例子,也希望各位如果有能力一起来完善对这个指令的研究,发掘出他更多的潜力。在正式开始之前,我们来看一个来自WorldEdit Wiki的例子来了解这个指令的强大效果。



http://ww2.sinaimg.cn/mw690/0062Lzp6gw1ezenpik0n0j311y0jlqg8.jpg
一个心形,仅使用了一个指令生成,虽然在这里我不会介绍如此复杂的使用方式,但从这里也不难看出这个指令的强大。用来生成它的指令为
  1. //g wool:red (z/2)^2+x^2+(5*y/4-sqrt(abs(x)))^2<0.6
复制代码
接下来,我们将会一一讲解这个指令的结构与使用方式。

LocusAzzurro
本帖最后由 LocusAzzurro 于 2020-9-8 15:40 编辑

II.指令结构与使用方式

让我们来看一下之前的指令
  1. //g wool:red (z/2)^2+x^2+(5*y/4-sqrt(abs(x)))^2<0.6
复制代码

这其中//g 为 //generate 指令的简写wool:red 为使用的方块ID,这里是红色羊毛,可以是数字ID(如1,2),可以是文字ID(如stone,grass)剩余的部分为生成使用的指令,例子中使用的是一个十分复杂的指令,因为并不是本文的重点,我们就不在这里深入研究了。
但这里要讲解一下表达式书写的方式与需要注意的地方首先让我们看一下表达式的写法,它的写法与Java相似:    WorldEdit Wiki http://wiki.sk89q.com/wiki/WorldEdit/Expression_syntax#Functions         (在下文的函数部分会有更多的介绍)
需要注意的地方有:与日常书写表达式不同,2x,3y等需要用乘号链接,即2*x, 3*y
最后但并不是最不重要的,WorldEdit中使用的是并不是等式,而是不等式,因为WorldEdit会将选区内的每个方块的位置带入计算,并将结果用方块反映出来,此处的结果只能是1,即有方块,或0,即无方块。如果使用等式的话,由于Minecraft为方块世界,精细度不能达到显示结果的程度,所以效果不佳。(等式无法使用的原因为笔者个人推测,如有错误请指出)但虽然不能使用等式,我们仍可以使用-h标示来达到接近的效果,这部分我们会在介绍标示时继续深入。

综上所述,这个指令的格式为
  1. //generate <ID> [-h/-r/-o] <表达式>
复制代码

-h, -r, -o 为这个指令可以使用的标示。
使用这个指令的时候需要选择一个选区,形状会在这个选择的选区中生成,注意选区的形状会影响到输出的形状,有时这个特性会造成一些麻烦,但有时可以使用这个来达到希望的效果,这一点我们接下来会讲到。
同时,就像刚才提到的,在使用这个指令时,我们可以使用一个或几个标示来改变指令的效果,来达到需要的结果。

下一页 最后一页