UNPKG

protect-guard

Version:
460 lines 35.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const event_1 = require("bdsx/event"); const command_1 = require("bdsx/command"); const common_1 = require("bdsx/common"); const fs = require("fs"); const nativetype_1 = require("bdsx/nativetype"); var a = true; var masterData = []; const date = new Date(); let jsonObject; let x; let y; let z; let cmd; let jsi; command_1.command .register("pg", "protect world") .overload((param, origin, output) => { const actor = origin.getEntity(); Inspect(actor); }, { option: command_1.command.enum("ProtectGuard.i", "i"), }) .overload((param, origin, output) => { const actor = origin.getEntity(); Inspect(actor); }, { option: command_1.command.enum("ProtectGuard.inspect", "inspect"), }) .overload((param, origin, output) => { const actor = origin.getEntity(); cmd = `tellraw @s {"rawtext":[{"text":"§l§f----§3ProtectGuard§f----\n§3Version: §fProtectGuard v1.0\n§3Data: §f/bedrock_server/ProtectGuard\n§3Download §fhttps://github.com/RuneNight/GuardProtect\n§3Lisense §fMIT"}]}`; actor === null || actor === void 0 ? void 0 : actor.runCommand(cmd); }, { option: command_1.command.enum("ProtectGuard.status", "status"), }) .overload((param, origin, output) => { const actor = origin.getEntity(); var pg = `§l§f----§3ProtectGuard Restore§f----§r\n`; try { jsi = jsonObject.masterData.filter((item) => { if (item.Name == param.user && item.block == param.block) return true; }) || {}; let rba = ""; for (const i in jsi) { if (jsi[i].rb == "b") { rba = "placed"; actor === null || actor === void 0 ? void 0 : actor.runCommand("setblock " + jsi[i].x + " " + jsi[i].y + " " + jsi[i].z + " " + jsi[i].block); } else { rba = "removed"; actor === null || actor === void 0 ? void 0 : actor.runCommand("setblock " + jsi[i].x + " " + jsi[i].y + " " + jsi[i].z + " air"); } cmd = Cmd(pg, jsi[i].Now, jsi[i].Name, rba, jsi[i].block, jsi[i].x, jsi[i].y, jsi[i].z); pg = ""; actor === null || actor === void 0 ? void 0 : actor.runCommand(cmd); a = false; } } catch (e) { console.log(e); } if (a) { cmd = Nodata(param.user); actor === null || actor === void 0 ? void 0 : actor.runCommand(cmd); } }, { option: command_1.command.enum("ProtectGuard.restore", "restore"), user: nativetype_1.CxxString, block: nativetype_1.CxxString, }) .overload((param, origin) => { const actor = origin.getEntity(); var pg = `§l§f----§3ProtectGuard§f----§r\n`; a = true; let rba = ""; try { jsonObject = readJson(); } catch (e) { console.log(e); } try { jsi; jsonObject.masterData.filter((item) => { if (item.Name == param.text) return true; }) || {}; for (const i in jsi) { if (jsi[i].rb == "b") { rba = "placed"; } else { rba = "removed"; } cmd = Cmd(pg, jsi[i].Now, jsi[i].Name, rba, jsi[i].block, jsi[i].x, jsi[i].y, jsi[i].z); pg = ""; actor === null || actor === void 0 ? void 0 : actor.runCommand(cmd); a = false; } } catch (e) { console.log(e); } if (a) { cmd = Nodata(param.text); actor === null || actor === void 0 ? void 0 : actor.runCommand(cmd); } }, { option: command_1.command.enum("ProtectGuard.lookup", "lookup"), user: command_1.command.enum("ProtectGuard.lookup.user", "user"), text: nativetype_1.CxxString, }) .overload((param, origin) => { const actor = origin.getEntity(); var pg = `§l§f----§3ProtectGuard Rollback§f----§r\n`; a = true; let rba = ""; try { jsonObject = readJson(); } catch (e) { console.log(e); } try { jsi; jsonObject.masterData.filter((item) => { if (item.Name == param.user && item.block == param.block) return true; }) || {}; for (const i in jsi) { if (jsi[i].rb == "b") { rba = "placed"; actor === null || actor === void 0 ? void 0 : actor.runCommand("setblock " + jsi[i].x + " " + jsi[i].y + " " + jsi[i].z + " air"); } else { rba = "removed"; actor === null || actor === void 0 ? void 0 : actor.runCommand("setblock " + jsi[i].x + " " + jsi[i].y + " " + jsi[i].z + " " + jsi[i].block); } cmd = Cmd(pg, jsi[i].Now, jsi[i].Name, rba, jsi[i].block, jsi[i].x, jsi[i].y, jsi[i].z); pg = ""; actor === null || actor === void 0 ? void 0 : actor.runCommand(cmd); a = false; } } catch (e) { console.log(e); } if (a) { cmd = Nodata(param.user); actor === null || actor === void 0 ? void 0 : actor.runCommand(cmd); } }, { option: command_1.command.enum("ProtectGuard.rollback", "rollback"), user: nativetype_1.CxxString, block: nativetype_1.CxxString, }) .overload((param, origin) => { const actor = origin.getEntity(); var pg = `§l§f----§3ProtectGuard§f----§r\n`; a = true; let rba = ""; try { jsonObject = readJson(); } catch (e) { console.log(e); } try { jsi = jsonObject.MasterData.filter((item) => { if (item.x == param.x && item.y == param.y && item.z == param.z) return true; }) || {}; for (const i in jsi) { if (jsi[i].rb == "b") { rba = "placed"; } else { rba = "removed"; } cmd = Cmd(pg, jsi[i].Now, jsi[i].Name, rba, jsi[i].block, jsi[i].x, jsi[i].y, jsi[i].z); pg = ""; actor === null || actor === void 0 ? void 0 : actor.runCommand(cmd); a = false; } } catch (e) { console.log(e); } if (a) { let xyz = param.x + `/` + param.y + `/` + param.z; cmd = Nodata(xyz); actor === null || actor === void 0 ? void 0 : actor.runCommand(cmd); } }, { option: command_1.command.enum("ProtectGuard.lookup", "lookup"), user: command_1.command.enum("ProtectGuard.lookup.xyz", "xyz"), x: nativetype_1.int32_t, y: nativetype_1.int32_t, z: nativetype_1.int32_t, }) .overload((param, origin) => { const actor = origin.getEntity(); var pg = `§l§f----§3ProtectGuard§f----§r\n`; a = true; let rba = ""; try { jsonObject = readJson(); } catch (e) { console.log(e); } try { jsi = jsonObject.masterData.filter((item) => { return true; }) || {}; for (const i in jsi) { if (jsi[i].rb == "b") { rba = "placed"; } else { rba = "removed"; } cmd = Cmd(pg, jsi[i].Now, jsi[i].Name, rba, jsi[i].block, jsi[i].x, jsi[i].y, jsi[i].z); pg = ""; actor === null || actor === void 0 ? void 0 : actor.runCommand(cmd); a = false; } } catch (e) { console.log(e); } if (a) { let xyz = x + "/" + y + "/" + z; cmd = Nodata(xyz); actor === null || actor === void 0 ? void 0 : actor.runCommand(cmd); } }, { option: command_1.command.enum("ProtectGuard.near", "near"), r: nativetype_1.int32_t, }) .overload((param, origin) => { const actor = origin.getEntity(); cmd = `tellraw @s {"rawtext":[{"text":"§l§f---- §3ProtectGuard Help §f----\n§3/pg §7help §f- Display more info for that command.\n§3/pg §7inspect §f - Turns the block inspector on or off.\n§3/pg §7rollback §3<params> §f- Rollback block data.\n§3/pg §7lookup §3<params> §f- Advanced block data lookup.\n§3/pg §7status §f- Displays the plugin status."}]}`; actor === null || actor === void 0 ? void 0 : actor.runCommand(cmd); }, { option: command_1.command.enum("ProtectGuard.help", "help"), }); event_1.events.blockDestroy.on((ev) => { if (ev.player.hasTag("inspect")) { a = true; var pg = `§l§f----§3ProtectGuard§f---- §r§7(x` + ev.blockPos.x + `/y` + ev.blockPos.y + `/z` + ev.blockPos.z + `)\n`; let rba = ""; try { jsonObject = readJson(); } catch (e) { console.log(e); } try { jsi = jsonObject.masterData.filter((item) => { if (item.x == ev.blockPos.x && item.y == ev.blockPos.y && item.z == ev.blockPos.z) return true; }) || {}; for (const i in jsi) { if (jsi[i].rb == "b") { rba = "placed"; } else { rba = "removed"; } cmd = Cmd(pg, jsi[i].Now, jsi[i].Name, rba, jsi[i].block, jsi[i].x, jsi[i].y, jsi[i].z); pg = ""; ev.player.runCommand(cmd); a = false; } } catch (e) { console.log(e); } if (a) { cmd = Nodata(ev.blockSource.getBlock(ev.blockPos).getName().replace("minecraft:", "")); ev.player.runCommand(cmd); } return common_1.CANCEL; } else { var Now = TimeNow(); var data = { Name: ev.player.getName(), rb: "r", block: ev.blockSource .getBlock(ev.blockPos) .getName() .replace("minecraft:", ""), x: ev.blockPos.x, y: ev.blockPos.y, z: ev.blockPos.z, date: Now, }; masterData.push(data); let masterData2 = JSON.stringify({ masterData }, null, " "); fs.writeFileSync("./block.json", masterData2); } }); event_1.events.blockPlace.on((ev) => { if (ev.player.hasTag("inspect")) { a = true; var pg = `§l§f----§3ProtectGuard§f---- §r§7(x` + ev.blockPos.x + `/y` + ev.blockPos.y + `/z` + ev.blockPos.z + `)\n`; let rba = ""; try { jsonObject = readJson(); } catch (e) { console.log(e); } try { jsi = jsonObject.masterData.filter((item) => { if (item.x == ev.blockPos.x && item.y == ev.blockPos.y && item.z == ev.blockPos.z) return true; }) || {}; for (const i in jsi) { if (jsi[i].rb == "b") { rba = "placed"; } else { rba = "removed"; } cmd = Cmd(pg, jsi[i].Now, jsi[i].Name, rba, jsi[i].block, jsi[i].x, jsi[i].y, jsi[i].z); pg = ""; ev.player.runCommand(cmd); a = false; } } catch (e) { console.log(e); } if (a) { cmd = Nodata(ev.block.getName().replace("minecraft:", "")); ev.player.runCommand(cmd); } return common_1.CANCEL; } else { var Now = TimeNow(); var data = { Name: ev.player.getName(), rb: "b", block: ev.block.getName().replace("minecraft:", ""), x: ev.blockPos.x, y: ev.blockPos.y, z: ev.blockPos.z, date: Now, }; masterData.push(data); let masterData2 = JSON.stringify({ masterData }, null, " "); fs.writeFileSync("./block.json", masterData2); } }); event_1.events.playerJoin.on((ev) => { ev.player.runCommand("tag @s remove inspect"); }); const Inspect = function (actor) { if (actor === null || actor === void 0 ? void 0 : actor.hasTag("inspect")) { cmd = `tellraw @s {"rawtext":[{"text":"§l§3ProtectGuard §f- Inspect now disabled"}]}`; actor === null || actor === void 0 ? void 0 : actor.removeTag("inspect"); actor === null || actor === void 0 ? void 0 : actor.runCommand(cmd); } else { cmd = `tellraw @s {"rawtext":[{"text":"§l§3ProtectGuard §f- Inspect now enabled"}]}`; actor === null || actor === void 0 ? void 0 : actor.addTag("inspect"); actor === null || actor === void 0 ? void 0 : actor.runCommand(cmd); } }; const readJson = function () { return JSON.parse(fs.readFileSync("./block.json", "utf8")); }; const Nodata = function (name) { return (`tellraw @s {"rawtext":[{"text":"§l§3ProtectGuard §f- No block data found at ` + name + `"}]}`); }; const Cmd = function (pg, now, name, rba, block, x, y, z) { return (`tellraw @s {"rawtext":[{"text":"` + pg + `§7` + now + ` §l§f - §3` + name + ` §f` + rba + ` §3` + block + ` §r§7(location: ` + x + `,` + y + `,` + z + ` )"}]}`); }; const TimeNow = function () { let TYear = date.getFullYear().toString(); var TMonth2 = date.getMonth() + 1; var TMonth = TMonth2.toString(); let TDate = date.getDate().toString(); let THour = date.getHours().toString(); let TMinutes = date.getMinutes().toString(); let TSeconds = date.getSeconds().toString(); var Now = TYear + "," + TMonth + "," + TDate + "," + THour + "," + TMinutes + "," + TSeconds; return Now; }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvdGVjdEd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiUHJvdGVjdEd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsc0NBQW9DO0FBQ3BDLDBDQUF1QztBQUN2Qyx3Q0FBcUM7QUFDckMseUJBQXlCO0FBQ3pCLGdEQUFxRDtBQUVyRCxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDYixJQUFJLFVBQVUsR0FRUixFQUFFLENBQUM7QUFDVCxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO0FBQ3hCLElBQUksVUFBZSxDQUFDO0FBQ3BCLElBQUksQ0FBUyxDQUFDO0FBQ2QsSUFBSSxDQUFTLENBQUM7QUFDZCxJQUFJLENBQVMsQ0FBQztBQUNkLElBQUksR0FBVyxDQUFDO0FBQ2hCLElBQUksR0FBVyxDQUFDO0FBRWhCLGlCQUFPO0tBQ0osUUFBUSxDQUFDLElBQUksRUFBRSxlQUFlLENBQUM7S0FDL0IsUUFBUSxDQUNQLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRTtJQUN4QixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDakMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2pCLENBQUMsRUFDRDtJQUNFLE1BQU0sRUFBRSxpQkFBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLENBQUM7Q0FDNUMsQ0FDRjtLQUNBLFFBQVEsQ0FDUCxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUU7SUFDeEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2pDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNqQixDQUFDLEVBQ0Q7SUFDRSxNQUFNLEVBQUUsaUJBQU8sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsU0FBUyxDQUFDO0NBQ3hELENBQ0Y7S0FDQSxRQUFRLENBQ1AsQ0FBQyxL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