package com.thebrokenrail.reliccraft; import com.squareup.moshi.JsonAdapter; import com.squareup.moshi.Moshi; import com.thebrokenrail.reliccraft.data.RelicData; import net.minecraft.item.ItemStack; import net.minecraft.loot.condition.LootCondition; import net.minecraft.loot.context.LootContext; import net.minecraft.loot.function.ConditionalLootFunction; import net.minecraft.loot.function.LootFunction; import net.minecraft.nbt.CompoundTag; public class RelicLootTableFunction extends ConditionalLootFunction { private RelicLootTableFunction(LootCondition[] conditions) { super(conditions); } public ItemStack process(ItemStack stack, LootContext context) { CompoundTag tag = new CompoundTag(); Moshi moshi = new Moshi.Builder().build(); JsonAdapter jsonAdapter = moshi.adapter(RelicData.class); tag.putString("RelicData", jsonAdapter.toJson(RelicData.generate(context.getRandom()))); stack.setTag(tag); double chance = 1.0d; while (!(context.getRandom().nextDouble() > chance)) { chance = chance * 0.25d; } return stack; } public static class Builder extends ConditionalLootFunction.Builder { @Override protected RelicLootTableFunction.Builder getThisBuilder() { return this; } public LootFunction build() { return new RelicLootTableFunction(getConditions()); } } }