public void sendEvent(Event event)
	{
		if (disabled()) return;

		try
		{
			if (eventHandler != null)
			{
				final Method[] methods = eventHandler.getClass().getMethods();

				for (final Method method : methods)
				{
					if (method.isAnnotationPresent(EventHandler.class) && method.getParameterTypes()[0] == event.getClass())
					{
						method.invoke(eventHandler, event);
					}
				}
			}
		}
		catch (final IllegalArgumentException e)
		{
			new EventException("Method must have one argument and a " + event.getClass().getSimpleName() + " parameter", e).printStackTrace();
		}
		catch (final IllegalAccessException e)
		{
			System.err.println("Caught Exception: " + e.getMessage());
			System.err.println("Error Send Event: " + event.getClass().getName() + ", Modid: " + getModid());
			new EventException(e).printStackTrace();
		}
		catch (final InvocationTargetException e)
		{
			System.err.println("Caught Exception: " + e.getMessage());
			System.err.println("Error Send Event: " + event.getClass().getName() + ", Modid: " + getModid());
			new EventException(e).printStackTrace();
		}
	}