Skip to content

Objeto Inventory ​

El objeto inventory representa el inventario de un bloque contenedor (cofre, barril, tolva, horno, etc.) o del jugador. Se obtiene a través de world.getInventory() o player.getInventory().

js
// Inventario de un bloque contenedor (cofre, barril, etc.)
var inv = world.getInventory(x, y, z);
if (inv !== null) {
    // El bloque tiene inventario
}

// Inventario del jugador
var inv = player.getInventory();

Transacciones del mundo

world.getInventory() solo funciona desde dentro de un evento o un comando, no en onEnable(). Ver Objeto World para mĂĄs detalles.

MĂ©todos ​

MétodoRetornaDescripción
getType()stringTipo de inventario: "player", "chest", "barrel", "hopper", "furnace", "blast_furnace", "smoker", "brewing_stand", "container"
getSize()numberCantidad total de slots del inventario
getItem(slot)item|nullItem en el slot dado (objeto item). null si estĂĄ vacĂ­o
setItem(slot, nombre, cantidad)booleanColocar un item en el slot dado. Retorna true si tuvo éxito
addItem(nombre, cantidad)numberAgrega al primer slot libre. Retorna la cantidad que no pudo agregarse (0 = éxito total)
removeItem(nombre, cantidad)booleanRemueve la cantidad dada del item. Retorna true si tuvo éxito
clear()—Vacía todos los slots del inventario
contains(nombre)booleantrue si el inventario contiene al menos 1 del item dado
count(nombre)numberCantidad total del item dado en todo el inventario
getItems(){slot, item}[]Array con todos los slots no vacĂ­os (item es objeto Item)
setContents(items)booleanReemplaza todo el contenido. items: array de {slot, item} o {slot, name, count}. Los slots no especificados quedan vacĂ­os

Inventarios virtuales (menĂșs) ​

La API incluye menĂșs virtuales tipo Bukkit usando la librerĂ­a inv.

js
var menu = inventory.createMenu({
    title: "§aMenu Virtual",
    type: "chest",   // chest | hopper | barrel | dropper | ender_chest
    size: 27          // 9, 18, 27, 36, 45, 54 (solo chest)
});

menu.setItems([
    { slot: 0, name: "minecraft:diamond", count: 1 },
    { slot: 1, name: "minecraft:gold_ingot", count: 8 }
]);

// También podés usar patrones (similar a Bukkit)
menu.pattern([
    "_________",
    "__xxx____",
    "__x_x____",
    "__xxx____"
], {
    x: { name: "minecraft:black_stained_glass_pane", count: 1 }
});

menu.onClick(function(player, item, click) {
    player.sendMessage("Click: " + click + " en " + item.getName());
});

// click puede ser: left_click, right_click, drop

menu.onClose(function(player) {
    player.sendMessage("MenĂș cerrado");
});

menu.open(player);      // abrir
menu.update(player);    // actualizar contenido
menu.close(player);     // cerrar

Notas:

  • menu.open/update/close aceptan un playerWrapper o un nombre de jugador (string).
  • El menĂș se maneja en memoria, no es un bloque real del mundo.

Ejemplos ​

Inspeccionar un cofre ​

js
commands.register("inspeccionarcofre", "Ver contenido del cofre frente a ti", function(player, args) {
    var x = Math.floor(player.getX());
    var y = Math.floor(player.getY());
    var z = Math.floor(player.getZ() + 1); // bloque frente al jugador

    var inv = world.getInventory(x, y, z);
    if (inv === null) {
        player.sendMessage("§cNo hay un contenedor ahí.");
        return;
    }

    var items = inv.getItems();
    player.sendMessage("§eContenido del cofre (§f" + items.length + "§e items):");
    for (var i = 0; i < items.length; i++) {
        player.sendMessage("§7Slot §f" + items[i].slot + "§7: §f" + items[i].item.getName() + " x" + items[i].item.getCount());
    }
});

Llenar un cofre con items ​

js
commands.register("llenarcofre", "Llena el cofre frente a ti con diamantes", function(player, args) {
    var x = Math.floor(player.getX());
    var y = Math.floor(player.getY());
    var z = Math.floor(player.getZ() + 1);

    var inv = world.getInventory(x, y, z);
    if (inv === null) {
        player.sendMessage("§cNo hay un contenedor ahí.");
        return;
    }

    inv.clear();
    var sobrante = inv.addItem("minecraft:diamond", 1000);
    player.sendMessage("§bDiamantes agregados! Sobrante: §f" + sobrante);
});

Inventario del jugador ​

js
events.on("PlayerJoin", function(event) {
    var p = event.getPlayer();
    var inv = p.getInventory();

    // Ver qué tiene el jugador
    var items = inv.getItems();
    console.log(p.getName() + " tiene " + items.length + " tipos de items");

    // Dar item de bienvenida si no tiene diamantes
    if (!inv.contains("minecraft:diamond")) {
        inv.addItem("minecraft:diamond", 1);
        p.sendMessage("§b¥Diamante de bienvenida!");
    }
});

Verificar y quitar items ​

js
commands.register("pagar", "Paga 5 diamantes para acceder", function(player, args) {
    var inv = player.getInventory();

    if (inv.count("minecraft:diamond") < 5) {
        player.sendMessage("§cNecesitås 5 diamantes para acceder.");
        return;
    }

    inv.removeItem("minecraft:diamond", 5);
    player.sendMessage("§a¥Acceso concedido! Se te cobraron 5 diamantes.");
});

Bloques con inventario ​

BloqueNombre en JS
Cofreminecraft:chest
Cofre trampaminecraft:trapped_chest
Barrilminecraft:barrel
Tolvaminecraft:hopper
Hornominecraft:furnace
Horno de fundiciĂłnminecraft:blast_furnace
Ahumadorminecraft:smoker
Dispensadorminecraft:dispenser
Tolvaminecraft:dropper

Dragonfly Script API