package joshie.progression.criteria.triggers; import joshie.progression.api.ProgressionAPI; import joshie.progression.api.criteria.IField; import joshie.progression.api.criteria.IFilterProvider; import joshie.progression.api.criteria.ITrigger; import joshie.progression.api.criteria.ProgressionRule; import joshie.progression.api.special.DisplayMode; import joshie.progression.api.special.IMiniIcon; import joshie.progression.api.special.ISpecialFieldProvider; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraftforge.event.entity.living.LivingEntityUseItemEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import java.util.List; import static joshie.progression.ItemProgression.ItemMeta.eat; import static joshie.progression.ItemProgression.getStackFromMeta; @ProgressionRule(name="onEaten", color=0xFF00B285) public class TriggerItemEaten extends TriggerBaseItemFilter implements IMiniIcon, ISpecialFieldProvider { private static final ItemStack mini = getStackFromMeta(eat); @Override public ITrigger copy() { return copyCounter(copyFilter(new TriggerItemEaten())); } @Override public ItemStack getMiniIcon() { return mini; } @Override public void addSpecialFields(List<IField> fields, DisplayMode mode) { if (mode == DisplayMode.EDIT) fields.add(ProgressionAPI.fields.getItemPreview(this, "filters", 30, 35, 1.9F)); else fields.add(ProgressionAPI.fields.getItemPreview(this, "filters", 65, 35, 1.9F)); } @SubscribeEvent public void onEvent(LivingEntityUseItemEvent.Finish event) { if (event.getEntityLiving() instanceof EntityPlayer) { ProgressionAPI.registry.fireTrigger(((EntityPlayer)event.getEntityLiving()), getProvider().getUnlocalisedName(), event.getItem()); } } @Override protected boolean canIncrease(Object... data) { ItemStack item = (ItemStack) data[0]; for (IFilterProvider filter : filters) { if (filter.getProvided().matches((ItemStack) data[0])) return true; } return false; } }