package joshie.progression.criteria.triggers;
import joshie.progression.api.ProgressionAPI;
import joshie.progression.api.criteria.ITrigger;
import joshie.progression.api.criteria.ProgressionRule;
import joshie.progression.api.special.IMiniIcon;
import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
import net.minecraftforge.event.world.BlockEvent.BreakEvent;
import net.minecraftforge.fml.common.eventhandler.Event.Result;
import net.minecraftforge.fml.common.eventhandler.EventPriority;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import static joshie.progression.ItemProgression.ItemMeta.breaking;
import static joshie.progression.ItemProgression.getStackFromMeta;
@ProgressionRule(name = "breakBlock", color = 0xFFDDDDDD, cancelable = true)
public class TriggerBreakBlock extends TriggerBaseBlock implements IMiniIcon {
private static final ItemStack mini = getStackFromMeta(breaking);
@Override
public ITrigger copy() {
return copyCounter(copyFilter(new TriggerBreakBlock()));
}
@Override
public ItemStack getMiniIcon() {
return mini;
}
@SubscribeEvent(priority = EventPriority.LOWEST)
public void onEvent(BreakEvent event) {
Block block = event.getState().getBlock();
int meta = block.getMetaFromState(event.getState());
if (ProgressionAPI.registry.fireTrigger(event.getPlayer(), getProvider().getUnlocalisedName(), block, meta) == Result.DENY) {
event.setCanceled(true);
}
}
}