GamegineGame compatibility API and creation library for Bukkit Links: Here are some links you may find useful. GitHub Jenkins Javadocs BukkitDev Trello Concept: This API is being created in order to create compatibility among games utilizing it to allow for multiple games to be run on a single server without any conflicts or problems and create a unified minigame server experience. This will be especially useful for minigame servers wanting to create a smooth experience for their players with minimal configuration. From past experience, I have found it a pain to install multiple game plugins on a single server due to incompatibilities that would appear with signs, joining, player management, etc. I'm creating this in the hope that no one will have to deal with those sorts of problems in the future as they create servers. Also, this will serve as a library for actually creating games, something very handy for developers to use. A lot of basic but important game functionality will be provided by this. One of my main goals with the library aspect of Gamegine is creating a wide range of low level to high level game creation classes. You'll be able to have full control when creating your games by using the low level classes OR you can fill out a few methods on the high level classes to create games based on existing templates. Status: Current release: Nearing initial alpha release The compatibility API portion of Gamegine is nearing completion. This includes: Player tracking Game registration and tracking Single command to join games that implement the required classes Game signs (join, status, etc) The first alpha release of Gamegine will not have any library classes for game creation. The versions following will begin adding those features. Planned Features: Most of the features below are guaranteed to be included in Gamegine. Some may take longer than others, however. More features planned as time goes on, suggestions are always welcome. Games: At the bare minimum, a game will be able to run by simply filling out a few methods. Multiple instances of a game can be run as games are arena-based (which can be disabled on a per-game basis if necessary) Games can be disabled so you can safely perform maintenance on them, etc. A separate ‘plugin’ system for creating games without having to include it in its own Bukkit plugin. This will allow for live installation/removal of games on a server without having to restart/reload it. Players: Player storage using Mojang UUIDs for compatibility with the upcoming ability of username changes Allow players to join full games (with certain permission(s) -> useful for donor ranks, VIP ranks, etc.) Ability to disable certain commands while in-game The plugin will also make sure players cannot join games while they're already in one Points: A point system that can serve as an economy Points can be awarded through commands, games, donations, and other ways Teams: Games can use team-based player handlers that allow for teams to be part of a game A theoretically infinite amount of teams can be defined for a single game Teams can have certain features enabled or disabled, such as team chat or friendly fire Ranks can exist within a single team in order to show that one player (or more) is higher ranked on the team (e.g. the ‘leader’ of the team) Arenas: Main component of games Simple way to define, create, and modify arenas using commands Built-in wand for selecting arena regions + compatibility with WorldEdit selections WorldGuard region support for protection and/or selections Cooldowns: Cooldowns for nearly anything can be created, from items to commands Ability to create cooldowns that will announce time remaining at specified intervals or silent cooldowns The cooldown time is set with a number of ticks, giving a wide range of available time intervals for cooldowns Signs: Custom sign types can be created simply by extending a class and filling in some methods as to what it does when it’s interacted with Player interaction with signs can have delays set in order to prevent lag Signs are tracked via positions and as a result don’t have to have a code in brackets on the first line at all times Signs are updated only when necessary, there is no repeating task updating them. This helps to reduce lag Support for InSigns to show different sign content depending on the player that’s viewing a particular sign Scoreboards: Scoreboards can be created simply by specifying what is desired on it Can be modified via config (if a game allows for it) so you can change the appearance and content of a scoreboard A single scoreboard can be created for a game or multiple can be created to show players different content (e.g. their stats, money) SQL support that can be utilized to show scores/stats for a game on a website Contributing: You can contribute to the development of this project in a variety of ways. Provide suggestions and feedback. Feedback and suggestions are very welcome as I'm looking for ways to make this a great library. Provide code. If you're also a developer, your help may be appreciated. Check out the GitHub repo as linked above and you can potentially provide new code or polish up some of the current code. Provide graphics. Something I would really appreciate is some graphics for this post (and the future BukkitDev page) to make things stand out more. Feel free to contribute in the comments if you'd like.