Skip to content

Prison v3.3.0-alpha.18

Latest
Compare
Choose a tag to compare
@rbluer rbluer released this 20 May 19:39
be7205e

Prison-3.3.0-alpha.18.jar

This version of prison works with Spigot v1.20.6 and Paper v1.20.6.

The whole prison build environment was rewrote and updated to provide for a cleaner and more modern way to use dependencies within Gradle.

In combination with updating most of the libraries and other dependencies, this resolved many issues that were initially preventing prison from working with Spigot v1.20.5 and v1.20.6.

  • Gradle updates: Upgraded from v7.3.3 to v8.7. Had to upgrade 22 times to reach v8.7. With gradle, if there is a future breaking change in the configs, it warns you in the before the next release. So incremental upgrading helps ensure the configs are fixed and functional before moving on to the next release.

  • Upgraded Spiget from v1.4.2 to 1.4.6. This checks prison's version for updates.
    Had to also rewrite the code using Spiget because the older build tools were having issues handling anonymous classes when building the final jar file with shadow.

  • Upgraded shadow from v6.10 to v8.1.1 2
    Shadow v8.x could only be used with gradle v8.x

  • Placeholders: There was an odd issue with placeholders when a discord plugin was using papi. For some reason, that plugin was sending the placeholders with null players. Now checks for nulls. Since it was a non-standard way of using papi, there may be other issues?

  • PlayerCache: Slight modification in getting the keySet so it will not be tied to the original PlayerCache's TreeMap. This will eliminate the possibilities of a concurrent modification exception if new players are brought online or unloaded.

  • Economies: Added a feature for external functions to be able to check if the player has an account. It's not being used yet, but it can be used to bypass code (and messages) if a player does not have an account.

3.3.0-alpha.18 2024-05-20

Prison v3.3.0-alpha.18 2024-05-20

This version has been tested and confirmed to be working with Spigot v1.20.6 and Paper v1.20.6.

  • Player Ranks GUI: Fixed an issue with the code not using the correct defaults for NoRankAccess when no value is provided in the configs.

  • Obsolete blocks: Marked an enum as @deprecated to suppress a compile warning. This has not real impact on anything.

  • Gradle updates:
    Upgraded XSeries from v9.10.0 to v10.0.0
    Upgraded nbtApi from v2.12.2 to v2.12.4
    Upgraded luckperms-v5 from v5.0 to v5.4

  • Economy: Added a feature to check if a player has an economy account.
    Currently this is not being used outside of the economy integrations, but it can be used to help suppress initial startup messages where players do not have an account, which will help prevent flooding a lot of messages to the console for some servers.

  • Player Cache: There was a report of a concurrent modification exception.
    This is very rare and generally should not happen.
    The keySet is part of the original TreeMap collection, so the fix here is to take all keys and put them in a new collection so they are then disconnected from the original TreeSet.
    This will prevent a concurrent modification exception if there is an action to add or remove users from the user cache, since the user cache remains active and cannot be locked with a synchronization for any amount of time, other than then smallest possible.
    The standard solution with dealing with this TreeSet collection would be to synchronize the whole activity of saving the dirty elements of the player cache. Unfortunately, that will cause blocking transactions when player events try to access the player cache. Therefore it's a balance game of trying to protect the player cache with the minimal amount of synchronizations, but allow the least amount of I/O blocking for all other processes that are trying to use it.
    Hopefully this is sufficient to allow it all to work without conflict, and to be able to provide enough protection.

  • Gradle: Removed a lot of the older commented out settings.
    See prior commits to better understand how things were setup before, or for references.

  • Gradle: A few more adjustments to add a few more items to the libs.versions.toml.

  • Placeholders: The placeholder api call from PlaceholderAPI is passing a null OfflinePlayer object.
    Not sure why this has never been an issue before, but added support for null OfflnePlayers.

  • Spiget: Updated the way prison handles spiget by now submitting a task with a 5 second delay.
    The messages are more helpful now.
    This also moves it out of the SpigotPrison class.

  • Upgraded John Rengelman's shadow, a gradle plugin, from v6.1.0 to v8.1.1

  • Upgrade gradle from v7.6.4 to v8.7
    Upgraded from: v7.6.4 -> v8.0 -> v8.0.2 -> v8.1 -> v8.1.1
    -> v8.2 -> v8.3 -> v8.4 -> v8.5 -> v8.6 -> v8.7
    v8.3 required a configuration change due to org.gradle.api.plugins.BasePluginConvention type has been deprecated and will be removed in gradle v9.x. This is impacting the use of the build.gradle's archivesBaseNamme. This is being replaced by the new base{} configuration block.
    v8.3 also required other config changes.

  • Upgrade spiget from v1.4.2 to v1.4.6
    Was using a jar with v1.4.2 due to their repo going down frequently.
    Switched back to pulling through maven and got rid of jar.

  • Upgrade gradle from v7.3.3 to v7.6.4
    Upgraded from: v7.3.3 -> v7.4 -> v7.4.1 -> v7.4.2
    -> v7.5 -> v7.5.1 -> v7.6 -> v7.6.1 -> v7.6.2 -> v7.6.3 -> v7.6.4
    Preparing for Gradle v8.x
    Around v7.5.1 required a change to auto provisioning