diff --git a/src/main/java/org/auioc/mods/arnicalib/utils/game/ItemUtils.java b/src/main/java/org/auioc/mods/arnicalib/utils/game/ItemUtils.java index f8b08ccf..77e932be 100644 --- a/src/main/java/org/auioc/mods/arnicalib/utils/game/ItemUtils.java +++ b/src/main/java/org/auioc/mods/arnicalib/utils/game/ItemUtils.java @@ -1,5 +1,6 @@ package org.auioc.mods.arnicalib.utils.game; +import java.util.function.Predicate; import javax.annotation.Nullable; import com.google.gson.JsonObject; import com.mojang.brigadier.exceptions.CommandSyntaxException; @@ -8,6 +9,7 @@ import net.minecraft.nbt.TagParser; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.GsonHelper; +import net.minecraft.world.Container; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; @@ -85,4 +87,27 @@ static ItemStack createItemStack(JsonObject json) { return createItemStack(item, count, nbt); } + + static int countItem(ItemStack stack, Predicate predicate) { + if (!stack.isEmpty() && predicate.test(stack)) { + return stack.getCount(); + } + return 0; + } + + static int countItem(Container container, Predicate predicate) { + int r = 0; + for (int i = 0, l = container.getContainerSize(); i < l; i++) { + ItemStack stack = container.getItem(i); + if (!stack.isEmpty()) { + r += countItem(stack, predicate); + } + } + return r; + } + + static int countItem(Container container) { + return countItem(container, (stack) -> true); + } + }