Создание инвентаря

Создание инвентарей свободной формы

Вы можете создавать инвентари либо: соединяя два инвентаря вместе используя union(inventory) или используя другой инвентарь для построения нового на его основе:

Примечание

Инвентари свободной формы не могут быть открыты игроком. Чтобы показать инвентарь игроку, вам нужен ViewableInventory.

// Basic indexed Inventory
public static Inventory buildIndexedInventory(int capacity) {
    return Inventory.builder().slots(capacity).completeStructure().plugin(this.pluginContainer).build();
}

// Basic grid Inventory
public static Inventory buildIndexedInventory(int x, int y) {
    return Inventory.builder().grid(x, y).completeStructure().plugin(this.pluginContainer).build();
}

// Combined inventories
public static Inventory buildIndexedInventory(Inventory base, int additionalCapacity) {
    return Inventory.builder().inventory(base).slots(additionalCapacity).completeStructure().plugin(this.pluginContainer).build();
}

// Inventory with carrier and identity
public static Inventory buildIndexedInventory(int capacity) {
    return Inventory.builder().slots(capacity).completeStructure()
        .plugin(this.pluginContainer)
        .identity(uuid)
        .carrier(carrier)
        .build();
}

Создание просматриваемых инвентарей

Чтобы создать просматриваемый инвентарь, вам нужно следовать строгой структуре ContainerType. Завершение построения пустой структуры ContainerType приведет к созданию ванильного инвентаря. Завершение построения на незаконченной структуре заполнит остатки структуры пустыми слотами.

// Simple 3x3 inventory - looks like a Dropper
public ViewableInventory simpleThreeByThree() {
    return ViewableInventory.builder().type(ContainerTypes.GENERIC_3X3).completeStructure().plugin(this.plugin).build();
}

// To replicate vanilla behaviour of an inventory. e.g. anvil provide no structure
public ViewableInventory vanillaAnvil() {
    return ViewableInventory.builder().type(ContainerTypes.ANVIL).completeStructure().plugin(this.plugin).build();
}

// Chest 9x3 View of 3 other 3x3 inventories
public ViewableInventory threeByThreeByThree() {
    Inventory i1 = Inventory.builder().grid(3, 3).completeStructure().plugin(this.pluginContainer).build();
    Inventory i2 = Inventory.builder().grid(3, 3).completeStructure().plugin(this.pluginContainer).build();
    Inventory i3 = Inventory.builder().grid(3, 3).completeStructure().plugin(this.pluginContainer).build();
    return ViewableInventory.builder().type(ContainerTypes.GENERIC_9X3)
        .grid(i1.slots(), Vector2i.from(3, 3), Vector2i.from(0, 0))
        .grid(i2.slots(), Vector2i.from(3, 3), Vector2i.from(3, 0))
        .grid(i3.slots(), Vector2i.from(3, 3), Vector2i.from(6, 0))
        .completeStructure().plugin(this.plugin).build();
}