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

import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonObject;
import com.google.gson.JsonSerializationContext;
import javax.annotation.Nullable;

public class LootItemConditionTimeCheck implements LootItemCondition {

    @Nullable
    private final Long a;
    private final LootValueBounds b;

    private LootItemConditionTimeCheck(@Nullable Long olong, LootValueBounds lootvaluebounds) {
        this.a = olong;
        this.b = lootvaluebounds;
    }

    public boolean test(LootTableInfo loottableinfo) {
        WorldServer worldserver = loottableinfo.c();
        long i = worldserver.getDayTime();

        if (this.a != null) {
            i %= this.a;
        }

        return this.b.a((int) i);
    }

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

        public b() {
            super(new MinecraftKey("time_check"), LootItemConditionTimeCheck.class);
        }

        public void a(JsonObject jsonobject, LootItemConditionTimeCheck lootitemconditiontimecheck, JsonSerializationContext jsonserializationcontext) {
            jsonobject.addProperty("period", lootitemconditiontimecheck.a);
            jsonobject.add("value", jsonserializationcontext.serialize(lootitemconditiontimecheck.b));
        }

        @Override
        public LootItemConditionTimeCheck b(JsonObject jsonobject, JsonDeserializationContext jsondeserializationcontext) {
            Long olong = jsonobject.has("period") ? ChatDeserializer.m(jsonobject, "period") : null;
            LootValueBounds lootvaluebounds = (LootValueBounds) ChatDeserializer.a(jsonobject, "value", jsondeserializationcontext, LootValueBounds.class);

            return new LootItemConditionTimeCheck(olong, lootvaluebounds);
        }
    }
}