From 2d64426496ee39e9a9db61d317fc82286d191af6 Mon Sep 17 00:00:00 2001 From: skippyall <> Date: Fri, 20 Jun 2025 23:39:13 +0200 Subject: [PATCH] ModuleInventory optimization --- .../minions/gui/ModuleInventory.java | 38 ++++++++++++------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/src/main/java/io/github/skippyall/minions/gui/ModuleInventory.java b/src/main/java/io/github/skippyall/minions/gui/ModuleInventory.java index 97eb479..f553531 100644 --- a/src/main/java/io/github/skippyall/minions/gui/ModuleInventory.java +++ b/src/main/java/io/github/skippyall/minions/gui/ModuleInventory.java @@ -4,6 +4,9 @@ import io.github.skippyall.minions.module.command.Command; import io.github.skippyall.minions.minion.fakeplayer.MinionFakePlayer; import io.github.skippyall.minions.module.ModuleItem; import io.github.skippyall.minions.program.block.CodeBlock; +import net.fabricmc.fabric.impl.transfer.item.ComposterWrapper; +import net.fabricmc.fabric.mixin.transfer.JukeboxBlockEntityMixin; +import net.minecraft.block.ComposterBlock; import net.minecraft.inventory.Inventories; import net.minecraft.inventory.SimpleInventory; import net.minecraft.item.ItemStack; @@ -14,9 +17,13 @@ import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.text.Text; import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; import java.util.List; +import java.util.Set; public class ModuleInventory extends SimpleInventory { + private final Set modules = new HashSet<>(); public ModuleInventory() { super(27); } @@ -35,8 +42,24 @@ public class ModuleInventory extends SimpleInventory { return (stack.getCount() <= getMaxCountPerStack()) && stack.getItem() instanceof ModuleItem; } + @Override + public void markDirty() { + super.markDirty(); + updateModules(); + } + + public void updateModules() { + modules.clear(); + for (ItemStack heldStack : heldStacks) { + if(heldStack.getItem() instanceof ModuleItem moduleItem) { + modules.add(moduleItem); + } + } + } + public void readNbt(NbtCompound nbt, RegistryWrapper.WrapperLookup lookup) { Inventories.readNbt(nbt, heldStacks, lookup); + updateModules(); } public NbtCompound writeNbt(NbtCompound nbt, RegistryWrapper.WrapperLookup lookup) { @@ -44,21 +67,10 @@ public class ModuleInventory extends SimpleInventory { } public boolean hasModule(ModuleItem module) { - for(ItemStack stack : heldStacks) { - if(stack.getItem() instanceof ModuleItem module2 && module2 == module) { - return true; - } - } - return false; + return modules.contains(module); } - public List getModuleItems() { - ArrayList modules = new ArrayList<>(); - for(ItemStack stack : heldStacks) { - if(stack.getItem() instanceof ModuleItem module) { - modules.add(module); - } - } + public Collection getModuleItems() { return modules; }