Advanced Perks Recode | GUI, PlaceholderApi support | Citybuild Faction etc. | 1.16.5-1.20.x icon

Advanced Perks Recode | GUI, PlaceholderApi support | Citybuild Faction etc. | 1.16.5-1.20.x -----

Powerful system to enable per player perks to enhance the gameplay of your server.




Fixed:
  • Plugin showing the incorrect Plugin Version
  • Problems with the Bird Perk related to switching the World and Gamemode
----------, Jul 21, 2024

Fixed:
  • Automatic reconnect from the database when it loses its connection
  • Bugfix for deprecated inventory interactions causing errors in the server log
  • Fixed problem with the update checker not working on older java versions
  • Fixed the annoying error with the inconsistant skull meta error message spamming the server log
Improvement:
  • Better datastructure for perks caching for faster future development
----------, Mar 3, 2024

Features:
  • Added the command /perks setprice <perk> <price> to set a price for a perk without the need to dive into the configuration
----------, Dec 17, 2023

Bug Fixes:
  • Fixed a bug that would fail the perks data migration process when migrating old perks data from a filebased datasource
Maintenance and Code Quality:
  • Improved the plugins sourcecode test converage with unit tests
  • Rearranged source code for better clarity
----------, Dec 17, 2023

New Features:
  • Reintroduced the Phantom Perk.
  • Added a /perks toggle command for efficient perk management.
  • Added a /perks migrate command to migrate the database related perk data from the older version to the newer versions
  • Enhanced the GUI toggle element for clear perk unlock status indications. Optimized configuration loading for increased operational efficiency. Introduced a clear indicator in the GUI for locked perks.
Bug Fixes:
  • Resolved an issue with the SQLite insert or update statement for improved database operations.
Maintenance and Code Quality:
  • Implemented a SQL migration script for systematic database evolution.
  • Integrated Sonar Lint for comprehensive code quality measurement.
  • Finalized Checkstyle configuration and adjusted code accordingly.
----------, Dec 5, 2023

New Features:
  • Reintroduced the Phantom Perk.
  • Added a /perks toggle command for efficient perk management.
  • Added a /perks migrate command to migrate the database related perk data from the older version to the newer versions
  • Enhanced the GUI toggle element for clear perk unlock status indications. Optimized configuration loading for increased operational efficiency. Introduced a clear indicator in the GUI for locked perks.
Bug Fixes:
  • Resolved an issue with the SQLite insert or update statement for improved database operations.
Maintenance and Code Quality:
  • Implemented a SQL migration script for systematic database evolution.
  • Integrated Sonar Lint for comprehensive code quality measurement.
  • Finalized Checkstyle configuration and adjusted code accordingly.
----------, Dec 5, 2023

The plugin has undergone a comprehensive recode to significantly accelerate future development. The previous codebase had become excessively messy, prompting the need for this overhaul.

Unfortunately, this recode necessitates a complete reconfiguration of the plugin from scratch. Numerous configuration files, keys, and data structures have undergone changes.

If migrating old perk data is a major concern for you and prevents you from updating to the new version, please reach out to me on Discord. I'll examine the possibility of assisting you in migrating your old advanced perks data.

It's important to note that this update may contain bugs since thorough bug checking was limited due to time constraints. If you encounter any issues, kindly report them on the support Discord through a ticket. Rest assured, we'll promptly address reported bugs until the plugin achieves complete stability.
----------, Dec 1, 2023

Changes made:
- The bird perk will now correctly enable and disable when switching worlds on a multi world server.
- This update makes major improvements to the /perks info command. Now you can see enabled perks aswell and you can view perk information of players who arent online.
Be sure to update your message.yml file with the following new lines
Code (Text):
Command:
  Info:
    Player-Does-Not-Exist: '<prefix> &cThe player <player> either does not exist.'
    Text:
      - '<prefix> &7The player &6<player> &7has bought the following perks:'
      - '<prefix> <bought_perks>'
      - '<prefix> &7The player &6<player> &7has enabled the following perks:'
      - '<prefix> <enabled_perks>'
----------, Jul 13, 2023

Upgraded to a modern codebase using Java 17, resulting in improved performance and compatibility.
Plugin can now officially be used with 1.17-1.20 but should still run on lower versions.

Changes made:
- Added the new command: /perks info <player> which allows you to view the list of perks bought by a specific player.
- Improved the perk saving and loading system, ensuring that perks are accurately synchronized and maintained across multiple BungeeCord servers.
- Addressed reported errors and fixed various bugs to enhance stability and overall plugin functionality.

New lines that need to be added to the message.yml
Code (YAML):
Command:
  Info
:
    Player-Offline
: '<prefix> &cThe player <player> either does not exist or is offline.'
    Text
:
     - '<prefix> &7The player &6<player> &7has bought the following perks:'
      - '<prefix> <bought_perks>'
    Syntax
: '<prefix> &7The command syntax is : /perks info <player>'
Sorry for long time without updates.
A new major release (3.0.0) of the plugin is already in the works featuring a long requested gui system and some more bigger improvements.
----------, Jul 6, 2023

This update features some overall fixes to ensure optimal saving and loading of perks.
A often encountered bug was fixed where the plugin wouldnt load all perks from a player when he quickly changed server on a bungeecord network.
Thanks to @uharn and @Plattio for the neccesarry insight to fix the bug.
----------, Apr 1, 2022


There are some internal changes to the plugin aswell as to the update checker to make everything a bit more fluent.
----------, Mar 28, 2022

A wrong reference in the code currently makes it impossible to save or load perks from the database.
This hotfix is suggested for everyone using the Database feature of the plugin.
----------, Mar 25, 2022


This plugin features a lot of under the hood changes primarily done to improve the time it takes for me to update the plugin in the future.
Also this update features a basic /perks reload command which currently will only reload the messages and the settings config but not the perks config.
Later today will follow a small update which will bring back the update notifications but this time with a changelog ingame to see the new stuff added.
----------, Mar 21, 2022

This update features a often requested feature.
You can make the process of user getting perks more easy, the plugin received the feature to interact with vault and your economy plugin to make it able for player to buy perks with /perk buy <Identifier>.
To specify a price you need to add a line to the perks.yml file with the name Price (EXAMPLE):
Code (YAML):
Telekinesis:
  Price
: 35.0
  Display-Name
: '&5&lTelekinesis Perk'
  Description
:
   - '&7&oActivating this perk will grant the player the ability'
    - '&7&oto teleport mined items directly into the players inventory.'
  Permission
: 'advancedperks.use.telekinesis'Telekinesis:
  Display-Name
: '&5&lTelekinesis Perk'
  Description
:
   - '&7&oActivating this perk will grant the player the ability'
    - '&7&oto teleport mined items directly into the players inventory.'
  Permission
: 'advancedperks.use.telekinesis'
If you are upgrading from a lower version be aware of two things.
First the database schema has changed this update and will most likely change in another update in the near future.
You dont need to do anything but saved perks will not be transferred to this version of the plugin.
And second you need to add the following lines to your message.yml file:
Code (YAML):
Command:
  Buy
:
    No-Eco-Support
: '<prefix> &cThe plugin is missing either an economy plugin or vault to use this feature.'
    Perk-Not-Found
: '<prefix> &cThe perk <perk> was either misspelled or doesnt exist.'
    Success
: '<prefix> &7You &asuccessfully &7bought the perk <perk>.'
    Error
: '<prefix> &cThere was an error while buying the perk <perk> contact the administrator of the server for further information.'
    Already-Unlocked
: '<prefix> &cYou already have that perk unlocked.'
    Not-Enough-Money
: '<prefix> &cYou dont have enough money for that perk.'
    Cannot-Be-Purchased
: '<prefix> &cThat perk cannot be purchased.'
----------, Mar 18, 2022

This update introduces a new perk that i recently had in mind.
To properly include it when updating you need to add its properties to the perks.yml file.
Changes to add
----------, Mar 6, 2022

This update introduces a new internal configuration system which will increase the efficiency and stability with the plugins configurations.
----------, Mar 5, 2022

Changes to the config file: click here
Added two new perks.
The Smelter Perk.
Mined ores will turn into their ingot equivalent when mined.
The Telekinesis Perk.
Mined items will under the condition that the player has space for them in his inventory be teleported into his inventory when mined.

Also this update adds the posibillity to disable the bird perk when the player is inside of lava.
This is to prevent users to exploit the Bird and Fireresistance Perks inside the Nether to gain huge amounts of Netherite(Thanks to @uharn for reporting it).
To do that you need to add he following to the perks.yml:
Code (YAML):
Bird:
  Disable-In-Lava
: true
----------, Mar 4, 2022

This update isn't neccessary.
It will just remove some debug messages left in the code i forgot about.
----------, Feb 17, 2022

Fixed a bug where the Wiser perk would keep the Xp but also drop them for other player.
----------, Feb 9, 2022

Fixed a bug that would prevent the database from saving enabled perks correctly.
----------, Feb 9, 2022

As written in the title the plugin now features support to reconnect to the database once it lost connection to it.
----------, Feb 9, 2022

This update removes the need of apache commons-io as some spigot forks for whatever reason decided to not include it in their jar.
You only need this update if AdvancedPerks wont start on your environment.
If the plugin currently works as expected this update isnt mandatory for you.
----------, Feb 4, 2022

This update merely brings a technical change that neither fixes any bugs nor changes any funtionality.
Its just a under the hood improvement for the plugins command system.
----------, Feb 4, 2022

This version adresses some bugs that were found:
  • Proper PlaceholderAPI support
  • Migrated to sympel-database for perk saving and faster database operation
  • Fixed a rare bug that made Advanced Perks misbehave with PlaceholderAPI and Worldguard's pvp DENY flag
----------, Feb 4, 2022

Sorry for the quite long time of no updates.
I completely rewrote and recoordinated my whole plugin backend and infrastructure.
Its still not to a point i would say that its finished but im getting closer.
Meanwhile i fixed some bugs reported by user and upgraded some of the internal workings of the plugin to be more efficient:
  • Fixed a bug that on rare occasions would make it possible to have more than the wanted amount of perks enabled
  • Implemented a custom configuration engine more on that later
  • Implemented a custom way of handling multiversion compatability
  • Made the compatability checking aware of player world changes to prevent perks being able to be used in worlds where they were not supposed to
  • Improved performance of the plugin in general (dont worry it was already really lightweight before)
----------, Jan 29, 2022

This Update adresses three recent bugs:
- Aftert reload of the server you could take items out of the perks gui when still in it
- The perk command needing a permission to be used
- The amount of the permission advancedperks.maxperks.X was ignored until the player relogged
----------, Dec 26, 2021

This update isn't mandatory but highly suggested if you want to help me with developing the plugin by including useful metadata for me.
----------, Dec 23, 2021

This update features a big recode of the code base to make it more modular and scalable.
Also the recode of the base will allow me to post bugfixes more quickly.
For now the Npc feature was ditched in favor of a better version following soon.
I also updated the overview page.
I will also start to write full documentation of the plugin in the next weeks.

Beware all of your old configurations will break when used with this release.
You need to fully regenerate new configurations sadly.
----------, Dec 23, 2021

The plugin was technically already supported by 1.18 so you theoretically dont need to update to this version.
Update to this version only if versions prior to this wont start on your 1.18 environment.

Also little side note the next update will be a complete recode of the plugin im working on for some while now.
----------, Nov 30, 2021

In this update the following bugs got fixed:
- https://github.com/Fabilucius/advanced-perks/issues/12
- https://github.com/Fabilucius/advanced-perks/issues/14
You need to add the following to your config.yml otherwise the plugin will automatically disable the feature when starting the new version without adding it to the config.yml (reason is that i dont have enough data of the performance impact of the feature so it should be considered as WIP):
Code (YAML):
perks :
  #Warning this setting could have impact on the server's performance, but normally it shouldn't
  #This setting will periodically check if the potion effects the player should have from his perks have
  #desynced through other plugins.
  checkForPotionDesync
: false
----------, Nov 17, 2021

This update add support for the plugin PlaceholderAPI.
From now on you can use the following placeholder:
%advancedperks_< PERK_IDENTIFIER> which returns true if the player has enabled the < PERK_IDENTIFIER> perk or false if not.
----------, Nov 17, 2021

This Update will break all current custom perks because theres a new field that need to be filled in the constructor when creating a custom perk called "identifier" which is a String that should uniquely identify a Perk.
This Update also requires all perks of the perks.yml that you want to be able to use to add a new value called identifier: (identifier you want to use for the perk normally the perk name in camel case "fireResistance")

This Update also introduces a new subcommand to the perks command called toggle.
The usage is /perks toggle <Player> <Perk_Identifier> [On/Off]
where <> is mandatory and [] optional.
The use of this command should be self explanatory.
When no on off argument is provided the perk gets toggled to its other state.
----------, Nov 14, 2021

This update adds a new Perk based on feedback of you.
Its called the insomnia perk and when enable will prevent phantoms from spawning for the player.
This perk also uses the new perk type available for developer that work with the custom perk api.
Click here for more information about the new type.

You will also need to add the following to your configuration files:
message.yml
Code (YAML):
 insomnia:
    displayName
: '&e&lInsomnia Perk'
    description
:
     - '&7&oWhen activated this perk allows the player to avoid the spawning'
      - '&7&oof phantoms even when he has not slept for a while.'
perks.yml
Code (YAML):
insomnia:
  enabled
: true
  permission
: 'advancedperks.insomnia'
  disabledWorlds
: [ ]
----------, Nov 5, 2021

This update fixes a duplication bug with the KeepInventoryPerk.
Its more than recommended to update to this version if you use this plugin in a production environment.
----------, Oct 30, 2021

This update adds a fully customizable (name and skin) NPC that can be used as decoration and to open the perks gui.

There are changes that need to be done in order to update to this version successfully:
config.yml
Code (YAML):
npc:
  enabled
: true
  facePlayer
: true
  skin
:
    data
: 'ewogICJ0aW1lc3RhbXAiIDogMTYzMjAxNDE4MjQxNywKICAicHJvZmlsZUlkIiA6ICI3MzgyZGRmYmU0ODU0NTVjODI1ZjkwMGY4OGZkMzJmOCIsCiAgInByb2ZpbGVOYW1lIiA6ICJJb3lhbCIsCiAgInNpZ25hdHVyZVJlcXVpcmVkIiA6IHRydWUsCiAgInRleHR1cmVzIiA6IHsKICAgICJTS0lOIiA6IHsKICAgICAgInVybCIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS85MmU4YmZjNjBkNDMzMmVmYTVlYWM4YjkxZmY5NjdiOTc5ZTFhOTRjZGQ4MmVmMjliMGQ3MWMyZjhiOGNlNDM4IgogICAgfQogIH0KfQ=='
    signature
: 'W7C9c0sAqthZoZEo2TSjxUFFRYvLMJ+NaZmHVNFfx5w7eN0Y6mJCNptAHu8yiN1A9zWz75MWa2dc+Ou2bL3+eWs6krD0XZjywYoL+dPWgQUva5ox/imvbPKuayruwMZe5arWGlnRshpRdhGQMgk555GpZZHErIPPm4v8sndNCgbBSQBQtK+ViJQs24xloDB6o97OXjySVkdXG6MDlD2BHOu7YM7nu191C4aOqLgaMlS8cLAS0Iqw1Td0aogELSTf2DDYme/t/7swcBEEYuKUAm8QYsLB2QpJhUKFVWQlNB/RxLjVkiJ2Uu35Wjivqa6lJKFcVw2wL30zRYKyfR73BsCIYQJo1tHQWTyEypidhgJEsWZuZw7PyjOjEpieCecqanztdEWv6+TJYSNRhalT5jQaucebNQB87hoff3uImJTLkovgSce0IBRqPFQFBPoJJ0lM9/OOXGe6CtN5Zm+ErbNAOFATnWyOcL+VOD0B1WOee6ONjK7O2zvGHU1ExhCqTX1g4he4jHmjMQ/If2uRYXb1uIs4y0BQMXpSvK4ogU2ZuiyJdjxRRkqsdb1gFb9OizIruBBVafulpx20sZuSAhRFMK3YJgPrq/uExtE0FujbK4yTTwxaCKzpRwvdilDZcIVTcItxxH06jUwbzP9PDbKnZDYn3URcBEC14x9Epp0='
  location
:
    ==
: org.bukkit.Location
    world
: world
    x
: 0.0
    y
: 0.0
    z
: 0.0
    pitch
: 0.0
    yaw
: 0.0
message.yml
Code (YAML):
npc:
  name
: '&6&lPerks'
----------, Oct 4, 2021

Previously the Plugin had a static hard limit of how many Perk's a player could have enabled in parallel.
That now has changed.
You can assign player a permission called: advancedperks.maxperks.<amount> to dynamically overwrite the maximum amount of Perk's a player can have enabled where amount is the new max amount of Perk's.
----------, Sep 23, 2021

Per request this update features a new Perk called Bird.
When a player toggles said perk he will be able to fly until the Perk is toggled off again.
You need to add the following to your message.yml:
Code (YAML):
 bird:
    displayName
: '&f&lBird Perk'
    description
:
     - '&7&oWhen activated this perk allows the player to fly even'
      - '&7&owhen he is in survival mode.'
and the following to the perks.yml:
Code (YAML):
bird:
  enabled
: true
  permission
: 'advancedPerks.bird'
  disabledWorlds
: [ ]
----------, Sep 20, 2021

Fixed a bug that would occur when the amount of loaded perks was able to be divided by 8 the next page icon would be visible and when pressed show an empty perks tab.
Code (YAML):
No additional config changes
----------, Sep 17, 2021

Not but seriously the previous method of checking for Plugin updates was really slow as the api i used was deprecated and slow.
The new method will show updates faster and more reliable.
But the best part of the update you now can edit the " Activated" and " Deactivated" Messages for the gui toggle button.
You just need to add the following to your message.yml if you upgrade from an older version.
Code (YAML):
perksGui:
  guiElement
:
    perkToggle
:
      activated
: '&aActivated'
      deactivated
: '&cDeactivated'
----------, Sep 16, 2021

I was aware that spigot was kind of " against" supporting multiversion Plugin's but not that they were "if api-version is higher then server version don't even try to boot" kind of against supporting multiversion.
Anyway I made a fix to the api-version that the Plugin now will boot again from Spigot 1.13-1.16.
----------, Sep 16, 2021

The Plugin has a new Configuration Value inside the confg.yml file
Code (YAML):
checkForUpdates : true
With that value you can now enable or disable the Plugin from checking for updates and notifying Operators on server join when an update was found.
----------, Sep 14, 2021

You now have the option to disable perks for configurable worlds.
For default perks edit the perks.yml file and add the names of the worlds to disabledWorlds:
Code (YAML):
examplePerk:
  enabled
: true
  permission
: 'examplePermission'
  disabledWorlds
:
   - 'exampleWorld1'
   - 'world_the_nether'
For custom perks just invoke the method setDisabledWorlds(String... worlds) with the names of the worlds.
Code (Java):
CustomPerk customPerk = new CustomPerk ( ) ;
customPerk. setDisabledWorlds ( "exampleWorld1", "world_the_nether" ) ;
----------, Sep 13, 2021

  • As the title above said the Plugin now supports all Minecraft Version from 1.8 up to 1.17.1.
  • Tested itself are only the Versions 1.8 1.12.2 and 1.17.1 but all Versions in between are expected to work without any problem.
  • The Plugin is now build with Java 8 instead of Java 16 so expect more Compatabillity
----------, Sep 13, 2021

Added Metrics to the plugin.
----------, Sep 12, 2021

Resource Information
Author:
----------
Total Downloads: 7,157
First Release: Sep 12, 2021
Last Update: Jul 21, 2024
Category: ---------------
All-Time Rating:
18 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings