猫史档案馆


【速建】速建灌木丛的代码

用户:KaNSFKaNSF查看:0 回复:12 评论:0 创建时间:2022-05-28T17:13:21


//生成灌木丛
async function make_shrubbery(position, num, lv, tv, pb) {
    var i = 0;
    var list = [
        new Box3Vector3(0, 0, 1),
        new Box3Vector3(0, 0, -1),
        new Box3Vector3(0, 1, 0),
        new Box3Vector3(0, -1, 0),
        new Box3Vector3(1, 0, 0),
        new Box3Vector3(-1, 0, 0)
    ];
    var set_list = [];
    while (i < num) {
        var bool = true;
        for (var j of set_list) {
            if ((
                (j.x == position.x) &&
                (j.y == position.y) &&
                (j.z == position.z)) ||
                pb.includes(voxels.getVoxel(position.x, position.y, position.z)
                )) {
                bool = false;
            }
        }
        if (bool) {
            voxels.setVoxel(position.x, position.y, position.z, tv);
            i += 1;
            set_list.push(position);
            var a = pb;
            a.push(voxels.id(tv))
            if (Math.random() > 0.8) {
                circle(position, Math.ceil(Math.random() * 1.03), lv, a);
            }
            position = position.add(list[Math.floor(Math.random() * 6)]);
        } else {
            if (i >= 2) {
                var a = set_list.length - 2;
                position = set_list[a];
                position = position.add(list[Math.floor(Math.random() * 6)]);
            } else {
                position = position.add(list[Math.floor(Math.random() * 6)]);
            }
        }
        await sleep(1);
    }
}
function circle(pos, r, block, pb) {
    for (let i = pos.x - r; i <= pos.x + r; i++) {
        for (let k = pos.y - r; k <= pos.y + r; k++) {
            for (let j = pos.z - r; j <= pos.z + r; j++) {
                if (!pb.includes(voxels.getVoxel(i, k, j))) {
                    if (new Box3Vector3(i, k, j).distance(pos) <= r) {
                        voxels.setVoxel(i, k, j, block);
                    }
                }
            }
        }
    }
}

参数说明:

position:灌木根的位置

num:灌木长度

lv:灌木叶子方块

tv:灌木杆方块

pb:列表里面的是灌木不会穿透的方块id(不要就弄空值)

 

==========================================下面是拿来炫耀的================================================

稍加点缀,就变成了:

center_imagec


回复

上一页1 页 / 共 1下一页
KaNSFKaNSF

原理解释: https://www.bilibil喵video/BV1GJ411x7h7?spm_id_from=333.337.search-card.all.click

点赞0


评论


busterbuster

收藏

点赞0


评论


KaNSFKaNSF

点赞0


评论


东方绝尘东方绝尘

ddd

点赞0


评论


没名字pwp没名字pwp

收藏

点赞0


评论


_function__function_

挖一下()

那么好了,你这个效果的数值都是什么()看起来挺彳亍的()

点赞0


评论


KeluoKeluo

请问一下

宁用的是超大的地图吗?

点赞0


评论


yy永不言败dsyy永不言败ds

ddd

点赞0


评论


Architect_fyArchitect_fy

收藏早已开始,实践从未开始

点赞0


评论


爱编程_编程喵喵爱编程_编程喵喵

赞 

点赞0


评论


BOSS不爱吃鱼的小鱼BOSS不爱吃鱼的小鱼

顶一下

点赞0


评论


Box里面的寒江天外Box里面的寒江天外

不能用

点赞0


评论