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

import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonObject;
import com.google.gson.JsonSerializationContext;
import java.util.Random;

public class LootEnchantLevel extends LootItemFunctionConditional {

    private final LootValue a;
    private final boolean c;

    private LootEnchantLevel(LootItemCondition[] alootitemcondition, LootValue lootvalue, boolean flag) {
        super(alootitemcondition);
        this.a = lootvalue;
        this.c = flag;
    }

    @Override
    public ItemStack a(ItemStack itemstack, LootTableInfo loottableinfo) {
        Random random = loottableinfo.a();

        return EnchantmentManager.a(random, itemstack, this.a.a(random), this.c);
    }

    public static LootEnchantLevel.a a(LootValue lootvalue) {
        return new LootEnchantLevel.a(lootvalue);
    }

    public static class b extends LootItemFunctionConditional.c<LootEnchantLevel> {

        public b() {
            super(new MinecraftKey("enchant_with_levels"), LootEnchantLevel.class);
        }

        public void a(JsonObject jsonobject, LootEnchantLevel lootenchantlevel, JsonSerializationContext jsonserializationcontext) {
            super.a(jsonobject, (LootItemFunctionConditional) lootenchantlevel, jsonserializationcontext);
            jsonobject.add("levels", LootValueGenerators.a(lootenchantlevel.a, jsonserializationcontext));
            jsonobject.addProperty("treasure", lootenchantlevel.c);
        }

        @Override
        public LootEnchantLevel b(JsonObject jsonobject, JsonDeserializationContext jsondeserializationcontext, LootItemCondition[] alootitemcondition) {
            LootValue lootvalue = LootValueGenerators.a(jsonobject.get("levels"), jsondeserializationcontext);
            boolean flag = ChatDeserializer.a(jsonobject, "treasure", false);

            return new LootEnchantLevel(alootitemcondition, lootvalue, flag);
        }
    }

    public static class a extends LootItemFunctionConditional.a<LootEnchantLevel.a> {

        private final LootValue a;
        private boolean b;

        public a(LootValue lootvalue) {
            this.a = lootvalue;
        }

        @Override
        protected LootEnchantLevel.a d() {
            return this;
        }

        public LootEnchantLevel.a e() {
            this.b = true;
            return this;
        }

        @Override
        public LootItemFunction b() {
            return new LootEnchantLevel(this.g(), this.a, this.b);
        }
    }
}