box3plus合规版

box3plus合规版,不含任何违规内容

Install this script?
Author's suggested script

You may also like box3体验优化.

Install this script
// ==UserScript==
// @name         box3plus合规版
// @version      0.0.12.230104
// @description  box3plus合规版,不含任何违规内容
// @author       _async_function_
// @match        https://preprod.box3.codemao.cn/*
// @match        https://box3.codemao.cn/*
// @match        https://box3.fun/*
// @icon         https://static.box3.codemao.cn/img/QmUX51Fo1NTRP5H4cQa4UMcTCP7ZhyDwLvQsKM2zbStdMJ_520_216_cover.avif
// @grant        GM_xmlhttpRequest
// @require      https://cdn.jsdelivr.net/npm/lil-gui@0.16
// @require      https://cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js
// @namespace    https://greasyfork.org/zh-CN/users/942818-async-function
// @license      GPL-3.0-only
// ==/UserScript==

'use strict';
function sleep(ms) {
    return new Promise(function (resolve, reject) {
        setTimeout(function () {
            console.log('sleep end');
            resolve();
        }, ms);
    });
}
(async function main() {
    function load() {
        try {
            if (window.location.href.includes('/p/')) {
                var box3CoreElement = document.querySelector('#react-container');
                var reactNodeName = Object.keys(box3CoreElement).filter(function (v) {
                    return v.includes('reactContain');
                })[0];
                var core =
                    box3CoreElement[reactNodeName].updateQueue.baseState.element.props.children
                        .props.children.props;
                window.core = core;
            }
            if (window.location.href.includes('/e/')) {
                document.func = document.querySelector('.desktop')._reactRootContainer._internalRoot.current.updateQueue.baseState.element.props.children.props.children.props;
            }
            return true;
        } catch (e) {
            console.warn(e);
            return undefined;
        }
    }
    async function waitLoad() {
        while (true) {
            if (load()) {
                load();
                break;
            }
            await sleep(100);
        }
        console.log('box3plus加载完毕');
    }
    var tips = {
        'tips': function () {
            alert('az,这是合规版,此功能已关闭');
        },
    };
    var time = {
        'switch': function () {
            if (window.location.href.includes('preprod')) {
                alert('即将跳转至当前版本');
                window.location.href = 'https://box3.codemao.cn';
            } else {
                alert('即将跳转至远古版本');
                window.location.href = 'https://preprod.box3.codemao.cn';
            }
        },
    };
    var CodemaoCloudTool = {
        'upload': function() {
            var input = document.createElement('input');
            input.type = 'file';
            input.style.display = 'none';
            input.addEventListener('change', () => {
                uploadButton.disable();
                let reader = new FileReader();
                reader.addEventListener('load', () => {
                    GM_xmlhttpRequest({
                        method: 'post',
                        url: 'https://static.box3.codemao.cn/block',
                        data: reader.result,
                        binary: true,
                        onload({ response }) {
                            var { Key, Size } = JSON.parse(response);
                            alert(
                                '上传成功!\n\nHash: ' +
                                Key +
                                '\n\n Size:' +
                                Size +
                                '\n\n即将跳转,请稍等'
                            );
                            uploadButton.enable();
                            input.remove();
                            window.open('https://static.box3.codemao.cn/block/' + Key);
                        },
                    });
                });
                reader.readAsBinaryString(input.files[0]);
            });
            input.click();
        },
    };
    window.gui = new lil.GUI({ title: '🧰box3plus合规版' });
    gui.add(time, 'switch').name('切换版本');
    var CodemaoCloud = gui.addFolder('Codemao Cloud ©2022 Edgar_勿安').close();
    var uploadButton = CodemaoCloud.add(CodemaoCloudTool, 'upload').name('上传文件');
    if (window.location.href.includes('/p/')) {
        await waitLoad();
        while (true) {
            if (core.state.box3.loading.appLoaded) break;
            await sleep(100);
        }
        var map = {
            '大小': function () {
                alert('地图尺寸为:' + core.state.box3.state.voxel.shape);
            },
            '展示图': function () {
                var pictures = core.state.prevUIState.gameInfo.banner;
                pictures.forEach(function (pic, index) {
                    var text = 'https://static.box3.codemao.cn/block/' + pic;
                    document.write('<p>展示图' + String(index + 1) + ':' + text.link(text) + '</p>');
                });
            },
        };
        var player = {
            '发送': function () {
                var content = prompt('请输入消息');
                if(content.length < 500) core.state.box3.chat.sendMessage(content);
                else alert('消息过长!');
            },
        };
        gui.title('🧰box3plus合规版(playMode)');
        var page1 = gui.addFolder('地图');
        page1.add(map, '大小').name('地图尺寸');
        page1.add(map, '展示图').name('爬取展示图');
        var page2 = gui.addFolder('玩家');
        var page2_1 = page2.addFolder('通用');
        page2_1.add(player, '发送').name('发送长文本');
    } else if (window.location.href.includes('/e/')) {
        await waitLoad();
        document.func.onStart();
        var map = {};
        var code = {};
        gui.title('🧰box3plus合规版(editMode)');
        window.gui.domElement.style.top = 'unset';
        window.gui.domElement.style.bottom = '0';
        window.gui.domElement.style.userSelect = 'none';
    } else if (window.location.href.includes('me/content')) {
        async function creat(hash, size) {
            axios({
                  method: 'post',
                  url: 'https://backend.box3.fun/container/create-game-edit',
                  data: JSON.parse(`{"image":"Qmdkqjkx8YXCEzQuNrZhEr75dpRGHcWY7oiCxg5oQqfzox.png","name":"空白的地图(${size}) (未激活)","describe":"${size}","hash":"${hash}","resourceId":0}`),
                  withCredentials: true
            })
            .then(({
                request
            }) => {
                console.log(JSON.parse(request.responseText)['data']['value'].slice(5));
            });
            location.reload();
        }
        var create = {
            '704': function () {
                if (confirm('确认创建256*256*704地图?')) {
                    creat('QmTuELNrZixUHYytsqJAUCw8R22868ePtkNCQ4DMUd8wCg', '256*256*704');
                }
            },
            '1024': function () {
                if (confirm('确认创建1024*64*1024地图?')) {
                    creat('QmNorKXGb2RwP3KRQBpkH2vfJJ4ziva5qMc1cU6SJyBSTa', '1024*64*1024');
                }
            },
        };
        var custom = {
            'x': 64,
            'y': 64,
            'z': 64,
            'pg': false,
            create: function () {
              async function fetchVoxels(x, y, z) {
                  var ret;
                  if (x * y * z < 32768 || x * y * z > 67108864 || (x * y * z % 32768 != 0)) {
                      alert('数值错误!');
                      return null;
                  }
                  var chunks = new Array(x * y * z / 32768).fill('"QmYUffAgALxiUQonbhAVXjknTq3dNf3AfHQGQ8P5xny7TU"');
                  var voxels = `{"chunks": [${chunks}],"shape": {"x": ${x},"y": ${y},"z": ${z}}}`;
                  console.log('chunk=' + chunks.length);
                  return fetch('https://static.box3.codemao.cn/block/', { method: 'POST', body: voxels });
              }
              var { x, y, z, pg } = custom;
              fetchVoxels(x, y, z)
                  .then(response => {
                      var res = response.json();
                      return res;
                  })
                  .then(result => result.Key)
                  .then(async function (voxelsHash) {
                      console.log('voxelhash=' + voxelsHash);
                      if (voxelsHash == null) return;
                      if (!confirm("提示:确认创建?")) return;
                      var hash;
                      var sql;
                      var date = new Date();
                      var time = `${date.getFullYear()}-${date.getMonth()}-${date.getDate()}T${date.getHours()}:${date.getMinutes()}:00.000Z`;
                      if (pg) {
                          sql = 'pg';
                      } else {
                          sql = 'sqlite';
                      }
                      var mpbody = `{"ambientSound":"QmcNbLSSQfVcDpH9jSX38RSVrL1SZK3vNMZwaP7cMkKqvY","assets":"QmdEyTaW4uENRCGu9cSUPFNDH5vJRX8n4BxtJYuzVs2kn1","collisionFilter":[],"committerId":0,"deleteAssets":"QmTgK2uYPscacJ9KaBS8tryXRF5mvjuRbubF7h9bG2GgoN","editRoot":"QmTgK2uYPscacJ9KaBS8tryXRF5mvjuRbubF7h9bG2GgoN","entities":"QmSvPd3sHK7iWgZuW47fyLy4CaZQe2DwxvRhrJ39VpBVMK","environment":"QmRC98696VxEVsScYsChTzU2uDguFBboruxKYhwtFnAPK7","features":{"enableTriggerAPI":true},"folders":"QmSvPd3sHK7iWgZuW47fyLy4CaZQe2DwxvRhrJ39VpBVMK","info":"QmXNsFZxmhdfyMbdc6BaoDgkfWAjgbPGrps3UNk3tJLNiR","physics":"QmTzt6Z6Mm11NQjTeXspDMJtddzDadzwhgwfWUtNG5XCrD","player":"QmWQFyBpZtExUarsF59BJqscyBebfM4nzWE45uo5tV8mvR","prevHash":"QmP2c7LxFD2j2EBk6inaDhhBE2DuuQ2TLtJRNpKXLyvbuL","scriptAssets":"QmRMAD8RuRMvKXr2EQ4WtGmoFsg4gf67qrGemGTQ7may93","scriptIndex":"index.js","storageMode":"${sql}","timestamp":"${time}","type":"project","version":"0.3.11","voxels":"${voxelsHash}","zones":"QmTgK2uYPscacJ9KaBS8tryXRF5mvjuRbubF7h9bG2GgoN"}`;
                      await fetch('https://static.box3.codemao.cn/block/', { method: 'POST', body: mpbody }).then(async function (response) {
                          var k = await response.json();
                          hash = k.Key;
                          console.log(hash);
                      }).catch(function () {
                          console.log('catch')
                      });
                      console.log(hash)
                      creat(hash, `${x}*${y}*${z}的地图`)
                  });
            }
        };
        window.gui.domElement.style.top = 'unset';
        window.gui.domElement.style.bottom = '0';
        window.gui.domElement.style.userSelect = 'none';
        var page1 = gui.addFolder('创建地图');
        var page1_1 = page1.addFolder('创建超大地图');
        page1_1.add(create, '704').name('创建256*256*704地图');
        page1_1.add(create, '1024').name('创建1024*64*1024地图');
        var page1_2 = page1.addFolder('自定义地图');
        page1_2.add(custom, 'x', 1, 2048, 1).name('x');
        page1_2.add(custom, 'y', 1, 2048, 1).name('y');
        page1_2.add(custom, 'z', 1, 2048, 1).name('z');
        page1_2.add(custom, 'pg').name('使用pg数据库?');
        page1_2.add(custom, 'create').name('创建');
    }
})();