package net.minecraft.server;
import com.google.common.collect.Lists;
import java.util.List;
import java.util.function.Consumer;
import org.apache.commons.lang3.ArrayUtils;
public class LootEntryAlternatives extends LootEntryChildrenAbstract {
LootEntryAlternatives(LootEntryAbstract[] alootentryabstract, LootItemCondition[] alootitemcondition) {
super(alootentryabstract, alootitemcondition);
}
@Override
protected LootEntryChildren a(LootEntryChildren[] alootentrychildren) {
switch (alootentrychildren.length) {
case 0:
return LootEntryAlternatives.a;
case 1:
return alootentrychildren[0];
case 2:
return alootentrychildren[0].b(alootentrychildren[1]);
default:
return (loottableinfo, consumer) -> {
LootEntryChildren[] alootentrychildren1 = alootentrychildren;
int i = alootentrychildren.length;
for (int j = 0; j < i; ++j) {
LootEntryChildren lootentrychildren = alootentrychildren1[j];
if (lootentrychildren.expand(loottableinfo, consumer)) {
return true;
}
}
return false;
};
}
}
@Override
public void a(LootCollector lootcollector) {
super.a(lootcollector);
for (int i = 0; i < this.c.length - 1; ++i) {
if (ArrayUtils.isEmpty(this.c[i].d)) {
lootcollector.a("Unreachable entry!");
}
}
}
public static LootEntryAlternatives.a a(LootEntryAbstract.a<?>... alootentryabstract_a) {
return new LootEntryAlternatives.a(alootentryabstract_a);
}
public static class a extends LootEntryAbstract.a<LootEntryAlternatives.a> {
private final List<LootEntryAbstract> a = Lists.newArrayList();
public a(LootEntryAbstract.a<?>... alootentryabstract_a) {
LootEntryAbstract.a[] alootentryabstract_a1 = alootentryabstract_a;
int i = alootentryabstract_a.length;
for (int j = 0; j < i; ++j) {
LootEntryAbstract.a<?> lootentryabstract_a = alootentryabstract_a1[j];
this.a.add(lootentryabstract_a.b());
}
}
@Override
protected LootEntryAlternatives.a d() {
return this;
}
@Override
public LootEntryAlternatives.a a(LootEntryAbstract.a<?> lootentryabstract_a) {
this.a.add(lootentryabstract_a.b());
return this;
}
@Override
public LootEntryAbstract b() {
return new LootEntryAlternatives((LootEntryAbstract[]) this.a.toArray(new LootEntryAbstract[0]), this.f());
}
}
}