用户:
13661555450查看:4 回复:2 评论:4 创建时间:2022-11-12T21:32:31
console.clear()
function cube(vox, sx, sy, sz, xsize, ysize, zsize){
var xend = sx+xsize
var yend = sy+ysize
var zend = sz+zsize
for(var x=sx;x<xend;x++){
for(var y=sy;y<yend;y++){
for(var z=sz;z<zend;z++){
voxels.setVoxel(x,y,z,vox)
}}}
}
for(y=9;y<21;y++){cube("dirt",0,y,0,256,1,256)}
river_list2=[]
async function river(x,y,z,list,circle,long,corner){
rvr=[]
x_river=x
z_river=z
corner_river=corner
circle_river=circle
for(i=0;i<long;i++){
circle1=circle_river
for(a=0;a<list.length;a++){
circle1+=list[a]
cylinder("air",x_river,y+a+1,z_river,circle1,1)
}circle1=circle_river+2
y_change=y
while(circle1>=3){
cylinder("sand",x_river,y_change,z_river,circle1,1)
circle1-=1
y_change-=1
}rvr.push([x_river,z_river,circle_river])
length=randint(1,circle_river)
x=length*Math.abs(Math.cos(corner_river%90))
z=length*Math.abs(Math.sin(corner_river%90))
bx=x_river
bz=z_river
if(corner_river<=90){
x_river+=x
z_river+=z
}else if(corner_river<=180){
x_river+=x
z_river-=z
}else if(corner_river<=270){
x_river-=x
z_river+=z
}else{
x_river-=x
z_river-=z
}x_river=Math.round(x_river)
z_river=Math.round(z_river)
if(x_river-bx<-7||x_river-bx>7||z_river-bz<-7||z_river-bz>7){
x_river=bx
z_river=bz
}
corner_river+=randint(0,10)-5
if(corner_river<=10){corner_river=10}
else if(corner_river>=350){corner_river=350}
if(!(0<x_river&&x_river<250&&0<z_river&&z_river<250)){
break
}
await sleep(1)
}
river_list2.push(rvr)}
function water(y,list){
for(a in list){
for(b in list[a]){
y_change=y
circle1=list[a][b][2]
while(circle1>=3){
cylinder("water",list[a][b][0],y_change,list[a][b][1],circle1,1)
circle1-=1
y_change-=1
}}}}
function randint(minNum,maxNum){
switch(arguments.length){
case 1:
return parseInt(Math.random()*minNum+1,10);
break;
case 2:
return parseInt(Math.random()*(maxNum-minNum+1)+minNum,10);
break;
default:
return 0;
break;
}
}function cylinder(vox, cx, cy, cz, radius, height){
let xend = cx+radius
let yend = cy+height
let zend = cz+radius
for(let x=cx-radius; x<=xend; x++){
for(let z=cz-radius; z<=zend; z++){
let dx = x-cx;
let dz = z-cz;
if(Math.round(Math.sqrt(dx*dx+dz*dz)) <= radius){
for(let y=cy; y<yend; y++){
voxels.setVoxel(x,y,z,vox)
}
}
}}
}
async function world1(){
rivery=15//水平面
rivery2=21//喵地高度
river_list=[]
for(i=rivery+1;i<rivery2;i++){
river_list.push(randint(1,2))
}
for(time=0;time<randint(3,5);time++){
river(randint(0,128),rivery,randint(0,128),river_list,randint(3,7),randint(100,200),randint(10,350))
await sleep(1000)
}
water(rivery,river_list2)
for(x=0;x<257;x++){for(z=0;z<257;z++){for(y=0;y<rivery2+1;y++){if(voxels.getVoxel(x,y,z)!=0&&voxels.name(voxels.getVoxel(x,y,z))!="sand"&&voxels.name(voxels.getVoxel(x,y,z))!="water"&& voxels.getVoxel(x,y+1,z)==0){voxels.setVoxel(x,y,z,'grass')}}}}
}
world1()