package joshie.harvest.npcs.gift;
import joshie.harvest.api.npc.gift.GiftCategory;
import joshie.harvest.api.npc.gift.IGiftRegistry;
import joshie.harvest.core.util.holders.HolderRegistry;
import joshie.harvest.core.util.holders.HolderRegistrySet;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
public class GiftRegistry implements IGiftRegistry {
private final HolderRegistrySet blacklist = new HolderRegistrySet();
private final HolderRegistry<GiftCategory> registry = new HolderRegistry<>();
public HolderRegistry<GiftCategory> getRegistry() {
return registry;
}
public boolean isBlacklisted(World world, EntityPlayer player, ItemStack stack) {
if (stack.getItem() instanceof ItemBlock) {
Block block = ((ItemBlock)stack.getItem()).getBlock();
if (block.hasTileEntity(block.getStateForPlacement(world, BlockPos.ORIGIN, EnumFacing.DOWN, 0F, 0F, 0F, stack.getItemDamage(), player, stack))) return true;
}
return registry.getValueOf(stack) == null && (stack.getItem().isDamageable() || blacklist.contains(stack));
}
@Override
public void addToBlacklist(Object... objects) {
for (Object object: objects) blacklist.register(object);
}
@Override
public void setCategory(Object object, GiftCategory categories) {
registry.register(object, categories);
}
@Override
public boolean isGiftType(ItemStack stack, GiftCategory categories) {
return registry.matches(stack, categories);
}
}