The Atavism server uses a plugin system to manage the different roles of the server. By default the system provides a selection of standard plugins such as Combat and Inventory along with providing support for developers to add their own plugins.
The AGIS plugins exist as Java files inside the agis code and can be found in the agis.plugins package. Each plugin file usually has an accompanying and similar named Client.java file inside the same package.
As the atavism server is starting up each process listed inside the world.sh script runs one or more python scripts (inside the config folder) that loads the Plugins. When a plugin is loaded the onActivate() function is called which should contain the setup of the message filters and hooks for messages the plugin should catch along with any other actions it needs to take (such as loading data from the database).
As messages get sent around the server or from the client the filter created in the onActivate() function will pick up the relevant messages and run the matching hook (see Working with Messages).
The guide for creating a new Plugin can be found at Creating an Atavism Plugin - mostly completed.
WIP, a lot more to be added.