Skip to content

Instantly share code, notes, and snippets.

@PTOM76
Created January 15, 2023 05:17
Show Gist options
  • Save PTOM76/a92b6df8a8d2e6b6c9d2d793c88f37f8 to your computer and use it in GitHub Desktop.
Save PTOM76/a92b6df8a8d2e6b6c9d2d793c88f37f8 to your computer and use it in GitHub Desktop.
package com.github.ptom76.tutorialfabricmod.inventory;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.inventory.Inventories;
import net.minecraft.inventory.Inventory;
import net.minecraft.item.ItemStack;
import net.minecraft.util.collection.DefaultedList;
public interface IInventory extends Inventory {
DefaultedList<ItemStack> getItems();
static IInventory of(DefaultedList<ItemStack> items) {
return () -> items;
}
static IInventory ofSize(int size) {
return of(DefaultedList.ofSize(size, ItemStack.EMPTY));
}
@Override
default int size() {
return getItems().size();
}
@Override
default boolean isEmpty() {
for (int i = 0; i < size(); i++) {
ItemStack stack = getStack(i);
if (!stack.isEmpty()) {
return false;
}
}
return true;
}
@Override
default ItemStack getStack(int slot) {
return getItems().get(slot);
}
@Override
default ItemStack removeStack(int slot, int count) {
ItemStack result = Inventories.splitStack(getItems(), slot, count);
if (!result.isEmpty()) {
markDirty();
}
return result;
}
@Override
default ItemStack removeStack(int slot) {
return Inventories.removeStack(getItems(), slot);
}
@Override
default void setStack(int slot, ItemStack stack) {
getItems().set(slot, stack);
if (stack.getCount() > getMaxCountPerStack()) {
stack.setCount(getMaxCountPerStack());
}
}
@Override
default void clear() {
getItems().clear();
}
@Override
default void markDirty() {
}
@Override
default boolean canPlayerUse(PlayerEntity player) {
return true;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment