I have extended my client with a plug-in system which should allow all of you to build your own plug-ins to hook into the client (to some extent).
They are accessible under the Xtended menu (originally implemented by Ender).
This part is simple! You download the plug-in and place it in ~/Salem/plugins.
I am planning to maintain a list of plug-ins on this first post of which I have personally verified the source code (not guaranteeing that it will do what it says, but guaranteeing that it won't do anything nasty).
hello world plugin
Github page: https://github.com/DonnEssime/SampleSalemPlugin
Direct link: https://github.com/DonnEssime/DonnEssime.github.io/raw/master/Salem/plugins/SamplePlugin.jar
Github page: https://github.com/DonnEssime/SalemPickupPlugin
Direct link: https://github.com/DonnEssime/DonnEssime.github.io/raw/master/Salem/plugins/PickupPlugin.jar
Github page: https://github.com/DonnEssime/StallSellerPlugin
Direct link: https://github.com/DonnEssime/StallSellerPlugin/raw/master/dist/StallSellerPlugin.jar
frog/small kritter plugin
Github page: https://github.com/DonnEssime/SalemFrogPlugin
Direct link: https://github.com/DonnEssime/SalemFrogPlugin/raw/master/dist/FrogPlugin.jar
fuel filler plugin
You are responsible for having the right fuel on hand. Note that it uses forced shift-clicks, so don't have singing old logs in your inventory when fueling fires, and the like.
Github page: https://github.com/DonnEssime/SalemFuelPlugin
Direct link: https://github.com/DonnEssime/SalemFuelPlugin/raw/master/dist/SalemFuelPlugin.jar
Creating your own plug-ins
I have tried to make this as painless as possible, but unfortunately there are quite a few steps involved.
You will find a comprehensive guide in the README of the PickupPlugin git repository.
I have (against better habits ) committed ALL of the changes from SampleSalemPlugin to SalemPickupPlugin in a single commit. You can view it here, to double check whether you have all changes. Everything is listed in the README, though.
Note that, through the "load" method, it is also possible for plug-ins to permanently influence client behaviour without ever being activated once.
Now it's up to you!
Some extensions to my client I will make accessible as plug-ins rather than as full-fledged client extensions, depending on where they best fit. One hopeful dream is to, one day, have some kind of central plug-in list and a full updater GUI for both the client and any and all plug-ins you may enjoy. One day.