package joshie.harvest.fishing.loot; import com.google.gson.JsonDeserializationContext; import com.google.gson.JsonObject; import com.google.gson.JsonSerializationContext; import joshie.harvest.fishing.HFFishing; import net.minecraft.entity.player.EntityPlayer; 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 ConditionTier implements LootCondition { private final int level; public ConditionTier(int level) { this.level = level; } @Override public boolean testCondition(Random rand, LootContext context) { if (context.getKillerPlayer() instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer)context.getKillerPlayer(); ItemStack held = player.getHeldItemMainhand(); if (held != null && held.getItem() == HFFishing.FISHING_ROD) { return HFFishing.FISHING_ROD.getTier(held).getToolLevel() >= level; } } return false; } public static class Serializer extends LootCondition.Serializer<ConditionTier> { public Serializer() { super(new ResourceLocation(MODID, "tier"), ConditionTier.class); } public void serialize(JsonObject json, ConditionTier value, JsonSerializationContext context) { json.addProperty("level", value.level); } public ConditionTier deserialize(JsonObject json, JsonDeserializationContext context) { return new ConditionTier(JsonUtils.getInt(json, "level", 1)); } } }