I already made a code so that the item moves if it is in a certain slot, but I wanted that when the inventory would be full, that item would be spawned and removed from the inventory, but it loops
import { world } from '@minecraft/server';
const moveToEmptySlot = (inventory, itemIndex) => {
for (let i = 0; i < 29; i++) {
const emptySlot = inventory.getItem(i);
if (emptySlot === undefined) {
inventory.transferItem(itemIndex, i, inventory);
return true;
}
}
return false;
};
world.events.tick.subscribe(async () => {
try {
const players = world.getAllPlayers();
for (const player of players) {
const inventory = player.getComponent("inventory").container;
for (let i = 29; i < 36; i++) {
const item = inventory.getItem(i);
const itemId = item?.typeId;
if (itemId === undefined) continue;
const accessory = Object.values(accessories).find(a => a.id_name === itemId);
if (accessory === undefined) {
if (!moveToEmptySlot(inventory, i)) {
// No hay slots disponibles, ejecutar función
// ...
//await player.dimension.runCommandAsync("say si sirve bro")
try {
player.dimension.spawnItem(item, player.headLocation);
inventory.clearItem(i);
} catch (err) {
world.say("" + err)
}
}
} else {
console.warn("Senyu " + accessory.id_name);
console.warn("MC " + itemId);
}
}
}
} catch (err) {
console.warn(err);
}
});