Use inner class implementation for getAllBaritones

`this.new` 😻
This commit is contained in:
Brady
2023-06-13 11:36:24 -05:00
parent b25d1a44a2
commit efa4dc1d04

View File

@@ -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<IBaritone> 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<IBaritone> getAllBaritones() {
List<IBaritone> 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<IBaritone> {
@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<IBaritoneUser> getUsers() {
return BaritoneProvider.this.getUserManager().getUsers();
}
}
}