This repository has been archived on 2023-11-26. You can view files and clone it, but cannot push or open issues or pull requests.
Twine/src/main/java/com/thebrokenrail/twine/util/inventory/ItemInventory.java

50 lines
1.4 KiB
Java

package com.thebrokenrail.twine.util.inventory;
import net.minecraft.inventory.Inventories;
import net.minecraft.inventory.SimpleInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.util.collection.DefaultedList;
public class ItemInventory extends SimpleInventory {
private final ItemStack stack;
private boolean isLoadingOrSaving = false;
public ItemInventory(int size, ItemStack stack) {
super(size);
this.stack = stack;
load();
}
protected ItemStack getHolder() {
return stack;
}
private void load() {
isLoadingOrSaving = true;
DefaultedList<ItemStack> list = DefaultedList.ofSize(size(), ItemStack.EMPTY);
Inventories.fromTag(stack.getOrCreateTag().getCompound("BlockEntityTag"), list);
for (int i = 0; i < size(); i++) {
setStack(i, list.get(i));
}
isLoadingOrSaving = false;
}
private void save() {
isLoadingOrSaving = true;
DefaultedList<ItemStack> list = DefaultedList.ofSize(size(), ItemStack.EMPTY);
for (int i = 0; i < size(); i++) {
list.set(i, getStack(i).copy());
}
Inventories.toTag(stack.getOrCreateSubTag("BlockEntityTag"), list);
isLoadingOrSaving = false;
}
@Override
public void markDirty() {
super.markDirty();
if (!isLoadingOrSaving) {
save();
}
}
}