Plugins are the only one way to change the functionality of a modeling tool. The main purpose of the plugin architecture is to add a new functionality to your modeling tool. Although there is a limited ability to remove an existing functionality using plugins. A plugin must contain the following resources:
Compiled java files, packaged into a jar file
A plugin descriptor file
Optional files used by the plugin
Typically a plugin creates some GUI components allowing a user to use the plugin functionality. Generally, this is not necessary because the plugin can listen for some changes in a project and activate itself on the desired changes.