/**
* Copyright (c) Lambda Innovation, 2013-2016
* This file is part of the AcademyCraft mod.
* https://github.com/LambdaInnovation/AcademyCraft
* Licensed under GPLv3, see project root for more information.
*/
package cn.academy.misc.achievements.aches;
import cn.academy.ability.api.Category;
import cn.academy.ability.api.Skill;
import cn.academy.ability.api.event.LevelChangeEvent;
import cn.academy.misc.achievements.DispatcherAch;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.stats.Achievement;
/**
* @author EAirPeter
*/
public final class AchEvLevelChange<Cat extends Category> extends AchAbility<Cat> implements IAchEventDriven<LevelChangeEvent> {
private final int level;
public AchEvLevelChange(int lv, Cat cat, String id, int x, int y, Item display, Achievement parent) {
super(cat, id, x, y, display, parent);
level = lv;
}
public AchEvLevelChange(int lv, Cat cat, String id, int x, int y, Block display, Achievement parent) {
super(cat, id, x, y, display, parent);
level = lv;
}
public AchEvLevelChange(int lv, Cat cat, String id, int x, int y, ItemStack display, Achievement parent) {
super(cat, id, x, y, display, parent);
level = lv;
}
public AchEvLevelChange(int lv, Skill skill, String id, int x, int y, Achievement parent) {
super(skill, id, x, y, parent);
level = lv;
}
@Override
public void registerAll() {
DispatcherAch.INSTANCE.rgLevelChange(category, level, this);
}
@Override
public void unregisterAll() {
DispatcherAch.INSTANCE.urLevelChange(category, level);
}
@Override
public boolean accept(LevelChangeEvent event) {
return event.getAbilityData().getLevel() == level;
}
}