/Feather

Core Bukkit framework of the former Minespree Network

Primary LanguageJavaGNU Affero General Public License v3.0AGPL-3.0

Feather

Discord License Documentation

This is the code that powered the core Bukkit services of the former Minespree Network. It includes the database models used by all parts of the network, interfaces used by games and hubs and utility classes.

There was a plan to integrate this plugin with Mango (a new base module that connected all of our backend services), but the server closed down before we were able to migrate to it.

Besides the removal of some branding and configuration data, it is more or less unmodified. It is probably not directly useful to third parties in its current state, but it may be help in understanding how the Minespree network operated.

We are quite open to the idea of evolving this into something more generally useful. If you would like to contribute to this effort, talk to us in Discord.

Please note that this project might have legacy code that was planned to be refactored and as so, we kindly ask you not to judge the programming skills of the author(s) based on this single codebase.

Status

This plugin was converted from an internal project to open source in a rush, so they are not yet well adapted for third party use. Improving this adaptation is a top development priority, specifically:

  • Eliminating dependencies on external plugins (e.g. Babel)
  • Allowing network features to be fully disabled
  • Expanding standalone functionality
  • Documentation for third-parties (e.g. "How do I run this thing?")

Requirements

To build Feather, the following will need to be installed and available from your shell:

  • JDK 8 version 131 or later (older versions might work)
  • Git
  • Maven

You can find detailed installation instructions for these tools on the Getting started docs page.

Getting started

This project depends on these modules, so they should also be built and placed on your plugins/ directory before running Feather:

You can build this project running the following command:

mvn package

Please note that you might also want to mvn install this module to your local .m2 repo as it is required by most Bukkit plugins. You can also deploy it to your own Maven repo to use the GitLab CI Docker image and make distribution easier. Instructions

Next, move the produced artifact on target/ to your Spigot server plugins/ directory and restart the instance. Once started, add your MongoDB and Redis credentials to the config.yml file.

This project also includes a GitLab CI .gitlab-ci.yml build config file to automatically build and deploy our artifacts to the main and development networks. This process requires the use of a custom Docker image, but its setup is documented on the Docs page.

Architecture

This repo contains the following components:

  • Data models and services
  • Functionality common to all servers e.g. friends, nicknames, etc.
  • MongoDB and Redis service abstractions
  • Repository system used to serialize statistics, achievements and settings data to database values
  • Crates API used by Pirate
  • Global announcement system
  • Achievements API
  • Deprecated punishment system. This submodule includes lots of legacy code.
  • Server queue API (used for joining servers with friends, parties...)
  • Staff utilities
  • General utility classes used by dependent modules

Authors

This project was maintained by the Minespree Network & Game teams. If you have any questions or problems, feel free to reach out to the specific writers and maintainers of this project:


exception

Hugmanrique

Doshy

Coding Conventions

  • We generally follow the Sun/Oracle coding standards.
  • No tabs; use 4 spaces instead
  • No trailing whitespaces
  • No CRLF line endings, LF only, put your git's core.autocrlf on true.
  • No 80 column limit or 'weird' midstatement newlines.

License

Feather is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

A copy of the GNU Affero General Public License is included in the file LICENSE, and can also be found at https://www.gnu.org/licenses/agpl-3.0.en.html

The AGPL license is quite restrictive, please make sure you understand it. If you run a modified version of this software as a network service, anyone who can use that service must also have access to the modified source code.