package net.minecraft.core; import com.google.common.collect.Lists; import java.util.AbstractList; import java.util.Arrays; import java.util.List; import javax.annotation.Nonnull; import javax.annotation.Nullable; import org.apache.commons.lang3.Validate; public class NonNullList extends AbstractList { private final List list; @Nullable private final E defaultValue; public static NonNullList create() { return new NonNullList<>(Lists.newArrayList(), null); } public static NonNullList createWithCapacity(int p_182648_) { return new NonNullList<>(Lists.newArrayListWithCapacity(p_182648_), null); } public static NonNullList withSize(int p_122781_, E p_122782_) { Validate.notNull(p_122782_); Object[] aobject = new Object[p_122781_]; Arrays.fill(aobject, p_122782_); return new NonNullList<>(Arrays.asList((E[])aobject), p_122782_); } @SafeVarargs public static NonNullList of(E p_122784_, E... p_122785_) { return new NonNullList<>(Arrays.asList(p_122785_), p_122784_); } protected NonNullList(List p_122777_, @Nullable E p_122778_) { this.list = p_122777_; this.defaultValue = p_122778_; } @Nonnull @Override public E get(int p_122791_) { return this.list.get(p_122791_); } @Override public E set(int p_122795_, E p_122796_) { Validate.notNull(p_122796_); return this.list.set(p_122795_, p_122796_); } @Override public void add(int p_122787_, E p_122788_) { Validate.notNull(p_122788_); this.list.add(p_122787_, p_122788_); } @Override public E remove(int p_122793_) { return this.list.remove(p_122793_); } @Override public int size() { return this.list.size(); } @Override public void clear() { if (this.defaultValue == null) { super.clear(); } else { for (int i = 0; i < this.size(); i++) { this.set(i, this.defaultValue); } } } }