package joshie.harvest.mining.loot; import com.google.gson.JsonDeserializationContext; import com.google.gson.JsonObject; import com.google.gson.JsonSerializationContext; import joshie.harvest.api.calendar.Season; import joshie.harvest.core.HFTrackers; import net.minecraft.entity.player.EntityPlayer; 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.Locale; import java.util.Random; import static joshie.harvest.core.lib.HFModInfo.MODID; public class Seasonal implements LootCondition { private final Season season; public Seasonal(Season season) { this.season = season; } @Override public boolean testCondition(Random rand, LootContext context) { if (context.getKillerPlayer() instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) context.getKillerPlayer(); return HFTrackers.getCalendar(player.worldObj).getDate().getSeason() == season; } return false; } public static class Serializer extends LootCondition.Serializer<Seasonal> { public Serializer() { super(new ResourceLocation(MODID, "season"), Seasonal.class); } public void serialize(JsonObject json, Seasonal value, JsonSerializationContext context) { json.addProperty("season", value.season.name().toLowerCase(Locale.ENGLISH)); } public Seasonal deserialize(JsonObject json, JsonDeserializationContext context) { return new Seasonal(Season.valueOf(JsonUtils.getString(json, "season").toUpperCase(Locale.ENGLISH))); } } }