import { world, system } from "@minecraft/server";
const combatDB = new Map();
const COMBAT_TIMER = 30000; //(30s)
world.beforeEvents.playerLeave.subscribe(({player}) => {
if (!combatDB.get(player.id) || player.id == -4294967295) return;
const dim = player.dimension;
const loc = player.location;
const inventory = player.getComponent("inventory")?.container;
for (let i=0; i < inventory.size; i++) {
const item = inventory.getItem(i);
if (item) {
system.run(() => {
dim.spawnItem(item, loc);
})
}
}
const slots = ["Head", "Chest", "Legs", "Feet"];
const armour = player.getComponent("equippable");
for (const slot of slots) {
const check = armour.getEquipment(slot);
if (check) {
system.run(() => {
dim.spawnItem(check, loc);
})
}
}
world.sendMessage(`§l§4${player.name} §cHas Combat Logged!`);
})
world.afterEvents.playerSpawn.subscribe(({initialSpawn, player}) => {
if (!initialSpawn) return;
if (combatDB.get(player.id)) {
combatDB.delete(player.id);
player.runCommand("clear @s");
player.sendMessage(`§o§7Your inventory was cleared for combat logging!`);
}
})
world.afterEvents.entityHitEntity.subscribe(({ hitEntity: hit, damagingEntity: attacker}) => {
if (hit.typeId !== "minecraft:player" || attacker.typeId !== "minecraft:player") return;
setCombat(hit);
setCombat(attacker);
})
#Combat log system having issues
1 messages · Page 1 of 1 (latest)
function setCombat(player) {
const timer = Date.now() + COMBAT_TIMER;
combatDB.set(player.id, timer);
}
system.runInterval(() => {
for (const player of world.getAllPlayers()) {
if (combatDB.get(player.id)) {
const timeLeft = combatDB.get(player.id) - Date.now();
if (timeLeft < 0) {
player.sendMessage("Your combat timer ran out!");
combatDB.delete(player.id);
} else {
const timeLeft = combatDB.get(player.id) - Date.now();
player.onScreenDisplay.setActionBar(`${Math.floor((timeLeft / 1000) % 60)}s`)
}
}
}
})
sometimes when the player joins back after combat logging it doesn't clear them does anyone know why?