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

51 lines
1.4 KiB
Java
Raw Normal View History

2020-06-16 22:33:45 +00:00
package com.thebrokenrail.twine.util.inventory;
2020-06-16 16:21:17 +00:00
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.inventory.Inventories;
2020-06-17 00:38:55 +00:00
import net.minecraft.inventory.SimpleInventory;
2020-06-16 16:21:17 +00:00
import net.minecraft.item.ItemStack;
import net.minecraft.util.collection.DefaultedList;
2020-06-17 00:38:55 +00:00
public class ItemInventory extends SimpleInventory {
2020-06-16 16:21:17 +00:00
private final ItemStack stack;
2020-06-17 00:38:55 +00:00
private boolean isLoadingOrSaving = false;
2020-06-16 16:21:17 +00:00
public ItemInventory(int size, ItemStack stack) {
2020-06-17 00:38:55 +00:00
super(size);
2020-06-16 16:21:17 +00:00
this.stack = stack;
2020-06-17 00:38:55 +00:00
load();
2020-06-16 16:21:17 +00:00
}
protected ItemStack getHolder() {
return stack;
}
2020-06-17 00:38:55 +00:00
private void load() {
isLoadingOrSaving = true;
DefaultedList<ItemStack> list = DefaultedList.ofSize(size(), ItemStack.EMPTY);
2020-06-16 16:21:17 +00:00
Inventories.fromTag(stack.getOrCreateTag().getCompound("BlockEntityTag"), list);
2020-06-17 00:38:55 +00:00
for (int i = 0; i < size(); i++) {
setStack(i, list.get(i));
2020-06-16 16:21:17 +00:00
}
2020-06-17 00:38:55 +00:00
isLoadingOrSaving = false;
2020-06-16 16:21:17 +00:00
}
2020-06-17 00:38:55 +00:00
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;
2020-06-16 16:21:17 +00:00
}
@Override
public void markDirty() {
2020-06-17 00:38:55 +00:00
super.markDirty();
if (!isLoadingOrSaving) {
save();
2020-06-16 16:21:17 +00:00
}
}
}