欢迎光临散文网 会员登陆 & 注册

box3速建代码介绍-123+填充

2023-07-13 14:19 作者:tcpcs  | 我要投稿

console.clear();

const admin = ['tater'];/*在此添加名称*/

var message_in_num_123 = {

  'zero': { num: 0 },

  'one': { num: 0 },

  'two': { num: 0 },

  'three': { num: 0 },

  'add': { num: 0 },

  'T': { num: 0 },

  'A': { num: 0 },

  'E': { num: 0 },

  'H': { num: 0 },

  'R': { num: 0 },

  'N': { num: 0 },

};

const message_in_123 = Object.keys(message_in_num_123);

function getget1_123(message, entity) {

  let shape = voxels.shape;

  let data = [-1, -1, -1, -1, -1, -1];

  let voxel_on = [0, 0];

  let voxel_in = [0, 0];

  for (var x = 0; x <= shape.x; x++) {

    for (var y = 0; y <= shape.y; y++) {

      for (var z = 0; z <= shape.z; z++) {

        if (voxels.getVoxelId(x, y, z) === voxels.id(message)) {

          if (data[0] == -1) {

            data[0] = x;

            data[1] = y;

            data[2] = z;

            voxel_on[0] = voxels.getVoxel(x, y + entity.pos_123, z);

            voxel_in[0] = voxels.getVoxel(x, y + entity.pos_123 + 1, z);

          }

          else {

            data[3] = x;

            data[4] = y;

            data[5] = z;

            voxel_on[1] = voxels.getVoxel(x, y + entity.pos_123, z);

            voxel_in[1] = voxels.getVoxel(x, y + entity.pos_123 + 1, z);

            break;

          }

        }

      }

    }

  }

  return [data, voxel_on, voxel_in];

}

function getget2_123(message, entity) {

  let shape = voxels.shape;

  let va = [];

  for (let x = 0; x <= shape.x; x++) {

    for (let y = 0; y <= shape.y; y++) {

      for (let z = 0; z <= shape.z; z++) {

        if (voxels.getVoxelId(x, y, z) == voxels.id(message)) {

          va.push(x, y, z, voxels.getVoxelId(x, y + entity.pos_123, z));

        }

      }

    }

  }

  return va;

}

function sphere_123(vox, cx, cy, cz, radius) {

  for (let x = cx - radius; x <= cx + radius; x++) {

    for (let y = cy - radius; y <= cy + radius; y++) {

      for (let z = cz - radius; z <= cz + radius; z++) {

        let dx = x - cx; let dy = y - cy; let dz = z - cz;

        if (Math.round(Math.sqrt(dx * dx + dy * dy + dz * dz)) <= radius) {

          voxels.setVoxel(x, y, z, vox);

        }

      }

    }

  }

}

function cylinder_123(vox, cx, cy, cz, radius, height) {

  for (let x = cx - radius; x <= cx + radius; x++) {

    for (let z = cz - radius; z <= cz + radius; z++) {

      let dx = x - cx; let dz = z - cz;

      if (Math.round(Math.sqrt(dx * dx + dz * dz)) <= radius) {

        for (let y = cy; y < cy + height; y++) {

          voxels.setVoxel(x, y, z, vox);

        }

      }

    }

  }

}

async function start_time_123(entity) {

  let shape = voxels.shape;

  message_in_num_123 = {

    'zero': { num: 0 },

    'one': { num: 0 },

    'two': { num: 0 },

    'three': { num: 0 },

    'add': { num: 0 },

    'T': { num: 0 },

    'A': { num: 0 },

    'E': { num: 0 },

    'H': { num: 0 },

    'R': { num: 0 },

    'N': { num: 0 },

  };

  for (let x = 0; x <= shape.x; x++) {

    for (let y = 0; y <= shape.y; y++) {

      for (let z = 0; z <= shape.z; z++) {

        if (message_in_123.includes(voxels.name(voxels.getVoxel(x, y, z)))) {

          message_in_num_123[voxels.name(voxels.getVoxel(x, y, z))].num++;

        }

      }

    }

    await sleep(0.01);

  }

  for (let key in message_in_123) {

    if (message_in_num_123[message_in_123[key]].num == 0) continue;

    console.log(message_in_123[key] + ':' + message_in_num_123[message_in_123[key]].num);

  }

  entity.player.directMessage('启动完成');

  return;

}

const Fill_123 = {

  'BLO': {/*方块*/

    Fill_Block: async function (message, entity) {

      let data = getget1_123(message, entity)[0];

      let voxel_on = getget1_123(message, entity)[1];

      if (data[3] === -1) return;

      for (let x1 = (data[0] <= data[3] ? data[0] : data[3]); x1 <= (data[0] >= data[3] ? data[0] : data[3]); x1++) {

        for (let y1 = (data[1] <= data[4] ? data[1] : data[4]); y1 <= (data[1] >= data[4] ? data[1] : data[4]); y1++) {

          for (let z1 = (data[2] <= data[5] ? data[2] : data[5]); z1 <= (data[2] >= data[5] ? data[2] : data[5]); z1++) {

            voxels.setVoxelId(x1, y1, z1, (voxel_on[0] == 0 ? voxel_on[1] : voxel_on[0]));

          }

        }

        await sleep(0.01);

      }

      entity.player.directMessage('方块填充完毕')

    }

  },

  'FIN': {/*查找*/

    Fill_Block: async function (message, entity) {

      let shape = voxels.shape;

      let number = 0;

      for (let x = 0; x <= shape.x; x++) {

        for (let y = 0; y <= shape.y; y++) {

          for (let z = 0; z <= shape.z; z++) {

            if (voxels.getVoxelId(x, y, z) == voxels.id(message)) {

              number++

            }

          }

        }

      }

      entity.player.directMessage(` ${message} 方块有 ${number} 个`)

    }

  },

  'CIR': {/*圆*/

    Fill_Block: async function (message, entity) {

      let va = getget2_123(message, entity);

      for (let x1 = 0; x1 < va.length; x1 += 4) {

        sphere_123(va[x1 + 3], va[x1], va[x1 + 1], va[x1 + 2], entity.rad_123);

        await sleep(0.01);

      }

      entity.player.directMessage(`圆建造完成,累计 ${va.length / 4} 个`)

    }

  },

  'TAL': {/*圆柱*/

    Fill_Block: async function (message, entity) {

      let va = getget2_123(message, entity);

      for (let x1 = 0; x1 < va.length; x1 += 4) {

        cylinder_123(va[x1 + 3], va[x1], va[x1 + 1], va[x1 + 2], entity.rad_123, entity.hei_123);

        await sleep(0.001);

      }

      entity.player.directMessage(`圆柱建造完成,累计 ${va.length / 4} 个`)

    }

  },

  'REP': {/*方块替换*/

    Fill_Block: async function (message, entity) {

      let data = getget1_123(message, entity)[0];

      let voxel_on = getget1_123(message, entity)[1];

      let voxel_in = getget1_123(message, entity)[2];

      if (data[3] === -1) return;

      for (let x1 = (data[0] <= data[3] ? data[0] : data[3]); x1 <= (data[0] >= data[3] ? data[0] : data[3]); x1++) {

        for (let y1 = (data[1] <= data[4] ? data[1] : data[4]); y1 <= (data[1] >= data[4] ? data[1] : data[4]); y1++) {

          for (let z1 = (data[2] <= data[5] ? data[2] : data[5]); z1 <= (data[2] >= data[5] ? data[2] : data[5]); z1++) {

            if (voxels.getVoxel(x1, y1, z1) == (voxel_in[0] == 0 ? voxel_in[1] : voxel_in[0])) {

              voxels.setVoxelId(x1, y1, z1, (voxel_on[0] == 0 ? voxel_on[1] : voxel_on[0]));

            }

          }

        }

        await sleep(0.001);

      }

      entity.player.directMessage('方块替换完毕')

    }

  },

};

function init_123(entity) {

  entity.pos_123 = 1;

  entity.rad_123 = 1;

  entity.hei_123 = 1;

  entity.player.directMessage('123+已自动初始化');

};

world.onChat(async ({ entity, message }) => {

  if (!admin.includes(entity.player.name)) return;

  if (!entity.pos_123) { await init_123(entity); }

  let message_new = message.split(';');

  for (let a = 0; a < message_new.length; a++) {

    let c = message_new[a].split(/\s+/);

    if (c[0] !== 'A') { return; }

    switch (c[1]) {

      case 'INT':

        console.clear();

        console.log(

          `名称:123+填充\n

          作者:tater\n

          鸣谢:屑阿鱼 三角函数 Nelson 及其他试用、提供技术支持者\n

          用法:\n

          (注意空格)(程序可用分号间隔)(BLO请注意关注地图指定方块数量)\n

          0.A STA\n

          可用方块:\n${message_in_123}\n

          (没错程序要从0开始数owo)可查看地图被占用方块数\n

          显示在控制台,显示为 可用方块名+此方块数量\n

          1.A BLO 方块名称\n

          如A BLO add\n

          填充两个方块形成的长方体/正方体\n

          只需在其中一个方块的POS位置放置要填充的方块即可(不放为清除)\n

          2.A FIN 方块名称\n

          查找方块有多少个,不限制方块名称\n

          3.A CIR 方块名称\n

          速建球,半径为RAD\n

          只需要放置一个方块,可同时速建多个\n

          4.A TAL 方块名称\n

          速建圆柱,半径为RAD,高度为HEI\n

          只需要放置一个方块,可同时速建多个\n

          5.A REP 方块替换\n

          类似BLO的放置方法,但需要在其中一个方块的POS位置上放置两个方块\n

          从下往上为替换方块、被替换方块(不放为清除)\n

          6.A POS RAD HEI\n

          例如:\n

          A POS 1\n

          A RAD 1\n

          A HEI 1\n

          默认值:1\n

          7.clear\n

          清空控制台\n

          留言:如想要其他速建或给出建议请私聊(Q在总群能搜索到)\n

          谢谢@@`,

        );

        continue;

      case 'STA':

        await start_time_123(entity); continue;

      case 'FIN':

        await Fill_123[c[1]].Fill_Block(c[2], entity); continue;

      case 'POS':

        entity.pos_123 = parseInt(c[2]);

        if (!entity.pos_123 || entity.pos_123 == 0) {

          entity.pos_123 = 1;

        } entity.player.directMessage(`已将pos设置为 ${entity.pos_123}`);

        continue;

      case 'RAD':

        entity.rad_123 = parseInt(c[2]);

        if (!entity.rad_123 || entity.rad_123 == 0) {

          entity.rad_123 = 1;

        } entity.player.directMessage(`已将rad设置为 ${entity.rad_123}`);

        continue;

      case 'HEI':

        entity.hei_123 = parseInt(c[2]);

        if (!entity.hei_123 || entity.hei_123 == 0) {

          entity.hei_123 = 1;

        } entity.player.directMessage(`已将hei设置为 ${entity.hei_123}`);

        continue;

      case 'clear':

        console.clear();

        continue;

      default:

        await Fill_123[c[1]].Fill_Block(c[2], entity);

        continue;

    }

  }

})


box3速建代码介绍-123+填充的评论 (共 条)

分享到微博请遵守国家法律