registration.
* OnDemandTickListener contains API for convenient on-demand
registration and use.
* TickTask recognizes these and conveniently sets them
registered/unregistered.
* TickTask was optimized to allow faster adding and removal of
TickListener instances.
* Used for delayed component registration.
* Future purpose.
* Fixes data removal ignoring chat.logins and chat.text for a part.
* Move some components interfaces and ReflectionUtil to NCPCommons.
* Unregister components in reverse order.
* Add ComponentRegistryProvider for generic sub-registries (DataManager
for instance).
* Add IHoldSUbComponents for delayed sub-component registration
(convenient for iteration over parent-components with later registration
of sub components not missing out any registered parent components for
those). [Partly implemented: Using this during runtime does not yet
work, only used in onEnable.]
* Let CheckListener implement IHoldSubComponents and use this with
addCheck to register the queued checks after all the listeners.
* Register the core system components in a bunch before the
CheckListenerS, to allow sub-registries to work directly and to allow
getAPI().addComponent on the plugin class during construction of
CheckListeners.
Reminder: Policy is to increase second level count for Minecraft updates
and bigger internal/external changes, while the third level count will
indicate releases on BukkitDev rather. First level count probably will
only increase if something really fundamental is changed.
Heavier but more consistent: use BlockProperties.collidesBlock, since we
don't really check the blocks bounding box against a ray anyway, but
collision with the full moves bounding box. Getting a blocks shape
should some day be routed through BlockProperties so the shape is
correct from the start.