package joshie.harvest.mining.loot;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonObject;
import com.google.gson.JsonSerializationContext;
import joshie.harvest.core.HFTrackers;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.JsonUtils;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.storage.loot.LootContext;
import net.minecraft.world.storage.loot.conditions.LootCondition;
import java.util.Random;
import static joshie.harvest.core.lib.HFModInfo.MODID;
public class Obtained implements LootCondition {
private final ItemStack stack;
public Obtained(Item item, int meta) {
this.stack = new ItemStack(item, 1, meta);
}
@Override
public boolean testCondition(Random rand, LootContext context) {
EntityPlayer player = (EntityPlayer) context.getKillerPlayer();
return player != null && HFTrackers.getPlayerTrackerFromPlayer(player).getTracking().hasObtainedItem(stack);
}
public static class Serializer extends LootCondition.Serializer<Obtained> {
public Serializer() {
super(new ResourceLocation(MODID, "obtained"), Obtained.class);
}
public void serialize(JsonObject json, Obtained value, JsonSerializationContext context) {
json.addProperty("item", value.stack.getItem().getRegistryName().toString());
json.addProperty("meta", value.stack.getItemDamage());
}
public Obtained deserialize(JsonObject json, JsonDeserializationContext context) {
return new Obtained(JsonUtils.getItem(json, "item"), JsonUtils.getInt(json, "meta", 0));
}
}
}