protect-guard
Version:
460 lines • 35.3 kB
JavaScript
;
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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