From efa4dc1d043e4eb00f11d679d1d1cb350f83215e Mon Sep 17 00:00:00 2001 From: Brady Date: Tue, 13 Jun 2023 11:36:24 -0500 Subject: [PATCH] Use inner class implementation for `getAllBaritones` `this.new` :heart_eyes_cat: --- src/main/java/baritone/BaritoneProvider.java | 40 +++++++++++++++----- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/src/main/java/baritone/BaritoneProvider.java b/src/main/java/baritone/BaritoneProvider.java index 45053e8cc..aa899341b 100644 --- a/src/main/java/baritone/BaritoneProvider.java +++ b/src/main/java/baritone/BaritoneProvider.java @@ -30,7 +30,7 @@ import baritone.command.CommandSystem; import baritone.utils.player.PrimaryPlayerContext; import baritone.utils.schematic.SchematicSystem; -import java.util.ArrayList; +import java.util.AbstractList; import java.util.List; /** @@ -39,25 +39,22 @@ import java.util.List; */ public final class BaritoneProvider implements IBaritoneProvider { - private final Baritone primary; + private final IBaritone primary; + private final List all; - { + public BaritoneProvider() { this.primary = new Baritone(PrimaryPlayerContext.INSTANCE); + this.all = this.new BaritoneList(); } @Override public IBaritone getPrimaryBaritone() { - return primary; + return this.primary; } @Override public List getAllBaritones() { - List baritones = new ArrayList<>(); - baritones.add(getPrimaryBaritone()); - for (IBaritoneUser ibu : UserManager.INSTANCE.getUsers()) { - baritones.add(ibu.getBaritone()); - } - return baritones; + return this.all; } @Override @@ -79,4 +76,27 @@ public final class BaritoneProvider implements IBaritoneProvider { public ISchematicSystem getSchematicSystem() { return SchematicSystem.INSTANCE; } + + private final class BaritoneList extends AbstractList { + + @Override + public int size() { + return 1 + this.getUsers().size(); + } + + @Override + public IBaritone get(int index) { + if (index < 0 || index >= this.size()) { + throw new IndexOutOfBoundsException(); + } + if (index == 0) { + return BaritoneProvider.this.primary; + } + return this.getUsers().get(index - 1).getBaritone(); + } + + private List getUsers() { + return BaritoneProvider.this.getUserManager().getUsers(); + } + } }