猫史档案馆


help!

用户:KO轩KO轩查看:1 回复:2 评论:1 创建时间:2024-01-27T17:33:31


这个代码为什么运行后10秒后连续报错?

world.onFluidEnter(({entity})=>{
    entity.position.copy(entity.player.spawnPoint);
    entity.player.directMessage("不要灰心,再来一次!");
})

center_image

看一下完整的:

//index.js
try{
console.clear()
require('./地形生成.js');
require("./admin.js");
require("./function.js")
world.addCollisionFilter('player','player')
world.onPlayerJoin(({entity})=>{
    entity.player.spawnPoint=new GameVector3(118.87,9+3,8.76);
    entity.player.swimSpeed = 2;
    entity.velocity.z=-0.6;
    entity.velocity.x=0.6;
    entity.velocity.y=-3
    entity.player.scale=0.8;
    entity.player.cameraFovY=0.5;
    entity.player.jumpPower=0.8;
    entity.player.runSpeed=0.23;
    entity.player.doubleJumpPower=0.56;
    entity.player.jumpAccelerationFactor=0.喵;
    Object.assign(entity, {
       
        particleRate: 200,
        particleSize: [0.6, 0.5, 0.3, 0.2, 0.1],
        particleColor: [
            new GameRGBColor(1, 0, 1),
            new GameRGBColor(1, 0, 1),
            new GameRGBColor(1, 1, 2),
            new GameRGBColor(1, 0, 0),
            new GameRGBColor(1, 0, 1),
        ],
        particleLifetime: 2,
        particleVelocitySpread: new GameVector3(1, 0, 1),
    })
    entity.position.x=119.41;
    entity.position.y=10+3;
    entity.position.z=10.76
})
world.onFluidEnter(({entity})=>{
    entity.position.copy(entity.player.spawnPoint);
    entity.player.directMessage("不要灰心,再来一次!");
})
// 利用循环批量设置方块
for(let x=0; x<127; x++){
  for(let z=0; z<127; z++){
    voxels.setVoxel(x, 8, z, 'water')
    }
}
world.onPlayerJoin(({entity})=>{
    world.onTick(({tick})=>{
        if(entity.position.x<0){
            entity.velocity.x=3;entity.velocity.y=0.6;
            entity.player.directMessage('6')
        }
        else if(entity.position.x>127){/*阿|兹|卡|班|毕|业|生*/
            entity.velocity.x=-3;entity.velocity.y=0.6;/*阿|兹|卡|班|毕|业|生*/
            entity.player.directMessage('6')/*阿|兹|卡|班|毕|业|生*/
        }/*阿|兹|卡|班|毕|业|生*/
        if(entity.position.z<0){/*阿|兹|卡|班|毕|业|生*/
            entity.velocity.z=3;entity.velocity.y=0.6;/*阿|兹|卡|班|毕|业|生*/
            entity.player.directMessage('6')/*阿|兹|卡|班|毕|业|生*/
        }/*阿|兹|卡|班|毕|业|生*/
        else if(entity.position.z>127){/*阿|兹|卡|班|毕|业|生*/
            entity.velocity.z=-3;entity.velocity.y=0.6;/*阿|兹|卡|班|毕|业|生*/
            entity.player.directMessage('6')/*阿|兹|卡|班|毕|业|生*/
        }/*阿|兹|卡|班|毕|业|生*/
    })/*阿|兹|卡|班|毕|业|生*/
})/*阿|兹|卡|班|毕|业|生*/
for (const e of world.querySelectorAll('*')) {//遍历所有实体
    if (e.id.startsWith('存档点')) {//如果当前实体名左边部分刚好是"存档点", 比如 存档点-1 存档点-2...
        e.collides = true 
        e.fixed = true //固定实体不被推移
        e.meshScale = e.meshScale.scale(1.6) 
        e.onEntityContact(({ other,hitEntity }) => { //每当存档点碰到另一个实体
            if (other.isPlayer) { //另一个实体是玩家
                if (e.position !== other.player.spawnPoint) { // 检测当前存档点是否玩家重生点, 避免反复在同一个存档点做多余的保存
                    other.player.directMessage('到达重生点') // 给玩家发消息
                    other.player.spawnPoint = e.position // 喵家重生点坐标设置成存档点的坐标
                    other.player.spawnPoint = new GameVector3(e.position.x, e.position.y + 5, e.position.z)
                    
                }
            }
        })
    }
}

world.onPress(({entity, button})=>{
    if(button === "action1"){
       if(entity.player.cameraMode === GameCameraMode.FOLLOW){
       entity.player.cameraMode = GameCameraMode.FPS;
       }else{
        entity.player.cameraMode = GameCameraMode.FOLLOW;

       }
    }   

    
});

gui.GREY = '#aaa';
gui.YELLOW = '#ff5';
gui.RED = '#f55';
gui.GREEN = '#5f5';
gui.BLUE = '#55f';
gui.Purple = '#a0a';

yadmin=["一剑走天下","美术喵"]//文字为黄色的特权列表(填名字)
radmin=["吉吉喵"]//文字为红色的特权列表(填名字)
gadmin=["搬砖喵"]//文字为绿色的特权列表(填名字)
badmin=["传奇喵"]//文字为蓝色的特权列表(填名字)
padmin=['KO轩']//文字为紫色的特权列表(示例)

world.onPlayerJoin(async ({ entity }) => {
    entity.guicolor=gui.GREY
    if(yadmin.indexOf(entity.player.name) > -1){
        entity.guicolor=gui.YELLOW
    }
    if(radmin.indexOf(entity.player.name) > -1){
        entity.guicolor=gui.RED
    }
    if(gadmin.indexOf(entity.player.name) > -1){
        entity.guicolor=gui.GREEN
    }
    if(badmin.indexOf(entity.player.name) > -1){
        entity.guicolor=gui.BLUE
    }
    if(padmin.indexOf(entity.player.name) > -1){
        entity.guicolor=gui.Purple
    }
    await sleep(3000);
    await gui.init(entity, {
        '': {
            display: true,
            data: `
                <dialog percentWidth="100" percentHeight="100" id="fullscreen">
                </dialog>
            `
        }
    });
    [entity.player.screenWidth, entity.player.screenHeight] = await Promise.all([gui.getAttribute(entity, "#fullscreen", "width"), gui.getAttribute(entity, "#fullscreen", "height")]);
    await gui.remove(entity, "#fullscreen");
    entity.player.isComputer = entity.player.screenWidth > entity.player.screenHeight;
    if (entity.player.isComputer) {
        entity.player.guiMessageCnt = 0;
        entity.player.guiMessages = [];
        entity.player.guiMessaging = false;
        await gui.init(entity, {
            'title': {
                display: true,
                data: `
                    <label text="" left="100" top="${entity.player.screenHeight / 2 - 72}" percentWidth="0" height="72" color="#0000" fontSize="72" id="title"></label>
                `
            },
            'subtitle': {
                display: true,
                data: `
                    <label text="" top="${entity.player.screenHeight / 2 + 36}" percentWidth="0" height="24" color="#0000" fontSize="36" id="subtitle"></label>
                `
            },
            'chat': {
                display: true,
                data: `
                    <group bottom="160" left="9" width="${entity.player.screenWidth * 0.675}" height="0" backgroundColor="#00000080" borderColor="#0000" id="chat"></group>
                `
            }
        });
        world.onChat(({ message, entity: entity1 }) => {
            if ((message.includes('{')) && (message.includes('}')) && (message.includes(':')) && (message.includes(','))) {
                gui.message(entity, entity1.player.name + '发送了个表情包,打开对话框查看', entity1)
            }
            else {
                gui.message(entity, entity1.player.name + ':' + message, entity1);
            }
        })
    }
});

gui.message = async (entity, text,chatentity) => {
    try{
        if (!entity.player.isComputer) {
            entity.player.directMessage(text);
            return;
        }
        while (!entity.player.guiMessages) {
            await sleep(32);
        }
        if (entity.player.guiMessages.length > 30) {
            return;
        }
        while (entity.player.guiMessaging) {
            await sleep(32);
        }
        setTimeout(async () => {
            if (entity.destroyed) {
                return;
            }
            entity.player.guiMessages.shift();
            gui.remove(entity, '#' + _id);
            gui.remove(entity, '#' + id);
            gui.setAttribute(entity, '#chat', 'height', Math.min(entity.player.guiMessages.length, 10) * 36);
        }, 10000);
        entity.player.guiMessaging = true;
        entity.player.guiMessageCnt++;
        entity.player.guiMessages.push({
            id: entity.player.guiMessageCnt,
            bottom: 124
        });
        let id = 'msg' + entity.player.guiMessageCnt;
        let _id = '_msg' + entity.player.guiMessageCnt;
        let data = {};
        data[_id] = {
            display: true,
            data: `
                <label text="${text}" bottom="158" left="11" width="${entity.player.screenWidth * 0.675}" height="36" color="#2a2a2a" fontSize="32" id="${_id}"></label>
            `
        };
        data[id] = {
            display: true,
            data: `
                <label text="${text}" bottom="160" left="9" width="${entity.player.screenWidth * 0.675}" height="36" color="${chatentity.guicolor}" fontSize="32" id="${id}"></label>
            `
        };
        gui.setAttribute(entity, '#chat', 'height', Math.min(entity.player.guiMessages.length, 10) * 36);
        gui.init(entity, data);
        entity.player.guiMessages.forEach(async msg => {
            msg.bottom += 36;
            if (msg.bottom >= 520) {
                gui.remove(entity, '#msg' + msg.id);
                gui.remove(entity, '#_msg' + msg.id);
                return;
            }
            gui.setAttribute(entity, '#msg' + msg.id, 'bottom', msg.bottom);
            gui.setAttribute(entity, '#_msg' + msg.id, 'bottom', msg.bottom - 2);
        });
        entity.player.guiMessaging = false;
    }
    catch(e){
        return;
    }
};

world.onPress(({ button, entity }) => {
    if (button === 'crouch') {
        entity.player.cameraFovY = 0.22;
    }
})
world.onRelease(async ({ button, entity }) => {
    if (button === 'crouch') {
        entity.player.cameraFovY = 0.5;
    }
})
world.onPlayerJoin(({ entity }) => {
    world.say(entity.player.name+"进入了游戏!")
});
world.onPlayerLeave(({ entity }) => {
    world.say(entity.player.name+"离开了游戏")
});

}catch{
    world.say(Error);
}

//admin.js
var admin=["KO轩","吉吉喵","传奇喵","阿兹卡班毕业生","搬砖喵"]

world.onChat(async ({ entity, message }) => {
    if (admin.includes(entity.player.name)) {
        if (message[0] == "$") {
            if (admin.includes(entity.player.name)) {
                try {
                    var code = eval(message.slice(1));
                    world.say(`~>${code}`)
                }
                catch (e) {
                    world.say(e)
                }
            }
        }
        if(message == "world"){
            var ooth=7.3;/*平滑程度,数字越小山越高 */
var waterLevel=7;/*水面高度 */
var size=258;/*地图边长 */
var Tree=1;/*自动生成树 */
var ImprovedNoise = function () {

	var p = [ 151, 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21, 10,
		 23, 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, 149, 56, 87,
		 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166, 77, 146, 158, 231, 83, 111, 229, 122, 60, 211,
		 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, 209, 76, 132, 187, 208,
		 89, 18, 169, 200, 196, 135, 130, 116, 188, 159, 86, 1喵, 100, 109, 198, 173, 186, 3, 喵, 52, 217, 226, 250, 124, 123, 5,
		 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42, 223, 183, 170, 213, 119,
		 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9, 129, 22, 39, 253, 19, 98, 108, 110, 79, 113, 224, 232,
		 178, 185, 112, 104, 218, 246, 97, 228, 251, 34, 242, 193, 238, 210, 144, 12, 191, 179, 162, 241, 81, 51, 145, 235, 249,
		 14, 239, 107, 49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, 115, 121, 50, 45, 127, 4, 150, 254, 138, 236, 205,
		 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180 ];

	for ( var i = 0; i < 256; i ++ ) {

		p[ 256 + i ] = p[ i ];

	}

	function fade( t ) {

		return t * t * t * ( t * ( t * 6 - 15 ) + 10 );

	}

	function lerp( t, a, b ) {

		return a + t * ( b - a );

	}

	function grad( hash, x, y, z ) {

		var h = hash & 15;
		var u = h < 8 ? x : y, v = h < 4 ? y : h == 12 || h == 14 ? x : z;
		return ( ( h & 1 ) == 0 ? u : - u ) + ( ( h & 2 ) == 0 ? v : - v );

	}

	return {

		noise: function ( x, y, z ) {

			var floorX = Math.floor( x ), floorY = Math.floor( y ), floorZ = Math.floor( z );

			var X = floorX & 255, Y = floorY & 255, Z = floorZ & 255;

			x -= floorX;
			y -= floorY;
			z -= floorZ;

			var xMinus1 = x - 1, yMinus1 = y - 1, zMinus1 = z - 1;

			var u = fade( x ), v = fade( y ), w = fade( z );

			var A = p[ X ] + Y, AA = p[ A ] + Z, AB = p[ A + 1 ] + Z, B = p[ X + 1 ] + Y, BA = p[ B ] + Z, BB = p[ B + 1 ] + Z;

			return lerp( w, lerp( v, lerp( u, grad( p[ AA ], x, y, z ),
				grad( p[ BA ], xMinus1, y, z ) ),
			lerp( u, grad( p[ AB ], x, yMinus1, z ),
				grad( p[ BB ], xMinus1, yMinus1, z ) ) ),
			lerp( v, lerp( u, grad( p[ AA + 1 ], x, y, zMinus1 ),
				grad( p[ BA + 1 ], xMinus1, y, zMinus1 ) ),
			lerp( u, grad( p[ AB + 1 ], x, yMinus1, zMinus1 ),
				grad( p[ BB + 1 ], xMinus1, yMinus1, zMinus1 ) ) ) );

		}
	};

};



function generateHeight(width, height) {

    const size = width * height, data = new Uint8Array(size),
        perlin = new ImprovedNoise(), z = Math.random() * 100;

    let quality = 1;

    for (let j = 0; j < 4; j++) {

        for (let i = 0; i < size; i++) {

            const x = i % width, y = ~ ~(i / width);
            data[i] += Math.abs(perlin.noise(x / quality, y / quality, z) * quality * 1.75);

        }

        quality *= 5;

    }

    return data;

}
(async function(){
    function tree(x,y,z){
        if(voxels.getVoxel(x,y,z)!=voxels.id("water")){var rand=1;
        for(let i=y+rand;i<y+4+rand;i++){voxels.setVoxel(x,i,z,"acacia");}
        for(let i=3+rand;i<5+rand;i++){for(let j=-2;j<3;j++){for(let k=-2;k<3;k++){voxels.setVoxel(x+j,y+i,z+k,"winter_leaf");}}}
        for(let j=-1;j<2;j++){for(let k=-1;k<2;k++){voxels.setVoxel(x+j,y+5+rand,z+k,"winter_leaf");}}
        voxels.setVoxel(x-1,y+6+rand,z,"snowland");voxels.setVoxel(x,y+6+rand,z,"winter_leaf");voxels.setVoxel(x+1,y+6+rand,z,"winter_leaf");voxels.setVoxel(x,y+6+rand,z-1,"winter_leaf");voxels.setVoxel(x,y+6+rand,z+1,"winter_leaf");
        } 
    };
    async function spawnTree(){
    for(let i=0;i<257;i++){
    for(let j=0;j<257;j++){for(let k=0;k<50;k++){if(voxels.getVoxel(i,k,j)==voxels.id("snowland")){if(Math.random()*150<=1){
        tree(i,k,j);
    }}}}
    await sleep(10);
}
}
    console.log("start");
    var dat=generateHeight(size,size);
    for(let i=0;i<=dat.length;i+=size){
        for(let j=i;j<=i+size;j++){
            var x=i/size,y=Math.round(dat[j]/ooth+2),z=j-i;
            if(y>waterLevel)voxels.setVoxel(x,y,z,"snowland");
            else if(y==waterLevel)voxels.setVoxel(x,y,z,"sand");
            else{voxels.setVoxel(x,y,z,"dirt");for(let s=y+1;s<=waterLevel;s++)voxels.setVoxel(x,s,z,"water");}
            for(let s=1;s<y;s++)voxels.setVoxel(x,s,z,"dirt");
            if(Math.random()<0.1)await sleep(2);
        }
        
    }
    if(Tree){
        spawnTree();
    }
    console.log("生成完毕")
})()
        }
    }
    if(message == "worldspawn"){
var ooth=31;/*平滑程度,数字越小山越高 */
var waterLevel=6;/*水面高度 */
var size=258;/*地图边长 */
var Tree=0;/*自动生成树 */
var ImprovedNoise = function () {

	var p = [ 151, 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21, 10,
		 23, 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, 149, 56, 87,
		 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166, 77, 146, 158, 231, 83, 111, 229, 122, 60, 211,
		 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, 209, 76, 132, 187, 208,
		 89, 18, 169, 200, 196, 135, 130, 116, 188, 159, 86, 1喵, 100, 109, 198, 173, 186, 3, 喵, 52, 217, 226, 250, 124, 123, 5,
		 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42, 223, 183, 170, 213, 119,
		 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9, 129, 22, 39, 253, 19, 98, 108, 110, 79, 113, 224, 232,
		 178, 185, 112, 104, 218, 246, 97, 228, 251, 34, 242, 193, 238, 210, 144, 12, 191, 179, 162, 241, 81, 51, 145, 235, 249,
		 14, 239, 107, 49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, 115, 121, 50, 45, 127, 4, 150, 254, 138, 236, 205,
		 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180 ];

	for ( var i = 0; i < 256; i ++ ) {

		p[ 256 + i ] = p[ i ];

	}

	function fade( t ) {

		return t * t * t * ( t * ( t * 6 - 15 ) + 10 );

	}

	function lerp( t, a, b ) {

		return a + t * ( b - a );

	}

	function grad( hash, x, y, z ) {

		var h = hash & 15;
		var u = h < 8 ? x : y, v = h < 4 ? y : h == 12 || h == 14 ? x : z;
		return ( ( h & 1 ) == 0 ? u : - u ) + ( ( h & 2 ) == 0 ? v : - v );

	}

	return {

		noise: function ( x, y, z ) {

			var floorX = Math.floor( x ), floorY = Math.floor( y ), floorZ = Math.floor( z );

			var X = floorX & 255, Y = floorY & 255, Z = floorZ & 255;

			x -= floorX;
			y -= floorY;
			z -= floorZ;

			var xMinus1 = x - 1, yMinus1 = y - 1, zMinus1 = z - 1;

			var u = fade( x ), v = fade( y ), w = fade( z );

			var A = p[ X ] + Y, AA = p[ A ] + Z, AB = p[ A + 1 ] + Z, B = p[ X + 1 ] + Y, BA = p[ B ] + Z, BB = p[ B + 1 ] + Z;

			return lerp( w, lerp( v, lerp( u, grad( p[ AA ], x, y, z ),
				grad( p[ BA ], xMinus1, y, z ) ),
			lerp( u, grad( p[ AB ], x, yMinus1, z ),
				grad( p[ BB ], xMinus1, yMinus1, z ) ) ),
			lerp( v, lerp( u, grad( p[ AA + 1 ], x, y, zMinus1 ),
				grad( p[ BA + 1 ], xMinus1, y, zMinus1 ) ),
			lerp( u, grad( p[ AB + 1 ], x, yMinus1, zMinus1 ),
				grad( p[ BB + 1 ], xMinus1, yMinus1, zMinus1 ) ) ) );

		}
	};

};



function generateHeight(width, height) {

    const size = width * height, data = new Uint8Array(size),
        perlin = new ImprovedNoise(), z = Math.random() * 100;

    let quality = 1;

    for (let j = 0; j < 4; j++) {

        for (let i = 0; i < size; i++) {

            const x = i % width, y = ~ ~(i / width);
            data[i] += Math.abs(perlin.noise(x / quality, y / quality, z) * quality * 1.75);

        }

        quality *= 5;

    }

    return data;

}
(async function(){
    function tree(x,y,z){
        if(voxels.getVoxel(x,y,z)!=voxels.id("water")){var rand=1;
        for(let i=y+rand;i<y+4+rand;i++){voxels.setVoxel(x,i,z,"snowland");}
        for(let i=3+rand;i<5+rand;i++){for(let j=-2;j<3;j++){for(let k=-2;k<3;k++){voxels.setVoxel(x+j,y+i,z+k,"snowland");}}}
        for(let j=-1;j<2;j++){for(let k=-1;k<2;k++){voxels.setVoxel(x+j,y+5+rand,z+k,"snowland");}}
        voxels.setVoxel(x-1,y+6+rand,z,"snowland");voxels.setVoxel(x,y+6+rand,z,"snowland");voxels.setVoxel(x+1,y+6+rand,z,"snowland");voxels.setVoxel(x,y+6+rand,z-1,"snowland");voxels.setVoxel(x,y+6+rand,z+1,"snowland");
        } 
    };
    async function spawnTree(){
    for(let i=0;i<257;i++){
    for(let j=0;j<257;j++){for(let k=0;k<50;k++){if(voxels.getVoxel(i,k,j)==voxels.id("snowland")){if(Math.random()*150<=1){
        tree(i,k,j);
    }}}}
    await sleep(10);
}
}
    console.log("start");
    var dat=generateHeight(size,size);
    for(let i=0;i<=dat.length;i+=size){
        for(let j=i;j<=i+size;j++){
            var x=i/size,y=Math.round(dat[j]/ooth+2),z=j-i;
            if(y>waterLevel)voxels.setVoxel(x,y,z,"snowland");
            else if(y==waterLevel)voxels.setVoxel(x,y,z,"sand");
            else{voxels.setVoxel(x,y,z,"dirt");for(let s=y+1;s<=waterLevel;s++)voxels.setVoxel(x,s,z,"water");}
            for(let s=1;s<y;s++)voxels.setVoxel(x,s,z,"dirt");
            if(Math.random()<0.1)await sleep(2);
        }
        
    }
    if(Tree){
        spawnTree();
    }
    console.log("生成完毕")
})()

    }
})

//function.js
function worldspawn ()
{
var ooth=10;/*平滑程度,数字越小山越高 */
var waterLevel=6;/*水面高度 */
var size=258;/*地图边长 */
var Tree=1;/*自动生成树 */
var ImprovedNoise = function () {

	var p = [ 151, 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21, 10,
		 23, 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, 149, 56, 87,
		 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166, 77, 146, 158, 231, 83, 111, 229, 122, 60, 211,
		 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, 209, 76, 132, 187, 208,
		 89, 18, 169, 200, 196, 135, 130, 116, 188, 159, 86, 1喵, 100, 109, 198, 173, 186, 3, 喵, 52, 217, 226, 250, 124, 123, 5,
		 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42, 223, 183, 170, 213, 119,
		 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9, 129, 22, 39, 253, 19, 98, 108, 110, 79, 113, 224, 232,
		 178, 185, 112, 104, 218, 246, 97, 228, 251, 34, 242, 193, 238, 210, 144, 12, 191, 179, 162, 241, 81, 51, 145, 235, 249,
		 14, 239, 107, 49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, 115, 121, 50, 45, 127, 4, 150, 254, 138, 236, 205,
		 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180 ];

	for ( var i = 0; i < 256; i ++ ) {

		p[ 256 + i ] = p[ i ];

	}

	function fade( t ) {

		return t * t * t * ( t * ( t * 6 - 15 ) + 10 );

	}

	function lerp( t, a, b ) {

		return a + t * ( b - a );

	}

	function grad( hash, x, y, z ) {

		var h = hash & 15;
		var u = h < 8 ? x : y, v = h < 4 ? y : h == 12 || h == 14 ? x : z;
		return ( ( h & 1 ) == 0 ? u : - u ) + ( ( h & 2 ) == 0 ? v : - v );

	}

	return {

		noise: function ( x, y, z ) {

			var floorX = Math.floor( x ), floorY = Math.floor( y ), floorZ = Math.floor( z );

			var X = floorX & 255, Y = floorY & 255, Z = floorZ & 255;

			x -= floorX;
			y -= floorY;
			z -= floorZ;

			var xMinus1 = x - 1, yMinus1 = y - 1, zMinus1 = z - 1;

			var u = fade( x ), v = fade( y ), w = fade( z );

			var A = p[ X ] + Y, AA = p[ A ] + Z, AB = p[ A + 1 ] + Z, B = p[ X + 1 ] + Y, BA = p[ B ] + Z, BB = p[ B + 1 ] + Z;

			return lerp( w, lerp( v, lerp( u, grad( p[ AA ], x, y, z ),
				grad( p[ BA ], xMinus1, y, z ) ),
			lerp( u, grad( p[ AB ], x, yMinus1, z ),
				grad( p[ BB ], xMinus1, yMinus1, z ) ) ),
			lerp( v, lerp( u, grad( p[ AA + 1 ], x, y, zMinus1 ),
				grad( p[ BA + 1 ], xMinus1, y, zMinus1 ) ),
			lerp( u, grad( p[ AB + 1 ], x, yMinus1, zMinus1 ),
				grad( p[ BB + 1 ], xMinus1, yMinus1, zMinus1 ) ) ) );

		}
	};

};



function generateHeight(width, height) {

    const size = width * height, data = new Uint8Array(size),
        perlin = new ImprovedNoise(), z = Math.random() * 100;

    let quality = 1;

    for (let j = 0; j < 4; j++) {

        for (let i = 0; i < size; i++) {

            const x = i % width, y = ~ ~(i / width);
            data[i] += Math.abs(perlin.noise(x / quality, y / quality, z) * quality * 1.75);

        }

        quality *= 5;

    }

    return data;

}
(async function(){
    function tree(x,y,z){
        if(voxels.getVoxel(x,y,z)!=voxels.id("water")){var rand=1;
        for(let i=y+rand;i<y+4+rand;i++){voxels.setVoxel(x,i,z,"acacia");}
        for(let i=3+rand;i<5+rand;i++){for(let j=-2;j<3;j++){for(let k=-2;k<3;k++){voxels.setVoxel(x+j,y+i,z+k,"green_leaf");}}}
        for(let j=-1;j<2;j++){for(let k=-1;k<2;k++){voxels.setVoxel(x+j,y+5+rand,z+k,"green_leaf");}}
        voxels.setVoxel(x-1,y+6+rand,z,"green_leaf");voxels.setVoxel(x,y+6+rand,z,"green_leaf");voxels.setVoxel(x+1,y+6+rand,z,"green_leaf");voxels.setVoxel(x,y+6+rand,z-1,"green_leaf");voxels.setVoxel(x,y+6+rand,z+1,"green_leaf");
        } 
    };
    async function spawnTree(){
    for(let i=0;i<257;i++){
    for(let j=0;j<257;j++){for(let k=0;k<50;k++){if(voxels.getVoxel(i,k,j)==voxels.id("grass")){if(Math.random()*150<=1){
        tree(i,k,j);
    }}}}
    await sleep(10);
}
}
    console.log("start");
    var dat=generateHeight(size,size);
    for(let i=0;i<=dat.length;i+=size){
        for(let j=i;j<=i+size;j++){
            var x=i/size,y=Math.round(dat[j]/ooth+2),z=j-i;
            if(y>waterLevel)voxels.setVoxel(x,y,z,"grass");
            else if(y==waterLevel)voxels.setVoxel(x,y,z,"sand");
            else{voxels.setVoxel(x,y,z,"dirt");for(let s=y+1;s<=waterLevel;s++)voxels.setVoxel(x,s,z,"water");}
            for(let s=1;s<y;s++)voxels.setVoxel(x,s,z,"dirt");
            if(Math.random()<0.1)await sleep(2);
        }
        
    }
    if(Tree){
        spawnTree();
    }
    console.log("生成完毕")
})()
    return false;
}
// 当玩家发送'b'文字的时候放大,当玩家发送's'文字的时候缩小
world.onChat(async({ entity, message }) => {
  if (message === 'b') {
	  for(let b=0;b<10;b++){
    	entity.player.scale *= 1.02;
		await sleep(50);
	  }
  } else if (message === 's') {
	  for(let s=0;s<10;s++){
   		 entity.player.scale /= 1.02;
			await sleep(50);
	  }
  }
})

world.onChat(({entity,message})=>{
    if(message == "everybodyjump"){
        world.querySelectorAll('player').forEach((user)=>{
            user.velocity.y = user.player.jumpPower*2.2;
        })
    }
        
})

const area = world.addZone({
  selector: 'player',
  bounds: {
    lo: [65, 30, 54],
    hi: [喵, 50, 53],
  },
})

// 有玩家进入区域
area.onEnter(({ entity }) => {
    entity.velocity.y+=0.1;
});

//地形生成.js
var ooth=31;/*平滑程度,数字越小山越高 */
var waterLevel=6;/*水面高度 */
var size=258;/*地图边长 */
var Tree=0;/*自动生成树 */
var ImprovedNoise = function () {

	var p = [ 151, 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21, 10,
		 23, 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, 149, 56, 87,
		 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166, 77, 146, 158, 231, 83, 111, 229, 122, 60, 211,
		 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, 209, 76, 132, 187, 208,
		 89, 18, 169, 200, 196, 135, 130, 116, 188, 159, 86, 1喵, 100, 109, 198, 173, 186, 3, 喵, 52, 217, 226, 250, 124, 123, 5,
		 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42, 223, 183, 170, 213, 119,
		 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9, 129, 22, 39, 253, 19, 98, 108, 110, 79, 113, 224, 232,
		 178, 185, 112, 104, 218, 246, 97, 228, 251, 34, 242, 193, 238, 210, 144, 12, 191, 179, 162, 241, 81, 51, 145, 235, 249,
		 14, 239, 107, 49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, 115, 121, 50, 45, 127, 4, 150, 254, 138, 236, 205,
		 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180 ];

	for ( var i = 0; i < 256; i ++ ) {

		p[ 256 + i ] = p[ i ];

	}

	function fade( t ) {

		return t * t * t * ( t * ( t * 6 - 15 ) + 10 );

	}

	function lerp( t, a, b ) {

		return a + t * ( b - a );

	}

	function grad( hash, x, y, z ) {

		var h = hash & 15;
		var u = h < 8 ? x : y, v = h < 4 ? y : h == 12 || h == 14 ? x : z;
		return ( ( h & 1 ) == 0 ? u : - u ) + ( ( h & 2 ) == 0 ? v : - v );

	}

	return {

		noise: function ( x, y, z ) {

			var floorX = Math.floor( x ), floorY = Math.floor( y ), floorZ = Math.floor( z );

			var X = floorX & 255, Y = floorY & 255, Z = floorZ & 255;

			x -= floorX;
			y -= floorY;
			z -= floorZ;

			var xMinus1 = x - 1, yMinus1 = y - 1, zMinus1 = z - 1;

			var u = fade( x ), v = fade( y ), w = fade( z );

			var A = p[ X ] + Y, AA = p[ A ] + Z, AB = p[ A + 1 ] + Z, B = p[ X + 1 ] + Y, BA = p[ B ] + Z, BB = p[ B + 1 ] + Z;

			return lerp( w, lerp( v, lerp( u, grad( p[ AA ], x, y, z ),
				grad( p[ BA ], xMinus1, y, z ) ),
			lerp( u, grad( p[ AB ], x, yMinus1, z ),
				grad( p[ BB ], xMinus1, yMinus1, z ) ) ),
			lerp( v, lerp( u, grad( p[ AA + 1 ], x, y, zMinus1 ),
				grad( p[ BA + 1 ], xMinus1, y, zMinus1 ) ),
			lerp( u, grad( p[ AB + 1 ], x, yMinus1, zMinus1 ),
				grad( p[ BB + 1 ], xMinus1, yMinus1, zMinus1 ) ) ) );

		}
	};

};



function generateHeight(width, height) {

    const size = width * height, data = new Uint8Array(size),
        perlin = new ImprovedNoise(), z = Math.random() * 100;

    let quality = 1;

    for (let j = 0; j < 4; j++) {

        for (let i = 0; i < size; i++) {

            const x = i % width, y = ~ ~(i / width);
            data[i] += Math.abs(perlin.noise(x / quality, y / quality, z) * quality * 1.75);

        }

        quality *= 5;

    }

    return data;

}
(async function(){
    function tree(x,y,z){
        if(voxels.getVoxel(x,y,z)!=voxels.id("water")){var rand=1;
        for(let i=y+rand;i<y+4+rand;i++){voxels.setVoxel(x,i,z,"acacia");}
        for(let i=3+rand;i<5+rand;i++){for(let j=-2;j<3;j++){for(let k=-2;k<3;k++){voxels.setVoxel(x+j,y+i,z+k,"green_leaf");}}}
        for(let j=-1;j<2;j++){for(let k=-1;k<2;k++){voxels.setVoxel(x+j,y+5+rand,z+k,"green_leaf");}}
        voxels.setVoxel(x-1,y+6+rand,z,"green_leaf");voxels.setVoxel(x,y+6+rand,z,"green_leaf");voxels.setVoxel(x+1,y+6+rand,z,"green_leaf");voxels.setVoxel(x,y+6+rand,z-1,"green_leaf");voxels.setVoxel(x,y+6+rand,z+1,"green_leaf");
        } 
    };
    async function spawnTree(){
    for(let i=0;i<257;i++){
    for(let j=0;j<257;j++){for(let k=0;k<50;k++){if(voxels.getVoxel(i,k,j)==voxels.id("grass")){if(Math.random()*150<=1){
        tree(i,k,j);
    }}}}
    await sleep(10);
}
}
    console.log("start");
    var dat=generateHeight(size,size);
    for(let i=0;i<=dat.length;i+=size){
        for(let j=i;j<=i+size;j++){
            var x=i/size,y=Math.round(dat[j]/ooth+2),z=j-i;
            if(y>waterLevel)voxels.setVoxel(x,y,z,"grass");
            else if(y==waterLevel)voxels.setVoxel(x,y,z,"sand");
            else{voxels.setVoxel(x,y,z,"dirt");for(let s=y+1;s<=waterLevel;s++)voxels.setVoxel(x,s,z,"water");}
            for(let s=1;s<y;s++)voxels.setVoxel(x,s,z,"dirt");
            if(Math.random()<0.1)await sleep(2);
        }
        
    }
    if(Tree){
        spawnTree();
    }
    console.log("生成完毕")
})()

why?


回复

上一页1 页 / 共 1下一页
成都胖达成都胖达

内个()不是复制吧(雾

点赞1


评论


刚Mi43刚Mi43

 

entity.spawnPoint

试一下()

点赞1


评论