144 lines
3.3 KiB
Java
144 lines
3.3 KiB
Java
package io.gitlab.jfronny.modsmod;
|
|
|
|
import net.fabricmc.loader.ModContainer;
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
|
import java.util.*;
|
|
import java.util.function.Consumer;
|
|
|
|
public class IteratorCallbackList implements List<ModContainer> {
|
|
private List<ModContainer> containers;
|
|
private Consumer<List<ModContainer>> reset;
|
|
boolean modified = false;
|
|
public IteratorCallbackList(List<ModContainer> base, Consumer<List<ModContainer>> reset) {
|
|
containers = Collections.synchronizedList(base);
|
|
this.reset = reset;
|
|
}
|
|
|
|
@Override
|
|
public int size() {
|
|
return containers.size();
|
|
}
|
|
|
|
@Override
|
|
public boolean isEmpty() {
|
|
return containers.isEmpty();
|
|
}
|
|
|
|
@Override
|
|
public boolean contains(Object o) {
|
|
return containers.contains(o);
|
|
}
|
|
|
|
@NotNull
|
|
@Override
|
|
public Iterator<ModContainer> iterator() {
|
|
if (!modified) {
|
|
PreLaunch.init();
|
|
modified = true;
|
|
}
|
|
reset.accept(containers);
|
|
return containers.iterator();
|
|
}
|
|
|
|
@NotNull
|
|
@Override
|
|
public Object[] toArray() {
|
|
return containers.toArray();
|
|
}
|
|
|
|
@NotNull
|
|
@Override
|
|
public <T> T[] toArray(@NotNull T[] ts) {
|
|
return containers.toArray(ts);
|
|
}
|
|
|
|
@Override
|
|
public boolean add(ModContainer modContainer) {
|
|
return containers.add(modContainer);
|
|
}
|
|
|
|
@Override
|
|
public boolean remove(Object o) {
|
|
return containers.remove(o);
|
|
}
|
|
|
|
@Override
|
|
public boolean containsAll(@NotNull Collection<?> collection) {
|
|
return containers.containsAll(collection);
|
|
}
|
|
|
|
@Override
|
|
public boolean addAll(@NotNull Collection<? extends ModContainer> collection) {
|
|
return containers.addAll(collection);
|
|
}
|
|
|
|
@Override
|
|
public boolean addAll(int i, @NotNull Collection<? extends ModContainer> collection) {
|
|
return containers.addAll(i, collection);
|
|
}
|
|
|
|
@Override
|
|
public boolean removeAll(@NotNull Collection<?> collection) {
|
|
return containers.removeAll(collection);
|
|
}
|
|
|
|
@Override
|
|
public boolean retainAll(@NotNull Collection<?> collection) {
|
|
return containers.removeAll(collection);
|
|
}
|
|
|
|
@Override
|
|
public void clear() {
|
|
containers.clear();
|
|
}
|
|
|
|
@Override
|
|
public ModContainer get(int i) {
|
|
return containers.get(i);
|
|
}
|
|
|
|
@Override
|
|
public ModContainer set(int i, ModContainer modContainer) {
|
|
return containers.set(i, modContainer);
|
|
}
|
|
|
|
@Override
|
|
public void add(int i, ModContainer modContainer) {
|
|
containers.add(i, modContainer);
|
|
}
|
|
|
|
@Override
|
|
public ModContainer remove(int i) {
|
|
return containers.remove(i);
|
|
}
|
|
|
|
@Override
|
|
public int indexOf(Object o) {
|
|
return containers.indexOf(o);
|
|
}
|
|
|
|
@Override
|
|
public int lastIndexOf(Object o) {
|
|
return containers.lastIndexOf(o);
|
|
}
|
|
|
|
@NotNull
|
|
@Override
|
|
public ListIterator<ModContainer> listIterator() {
|
|
return containers.listIterator();
|
|
}
|
|
|
|
@NotNull
|
|
@Override
|
|
public ListIterator<ModContainer> listIterator(int i) {
|
|
return containers.listIterator(i);
|
|
}
|
|
|
|
@NotNull
|
|
@Override
|
|
public List<ModContainer> subList(int i, int i1) {
|
|
return containers.subList(i, i1);
|
|
}
|
|
}
|