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.block.state.IBlockState;
import net.minecraft.item.ItemStack;
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
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.click;
import static joshie.progression.ItemProgression.getStackFromMeta;
@ProgressionRule(name = "clickBlock", color = 0xFF69008C, cancelable = true)
public class TriggerClickBlock extends TriggerBaseBlock implements IMiniIcon {
private static final ItemStack mini = getStackFromMeta(click);
@Override
public ITrigger copy() {
return copyCounter(copyFilter(new TriggerClickBlock()));
}
@Override
public ItemStack getMiniIcon() {
return mini;
}
@SubscribeEvent(priority = EventPriority.LOWEST)
public void onEvent(PlayerInteractEvent event) {
if (event.getPos() != null) {
IBlockState state = event.getWorld().getBlockState(event.getPos());
Block block = state.getBlock();
int meta = block.getMetaFromState(state);
if (ProgressionAPI.registry.fireTrigger(event.getEntityPlayer(), getProvider().getUnlocalisedName(), block, meta) == Result.DENY) {
event.setCanceled(true);
}
}
}
}