Newer
Older
void-pack-super-server / work / decompile-ee3ecae0 / net / minecraft / server / LootItemConditionAlternative.java
package net.minecraft.server;

import com.google.common.collect.Lists;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonObject;
import com.google.gson.JsonSerializationContext;
import java.util.List;
import java.util.function.Predicate;

public class LootItemConditionAlternative implements LootItemCondition {

    private final LootItemCondition[] a;
    private final Predicate<LootTableInfo> b;

    private LootItemConditionAlternative(LootItemCondition[] alootitemcondition) {
        this.a = alootitemcondition;
        this.b = LootItemConditions.b((Predicate[]) alootitemcondition);
    }

    public final boolean test(LootTableInfo loottableinfo) {
        return this.b.test(loottableinfo);
    }

    @Override
    public void a(LootCollector lootcollector) {
        LootItemCondition.super.a(lootcollector);

        for (int i = 0; i < this.a.length; ++i) {
            this.a[i].a(lootcollector.b(".term[" + i + "]"));
        }

    }

    public static LootItemConditionAlternative.a a(LootItemCondition.a... alootitemcondition_a) {
        return new LootItemConditionAlternative.a(alootitemcondition_a);
    }

    public static class b extends LootItemCondition.b<LootItemConditionAlternative> {

        public b() {
            super(new MinecraftKey("alternative"), LootItemConditionAlternative.class);
        }

        public void a(JsonObject jsonobject, LootItemConditionAlternative lootitemconditionalternative, JsonSerializationContext jsonserializationcontext) {
            jsonobject.add("terms", jsonserializationcontext.serialize(lootitemconditionalternative.a));
        }

        @Override
        public LootItemConditionAlternative b(JsonObject jsonobject, JsonDeserializationContext jsondeserializationcontext) {
            LootItemCondition[] alootitemcondition = (LootItemCondition[]) ChatDeserializer.a(jsonobject, "terms", jsondeserializationcontext, LootItemCondition[].class);

            return new LootItemConditionAlternative(alootitemcondition);
        }
    }

    public static class a implements LootItemCondition.a {

        private final List<LootItemCondition> a = Lists.newArrayList();

        public a(LootItemCondition.a... alootitemcondition_a) {
            LootItemCondition.a[] alootitemcondition_a1 = alootitemcondition_a;
            int i = alootitemcondition_a.length;

            for (int j = 0; j < i; ++j) {
                LootItemCondition.a lootitemcondition_a = alootitemcondition_a1[j];

                this.a.add(lootitemcondition_a.build());
            }

        }

        @Override
        public LootItemConditionAlternative.a a(LootItemCondition.a lootitemcondition_a) {
            this.a.add(lootitemcondition_a.build());
            return this;
        }

        @Override
        public LootItemCondition build() {
            return new LootItemConditionAlternative((LootItemCondition[]) this.a.toArray(new LootItemCondition[0]));
        }
    }
}