/**
* 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.misc.achievements.DispatcherAch;
import cn.academy.misc.achievements.conds.CondItemCrafted;
import cpw.mods.fml.common.gameevent.PlayerEvent.ItemCraftedEvent;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.stats.Achievement;
import java.util.HashMap;
import java.util.HashSet;
/**
* @author EAirPeter
*/
public final class AchCrAnd extends AchEvItemCrafted {
public AchCrAnd(String id, int x, int y, Item display, Achievement parent) {
super(id, x, y, display, parent);
}
public AchCrAnd(String id, int x, int y, Block display, Achievement parent) {
super(id, x, y, display, parent);
}
public AchCrAnd(String id, int x, int y, ItemStack display, Achievement parent) {
super(id, x, y, display, parent);
}
private HashMap<Item, CondItemCrafted> cIT = new HashMap<Item, CondItemCrafted>();
@Override
public void registerAll() {
for (CondItemCrafted cit : cIT.values())
DispatcherAch.INSTANCE.rgItemCrafted(cit.item, this);
}
@Override
public void unregisterAll() {
for (CondItemCrafted cit : cIT.values())
DispatcherAch.INSTANCE.urItemCrafted(cit.item, this);
}
@Override
public ACAchievement adItemCrafted(CondItemCrafted cit) {
cIT.put(cit.item, cit);
return this;
}
@Override
public boolean accept(ItemCraftedEvent event) {
CondItemCrafted cit = cIT.get(event.crafting.getItem());
if (cit == null || !cit.acItemStack(event.crafting))
return false;
int ac = 1;
HashSet<CondItemCrafted> set = new HashSet<CondItemCrafted>();
set.add(cit);
for (ItemStack is : event.player.inventory.mainInventory) {
CondItemCrafted cur = cIT.get(is.getItem());
if (cur != null && cur.acItemStack(is))
set.add(cur);
}
return set.size() == cIT.size();
}
}