#PlayerSpawn Event dont work

1 messages · Page 1 of 1 (latest)

tiny jasper
#

here is the code

import { world } from "@minecraft/server";
import { expiresTime } from "../../main/Functions/expiresTime.js";
import { DynamicDB } from "../../main/Functions/database.js";

let db = new DynamicDB("Banlist", world);

if (!db.get("Banlist")) {
  db.set("Banlist", {
    enable: false,
    banlist: []
  });
  db.save();
}

world.afterEvents.playerSpawn.subscribe((data) => {
    let player = data.player;
    
    let playerName = player.name.toLowerCase(); 
     
    checkAndRemoveExpiredBans()
let bans = db.get("Banlist") || [];

let bannedPlayer = bans.find(ban => ban.name.toLowerCase() === playerName);

if (bannedPlayer) {
    if (bannedPlayer.ban_length === "Never") {
        let kickReason = `§》§l\n§cYou are permanently banned from this server!\n§7Reason:§f ${bannedPlayer.ban_reason}`;
        player.runCommandAsync(`kick ${player.name} ${kickReason}`);
    } else {
        
        let currentTime = Date.now();
        let remainingTimeMilliseconds = Math.max(0, bannedPlayer.ban_length - (currentTime - bannedPlayer.banned_day));
        let remainingTimeFormatted = expiresTime(remainingTimeMilliseconds);
        let kickReason = `§》§l\n§cYou are temporarily banned for§f ${remainingTimeFormatted} §cfrom this server!\n§7Reason:§f ${bannedPlayer.ban_reason}`;
        player.runCommandAsync(`kick "${player.name}" ${kickReason}`);
    }
}
});


function checkAndRemoveExpiredBans() {
    let banList = db.get("Banlist") || [];
    let currentTime = Date.now();

    let updatedBanList = banList.filter(ban => {
if (ban.ban_length === "Never") {
            return true; 
        }

        let remainingTimeMilliseconds = Math.max(0, ban.ban_length - (currentTime - ban.banned_day));
        return remainingTimeMilliseconds > 0; 
    });

    db.set("Banlist", updatedBanList);
    db.save();
}

woeful kindle
#

so is ur problem that when you ban a player and they try to join back it works but then they try it again and it doesnt work?

tiny jasper
woeful kindle
#

do u have an unban list?

tiny jasper
#

its really strange only works 1 time after that nope

tiny jasper
woeful kindle
#

do u remove the player from the unban list when they get unbanned?

tiny jasper
#

yes

woeful kindle
#

where does it do that?

tiny jasper
#

other file in my form

#

want me to send it =? but i dont think thats the problem

tiny jasper
# woeful kindle where does it do that?

here

async function unbanmenu2(player, searchQuery) {
    const form = new ActionFormData();
    form.title('Unban Player');
    form.body('Choose a player to unban:');

    const bans = db.get("Banlist") || [];
    let bannedPlayers = bans
        .filter(ban => ban.name.toLowerCase().includes(searchQuery.toLowerCase()))
        .map(filteredBan => filteredBan.name);

    if (bannedPlayers.length === 0) {
        player.sendMessage(`§》§lNo players are currently banned matching the search query: ${searchQuery}`);
        return;
    }

   
    bannedPlayers.forEach(playerName => {
        form.button(`§》§l${playerName}`, "textures/ui/friend_glyph_desaturated");
    });

    const unbanResponse = await forceShow(player, form);
    checkAndRemoveExpiredBans();

    
    if (!unbanResponse.canceled) {
        const selectedIndex = unbanResponse.selection;

       
        if (selectedIndex !== undefined && selectedIndex >= 0 && selectedIndex < bannedPlayers.length) {
            
            const selectedPlayer = bannedPlayers[selectedIndex];
            const playerIndex = bans.findIndex(ban => ban.name === selectedPlayer);

            if (playerIndex !== -1) {
                bans.splice(playerIndex, 1);
                db.set("Banlist", bans);
                db.save();

                player.sendMessage(`§》§l${selectedPlayer} has been unbanned.`);
            } else {
                player.sendMessage(`§》§l${selectedPlayer} is not on the banlist.`);
            }
        } else {
            player.sendMessage("§》§lUnban canceled or invalid selection.");
        }
    } else {
        player.sendMessage("§》§lUnban canceled.");
    }
}