Search in sources :

Example 1 with GeneratingItem

use of ivorius.reccomplex.item.GeneratingItem in project RecurrentComplex by Ivorforce.

the class InventoryGenerationHandler method generateAllTags.

public static void generateAllTags(WorldServer server, IInventory inventory, MCRegistrySpecial.ItemHidingRegistry registry, Random random) {
    List<Triple<ItemStack, GeneratingItem, Integer>> foundGenerators = new ArrayList<>();
    boolean didChange = true;
    int cycles = 0;
    do {
        if (didChange) {
            for (int i = 0; i < inventory.getSizeInventory(); i++) {
                ItemStack stack = inventory.getStackInSlot(i);
                if (!stack.isEmpty()) {
                    Item item = registry.containedItem(stack);
                    if (item instanceof GeneratingItem) {
                        foundGenerators.add(Triple.of(stack, (GeneratingItem) item, i));
                        inventory.setInventorySlotContents(i, ItemStack.EMPTY);
                    }
                }
            }
            didChange = false;
        }
        if (foundGenerators.size() > 0) {
            Triple<ItemStack, GeneratingItem, Integer> pair = foundGenerators.get(0);
            pair.getMiddle().generateInInventory(server, inventory, random, pair.getLeft(), pair.getRight());
            foundGenerators.remove(0);
            didChange = true;
        }
        cycles++;
    } while ((foundGenerators.size() > 0 || didChange) && cycles < 1000);
}
Also used : Triple(org.apache.commons.lang3.tuple.Triple) Item(net.minecraft.item.Item) GeneratingItem(ivorius.reccomplex.item.GeneratingItem) GeneratingItem(ivorius.reccomplex.item.GeneratingItem) ArrayList(java.util.ArrayList) ItemStack(net.minecraft.item.ItemStack)

Aggregations

GeneratingItem (ivorius.reccomplex.item.GeneratingItem)1 ArrayList (java.util.ArrayList)1 Item (net.minecraft.item.Item)1 ItemStack (net.minecraft.item.ItemStack)1 Triple (org.apache.commons.lang3.tuple.Triple)1