Okay than i'll be more specific, heres a part from the l2jfree global restriction engine
public final boolean canUseItemHandler(Class<? extends IItemHandler> clazz, int itemId, L2Playable activeChar,
L2ItemInstance item, L2PcInstance player)
{
if (clazz == SummonItems.class)
{
if (player != null && isInFunEvent(player) && started() && !allowSummon())
{
activeChar.sendPacket(ActionFailed.STATIC_PACKET);
return false;
}
}
else if (clazz == Potions.class)
{
if (player != null && isInFunEvent(player) && started() && !allowPotions())
{
player.sendPacket(ActionFailed.STATIC_PACKET);
return false;
}
}
return true;
}
Same can be done with a specific skillhandler, skilltargethandler, admincommand handler or whatever you wish. Mainly for me thats the reason why i keep handlers in the core. Things like that in my book worth more than unhardcoding something becuse if you look it(and dont think about what l2j does because most of their stuff is just eyecandy or theoretically good stuff executed badly), you get better functionality over a simple convention of code design.