Similarly to the plugin it was based on, ExperienceShelves aims to improve Minecraft's enchanting system.
The amount of experience players have determines what level of enchantment they can apply to an item. However, because they will lose experience points upon death, it can be quite difficult to reach the higher enchantment levels. And that is exactly what this plugin tries to solve: it lets players store away their experience, so that they can pick it up whenever they need it, without having to worry about losing any of it.
Depositing and withdrawing experience can be done using the included commands or with a configurable item.
Simply follow these steps and your players will be enjoying this plugin in no time!
- Download the latest version of ExperienceShelves from here or here.
- Place the "ExperienceShelves.jar" file in the "plugins" folder, located in your server's main directory.
- Start or reload your server.
- Check if the "ExperienceShelves" folder has been added to the "plugins" folder successfully.
- Open the .yml files found in the folder mentioned above to configure the plugin.
- Reload your server to load your new configuration.
- Enjoy your newly installed plugin!
The included configuration file lets you change the item used for creating Experience Shelves, enable the plugin in creative mode and toggle particles on bookshelves.
We also had the opportunity to hold an interview with majora2007. Continue reading to learn more about the development process behind ExperienceShelves!
How did you get into Minecraft?
I was browsing YouTube and saw a video of a guy who built a CPU in Minecraft. Within minutes of him explaining how the CPU worked, I had bought the game. The simplicity of the game and infinite possibilities enthralled me and I’ve been hooked ever since.
What server do you play on?
I play on a small, locally-hosted Bukkit server with my brother and a few friends. I keep it as vanilla as possible, with a few modifications here and there to spice up gameplay.
What made you get into plugin development?
I initially got into development with my goal being able to make a plugin to bring the possibility of automatic cobblestone generators to Minecraft. I created a small plugin, BlockCrusher, which allows pistons to crush blocks. I loved how easy it was to work with the Bukkit API and I immediately began working on another plugin for automatic tree farms.
How did the community respond to first public release?
I was very surprised how many people used my plugin. I quickly surpassed 1,000 downloads and was blown away. I guess you could say they really liked it.
What was the motivation for this plugin?
The plugin is a remake of an abandoned plugin by Derthmonuter. The plugin was riddled by an experience calculation bug which nearly defeated the purpose of the plugin. The author would not release his source and since I used the plugin and there were no other solutions available, I decided to write one, add some extra features, and release it (after obtaining permission from Derthmonuter).
Roughly how long did it take to finish the first working version of ExperienceShelves?
The first working version took me one full weekend to develop and test. Extra features like particles came a few days later.
Have you come across any challenges during development and, if any, how did you handle them?
I came across two main challenges--experience cap and adding particles. The first was a design decision of how much experience the bookshelf can hold. At first, I capped it at a massive number, but felt this unbalanced the game. I asked a few friends for their thoughts and ended up capping it at a number too large to write out.
The second was adding particles to the bookshelves if there is experience inside. First I had to figure out how to create particles (construct the custom packet), then I needed to tweak until I found the best particle effects. The tricky part with particles is that by adding them, my plugin is now dependent on the underlying Minecraft version.
What was your favorite development tool for this project?
I think my favorite tool is either Maven or Git. I am a big proponent of distributed version control and using Git made development much quicker. Maven was also amazing by managing dependencies and building the plugin for me independent of the IDE I used.
Have you learned anything new from this project?
I learned a lot about how to properly use Maven as well as how to “shade” (include) external libraries into my plugin. I had never known about shading, but now I can see how useful it is and will be using it in future projects.
What stage of ExperienceShelves’ development process did you enjoy most?
I would have to say refactoring the plugin. I designed and developed portions of the code. After I would generally rewrite the code, make it less complex, easier to read, and follow the design better. I loved this part!
What is your favorite aspect of the plugin itself?
I really like the particle effects for the plugin. I am most proud of adding the feature and feel it fits very well.
Are you currently working on any other plugins or updates?
I am currently redesigning a previous plugin which modifies Dispensers allowing them to place/remove blocks. I believe redesigning the plugin to focus on planting saplings or seeds will help make automatic wheat and tree farms a possibility.
Have you ever released any custom content for other games?
Minecraft is the first game I have modded or contributed to.
What are some of your favorite plugins and why?
All of my favorite plugins seem to be more administrative, than changing gameplay in a significant way. Of course I like Essentials and PermissionsEx, as without them a Bukkit server just wouldn’t be as simple to manage. I especially like Essentials preventing creeper damage. Multiworld/Multi-Inv are also favorites because they work well and allow me to customize different worlds along with who can access. Lockette is also an amazing plugin, which has helped me so many times prevent not-so-trustworthy people stealing on my server. Lastly, CreativeGates adds a lot of simple functionality such as custom portals that anyone can create with any design they would like. It also allows me to customize the cost of the “portal block."
Do you have any advice for other upcoming plugin developers?
If I had to give any advice, I would say just go for it. Start small, read the documentation, ask for help on the forums or even PM me. Never give up and you will be able to make your thoughts a reality.
Reaching the end of the interview, we would like to thank majora2007 for taking the time to answer our questions and of course for developing the plugin in the first place!
ExperienceShelves is a good choice if you would like to make enchanting a little easier. It allows players to deposit their experience in bookshelves, so that they can withdraw it whenever they need to enchant an item.
Thanks to MadPixel for the Minecrafter font.