-
-
Save PTOM76/a92b6df8a8d2e6b6c9d2d793c88f37f8 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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