187 lines
6.9 KiB
JavaScript
187 lines
6.9 KiB
JavaScript
const bds = require("../index")
|
|
const { CheckBan } = require("./check");
|
|
const { GetPlatform, GetPaths } = require("../lib/BdsSettings");
|
|
const fs = require("fs");
|
|
|
|
function MytypeKill(player) {
|
|
console.warn(`Player ${player} tried to connect to the server`)
|
|
let removeUser = `tp "${player}" ~ 128 ~`
|
|
console.log(removeUser);
|
|
var RemoveUser = setInterval(() => {
|
|
bds.command(removeUser);
|
|
bds_server_string.stdout.on("data", (data) => {
|
|
if (data.includes("disconnected:")) {
|
|
if (data.includes(player)) clearInterval(RemoveUser);
|
|
}
|
|
})
|
|
|
|
}, 6 * 1000);
|
|
return RemoveUser;
|
|
}
|
|
|
|
function Bedrock(data){
|
|
const file_users = fs.readFileSync(GetPaths("player"), "utf8");
|
|
const users = JSON.parse(file_users);
|
|
const CurrentData = new Date();
|
|
for (let line of data.split(/\r?\n/g)) {
|
|
if (line.includes("connected:")) {
|
|
line = line.replace("[INFO] Player ", "").trim()
|
|
let GetSatatus = line.trim().split(/\s+/g)[0];
|
|
const GetUser = [];
|
|
for (let index of line.trim().replace("connected:", "").replace("dis", "").trim().split(", xuid:")) if (index !== "") GetUser.push(index.trim());
|
|
// -------------------------------------------------
|
|
var username = GetUser[0];
|
|
console.log(GetUser);
|
|
// User Connected
|
|
if (GetSatatus === "connected:") {
|
|
if (CheckBan(username)) MytypeKill(username)
|
|
else if (users.bedrock[username] === undefined) {
|
|
var xuid = GetUser[1];
|
|
users.bedrock[username] = {
|
|
date: CurrentData,
|
|
connected: true,
|
|
xboxID: xuid,
|
|
update: [
|
|
{
|
|
date: CurrentData,
|
|
connected: true,
|
|
}
|
|
]
|
|
}
|
|
} else {
|
|
users.bedrock[username].connected = true
|
|
users.bedrock[username].date = CurrentData
|
|
users.bedrock[username].update.push({
|
|
date: CurrentData,
|
|
connected: true,
|
|
})
|
|
}
|
|
}
|
|
// User Disconnected
|
|
else if (GetSatatus === "disconnected:") {
|
|
if (!(CheckBan(username))){
|
|
users.bedrock[username].connected = false
|
|
users.bedrock[username].date = CurrentData
|
|
users.bedrock[username].update.push({
|
|
date: CurrentData,
|
|
connected: false,
|
|
})
|
|
}
|
|
}
|
|
}
|
|
}
|
|
fs.writeFileSync(GetPaths("player"), JSON.stringify(users, null, 2))
|
|
if (users.bedrock[username]) return true
|
|
else return false
|
|
}
|
|
|
|
function Pocketmine(data){
|
|
const UTF8Users = fs.readFileSync(GetPaths("player"), "utf8");
|
|
const users = JSON.parse(UTF8Users);
|
|
const CurrentData = new Date();
|
|
|
|
// Init
|
|
for (let line of data.split(/\r?\n/g)) {
|
|
line = line.replace(/\[[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\] \[Server thread\/INFO\]: /, "").trim();
|
|
const currenttosave = {
|
|
username: line.replace("joined the game", "").replace("left the game", "").trim(),
|
|
join: line.includes("joined"),
|
|
left: line.includes("left")
|
|
}
|
|
if (currenttosave.join){
|
|
const username = currenttosave.username;
|
|
if (users.pocketmine[username]) {
|
|
users.pocketmine[username].connected = true
|
|
users.pocketmine[username].date = CurrentData
|
|
users.pocketmine[username].update.push({
|
|
date: CurrentData,
|
|
connected: true,
|
|
})
|
|
} else {
|
|
users.pocketmine[username] = {
|
|
connected: true,
|
|
date: CurrentData,
|
|
update: [
|
|
{
|
|
date: CurrentData,
|
|
connected: true,
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
else if (currenttosave.left){
|
|
const username = currenttosave.username;
|
|
if (users.pocketmine[username]) {
|
|
users.pocketmine[username].connected = false
|
|
users.pocketmine[username].date = CurrentData
|
|
users.pocketmine[username].update.push({
|
|
date: CurrentData,
|
|
connected: false,
|
|
})
|
|
}
|
|
}
|
|
}
|
|
fs.writeFileSync(GetPaths("player"), JSON.stringify(users, null, 2))
|
|
return users
|
|
}
|
|
|
|
function java(data){
|
|
const UTF8Users = fs.readFileSync(GetPaths("player"), "utf8");
|
|
const users = JSON.parse(UTF8Users);
|
|
const CurrentData = new Date();
|
|
|
|
// Init
|
|
for (let line of data.split(/\r?\n/g)) {
|
|
line = line.replace(/\[[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\] \[Server thread\/INFO\]:/, "").trim();
|
|
const currenttosave = {
|
|
username: line.replace("joined the game", "").replace("left the game", "").trim(),
|
|
join: line.includes("joined the"),
|
|
left: line.includes("left the")
|
|
}
|
|
if (currenttosave.join){
|
|
const username = currenttosave.username;
|
|
if (users.java[username]) {
|
|
users.java[username].connected = true
|
|
users.java[username].date = CurrentData
|
|
users.java[username].update.push({
|
|
date: CurrentData,
|
|
connected: true,
|
|
})
|
|
} else {
|
|
users.java[username] = {
|
|
connected: true,
|
|
date: CurrentData,
|
|
update: [
|
|
{
|
|
date: CurrentData,
|
|
connected: true,
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
else if (currenttosave.left){
|
|
const username = currenttosave.username;
|
|
if (users.java[username]) {
|
|
users.java[username].connected = false
|
|
users.java[username].date = CurrentData
|
|
users.java[username].update.push({
|
|
date: CurrentData,
|
|
connected: false,
|
|
})
|
|
}
|
|
}
|
|
}
|
|
fs.writeFileSync(GetPaths("player"), JSON.stringify(users, null, 2))
|
|
return users
|
|
}
|
|
|
|
module.exports = function (data){
|
|
if (GetPlatform() === "bedrock") return Bedrock(data);
|
|
else if (GetPlatform() === "java") return java(data);
|
|
else if (GetPlatform() === "pocketmine") return Pocketmine(data);
|
|
else if (GetPlatform() === "jsprismarine") return false
|
|
else throw new Error("Plafotform Error !!")
|
|
};
|