A collection of plugins with a common library for creative-based freedom servers, emphasizing full customization through optional and interchangeable modules.
Go to file
allinkdev 8e5c52d0e8
Implement configuration system (#12)
* Return primitives in configuration interface where possible

This should save some unnecessary performance and memory overhead caused by the storage of object wrappers of the primitive types and the unboxing of those object wrappers into the wrapped primitive types when we try to do some primitive-exclusive operation.

I doubt that we'll be using the additional sugar methods that these wrappers provide most of the time, and if we need to we can just box the returned primitives.

* Mark returned lists in Configuration interface as Unmodifiable

I can't think of a use-case where we would want to modify the returned list from the Configuration interface we're accessing; however in case those situations do in-fact exist, I've made the decision to mark the return values of those methods as Unmodifiable so that there are no confusions in the future when the returned list throws an UnsupportedOperationException

* Provide class parameter in Configuration#getList

Otherwise, it's impossible to actually check if the on-disk configuration values are actually of the same type as/a subclass of what the plugin is expecting in the implementation.

* State that Configuration#getList will return an empty list if it fails

I don't think it would go particularly well if we were to return a list of Objects when we have a parameterized method. Additionally, how would components of the plugin respond to being given a list of Objects instead of whatever type they were expecting? This should be a better fail-safe solution compared to what we were previously going to do.

* Return an optional in Configuration#get if something went wrong

* Add class parameter to Configuration#get

* Update JavaDoc of Configuration#getList to reflect new parameter

* Remove final modifier from parameter

* Add class parameter to Configuration#getOrDefault

* Fix misspelled JavaDoc tag

* Partially implement a wrapper over FileConfiguration that implements our Configuration

* Fix codestyle violation

* Add copyright header & change package

* Add code for WrappedBukkitConfiguration#getList and WrappedBukkitConfiguration#get
2023-08-11 14:01:19 -05:00
.github/workflows updates 🎱 2023-05-30 17:39:54 -05:00
.idea Added copyright notice to all class files (#23) 2023-08-11 19:41:38 +01:00
Corvo Added copyright notice to all class files (#23) 2023-08-11 19:41:38 +01:00
Datura Added copyright notice to all class files (#23) 2023-08-11 19:41:38 +01:00
Fossil Added copyright notice to all class files (#23) 2023-08-11 19:41:38 +01:00
gradle/wrapper Bump Gradle to latest, updated Dev list (#18) 2023-08-03 21:58:40 +01:00
Patchwork Implement configuration system (#12) 2023-08-11 14:01:19 -05:00
.gitignore Update content 2023-05-12 21:19:35 -05:00
build.gradle Adjusted Command Processing 2023-07-23 02:15:12 -05:00
checkstyle.xml Adjust to better align with code specs 2023-05-21 21:47:10 -05:00
codestyle.xml pbs kids 2023-06-25 01:10:30 -05:00
gradlew Bump Gradle to latest, updated Dev list (#18) 2023-08-03 21:58:40 +01:00
gradlew.bat Bump Gradle to latest, updated Dev list (#18) 2023-08-03 21:58:40 +01:00
LICENSE.md Rename LICENSE to LICENSE.md 2023-05-13 22:36:55 -05:00
README.md Modify banner formatting 2023-08-06 17:44:39 -05:00
settings.gradle Upgrades 2023-05-15 01:30:37 -05:00

FNS Logo

GitHub contributors GitHub code size in bytes GitHub last commit Codacy grade

GitHub top language GitHub release (latest by date including pre-releases) Snyk Vulnerabilities for GitHub Repo Libraries.io dependency status for GitHub repo TFM Used

FNS Banner

This project is a collection of plugins supported by a common library designed for creative-based freedom servers (servers which grant generous amounts of permission nodes to all players.) This is designed to encompass the ideologies of a Freedom server, while maintaining full customization through modules. Most modules are designed to be either optional or interchangable, except Patchwork (API) and Datura (Data Manager). These two are required to run any of the other modules. This is NOT a ground up rewrite of TotalFreedomMod. This is a completely new project designed to be entirely ambiguous.

Honorable mention:

This plugin suite also uses the following libraries:

Developers




To Do List

Patchwork (API):

  • Logging System
  • SQL API
  • Economy API
  • Command API
  • Particle API
  • User API
  • Service API
  • Task API
  • Permissions API
  • Configuration API (In Progress...)
  • Event API (In Progress...)

Datura (Data Manager):

  • Permission Handling
  • Permission Registration & Assignment
  • SQL Data Handling (In Progress...)
  • Configuration Implementations
  • User Data Implementations (In Progress...)
  • Punishment Systems (e.x. Locker, Halter, Cager)

Fossil (Entertainment):

  • Economy Implementation
  • Particle Implementation / Trails (In Progress...)
  • Command Implementations (In Progress...)
  • Implement a shop for the economy (In Progress...)
  • Chat reaction / game system
  • Jumppads

Corvo (Scheduling and Listening Service):

  • Service Implementation
  • Service Handling
  • Task Implementation
  • Task Management
  • Event (Project) Implementations
  • Listener (Bukkit) Implementations