用户:
KO轩查看:1 回复:2 评论:1 创建时间:2024-01-27T17:33:31
这个代码为什么运行后10秒后连续报错?
world.onFluidEnter(({entity})=>{
entity.position.copy(entity.player.spawnPoint);
entity.player.directMessage("不要灰心,再来一次!");
})

看一下完整的:
//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?