Cómo Configurar la Gestión de Inventarios en Hytale

Hytale: Guías, Mods, Opiniones | Videojuegos en CIBERED

En esta guía aprenderás cómo gestionar los inventarios de los jugadores en tu mod de Hytale, incluyendo creación de ítems, apertura de páginas de inventario y manipulación de ItemStack.

Explorando el Código de HytaleServer.jar

Accediendo al Inventario del Jugador

Para acceder al inventario de un jugador (Player), se utiliza el método getInventory(), que devuelve un objeto Inventory.

Inventory inventory = player.getInventory();

Abrir Inventarios

Puedes abrir diferentes tipos de inventarios, conocidos como “Pages”. Más adelante se explicará cómo agregar páginas personalizadas.

Actualmente, las páginas disponibles son:

  • Page.None
  • Page.Bench
  • Page.Inventory
  • Page.ToolsSettings
  • Page.Map
  • Page.MachinimaEditor
  • Page.ContentCreation
  • Page.Custom

Ejemplo para abrir la página de inventario del jugador:

PageManager pageManager = player.getPageManager();
Store store = player.getWorld().getEntityStore().getStore();
pageManager.setPage(player.getReference(), store, Page.Inventory);

Clase ItemStack

La clase ItemStack representa un stack de ítems en el inventario y permite manipular tanto el tipo como la cantidad de ítems.

Crear un ItemStack

ItemStack item = new ItemStack("Stone");        // Un bloque de piedra
ItemStack withQuantity = new ItemStack("Stone", 64); // Stack de 64 bloques

Agregar Metadata Personalizada

Puedes agregar metadata usando un BsonDocument al crear el ítem:

BsonDocument metadata = new BsonDocument();
metadata.append("customData", new BsonString("value"));
ItemStack item = new ItemStack("Stone", 64, metadata);

Definir Durabilidad

ItemStack stackWithDurability = new ItemStack(
    "DiamondSword", // ID del ítem
    1,              // Cantidad
    100.0,          // Durabilidad actual
    100.0,          // Durabilidad máxima
    metadata        // Metadata opcional
);

Accediendo a los ItemContainer

La clase Inventory permite obtener múltiples contenedores de ítems, por ejemplo:

  • .getStorage() → Almacenamiento general
  • .getArmor() → Armadura
  • .getBackpack() → Mochila
  • .getHotbar() → Hotbar
  • .getUtility() → Ítems utilitarios

También existen métodos combinados:

  • .getCombinedEverything()
  • .getCombinedArmorHotbarStorage()
  • .getCombinedBackpackStorageHotbar()
  • .getCombinedHotbarFirst()
  • .getCombinedStorageFirst()
  • .getCombinedArmorHotbarUtilityStorage()
  • .getCombinedHotbarUtilityConsumableStorage()

Agregar ItemStack al Inventario

Para agregar un ítem al inventario:

Inventory inventory = player.getInventory();
inventory.addItemStack(item);

O a un slot específico:

inventory.addItemStackToSlot((short) 4, stack);

Eliminar ItemStack del Inventario

Para eliminar un ítem:

Inventory inventory = player.getInventory();
inventory.removeItemStack(item);

O de un slot específico:

inventory.removeItemStackFromSlot((short) 4);

Esto cubre las operaciones básicas de inventario en Hytale, desde acceder y abrir páginas hasta crear, agregar y remover ítems.