ModuleInventory optimization
This commit is contained in:
@@ -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.minion.fakeplayer.MinionFakePlayer;
|
||||||
import io.github.skippyall.minions.module.ModuleItem;
|
import io.github.skippyall.minions.module.ModuleItem;
|
||||||
import io.github.skippyall.minions.program.block.CodeBlock;
|
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.Inventories;
|
||||||
import net.minecraft.inventory.SimpleInventory;
|
import net.minecraft.inventory.SimpleInventory;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
@@ -14,9 +17,13 @@ import net.minecraft.server.network.ServerPlayerEntity;
|
|||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
public class ModuleInventory extends SimpleInventory {
|
public class ModuleInventory extends SimpleInventory {
|
||||||
|
private final Set<ModuleItem> modules = new HashSet<>();
|
||||||
public ModuleInventory() {
|
public ModuleInventory() {
|
||||||
super(27);
|
super(27);
|
||||||
}
|
}
|
||||||
@@ -35,8 +42,24 @@ public class ModuleInventory extends SimpleInventory {
|
|||||||
return (stack.getCount() <= getMaxCountPerStack()) && stack.getItem() instanceof ModuleItem;
|
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) {
|
public void readNbt(NbtCompound nbt, RegistryWrapper.WrapperLookup lookup) {
|
||||||
Inventories.readNbt(nbt, heldStacks, lookup);
|
Inventories.readNbt(nbt, heldStacks, lookup);
|
||||||
|
updateModules();
|
||||||
}
|
}
|
||||||
|
|
||||||
public NbtCompound writeNbt(NbtCompound nbt, RegistryWrapper.WrapperLookup lookup) {
|
public NbtCompound writeNbt(NbtCompound nbt, RegistryWrapper.WrapperLookup lookup) {
|
||||||
@@ -44,21 +67,10 @@ public class ModuleInventory extends SimpleInventory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasModule(ModuleItem module) {
|
public boolean hasModule(ModuleItem module) {
|
||||||
for(ItemStack stack : heldStacks) {
|
return modules.contains(module);
|
||||||
if(stack.getItem() instanceof ModuleItem module2 && module2 == module) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<ModuleItem> getModuleItems() {
|
public Collection<ModuleItem> getModuleItems() {
|
||||||
ArrayList<ModuleItem> modules = new ArrayList<>();
|
|
||||||
for(ItemStack stack : heldStacks) {
|
|
||||||
if(stack.getItem() instanceof ModuleItem module) {
|
|
||||||
modules.add(module);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return modules;
|
return modules;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user