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.
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.NonePage.BenchPage.InventoryPage.ToolsSettingsPage.MapPage.MachinimaEditorPage.ContentCreationPage.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.
