2019-06-16 14:57:05 +02:00
|
|
|
package world.bentobox.challenges.utils;
|
|
|
|
|
|
|
|
|
Prepare 1.0 Release (#287)
* Version 0.8.5
* Retranslated zh-CN.yml (#273)
* 50% completed.
* 60% completed.
* 63% completed.
* Completed.
* Change the indentation, some improvements.
Co-authored-by: zhangYi <apachezy@hotmail.com>
* Updated german language file (#278)
fixed double & and double whitespace
* Fixes a mistaken permission for completing multiple challenges at once.
* Fixes translated placeholders in PL translation.
Note: translation looks bad.
* Update CompleteChallengeCommandTest.java
* Upgrade to BentoBox 1.17 API changes.
Implement Pladdon functionality.
Compile against java 16 and Spigot 1.17
* Fix Java 16 compilation.
* Use BentoBox 1.17.0
* Update pom.xml
* Create Statistic Requirement for Challenges addon.
Statistic requirement is a new type of challenge that is based on Statistic page for clients.
* Switch to annotations instead of plugin.yml file.
* Move managers to a separate directory.
* Add mojang authLib instead of NMS.
* Rename classes to Selectors.
Split single and multiple item selectors for easier implementation.
Update proper locales.
* Implement customizable user panels.
Server owners can customize 3 panels:
- main panel
- gamemode selector
- multiple completions
Panel functions will be explained in docs later.
* Update all admin panels.
Admin panels will not contain better locales codding and easier-to-improve design.
Remove old and unused GUIs.
* Remove unused adapters.
Updates Challenges and ChallengesLevel objects.
Add TypeMigrationAdapter that will fix issue with renamed challenge type.
* Update commands.
Commands will now call correct GUI.
* Update Settings file.
Remove unused parts.
* Fixes ChallengesManager and Completer.
* Adds panel saving to the `/challenges/panels` directory.
* Updates locales file.
Complete rework of the locales file.
Very sorry translators :( no migration.
* Updates pom.xml
* Updates tests.
ChallengesGUITest is removed because GUI is removed.
* Update default.json
Split text into multiple lines.
* Create template YAML file.
This file format is for people who has an alergy with ingame GUI.
* Implements Template reading.
Add template loading via Admin Panel.
Improve LibraryPanel so it could find json and yml files.
* Improve coloring scheme a bit.
* Change settings file.
Add ability to change commands for addon.
Change default mode from player challenges to island challenges.
* Update Main addon class.
Move vault and level detection after everything is loaded.
Update command names.
* Update all commands.
Commands now will have an option to change their call values.
* Update default config value.
* Fixes #264
Challenges Menu will be opened only if player is in correct world.
* Changes User#sendMessage to Utils#sendMessage
This allows add "prefix" to all messages send from Challenges addon.
* Separate singe and multiple listings.
* Clean up Constants a bit.
* Add meta for items translations.
* Fix permission link.
* Translates color codes for database texts.
* Fixes a bug when global commands does not displays in tab-complete.
Remove DefaultsCommand.java as it is not used anymore.
* Fixes small bugs in translation.
* Remove unnecessary "admin" tag.
* Update default locale.
* Update latvian locale to the latest version.
* Implement multi-linguistic server support.
Now server owners can specify different name, description and reward text for each challenge and level via locales file.
Add showcase example.
* Comment out showcase translation.
* Update BentoBox version
* Update missing icons for blocks.
Some blocks cannot be displayed in GUI's, and were leaving empty spaces.
This replaces their icon with a close representative.
Fixes #286
* Add missing mob heads.
* Fixes illegal stack issues in default challenges.
#249
* Change from click-to-select to a proper next/previous page tooltip
* Add search field to the PagedSelectors.
Add missing tooltips.
* Change download icon from hopper to cobweb.
* Add missing tooltips to the CommonPagedPanel
* Add search button to the CommonPagedPanel.
Search button will allow to search elements if there are more than displayed elements.
* Add missing strings into locale.
* Reorder dependencies
The Mojang dependency was blocking out the needed Google common
packages.
* Prevent errors in TryToCompleteTest
Note - tests still fail.
* Fixed errors and tests for CompleteChallengeCommandTest
* Fixed ChallengesCommandTest tests
* Fixes tests
* Fix JavaDoc, Shade plugin settings
* Updated .gitignore
* Try different spigot API version
* Remove Vault repo because it is not needed.
* Excluded unnecessary files from shading.
* Fixes #253
Adds TeamKick and TeamLeave events to the reset check.
Do not reset challenges if data is stored per island. As in that case, they will already lose their data.
* Fixes #187
Add a new method that updates unlocked level list without changing active level. This method returns if last unlocked level was changed, and in that case it triggers whole gui rebuilding.
* Fixes #269
Disable waiver amount message for last challenge level.
* Add timeout for repeatable challenges.
Relates #71
* Implement timeout respecting in challenges completion.
Implement timeout in GUI's.
Relates #71
* Implement changing Timeout in the Challenge Edit GUI.
Relates #71
* Implement an option to set which item type will ignore metadata per challenge.
Fixes #261
Fixes #252
* Fixes failing unit-test
* Removed shade plugin from POM
* Replace GuiUtils and HeadLib to the PanelUtils library.
* Link templates to the docs.
* Remove unnecessary NMS dependency.
NMS code was used for Player Heads, but instead of NMS now it uses public mojang lib.
* Address some code quality reports from SonarCloud.
Most of the errors are just sanity checks, as the most of null-pointers were already checked in other ways.
* Fixes incorrect NEXT and PREVIOUS button descriptions.
Fixes #289
* Implement MetaData ignoring for rewards.
While required items had a metadata grouping, reward items did not have it. This will fix that.
Fixes #289
* Fix an issue when edit menu did not display item amount.
* Update lv translation.
* Fixes some small bugs with translation potion base effect.
There was an issue that it tried to translate extra effects and ignored main one.
Relates to #290
* Fix a bug with completion broadcasting
Reported via Discord.
* Update pom.xml
* Fixes a bug with `-1` repeat-times
There was a bug that prevented the challenge to be completed if negative numbers were set in the "max-repeats" value.
* Improve equal item listing.
Change when items should be grouped.
Instead of relaying strictly from ignoreMetaData set, now try to group equal elements without durability check, and use set only if that fails.
* Update German translation (#295)
* Translate de.yml via GitLocalize
* Translate de.yml via GitLocalize
* Translate de.yml via GitLocalize
Co-authored-by: Patrick <patrick.wassmuth@gmx.de>
Co-authored-by: Michael F <unhappyangel83@googlemail.com>
Co-authored-by: DAge030 <dage030@web.de>
* Fix NPEs when running tests.
Note that there are still test failures, but these are assertions and
not errors.
* Fix error in test class.
Note this does not fix the failing assertion.
* Fix failing test. Make player default to being on island.
* Fixed test failures.
* Avoid potential call with a null parameter to User.getInstance
* Check for null world
* Null check
* Added null check
* Require non-nulls.
getInventory never returns null.
* Remove various code smells.
Co-authored-by: tastybento <tastybento@wasteofplastic.com>
Co-authored-by: apachezy <50116371+apachezy@users.noreply.github.com>
Co-authored-by: zhangYi <apachezy@hotmail.com>
Co-authored-by: Qumoo <76853697+Qumoo@users.noreply.github.com>
Co-authored-by: tastybento <tastybento@users.noreply.github.com>
Co-authored-by: gitlocalize-app[bot] <55277160+gitlocalize-app[bot]@users.noreply.github.com>
Co-authored-by: Patrick <patrick.wassmuth@gmx.de>
Co-authored-by: Michael F <unhappyangel83@googlemail.com>
Co-authored-by: DAge030 <dage030@web.de>
2022-05-06 18:51:54 +02:00
|
|
|
import java.time.Duration;
|
2020-04-22 00:19:46 +02:00
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
Prepare 1.0 Release (#287)
* Version 0.8.5
* Retranslated zh-CN.yml (#273)
* 50% completed.
* 60% completed.
* 63% completed.
* Completed.
* Change the indentation, some improvements.
Co-authored-by: zhangYi <apachezy@hotmail.com>
* Updated german language file (#278)
fixed double & and double whitespace
* Fixes a mistaken permission for completing multiple challenges at once.
* Fixes translated placeholders in PL translation.
Note: translation looks bad.
* Update CompleteChallengeCommandTest.java
* Upgrade to BentoBox 1.17 API changes.
Implement Pladdon functionality.
Compile against java 16 and Spigot 1.17
* Fix Java 16 compilation.
* Use BentoBox 1.17.0
* Update pom.xml
* Create Statistic Requirement for Challenges addon.
Statistic requirement is a new type of challenge that is based on Statistic page for clients.
* Switch to annotations instead of plugin.yml file.
* Move managers to a separate directory.
* Add mojang authLib instead of NMS.
* Rename classes to Selectors.
Split single and multiple item selectors for easier implementation.
Update proper locales.
* Implement customizable user panels.
Server owners can customize 3 panels:
- main panel
- gamemode selector
- multiple completions
Panel functions will be explained in docs later.
* Update all admin panels.
Admin panels will not contain better locales codding and easier-to-improve design.
Remove old and unused GUIs.
* Remove unused adapters.
Updates Challenges and ChallengesLevel objects.
Add TypeMigrationAdapter that will fix issue with renamed challenge type.
* Update commands.
Commands will now call correct GUI.
* Update Settings file.
Remove unused parts.
* Fixes ChallengesManager and Completer.
* Adds panel saving to the `/challenges/panels` directory.
* Updates locales file.
Complete rework of the locales file.
Very sorry translators :( no migration.
* Updates pom.xml
* Updates tests.
ChallengesGUITest is removed because GUI is removed.
* Update default.json
Split text into multiple lines.
* Create template YAML file.
This file format is for people who has an alergy with ingame GUI.
* Implements Template reading.
Add template loading via Admin Panel.
Improve LibraryPanel so it could find json and yml files.
* Improve coloring scheme a bit.
* Change settings file.
Add ability to change commands for addon.
Change default mode from player challenges to island challenges.
* Update Main addon class.
Move vault and level detection after everything is loaded.
Update command names.
* Update all commands.
Commands now will have an option to change their call values.
* Update default config value.
* Fixes #264
Challenges Menu will be opened only if player is in correct world.
* Changes User#sendMessage to Utils#sendMessage
This allows add "prefix" to all messages send from Challenges addon.
* Separate singe and multiple listings.
* Clean up Constants a bit.
* Add meta for items translations.
* Fix permission link.
* Translates color codes for database texts.
* Fixes a bug when global commands does not displays in tab-complete.
Remove DefaultsCommand.java as it is not used anymore.
* Fixes small bugs in translation.
* Remove unnecessary "admin" tag.
* Update default locale.
* Update latvian locale to the latest version.
* Implement multi-linguistic server support.
Now server owners can specify different name, description and reward text for each challenge and level via locales file.
Add showcase example.
* Comment out showcase translation.
* Update BentoBox version
* Update missing icons for blocks.
Some blocks cannot be displayed in GUI's, and were leaving empty spaces.
This replaces their icon with a close representative.
Fixes #286
* Add missing mob heads.
* Fixes illegal stack issues in default challenges.
#249
* Change from click-to-select to a proper next/previous page tooltip
* Add search field to the PagedSelectors.
Add missing tooltips.
* Change download icon from hopper to cobweb.
* Add missing tooltips to the CommonPagedPanel
* Add search button to the CommonPagedPanel.
Search button will allow to search elements if there are more than displayed elements.
* Add missing strings into locale.
* Reorder dependencies
The Mojang dependency was blocking out the needed Google common
packages.
* Prevent errors in TryToCompleteTest
Note - tests still fail.
* Fixed errors and tests for CompleteChallengeCommandTest
* Fixed ChallengesCommandTest tests
* Fixes tests
* Fix JavaDoc, Shade plugin settings
* Updated .gitignore
* Try different spigot API version
* Remove Vault repo because it is not needed.
* Excluded unnecessary files from shading.
* Fixes #253
Adds TeamKick and TeamLeave events to the reset check.
Do not reset challenges if data is stored per island. As in that case, they will already lose their data.
* Fixes #187
Add a new method that updates unlocked level list without changing active level. This method returns if last unlocked level was changed, and in that case it triggers whole gui rebuilding.
* Fixes #269
Disable waiver amount message for last challenge level.
* Add timeout for repeatable challenges.
Relates #71
* Implement timeout respecting in challenges completion.
Implement timeout in GUI's.
Relates #71
* Implement changing Timeout in the Challenge Edit GUI.
Relates #71
* Implement an option to set which item type will ignore metadata per challenge.
Fixes #261
Fixes #252
* Fixes failing unit-test
* Removed shade plugin from POM
* Replace GuiUtils and HeadLib to the PanelUtils library.
* Link templates to the docs.
* Remove unnecessary NMS dependency.
NMS code was used for Player Heads, but instead of NMS now it uses public mojang lib.
* Address some code quality reports from SonarCloud.
Most of the errors are just sanity checks, as the most of null-pointers were already checked in other ways.
* Fixes incorrect NEXT and PREVIOUS button descriptions.
Fixes #289
* Implement MetaData ignoring for rewards.
While required items had a metadata grouping, reward items did not have it. This will fix that.
Fixes #289
* Fix an issue when edit menu did not display item amount.
* Update lv translation.
* Fixes some small bugs with translation potion base effect.
There was an issue that it tried to translate extra effects and ignored main one.
Relates to #290
* Fix a bug with completion broadcasting
Reported via Discord.
* Update pom.xml
* Fixes a bug with `-1` repeat-times
There was a bug that prevented the challenge to be completed if negative numbers were set in the "max-repeats" value.
* Improve equal item listing.
Change when items should be grouped.
Instead of relaying strictly from ignoreMetaData set, now try to group equal elements without durability check, and use set only if that fails.
* Update German translation (#295)
* Translate de.yml via GitLocalize
* Translate de.yml via GitLocalize
* Translate de.yml via GitLocalize
Co-authored-by: Patrick <patrick.wassmuth@gmx.de>
Co-authored-by: Michael F <unhappyangel83@googlemail.com>
Co-authored-by: DAge030 <dage030@web.de>
* Fix NPEs when running tests.
Note that there are still test failures, but these are assertions and
not errors.
* Fix error in test class.
Note this does not fix the failing assertion.
* Fix failing test. Make player default to being on island.
* Fixed test failures.
* Avoid potential call with a null parameter to User.getInstance
* Check for null world
* Null check
* Added null check
* Require non-nulls.
getInventory never returns null.
* Remove various code smells.
Co-authored-by: tastybento <tastybento@wasteofplastic.com>
Co-authored-by: apachezy <50116371+apachezy@users.noreply.github.com>
Co-authored-by: zhangYi <apachezy@hotmail.com>
Co-authored-by: Qumoo <76853697+Qumoo@users.noreply.github.com>
Co-authored-by: tastybento <tastybento@users.noreply.github.com>
Co-authored-by: gitlocalize-app[bot] <55277160+gitlocalize-app[bot]@users.noreply.github.com>
Co-authored-by: Patrick <patrick.wassmuth@gmx.de>
Co-authored-by: Michael F <unhappyangel83@googlemail.com>
Co-authored-by: DAge030 <dage030@web.de>
2022-05-06 18:51:54 +02:00
|
|
|
import java.util.Locale;
|
|
|
|
import java.util.Set;
|
2020-04-22 00:19:46 +02:00
|
|
|
|
Prepare 1.0 Release (#287)
* Version 0.8.5
* Retranslated zh-CN.yml (#273)
* 50% completed.
* 60% completed.
* 63% completed.
* Completed.
* Change the indentation, some improvements.
Co-authored-by: zhangYi <apachezy@hotmail.com>
* Updated german language file (#278)
fixed double & and double whitespace
* Fixes a mistaken permission for completing multiple challenges at once.
* Fixes translated placeholders in PL translation.
Note: translation looks bad.
* Update CompleteChallengeCommandTest.java
* Upgrade to BentoBox 1.17 API changes.
Implement Pladdon functionality.
Compile against java 16 and Spigot 1.17
* Fix Java 16 compilation.
* Use BentoBox 1.17.0
* Update pom.xml
* Create Statistic Requirement for Challenges addon.
Statistic requirement is a new type of challenge that is based on Statistic page for clients.
* Switch to annotations instead of plugin.yml file.
* Move managers to a separate directory.
* Add mojang authLib instead of NMS.
* Rename classes to Selectors.
Split single and multiple item selectors for easier implementation.
Update proper locales.
* Implement customizable user panels.
Server owners can customize 3 panels:
- main panel
- gamemode selector
- multiple completions
Panel functions will be explained in docs later.
* Update all admin panels.
Admin panels will not contain better locales codding and easier-to-improve design.
Remove old and unused GUIs.
* Remove unused adapters.
Updates Challenges and ChallengesLevel objects.
Add TypeMigrationAdapter that will fix issue with renamed challenge type.
* Update commands.
Commands will now call correct GUI.
* Update Settings file.
Remove unused parts.
* Fixes ChallengesManager and Completer.
* Adds panel saving to the `/challenges/panels` directory.
* Updates locales file.
Complete rework of the locales file.
Very sorry translators :( no migration.
* Updates pom.xml
* Updates tests.
ChallengesGUITest is removed because GUI is removed.
* Update default.json
Split text into multiple lines.
* Create template YAML file.
This file format is for people who has an alergy with ingame GUI.
* Implements Template reading.
Add template loading via Admin Panel.
Improve LibraryPanel so it could find json and yml files.
* Improve coloring scheme a bit.
* Change settings file.
Add ability to change commands for addon.
Change default mode from player challenges to island challenges.
* Update Main addon class.
Move vault and level detection after everything is loaded.
Update command names.
* Update all commands.
Commands now will have an option to change their call values.
* Update default config value.
* Fixes #264
Challenges Menu will be opened only if player is in correct world.
* Changes User#sendMessage to Utils#sendMessage
This allows add "prefix" to all messages send from Challenges addon.
* Separate singe and multiple listings.
* Clean up Constants a bit.
* Add meta for items translations.
* Fix permission link.
* Translates color codes for database texts.
* Fixes a bug when global commands does not displays in tab-complete.
Remove DefaultsCommand.java as it is not used anymore.
* Fixes small bugs in translation.
* Remove unnecessary "admin" tag.
* Update default locale.
* Update latvian locale to the latest version.
* Implement multi-linguistic server support.
Now server owners can specify different name, description and reward text for each challenge and level via locales file.
Add showcase example.
* Comment out showcase translation.
* Update BentoBox version
* Update missing icons for blocks.
Some blocks cannot be displayed in GUI's, and were leaving empty spaces.
This replaces their icon with a close representative.
Fixes #286
* Add missing mob heads.
* Fixes illegal stack issues in default challenges.
#249
* Change from click-to-select to a proper next/previous page tooltip
* Add search field to the PagedSelectors.
Add missing tooltips.
* Change download icon from hopper to cobweb.
* Add missing tooltips to the CommonPagedPanel
* Add search button to the CommonPagedPanel.
Search button will allow to search elements if there are more than displayed elements.
* Add missing strings into locale.
* Reorder dependencies
The Mojang dependency was blocking out the needed Google common
packages.
* Prevent errors in TryToCompleteTest
Note - tests still fail.
* Fixed errors and tests for CompleteChallengeCommandTest
* Fixed ChallengesCommandTest tests
* Fixes tests
* Fix JavaDoc, Shade plugin settings
* Updated .gitignore
* Try different spigot API version
* Remove Vault repo because it is not needed.
* Excluded unnecessary files from shading.
* Fixes #253
Adds TeamKick and TeamLeave events to the reset check.
Do not reset challenges if data is stored per island. As in that case, they will already lose their data.
* Fixes #187
Add a new method that updates unlocked level list without changing active level. This method returns if last unlocked level was changed, and in that case it triggers whole gui rebuilding.
* Fixes #269
Disable waiver amount message for last challenge level.
* Add timeout for repeatable challenges.
Relates #71
* Implement timeout respecting in challenges completion.
Implement timeout in GUI's.
Relates #71
* Implement changing Timeout in the Challenge Edit GUI.
Relates #71
* Implement an option to set which item type will ignore metadata per challenge.
Fixes #261
Fixes #252
* Fixes failing unit-test
* Removed shade plugin from POM
* Replace GuiUtils and HeadLib to the PanelUtils library.
* Link templates to the docs.
* Remove unnecessary NMS dependency.
NMS code was used for Player Heads, but instead of NMS now it uses public mojang lib.
* Address some code quality reports from SonarCloud.
Most of the errors are just sanity checks, as the most of null-pointers were already checked in other ways.
* Fixes incorrect NEXT and PREVIOUS button descriptions.
Fixes #289
* Implement MetaData ignoring for rewards.
While required items had a metadata grouping, reward items did not have it. This will fix that.
Fixes #289
* Fix an issue when edit menu did not display item amount.
* Update lv translation.
* Fixes some small bugs with translation potion base effect.
There was an issue that it tried to translate extra effects and ignored main one.
Relates to #290
* Fix a bug with completion broadcasting
Reported via Discord.
* Update pom.xml
* Fixes a bug with `-1` repeat-times
There was a bug that prevented the challenge to be completed if negative numbers were set in the "max-repeats" value.
* Improve equal item listing.
Change when items should be grouped.
Instead of relaying strictly from ignoreMetaData set, now try to group equal elements without durability check, and use set only if that fails.
* Update German translation (#295)
* Translate de.yml via GitLocalize
* Translate de.yml via GitLocalize
* Translate de.yml via GitLocalize
Co-authored-by: Patrick <patrick.wassmuth@gmx.de>
Co-authored-by: Michael F <unhappyangel83@googlemail.com>
Co-authored-by: DAge030 <dage030@web.de>
* Fix NPEs when running tests.
Note that there are still test failures, but these are assertions and
not errors.
* Fix error in test class.
Note this does not fix the failing assertion.
* Fix failing test. Make player default to being on island.
* Fixed test failures.
* Avoid potential call with a null parameter to User.getInstance
* Check for null world
* Null check
* Added null check
* Require non-nulls.
getInventory never returns null.
* Remove various code smells.
Co-authored-by: tastybento <tastybento@wasteofplastic.com>
Co-authored-by: apachezy <50116371+apachezy@users.noreply.github.com>
Co-authored-by: zhangYi <apachezy@hotmail.com>
Co-authored-by: Qumoo <76853697+Qumoo@users.noreply.github.com>
Co-authored-by: tastybento <tastybento@users.noreply.github.com>
Co-authored-by: gitlocalize-app[bot] <55277160+gitlocalize-app[bot]@users.noreply.github.com>
Co-authored-by: Patrick <patrick.wassmuth@gmx.de>
Co-authored-by: Michael F <unhappyangel83@googlemail.com>
Co-authored-by: DAge030 <dage030@web.de>
2022-05-06 18:51:54 +02:00
|
|
|
import org.bukkit.*;
|
|
|
|
import org.bukkit.enchantments.Enchantment;
|
|
|
|
import org.bukkit.entity.EntityType;
|
2019-06-16 14:57:05 +02:00
|
|
|
import org.bukkit.inventory.ItemStack;
|
Prepare 1.0 Release (#287)
* Version 0.8.5
* Retranslated zh-CN.yml (#273)
* 50% completed.
* 60% completed.
* 63% completed.
* Completed.
* Change the indentation, some improvements.
Co-authored-by: zhangYi <apachezy@hotmail.com>
* Updated german language file (#278)
fixed double & and double whitespace
* Fixes a mistaken permission for completing multiple challenges at once.
* Fixes translated placeholders in PL translation.
Note: translation looks bad.
* Update CompleteChallengeCommandTest.java
* Upgrade to BentoBox 1.17 API changes.
Implement Pladdon functionality.
Compile against java 16 and Spigot 1.17
* Fix Java 16 compilation.
* Use BentoBox 1.17.0
* Update pom.xml
* Create Statistic Requirement for Challenges addon.
Statistic requirement is a new type of challenge that is based on Statistic page for clients.
* Switch to annotations instead of plugin.yml file.
* Move managers to a separate directory.
* Add mojang authLib instead of NMS.
* Rename classes to Selectors.
Split single and multiple item selectors for easier implementation.
Update proper locales.
* Implement customizable user panels.
Server owners can customize 3 panels:
- main panel
- gamemode selector
- multiple completions
Panel functions will be explained in docs later.
* Update all admin panels.
Admin panels will not contain better locales codding and easier-to-improve design.
Remove old and unused GUIs.
* Remove unused adapters.
Updates Challenges and ChallengesLevel objects.
Add TypeMigrationAdapter that will fix issue with renamed challenge type.
* Update commands.
Commands will now call correct GUI.
* Update Settings file.
Remove unused parts.
* Fixes ChallengesManager and Completer.
* Adds panel saving to the `/challenges/panels` directory.
* Updates locales file.
Complete rework of the locales file.
Very sorry translators :( no migration.
* Updates pom.xml
* Updates tests.
ChallengesGUITest is removed because GUI is removed.
* Update default.json
Split text into multiple lines.
* Create template YAML file.
This file format is for people who has an alergy with ingame GUI.
* Implements Template reading.
Add template loading via Admin Panel.
Improve LibraryPanel so it could find json and yml files.
* Improve coloring scheme a bit.
* Change settings file.
Add ability to change commands for addon.
Change default mode from player challenges to island challenges.
* Update Main addon class.
Move vault and level detection after everything is loaded.
Update command names.
* Update all commands.
Commands now will have an option to change their call values.
* Update default config value.
* Fixes #264
Challenges Menu will be opened only if player is in correct world.
* Changes User#sendMessage to Utils#sendMessage
This allows add "prefix" to all messages send from Challenges addon.
* Separate singe and multiple listings.
* Clean up Constants a bit.
* Add meta for items translations.
* Fix permission link.
* Translates color codes for database texts.
* Fixes a bug when global commands does not displays in tab-complete.
Remove DefaultsCommand.java as it is not used anymore.
* Fixes small bugs in translation.
* Remove unnecessary "admin" tag.
* Update default locale.
* Update latvian locale to the latest version.
* Implement multi-linguistic server support.
Now server owners can specify different name, description and reward text for each challenge and level via locales file.
Add showcase example.
* Comment out showcase translation.
* Update BentoBox version
* Update missing icons for blocks.
Some blocks cannot be displayed in GUI's, and were leaving empty spaces.
This replaces their icon with a close representative.
Fixes #286
* Add missing mob heads.
* Fixes illegal stack issues in default challenges.
#249
* Change from click-to-select to a proper next/previous page tooltip
* Add search field to the PagedSelectors.
Add missing tooltips.
* Change download icon from hopper to cobweb.
* Add missing tooltips to the CommonPagedPanel
* Add search button to the CommonPagedPanel.
Search button will allow to search elements if there are more than displayed elements.
* Add missing strings into locale.
* Reorder dependencies
The Mojang dependency was blocking out the needed Google common
packages.
* Prevent errors in TryToCompleteTest
Note - tests still fail.
* Fixed errors and tests for CompleteChallengeCommandTest
* Fixed ChallengesCommandTest tests
* Fixes tests
* Fix JavaDoc, Shade plugin settings
* Updated .gitignore
* Try different spigot API version
* Remove Vault repo because it is not needed.
* Excluded unnecessary files from shading.
* Fixes #253
Adds TeamKick and TeamLeave events to the reset check.
Do not reset challenges if data is stored per island. As in that case, they will already lose their data.
* Fixes #187
Add a new method that updates unlocked level list without changing active level. This method returns if last unlocked level was changed, and in that case it triggers whole gui rebuilding.
* Fixes #269
Disable waiver amount message for last challenge level.
* Add timeout for repeatable challenges.
Relates #71
* Implement timeout respecting in challenges completion.
Implement timeout in GUI's.
Relates #71
* Implement changing Timeout in the Challenge Edit GUI.
Relates #71
* Implement an option to set which item type will ignore metadata per challenge.
Fixes #261
Fixes #252
* Fixes failing unit-test
* Removed shade plugin from POM
* Replace GuiUtils and HeadLib to the PanelUtils library.
* Link templates to the docs.
* Remove unnecessary NMS dependency.
NMS code was used for Player Heads, but instead of NMS now it uses public mojang lib.
* Address some code quality reports from SonarCloud.
Most of the errors are just sanity checks, as the most of null-pointers were already checked in other ways.
* Fixes incorrect NEXT and PREVIOUS button descriptions.
Fixes #289
* Implement MetaData ignoring for rewards.
While required items had a metadata grouping, reward items did not have it. This will fix that.
Fixes #289
* Fix an issue when edit menu did not display item amount.
* Update lv translation.
* Fixes some small bugs with translation potion base effect.
There was an issue that it tried to translate extra effects and ignored main one.
Relates to #290
* Fix a bug with completion broadcasting
Reported via Discord.
* Update pom.xml
* Fixes a bug with `-1` repeat-times
There was a bug that prevented the challenge to be completed if negative numbers were set in the "max-repeats" value.
* Improve equal item listing.
Change when items should be grouped.
Instead of relaying strictly from ignoreMetaData set, now try to group equal elements without durability check, and use set only if that fails.
* Update German translation (#295)
* Translate de.yml via GitLocalize
* Translate de.yml via GitLocalize
* Translate de.yml via GitLocalize
Co-authored-by: Patrick <patrick.wassmuth@gmx.de>
Co-authored-by: Michael F <unhappyangel83@googlemail.com>
Co-authored-by: DAge030 <dage030@web.de>
* Fix NPEs when running tests.
Note that there are still test failures, but these are assertions and
not errors.
* Fix error in test class.
Note this does not fix the failing assertion.
* Fix failing test. Make player default to being on island.
* Fixed test failures.
* Avoid potential call with a null parameter to User.getInstance
* Check for null world
* Null check
* Added null check
* Require non-nulls.
getInventory never returns null.
* Remove various code smells.
Co-authored-by: tastybento <tastybento@wasteofplastic.com>
Co-authored-by: apachezy <50116371+apachezy@users.noreply.github.com>
Co-authored-by: zhangYi <apachezy@hotmail.com>
Co-authored-by: Qumoo <76853697+Qumoo@users.noreply.github.com>
Co-authored-by: tastybento <tastybento@users.noreply.github.com>
Co-authored-by: gitlocalize-app[bot] <55277160+gitlocalize-app[bot]@users.noreply.github.com>
Co-authored-by: Patrick <patrick.wassmuth@gmx.de>
Co-authored-by: Michael F <unhappyangel83@googlemail.com>
Co-authored-by: DAge030 <dage030@web.de>
2022-05-06 18:51:54 +02:00
|
|
|
import org.bukkit.inventory.meta.*;
|
|
|
|
import org.bukkit.potion.PotionData;
|
|
|
|
import org.bukkit.potion.PotionType;
|
|
|
|
import org.eclipse.jdt.annotation.Nullable;
|
2019-06-16 14:57:05 +02:00
|
|
|
|
2019-08-01 12:19:15 +02:00
|
|
|
import world.bentobox.bentobox.BentoBox;
|
Prepare 1.0 Release (#287)
* Version 0.8.5
* Retranslated zh-CN.yml (#273)
* 50% completed.
* 60% completed.
* 63% completed.
* Completed.
* Change the indentation, some improvements.
Co-authored-by: zhangYi <apachezy@hotmail.com>
* Updated german language file (#278)
fixed double & and double whitespace
* Fixes a mistaken permission for completing multiple challenges at once.
* Fixes translated placeholders in PL translation.
Note: translation looks bad.
* Update CompleteChallengeCommandTest.java
* Upgrade to BentoBox 1.17 API changes.
Implement Pladdon functionality.
Compile against java 16 and Spigot 1.17
* Fix Java 16 compilation.
* Use BentoBox 1.17.0
* Update pom.xml
* Create Statistic Requirement for Challenges addon.
Statistic requirement is a new type of challenge that is based on Statistic page for clients.
* Switch to annotations instead of plugin.yml file.
* Move managers to a separate directory.
* Add mojang authLib instead of NMS.
* Rename classes to Selectors.
Split single and multiple item selectors for easier implementation.
Update proper locales.
* Implement customizable user panels.
Server owners can customize 3 panels:
- main panel
- gamemode selector
- multiple completions
Panel functions will be explained in docs later.
* Update all admin panels.
Admin panels will not contain better locales codding and easier-to-improve design.
Remove old and unused GUIs.
* Remove unused adapters.
Updates Challenges and ChallengesLevel objects.
Add TypeMigrationAdapter that will fix issue with renamed challenge type.
* Update commands.
Commands will now call correct GUI.
* Update Settings file.
Remove unused parts.
* Fixes ChallengesManager and Completer.
* Adds panel saving to the `/challenges/panels` directory.
* Updates locales file.
Complete rework of the locales file.
Very sorry translators :( no migration.
* Updates pom.xml
* Updates tests.
ChallengesGUITest is removed because GUI is removed.
* Update default.json
Split text into multiple lines.
* Create template YAML file.
This file format is for people who has an alergy with ingame GUI.
* Implements Template reading.
Add template loading via Admin Panel.
Improve LibraryPanel so it could find json and yml files.
* Improve coloring scheme a bit.
* Change settings file.
Add ability to change commands for addon.
Change default mode from player challenges to island challenges.
* Update Main addon class.
Move vault and level detection after everything is loaded.
Update command names.
* Update all commands.
Commands now will have an option to change their call values.
* Update default config value.
* Fixes #264
Challenges Menu will be opened only if player is in correct world.
* Changes User#sendMessage to Utils#sendMessage
This allows add "prefix" to all messages send from Challenges addon.
* Separate singe and multiple listings.
* Clean up Constants a bit.
* Add meta for items translations.
* Fix permission link.
* Translates color codes for database texts.
* Fixes a bug when global commands does not displays in tab-complete.
Remove DefaultsCommand.java as it is not used anymore.
* Fixes small bugs in translation.
* Remove unnecessary "admin" tag.
* Update default locale.
* Update latvian locale to the latest version.
* Implement multi-linguistic server support.
Now server owners can specify different name, description and reward text for each challenge and level via locales file.
Add showcase example.
* Comment out showcase translation.
* Update BentoBox version
* Update missing icons for blocks.
Some blocks cannot be displayed in GUI's, and were leaving empty spaces.
This replaces their icon with a close representative.
Fixes #286
* Add missing mob heads.
* Fixes illegal stack issues in default challenges.
#249
* Change from click-to-select to a proper next/previous page tooltip
* Add search field to the PagedSelectors.
Add missing tooltips.
* Change download icon from hopper to cobweb.
* Add missing tooltips to the CommonPagedPanel
* Add search button to the CommonPagedPanel.
Search button will allow to search elements if there are more than displayed elements.
* Add missing strings into locale.
* Reorder dependencies
The Mojang dependency was blocking out the needed Google common
packages.
* Prevent errors in TryToCompleteTest
Note - tests still fail.
* Fixed errors and tests for CompleteChallengeCommandTest
* Fixed ChallengesCommandTest tests
* Fixes tests
* Fix JavaDoc, Shade plugin settings
* Updated .gitignore
* Try different spigot API version
* Remove Vault repo because it is not needed.
* Excluded unnecessary files from shading.
* Fixes #253
Adds TeamKick and TeamLeave events to the reset check.
Do not reset challenges if data is stored per island. As in that case, they will already lose their data.
* Fixes #187
Add a new method that updates unlocked level list without changing active level. This method returns if last unlocked level was changed, and in that case it triggers whole gui rebuilding.
* Fixes #269
Disable waiver amount message for last challenge level.
* Add timeout for repeatable challenges.
Relates #71
* Implement timeout respecting in challenges completion.
Implement timeout in GUI's.
Relates #71
* Implement changing Timeout in the Challenge Edit GUI.
Relates #71
* Implement an option to set which item type will ignore metadata per challenge.
Fixes #261
Fixes #252
* Fixes failing unit-test
* Removed shade plugin from POM
* Replace GuiUtils and HeadLib to the PanelUtils library.
* Link templates to the docs.
* Remove unnecessary NMS dependency.
NMS code was used for Player Heads, but instead of NMS now it uses public mojang lib.
* Address some code quality reports from SonarCloud.
Most of the errors are just sanity checks, as the most of null-pointers were already checked in other ways.
* Fixes incorrect NEXT and PREVIOUS button descriptions.
Fixes #289
* Implement MetaData ignoring for rewards.
While required items had a metadata grouping, reward items did not have it. This will fix that.
Fixes #289
* Fix an issue when edit menu did not display item amount.
* Update lv translation.
* Fixes some small bugs with translation potion base effect.
There was an issue that it tried to translate extra effects and ignored main one.
Relates to #290
* Fix a bug with completion broadcasting
Reported via Discord.
* Update pom.xml
* Fixes a bug with `-1` repeat-times
There was a bug that prevented the challenge to be completed if negative numbers were set in the "max-repeats" value.
* Improve equal item listing.
Change when items should be grouped.
Instead of relaying strictly from ignoreMetaData set, now try to group equal elements without durability check, and use set only if that fails.
* Update German translation (#295)
* Translate de.yml via GitLocalize
* Translate de.yml via GitLocalize
* Translate de.yml via GitLocalize
Co-authored-by: Patrick <patrick.wassmuth@gmx.de>
Co-authored-by: Michael F <unhappyangel83@googlemail.com>
Co-authored-by: DAge030 <dage030@web.de>
* Fix NPEs when running tests.
Note that there are still test failures, but these are assertions and
not errors.
* Fix error in test class.
Note this does not fix the failing assertion.
* Fix failing test. Make player default to being on island.
* Fixed test failures.
* Avoid potential call with a null parameter to User.getInstance
* Check for null world
* Null check
* Added null check
* Require non-nulls.
getInventory never returns null.
* Remove various code smells.
Co-authored-by: tastybento <tastybento@wasteofplastic.com>
Co-authored-by: apachezy <50116371+apachezy@users.noreply.github.com>
Co-authored-by: zhangYi <apachezy@hotmail.com>
Co-authored-by: Qumoo <76853697+Qumoo@users.noreply.github.com>
Co-authored-by: tastybento <tastybento@users.noreply.github.com>
Co-authored-by: gitlocalize-app[bot] <55277160+gitlocalize-app[bot]@users.noreply.github.com>
Co-authored-by: Patrick <patrick.wassmuth@gmx.de>
Co-authored-by: Michael F <unhappyangel83@googlemail.com>
Co-authored-by: DAge030 <dage030@web.de>
2022-05-06 18:51:54 +02:00
|
|
|
import world.bentobox.bentobox.api.user.User;
|
|
|
|
import world.bentobox.bentobox.hooks.LangUtilsHook;
|
|
|
|
import world.bentobox.bentobox.util.Util;
|
2019-08-01 12:19:15 +02:00
|
|
|
|
2019-06-16 14:57:05 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Util methods used in different situations.
|
|
|
|
*/
|
|
|
|
public class Utils
|
|
|
|
{
|
Prepare 1.0 Release (#287)
* Version 0.8.5
* Retranslated zh-CN.yml (#273)
* 50% completed.
* 60% completed.
* 63% completed.
* Completed.
* Change the indentation, some improvements.
Co-authored-by: zhangYi <apachezy@hotmail.com>
* Updated german language file (#278)
fixed double & and double whitespace
* Fixes a mistaken permission for completing multiple challenges at once.
* Fixes translated placeholders in PL translation.
Note: translation looks bad.
* Update CompleteChallengeCommandTest.java
* Upgrade to BentoBox 1.17 API changes.
Implement Pladdon functionality.
Compile against java 16 and Spigot 1.17
* Fix Java 16 compilation.
* Use BentoBox 1.17.0
* Update pom.xml
* Create Statistic Requirement for Challenges addon.
Statistic requirement is a new type of challenge that is based on Statistic page for clients.
* Switch to annotations instead of plugin.yml file.
* Move managers to a separate directory.
* Add mojang authLib instead of NMS.
* Rename classes to Selectors.
Split single and multiple item selectors for easier implementation.
Update proper locales.
* Implement customizable user panels.
Server owners can customize 3 panels:
- main panel
- gamemode selector
- multiple completions
Panel functions will be explained in docs later.
* Update all admin panels.
Admin panels will not contain better locales codding and easier-to-improve design.
Remove old and unused GUIs.
* Remove unused adapters.
Updates Challenges and ChallengesLevel objects.
Add TypeMigrationAdapter that will fix issue with renamed challenge type.
* Update commands.
Commands will now call correct GUI.
* Update Settings file.
Remove unused parts.
* Fixes ChallengesManager and Completer.
* Adds panel saving to the `/challenges/panels` directory.
* Updates locales file.
Complete rework of the locales file.
Very sorry translators :( no migration.
* Updates pom.xml
* Updates tests.
ChallengesGUITest is removed because GUI is removed.
* Update default.json
Split text into multiple lines.
* Create template YAML file.
This file format is for people who has an alergy with ingame GUI.
* Implements Template reading.
Add template loading via Admin Panel.
Improve LibraryPanel so it could find json and yml files.
* Improve coloring scheme a bit.
* Change settings file.
Add ability to change commands for addon.
Change default mode from player challenges to island challenges.
* Update Main addon class.
Move vault and level detection after everything is loaded.
Update command names.
* Update all commands.
Commands now will have an option to change their call values.
* Update default config value.
* Fixes #264
Challenges Menu will be opened only if player is in correct world.
* Changes User#sendMessage to Utils#sendMessage
This allows add "prefix" to all messages send from Challenges addon.
* Separate singe and multiple listings.
* Clean up Constants a bit.
* Add meta for items translations.
* Fix permission link.
* Translates color codes for database texts.
* Fixes a bug when global commands does not displays in tab-complete.
Remove DefaultsCommand.java as it is not used anymore.
* Fixes small bugs in translation.
* Remove unnecessary "admin" tag.
* Update default locale.
* Update latvian locale to the latest version.
* Implement multi-linguistic server support.
Now server owners can specify different name, description and reward text for each challenge and level via locales file.
Add showcase example.
* Comment out showcase translation.
* Update BentoBox version
* Update missing icons for blocks.
Some blocks cannot be displayed in GUI's, and were leaving empty spaces.
This replaces their icon with a close representative.
Fixes #286
* Add missing mob heads.
* Fixes illegal stack issues in default challenges.
#249
* Change from click-to-select to a proper next/previous page tooltip
* Add search field to the PagedSelectors.
Add missing tooltips.
* Change download icon from hopper to cobweb.
* Add missing tooltips to the CommonPagedPanel
* Add search button to the CommonPagedPanel.
Search button will allow to search elements if there are more than displayed elements.
* Add missing strings into locale.
* Reorder dependencies
The Mojang dependency was blocking out the needed Google common
packages.
* Prevent errors in TryToCompleteTest
Note - tests still fail.
* Fixed errors and tests for CompleteChallengeCommandTest
* Fixed ChallengesCommandTest tests
* Fixes tests
* Fix JavaDoc, Shade plugin settings
* Updated .gitignore
* Try different spigot API version
* Remove Vault repo because it is not needed.
* Excluded unnecessary files from shading.
* Fixes #253
Adds TeamKick and TeamLeave events to the reset check.
Do not reset challenges if data is stored per island. As in that case, they will already lose their data.
* Fixes #187
Add a new method that updates unlocked level list without changing active level. This method returns if last unlocked level was changed, and in that case it triggers whole gui rebuilding.
* Fixes #269
Disable waiver amount message for last challenge level.
* Add timeout for repeatable challenges.
Relates #71
* Implement timeout respecting in challenges completion.
Implement timeout in GUI's.
Relates #71
* Implement changing Timeout in the Challenge Edit GUI.
Relates #71
* Implement an option to set which item type will ignore metadata per challenge.
Fixes #261
Fixes #252
* Fixes failing unit-test
* Removed shade plugin from POM
* Replace GuiUtils and HeadLib to the PanelUtils library.
* Link templates to the docs.
* Remove unnecessary NMS dependency.
NMS code was used for Player Heads, but instead of NMS now it uses public mojang lib.
* Address some code quality reports from SonarCloud.
Most of the errors are just sanity checks, as the most of null-pointers were already checked in other ways.
* Fixes incorrect NEXT and PREVIOUS button descriptions.
Fixes #289
* Implement MetaData ignoring for rewards.
While required items had a metadata grouping, reward items did not have it. This will fix that.
Fixes #289
* Fix an issue when edit menu did not display item amount.
* Update lv translation.
* Fixes some small bugs with translation potion base effect.
There was an issue that it tried to translate extra effects and ignored main one.
Relates to #290
* Fix a bug with completion broadcasting
Reported via Discord.
* Update pom.xml
* Fixes a bug with `-1` repeat-times
There was a bug that prevented the challenge to be completed if negative numbers were set in the "max-repeats" value.
* Improve equal item listing.
Change when items should be grouped.
Instead of relaying strictly from ignoreMetaData set, now try to group equal elements without durability check, and use set only if that fails.
* Update German translation (#295)
* Translate de.yml via GitLocalize
* Translate de.yml via GitLocalize
* Translate de.yml via GitLocalize
Co-authored-by: Patrick <patrick.wassmuth@gmx.de>
Co-authored-by: Michael F <unhappyangel83@googlemail.com>
Co-authored-by: DAge030 <dage030@web.de>
* Fix NPEs when running tests.
Note that there are still test failures, but these are assertions and
not errors.
* Fix error in test class.
Note this does not fix the failing assertion.
* Fix failing test. Make player default to being on island.
* Fixed test failures.
* Avoid potential call with a null parameter to User.getInstance
* Check for null world
* Null check
* Added null check
* Require non-nulls.
getInventory never returns null.
* Remove various code smells.
Co-authored-by: tastybento <tastybento@wasteofplastic.com>
Co-authored-by: apachezy <50116371+apachezy@users.noreply.github.com>
Co-authored-by: zhangYi <apachezy@hotmail.com>
Co-authored-by: Qumoo <76853697+Qumoo@users.noreply.github.com>
Co-authored-by: tastybento <tastybento@users.noreply.github.com>
Co-authored-by: gitlocalize-app[bot] <55277160+gitlocalize-app[bot]@users.noreply.github.com>
Co-authored-by: Patrick <patrick.wassmuth@gmx.de>
Co-authored-by: Michael F <unhappyangel83@googlemail.com>
Co-authored-by: DAge030 <dage030@web.de>
2022-05-06 18:51:54 +02:00
|
|
|
/**
|
|
|
|
* This method checks if 2 given item stacks are similar without durability check.
|
|
|
|
* @param input First item.
|
|
|
|
* @param stack Second item.
|
|
|
|
* @return {@code true} if items are equal, {@code false} otherwise.
|
|
|
|
*/
|
|
|
|
public static boolean isSimilarNoDurability(@Nullable ItemStack input, @Nullable ItemStack stack)
|
|
|
|
{
|
|
|
|
if (stack == null || input == null)
|
|
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
else if (stack == input)
|
|
|
|
{
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
return input.getType() == stack.getType() &&
|
|
|
|
input.hasItemMeta() == stack.hasItemMeta() &&
|
|
|
|
(!input.hasItemMeta() || Bukkit.getItemFactory().equals(input.getItemMeta(), stack.getItemMeta()));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2019-06-16 14:57:05 +02:00
|
|
|
/**
|
|
|
|
* This method groups input items in single itemstack with correct amount and returns it.
|
|
|
|
* Allows to remove duplicate items from list.
|
|
|
|
* @param requiredItems Input item list
|
|
|
|
* @return List that contains unique items that cannot be grouped.
|
|
|
|
*/
|
Prepare 1.0 Release (#287)
* Version 0.8.5
* Retranslated zh-CN.yml (#273)
* 50% completed.
* 60% completed.
* 63% completed.
* Completed.
* Change the indentation, some improvements.
Co-authored-by: zhangYi <apachezy@hotmail.com>
* Updated german language file (#278)
fixed double & and double whitespace
* Fixes a mistaken permission for completing multiple challenges at once.
* Fixes translated placeholders in PL translation.
Note: translation looks bad.
* Update CompleteChallengeCommandTest.java
* Upgrade to BentoBox 1.17 API changes.
Implement Pladdon functionality.
Compile against java 16 and Spigot 1.17
* Fix Java 16 compilation.
* Use BentoBox 1.17.0
* Update pom.xml
* Create Statistic Requirement for Challenges addon.
Statistic requirement is a new type of challenge that is based on Statistic page for clients.
* Switch to annotations instead of plugin.yml file.
* Move managers to a separate directory.
* Add mojang authLib instead of NMS.
* Rename classes to Selectors.
Split single and multiple item selectors for easier implementation.
Update proper locales.
* Implement customizable user panels.
Server owners can customize 3 panels:
- main panel
- gamemode selector
- multiple completions
Panel functions will be explained in docs later.
* Update all admin panels.
Admin panels will not contain better locales codding and easier-to-improve design.
Remove old and unused GUIs.
* Remove unused adapters.
Updates Challenges and ChallengesLevel objects.
Add TypeMigrationAdapter that will fix issue with renamed challenge type.
* Update commands.
Commands will now call correct GUI.
* Update Settings file.
Remove unused parts.
* Fixes ChallengesManager and Completer.
* Adds panel saving to the `/challenges/panels` directory.
* Updates locales file.
Complete rework of the locales file.
Very sorry translators :( no migration.
* Updates pom.xml
* Updates tests.
ChallengesGUITest is removed because GUI is removed.
* Update default.json
Split text into multiple lines.
* Create template YAML file.
This file format is for people who has an alergy with ingame GUI.
* Implements Template reading.
Add template loading via Admin Panel.
Improve LibraryPanel so it could find json and yml files.
* Improve coloring scheme a bit.
* Change settings file.
Add ability to change commands for addon.
Change default mode from player challenges to island challenges.
* Update Main addon class.
Move vault and level detection after everything is loaded.
Update command names.
* Update all commands.
Commands now will have an option to change their call values.
* Update default config value.
* Fixes #264
Challenges Menu will be opened only if player is in correct world.
* Changes User#sendMessage to Utils#sendMessage
This allows add "prefix" to all messages send from Challenges addon.
* Separate singe and multiple listings.
* Clean up Constants a bit.
* Add meta for items translations.
* Fix permission link.
* Translates color codes for database texts.
* Fixes a bug when global commands does not displays in tab-complete.
Remove DefaultsCommand.java as it is not used anymore.
* Fixes small bugs in translation.
* Remove unnecessary "admin" tag.
* Update default locale.
* Update latvian locale to the latest version.
* Implement multi-linguistic server support.
Now server owners can specify different name, description and reward text for each challenge and level via locales file.
Add showcase example.
* Comment out showcase translation.
* Update BentoBox version
* Update missing icons for blocks.
Some blocks cannot be displayed in GUI's, and were leaving empty spaces.
This replaces their icon with a close representative.
Fixes #286
* Add missing mob heads.
* Fixes illegal stack issues in default challenges.
#249
* Change from click-to-select to a proper next/previous page tooltip
* Add search field to the PagedSelectors.
Add missing tooltips.
* Change download icon from hopper to cobweb.
* Add missing tooltips to the CommonPagedPanel
* Add search button to the CommonPagedPanel.
Search button will allow to search elements if there are more than displayed elements.
* Add missing strings into locale.
* Reorder dependencies
The Mojang dependency was blocking out the needed Google common
packages.
* Prevent errors in TryToCompleteTest
Note - tests still fail.
* Fixed errors and tests for CompleteChallengeCommandTest
* Fixed ChallengesCommandTest tests
* Fixes tests
* Fix JavaDoc, Shade plugin settings
* Updated .gitignore
* Try different spigot API version
* Remove Vault repo because it is not needed.
* Excluded unnecessary files from shading.
* Fixes #253
Adds TeamKick and TeamLeave events to the reset check.
Do not reset challenges if data is stored per island. As in that case, they will already lose their data.
* Fixes #187
Add a new method that updates unlocked level list without changing active level. This method returns if last unlocked level was changed, and in that case it triggers whole gui rebuilding.
* Fixes #269
Disable waiver amount message for last challenge level.
* Add timeout for repeatable challenges.
Relates #71
* Implement timeout respecting in challenges completion.
Implement timeout in GUI's.
Relates #71
* Implement changing Timeout in the Challenge Edit GUI.
Relates #71
* Implement an option to set which item type will ignore metadata per challenge.
Fixes #261
Fixes #252
* Fixes failing unit-test
* Removed shade plugin from POM
* Replace GuiUtils and HeadLib to the PanelUtils library.
* Link templates to the docs.
* Remove unnecessary NMS dependency.
NMS code was used for Player Heads, but instead of NMS now it uses public mojang lib.
* Address some code quality reports from SonarCloud.
Most of the errors are just sanity checks, as the most of null-pointers were already checked in other ways.
* Fixes incorrect NEXT and PREVIOUS button descriptions.
Fixes #289
* Implement MetaData ignoring for rewards.
While required items had a metadata grouping, reward items did not have it. This will fix that.
Fixes #289
* Fix an issue when edit menu did not display item amount.
* Update lv translation.
* Fixes some small bugs with translation potion base effect.
There was an issue that it tried to translate extra effects and ignored main one.
Relates to #290
* Fix a bug with completion broadcasting
Reported via Discord.
* Update pom.xml
* Fixes a bug with `-1` repeat-times
There was a bug that prevented the challenge to be completed if negative numbers were set in the "max-repeats" value.
* Improve equal item listing.
Change when items should be grouped.
Instead of relaying strictly from ignoreMetaData set, now try to group equal elements without durability check, and use set only if that fails.
* Update German translation (#295)
* Translate de.yml via GitLocalize
* Translate de.yml via GitLocalize
* Translate de.yml via GitLocalize
Co-authored-by: Patrick <patrick.wassmuth@gmx.de>
Co-authored-by: Michael F <unhappyangel83@googlemail.com>
Co-authored-by: DAge030 <dage030@web.de>
* Fix NPEs when running tests.
Note that there are still test failures, but these are assertions and
not errors.
* Fix error in test class.
Note this does not fix the failing assertion.
* Fix failing test. Make player default to being on island.
* Fixed test failures.
* Avoid potential call with a null parameter to User.getInstance
* Check for null world
* Null check
* Added null check
* Require non-nulls.
getInventory never returns null.
* Remove various code smells.
Co-authored-by: tastybento <tastybento@wasteofplastic.com>
Co-authored-by: apachezy <50116371+apachezy@users.noreply.github.com>
Co-authored-by: zhangYi <apachezy@hotmail.com>
Co-authored-by: Qumoo <76853697+Qumoo@users.noreply.github.com>
Co-authored-by: tastybento <tastybento@users.noreply.github.com>
Co-authored-by: gitlocalize-app[bot] <55277160+gitlocalize-app[bot]@users.noreply.github.com>
Co-authored-by: Patrick <patrick.wassmuth@gmx.de>
Co-authored-by: Michael F <unhappyangel83@googlemail.com>
Co-authored-by: DAge030 <dage030@web.de>
2022-05-06 18:51:54 +02:00
|
|
|
public static List<ItemStack> groupEqualItems(List<ItemStack> requiredItems, Set<Material> ignoreMetaData)
|
2019-06-16 14:57:05 +02:00
|
|
|
{
|
|
|
|
List<ItemStack> returnItems = new ArrayList<>(requiredItems.size());
|
|
|
|
|
2020-04-22 00:19:46 +02:00
|
|
|
// Group all equal items in single stack, as otherwise it will be too complicated to check if all
|
2019-06-16 14:57:05 +02:00
|
|
|
// items are in players inventory.
|
|
|
|
for (ItemStack item : requiredItems)
|
|
|
|
{
|
2019-08-11 17:12:56 +02:00
|
|
|
boolean isUnique = item != null;
|
2019-06-16 14:57:05 +02:00
|
|
|
|
|
|
|
int i = 0;
|
|
|
|
final int requiredSize = returnItems.size();
|
|
|
|
|
|
|
|
while (i < requiredSize && isUnique)
|
|
|
|
{
|
|
|
|
ItemStack required = returnItems.get(i);
|
|
|
|
|
|
|
|
// Merge items which meta can be ignored or is similar to item in required list.
|
Prepare 1.0 Release (#287)
* Version 0.8.5
* Retranslated zh-CN.yml (#273)
* 50% completed.
* 60% completed.
* 63% completed.
* Completed.
* Change the indentation, some improvements.
Co-authored-by: zhangYi <apachezy@hotmail.com>
* Updated german language file (#278)
fixed double & and double whitespace
* Fixes a mistaken permission for completing multiple challenges at once.
* Fixes translated placeholders in PL translation.
Note: translation looks bad.
* Update CompleteChallengeCommandTest.java
* Upgrade to BentoBox 1.17 API changes.
Implement Pladdon functionality.
Compile against java 16 and Spigot 1.17
* Fix Java 16 compilation.
* Use BentoBox 1.17.0
* Update pom.xml
* Create Statistic Requirement for Challenges addon.
Statistic requirement is a new type of challenge that is based on Statistic page for clients.
* Switch to annotations instead of plugin.yml file.
* Move managers to a separate directory.
* Add mojang authLib instead of NMS.
* Rename classes to Selectors.
Split single and multiple item selectors for easier implementation.
Update proper locales.
* Implement customizable user panels.
Server owners can customize 3 panels:
- main panel
- gamemode selector
- multiple completions
Panel functions will be explained in docs later.
* Update all admin panels.
Admin panels will not contain better locales codding and easier-to-improve design.
Remove old and unused GUIs.
* Remove unused adapters.
Updates Challenges and ChallengesLevel objects.
Add TypeMigrationAdapter that will fix issue with renamed challenge type.
* Update commands.
Commands will now call correct GUI.
* Update Settings file.
Remove unused parts.
* Fixes ChallengesManager and Completer.
* Adds panel saving to the `/challenges/panels` directory.
* Updates locales file.
Complete rework of the locales file.
Very sorry translators :( no migration.
* Updates pom.xml
* Updates tests.
ChallengesGUITest is removed because GUI is removed.
* Update default.json
Split text into multiple lines.
* Create template YAML file.
This file format is for people who has an alergy with ingame GUI.
* Implements Template reading.
Add template loading via Admin Panel.
Improve LibraryPanel so it could find json and yml files.
* Improve coloring scheme a bit.
* Change settings file.
Add ability to change commands for addon.
Change default mode from player challenges to island challenges.
* Update Main addon class.
Move vault and level detection after everything is loaded.
Update command names.
* Update all commands.
Commands now will have an option to change their call values.
* Update default config value.
* Fixes #264
Challenges Menu will be opened only if player is in correct world.
* Changes User#sendMessage to Utils#sendMessage
This allows add "prefix" to all messages send from Challenges addon.
* Separate singe and multiple listings.
* Clean up Constants a bit.
* Add meta for items translations.
* Fix permission link.
* Translates color codes for database texts.
* Fixes a bug when global commands does not displays in tab-complete.
Remove DefaultsCommand.java as it is not used anymore.
* Fixes small bugs in translation.
* Remove unnecessary "admin" tag.
* Update default locale.
* Update latvian locale to the latest version.
* Implement multi-linguistic server support.
Now server owners can specify different name, description and reward text for each challenge and level via locales file.
Add showcase example.
* Comment out showcase translation.
* Update BentoBox version
* Update missing icons for blocks.
Some blocks cannot be displayed in GUI's, and were leaving empty spaces.
This replaces their icon with a close representative.
Fixes #286
* Add missing mob heads.
* Fixes illegal stack issues in default challenges.
#249
* Change from click-to-select to a proper next/previous page tooltip
* Add search field to the PagedSelectors.
Add missing tooltips.
* Change download icon from hopper to cobweb.
* Add missing tooltips to the CommonPagedPanel
* Add search button to the CommonPagedPanel.
Search button will allow to search elements if there are more than displayed elements.
* Add missing strings into locale.
* Reorder dependencies
The Mojang dependency was blocking out the needed Google common
packages.
* Prevent errors in TryToCompleteTest
Note - tests still fail.
* Fixed errors and tests for CompleteChallengeCommandTest
* Fixed ChallengesCommandTest tests
* Fixes tests
* Fix JavaDoc, Shade plugin settings
* Updated .gitignore
* Try different spigot API version
* Remove Vault repo because it is not needed.
* Excluded unnecessary files from shading.
* Fixes #253
Adds TeamKick and TeamLeave events to the reset check.
Do not reset challenges if data is stored per island. As in that case, they will already lose their data.
* Fixes #187
Add a new method that updates unlocked level list without changing active level. This method returns if last unlocked level was changed, and in that case it triggers whole gui rebuilding.
* Fixes #269
Disable waiver amount message for last challenge level.
* Add timeout for repeatable challenges.
Relates #71
* Implement timeout respecting in challenges completion.
Implement timeout in GUI's.
Relates #71
* Implement changing Timeout in the Challenge Edit GUI.
Relates #71
* Implement an option to set which item type will ignore metadata per challenge.
Fixes #261
Fixes #252
* Fixes failing unit-test
* Removed shade plugin from POM
* Replace GuiUtils and HeadLib to the PanelUtils library.
* Link templates to the docs.
* Remove unnecessary NMS dependency.
NMS code was used for Player Heads, but instead of NMS now it uses public mojang lib.
* Address some code quality reports from SonarCloud.
Most of the errors are just sanity checks, as the most of null-pointers were already checked in other ways.
* Fixes incorrect NEXT and PREVIOUS button descriptions.
Fixes #289
* Implement MetaData ignoring for rewards.
While required items had a metadata grouping, reward items did not have it. This will fix that.
Fixes #289
* Fix an issue when edit menu did not display item amount.
* Update lv translation.
* Fixes some small bugs with translation potion base effect.
There was an issue that it tried to translate extra effects and ignored main one.
Relates to #290
* Fix a bug with completion broadcasting
Reported via Discord.
* Update pom.xml
* Fixes a bug with `-1` repeat-times
There was a bug that prevented the challenge to be completed if negative numbers were set in the "max-repeats" value.
* Improve equal item listing.
Change when items should be grouped.
Instead of relaying strictly from ignoreMetaData set, now try to group equal elements without durability check, and use set only if that fails.
* Update German translation (#295)
* Translate de.yml via GitLocalize
* Translate de.yml via GitLocalize
* Translate de.yml via GitLocalize
Co-authored-by: Patrick <patrick.wassmuth@gmx.de>
Co-authored-by: Michael F <unhappyangel83@googlemail.com>
Co-authored-by: DAge030 <dage030@web.de>
* Fix NPEs when running tests.
Note that there are still test failures, but these are assertions and
not errors.
* Fix error in test class.
Note this does not fix the failing assertion.
* Fix failing test. Make player default to being on island.
* Fixed test failures.
* Avoid potential call with a null parameter to User.getInstance
* Check for null world
* Null check
* Added null check
* Require non-nulls.
getInventory never returns null.
* Remove various code smells.
Co-authored-by: tastybento <tastybento@wasteofplastic.com>
Co-authored-by: apachezy <50116371+apachezy@users.noreply.github.com>
Co-authored-by: zhangYi <apachezy@hotmail.com>
Co-authored-by: Qumoo <76853697+Qumoo@users.noreply.github.com>
Co-authored-by: tastybento <tastybento@users.noreply.github.com>
Co-authored-by: gitlocalize-app[bot] <55277160+gitlocalize-app[bot]@users.noreply.github.com>
Co-authored-by: Patrick <patrick.wassmuth@gmx.de>
Co-authored-by: Michael F <unhappyangel83@googlemail.com>
Co-authored-by: DAge030 <dage030@web.de>
2022-05-06 18:51:54 +02:00
|
|
|
if (Utils.isSimilarNoDurability(required, item) ||
|
|
|
|
ignoreMetaData.contains(item.getType()) && item.getType().equals(required.getType()))
|
2019-06-16 14:57:05 +02:00
|
|
|
{
|
|
|
|
required.setAmount(required.getAmount() + item.getAmount());
|
|
|
|
isUnique = false;
|
|
|
|
}
|
|
|
|
|
|
|
|
i++;
|
|
|
|
}
|
|
|
|
|
Prepare 1.0 Release (#287)
* Version 0.8.5
* Retranslated zh-CN.yml (#273)
* 50% completed.
* 60% completed.
* 63% completed.
* Completed.
* Change the indentation, some improvements.
Co-authored-by: zhangYi <apachezy@hotmail.com>
* Updated german language file (#278)
fixed double & and double whitespace
* Fixes a mistaken permission for completing multiple challenges at once.
* Fixes translated placeholders in PL translation.
Note: translation looks bad.
* Update CompleteChallengeCommandTest.java
* Upgrade to BentoBox 1.17 API changes.
Implement Pladdon functionality.
Compile against java 16 and Spigot 1.17
* Fix Java 16 compilation.
* Use BentoBox 1.17.0
* Update pom.xml
* Create Statistic Requirement for Challenges addon.
Statistic requirement is a new type of challenge that is based on Statistic page for clients.
* Switch to annotations instead of plugin.yml file.
* Move managers to a separate directory.
* Add mojang authLib instead of NMS.
* Rename classes to Selectors.
Split single and multiple item selectors for easier implementation.
Update proper locales.
* Implement customizable user panels.
Server owners can customize 3 panels:
- main panel
- gamemode selector
- multiple completions
Panel functions will be explained in docs later.
* Update all admin panels.
Admin panels will not contain better locales codding and easier-to-improve design.
Remove old and unused GUIs.
* Remove unused adapters.
Updates Challenges and ChallengesLevel objects.
Add TypeMigrationAdapter that will fix issue with renamed challenge type.
* Update commands.
Commands will now call correct GUI.
* Update Settings file.
Remove unused parts.
* Fixes ChallengesManager and Completer.
* Adds panel saving to the `/challenges/panels` directory.
* Updates locales file.
Complete rework of the locales file.
Very sorry translators :( no migration.
* Updates pom.xml
* Updates tests.
ChallengesGUITest is removed because GUI is removed.
* Update default.json
Split text into multiple lines.
* Create template YAML file.
This file format is for people who has an alergy with ingame GUI.
* Implements Template reading.
Add template loading via Admin Panel.
Improve LibraryPanel so it could find json and yml files.
* Improve coloring scheme a bit.
* Change settings file.
Add ability to change commands for addon.
Change default mode from player challenges to island challenges.
* Update Main addon class.
Move vault and level detection after everything is loaded.
Update command names.
* Update all commands.
Commands now will have an option to change their call values.
* Update default config value.
* Fixes #264
Challenges Menu will be opened only if player is in correct world.
* Changes User#sendMessage to Utils#sendMessage
This allows add "prefix" to all messages send from Challenges addon.
* Separate singe and multiple listings.
* Clean up Constants a bit.
* Add meta for items translations.
* Fix permission link.
* Translates color codes for database texts.
* Fixes a bug when global commands does not displays in tab-complete.
Remove DefaultsCommand.java as it is not used anymore.
* Fixes small bugs in translation.
* Remove unnecessary "admin" tag.
* Update default locale.
* Update latvian locale to the latest version.
* Implement multi-linguistic server support.
Now server owners can specify different name, description and reward text for each challenge and level via locales file.
Add showcase example.
* Comment out showcase translation.
* Update BentoBox version
* Update missing icons for blocks.
Some blocks cannot be displayed in GUI's, and were leaving empty spaces.
This replaces their icon with a close representative.
Fixes #286
* Add missing mob heads.
* Fixes illegal stack issues in default challenges.
#249
* Change from click-to-select to a proper next/previous page tooltip
* Add search field to the PagedSelectors.
Add missing tooltips.
* Change download icon from hopper to cobweb.
* Add missing tooltips to the CommonPagedPanel
* Add search button to the CommonPagedPanel.
Search button will allow to search elements if there are more than displayed elements.
* Add missing strings into locale.
* Reorder dependencies
The Mojang dependency was blocking out the needed Google common
packages.
* Prevent errors in TryToCompleteTest
Note - tests still fail.
* Fixed errors and tests for CompleteChallengeCommandTest
* Fixed ChallengesCommandTest tests
* Fixes tests
* Fix JavaDoc, Shade plugin settings
* Updated .gitignore
* Try different spigot API version
* Remove Vault repo because it is not needed.
* Excluded unnecessary files from shading.
* Fixes #253
Adds TeamKick and TeamLeave events to the reset check.
Do not reset challenges if data is stored per island. As in that case, they will already lose their data.
* Fixes #187
Add a new method that updates unlocked level list without changing active level. This method returns if last unlocked level was changed, and in that case it triggers whole gui rebuilding.
* Fixes #269
Disable waiver amount message for last challenge level.
* Add timeout for repeatable challenges.
Relates #71
* Implement timeout respecting in challenges completion.
Implement timeout in GUI's.
Relates #71
* Implement changing Timeout in the Challenge Edit GUI.
Relates #71
* Implement an option to set which item type will ignore metadata per challenge.
Fixes #261
Fixes #252
* Fixes failing unit-test
* Removed shade plugin from POM
* Replace GuiUtils and HeadLib to the PanelUtils library.
* Link templates to the docs.
* Remove unnecessary NMS dependency.
NMS code was used for Player Heads, but instead of NMS now it uses public mojang lib.
* Address some code quality reports from SonarCloud.
Most of the errors are just sanity checks, as the most of null-pointers were already checked in other ways.
* Fixes incorrect NEXT and PREVIOUS button descriptions.
Fixes #289
* Implement MetaData ignoring for rewards.
While required items had a metadata grouping, reward items did not have it. This will fix that.
Fixes #289
* Fix an issue when edit menu did not display item amount.
* Update lv translation.
* Fixes some small bugs with translation potion base effect.
There was an issue that it tried to translate extra effects and ignored main one.
Relates to #290
* Fix a bug with completion broadcasting
Reported via Discord.
* Update pom.xml
* Fixes a bug with `-1` repeat-times
There was a bug that prevented the challenge to be completed if negative numbers were set in the "max-repeats" value.
* Improve equal item listing.
Change when items should be grouped.
Instead of relaying strictly from ignoreMetaData set, now try to group equal elements without durability check, and use set only if that fails.
* Update German translation (#295)
* Translate de.yml via GitLocalize
* Translate de.yml via GitLocalize
* Translate de.yml via GitLocalize
Co-authored-by: Patrick <patrick.wassmuth@gmx.de>
Co-authored-by: Michael F <unhappyangel83@googlemail.com>
Co-authored-by: DAge030 <dage030@web.de>
* Fix NPEs when running tests.
Note that there are still test failures, but these are assertions and
not errors.
* Fix error in test class.
Note this does not fix the failing assertion.
* Fix failing test. Make player default to being on island.
* Fixed test failures.
* Avoid potential call with a null parameter to User.getInstance
* Check for null world
* Null check
* Added null check
* Require non-nulls.
getInventory never returns null.
* Remove various code smells.
Co-authored-by: tastybento <tastybento@wasteofplastic.com>
Co-authored-by: apachezy <50116371+apachezy@users.noreply.github.com>
Co-authored-by: zhangYi <apachezy@hotmail.com>
Co-authored-by: Qumoo <76853697+Qumoo@users.noreply.github.com>
Co-authored-by: tastybento <tastybento@users.noreply.github.com>
Co-authored-by: gitlocalize-app[bot] <55277160+gitlocalize-app[bot]@users.noreply.github.com>
Co-authored-by: Patrick <patrick.wassmuth@gmx.de>
Co-authored-by: Michael F <unhappyangel83@googlemail.com>
Co-authored-by: DAge030 <dage030@web.de>
2022-05-06 18:51:54 +02:00
|
|
|
if (isUnique)
|
2019-06-16 14:57:05 +02:00
|
|
|
{
|
|
|
|
// The same issue as in other places. Clone prevents from changing original item.
|
|
|
|
returnItems.add(item.clone());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return returnItems;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2019-08-01 12:19:15 +02:00
|
|
|
/**
|
|
|
|
* This method transforms given World into GameMode name. If world is not a GameMode
|
|
|
|
* world then it returns null.
|
|
|
|
* @param world World which gameMode name must be found out.
|
|
|
|
* @return GameMode name or null.
|
|
|
|
*/
|
|
|
|
public static String getGameMode(World world)
|
|
|
|
{
|
|
|
|
return BentoBox.getInstance().getIWM().getAddon(world).
|
|
|
|
map(gameModeAddon -> gameModeAddon.getDescription().getName()).
|
|
|
|
orElse(null);
|
|
|
|
}
|
2019-09-05 12:23:19 +02:00
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This method allows to get next value from array list after given value.
|
|
|
|
* @param values Array that should be searched for given value.
|
|
|
|
* @param currentValue Value which next element should be found.
|
|
|
|
* @param <T> Instance of given object.
|
|
|
|
* @return Next value after currentValue in values array.
|
|
|
|
*/
|
Prepare 1.0 Release (#287)
* Version 0.8.5
* Retranslated zh-CN.yml (#273)
* 50% completed.
* 60% completed.
* 63% completed.
* Completed.
* Change the indentation, some improvements.
Co-authored-by: zhangYi <apachezy@hotmail.com>
* Updated german language file (#278)
fixed double & and double whitespace
* Fixes a mistaken permission for completing multiple challenges at once.
* Fixes translated placeholders in PL translation.
Note: translation looks bad.
* Update CompleteChallengeCommandTest.java
* Upgrade to BentoBox 1.17 API changes.
Implement Pladdon functionality.
Compile against java 16 and Spigot 1.17
* Fix Java 16 compilation.
* Use BentoBox 1.17.0
* Update pom.xml
* Create Statistic Requirement for Challenges addon.
Statistic requirement is a new type of challenge that is based on Statistic page for clients.
* Switch to annotations instead of plugin.yml file.
* Move managers to a separate directory.
* Add mojang authLib instead of NMS.
* Rename classes to Selectors.
Split single and multiple item selectors for easier implementation.
Update proper locales.
* Implement customizable user panels.
Server owners can customize 3 panels:
- main panel
- gamemode selector
- multiple completions
Panel functions will be explained in docs later.
* Update all admin panels.
Admin panels will not contain better locales codding and easier-to-improve design.
Remove old and unused GUIs.
* Remove unused adapters.
Updates Challenges and ChallengesLevel objects.
Add TypeMigrationAdapter that will fix issue with renamed challenge type.
* Update commands.
Commands will now call correct GUI.
* Update Settings file.
Remove unused parts.
* Fixes ChallengesManager and Completer.
* Adds panel saving to the `/challenges/panels` directory.
* Updates locales file.
Complete rework of the locales file.
Very sorry translators :( no migration.
* Updates pom.xml
* Updates tests.
ChallengesGUITest is removed because GUI is removed.
* Update default.json
Split text into multiple lines.
* Create template YAML file.
This file format is for people who has an alergy with ingame GUI.
* Implements Template reading.
Add template loading via Admin Panel.
Improve LibraryPanel so it could find json and yml files.
* Improve coloring scheme a bit.
* Change settings file.
Add ability to change commands for addon.
Change default mode from player challenges to island challenges.
* Update Main addon class.
Move vault and level detection after everything is loaded.
Update command names.
* Update all commands.
Commands now will have an option to change their call values.
* Update default config value.
* Fixes #264
Challenges Menu will be opened only if player is in correct world.
* Changes User#sendMessage to Utils#sendMessage
This allows add "prefix" to all messages send from Challenges addon.
* Separate singe and multiple listings.
* Clean up Constants a bit.
* Add meta for items translations.
* Fix permission link.
* Translates color codes for database texts.
* Fixes a bug when global commands does not displays in tab-complete.
Remove DefaultsCommand.java as it is not used anymore.
* Fixes small bugs in translation.
* Remove unnecessary "admin" tag.
* Update default locale.
* Update latvian locale to the latest version.
* Implement multi-linguistic server support.
Now server owners can specify different name, description and reward text for each challenge and level via locales file.
Add showcase example.
* Comment out showcase translation.
* Update BentoBox version
* Update missing icons for blocks.
Some blocks cannot be displayed in GUI's, and were leaving empty spaces.
This replaces their icon with a close representative.
Fixes #286
* Add missing mob heads.
* Fixes illegal stack issues in default challenges.
#249
* Change from click-to-select to a proper next/previous page tooltip
* Add search field to the PagedSelectors.
Add missing tooltips.
* Change download icon from hopper to cobweb.
* Add missing tooltips to the CommonPagedPanel
* Add search button to the CommonPagedPanel.
Search button will allow to search elements if there are more than displayed elements.
* Add missing strings into locale.
* Reorder dependencies
The Mojang dependency was blocking out the needed Google common
packages.
* Prevent errors in TryToCompleteTest
Note - tests still fail.
* Fixed errors and tests for CompleteChallengeCommandTest
* Fixed ChallengesCommandTest tests
* Fixes tests
* Fix JavaDoc, Shade plugin settings
* Updated .gitignore
* Try different spigot API version
* Remove Vault repo because it is not needed.
* Excluded unnecessary files from shading.
* Fixes #253
Adds TeamKick and TeamLeave events to the reset check.
Do not reset challenges if data is stored per island. As in that case, they will already lose their data.
* Fixes #187
Add a new method that updates unlocked level list without changing active level. This method returns if last unlocked level was changed, and in that case it triggers whole gui rebuilding.
* Fixes #269
Disable waiver amount message for last challenge level.
* Add timeout for repeatable challenges.
Relates #71
* Implement timeout respecting in challenges completion.
Implement timeout in GUI's.
Relates #71
* Implement changing Timeout in the Challenge Edit GUI.
Relates #71
* Implement an option to set which item type will ignore metadata per challenge.
Fixes #261
Fixes #252
* Fixes failing unit-test
* Removed shade plugin from POM
* Replace GuiUtils and HeadLib to the PanelUtils library.
* Link templates to the docs.
* Remove unnecessary NMS dependency.
NMS code was used for Player Heads, but instead of NMS now it uses public mojang lib.
* Address some code quality reports from SonarCloud.
Most of the errors are just sanity checks, as the most of null-pointers were already checked in other ways.
* Fixes incorrect NEXT and PREVIOUS button descriptions.
Fixes #289
* Implement MetaData ignoring for rewards.
While required items had a metadata grouping, reward items did not have it. This will fix that.
Fixes #289
* Fix an issue when edit menu did not display item amount.
* Update lv translation.
* Fixes some small bugs with translation potion base effect.
There was an issue that it tried to translate extra effects and ignored main one.
Relates to #290
* Fix a bug with completion broadcasting
Reported via Discord.
* Update pom.xml
* Fixes a bug with `-1` repeat-times
There was a bug that prevented the challenge to be completed if negative numbers were set in the "max-repeats" value.
* Improve equal item listing.
Change when items should be grouped.
Instead of relaying strictly from ignoreMetaData set, now try to group equal elements without durability check, and use set only if that fails.
* Update German translation (#295)
* Translate de.yml via GitLocalize
* Translate de.yml via GitLocalize
* Translate de.yml via GitLocalize
Co-authored-by: Patrick <patrick.wassmuth@gmx.de>
Co-authored-by: Michael F <unhappyangel83@googlemail.com>
Co-authored-by: DAge030 <dage030@web.de>
* Fix NPEs when running tests.
Note that there are still test failures, but these are assertions and
not errors.
* Fix error in test class.
Note this does not fix the failing assertion.
* Fix failing test. Make player default to being on island.
* Fixed test failures.
* Avoid potential call with a null parameter to User.getInstance
* Check for null world
* Null check
* Added null check
* Require non-nulls.
getInventory never returns null.
* Remove various code smells.
Co-authored-by: tastybento <tastybento@wasteofplastic.com>
Co-authored-by: apachezy <50116371+apachezy@users.noreply.github.com>
Co-authored-by: zhangYi <apachezy@hotmail.com>
Co-authored-by: Qumoo <76853697+Qumoo@users.noreply.github.com>
Co-authored-by: tastybento <tastybento@users.noreply.github.com>
Co-authored-by: gitlocalize-app[bot] <55277160+gitlocalize-app[bot]@users.noreply.github.com>
Co-authored-by: Patrick <patrick.wassmuth@gmx.de>
Co-authored-by: Michael F <unhappyangel83@googlemail.com>
Co-authored-by: DAge030 <dage030@web.de>
2022-05-06 18:51:54 +02:00
|
|
|
public static <T> T getNextValue(T[] values, T currentValue)
|
2019-09-05 12:23:19 +02:00
|
|
|
{
|
|
|
|
for (int i = 0; i < values.length; i++)
|
|
|
|
{
|
|
|
|
if (values[i].equals(currentValue))
|
|
|
|
{
|
|
|
|
if (i + 1 == values.length)
|
|
|
|
{
|
|
|
|
return values[0];
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
return values[i + 1];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return currentValue;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This method allows to get previous value from array list after given value.
|
|
|
|
* @param values Array that should be searched for given value.
|
|
|
|
* @param currentValue Value which previous element should be found.
|
|
|
|
* @param <T> Instance of given object.
|
|
|
|
* @return Previous value before currentValue in values array.
|
|
|
|
*/
|
Prepare 1.0 Release (#287)
* Version 0.8.5
* Retranslated zh-CN.yml (#273)
* 50% completed.
* 60% completed.
* 63% completed.
* Completed.
* Change the indentation, some improvements.
Co-authored-by: zhangYi <apachezy@hotmail.com>
* Updated german language file (#278)
fixed double & and double whitespace
* Fixes a mistaken permission for completing multiple challenges at once.
* Fixes translated placeholders in PL translation.
Note: translation looks bad.
* Update CompleteChallengeCommandTest.java
* Upgrade to BentoBox 1.17 API changes.
Implement Pladdon functionality.
Compile against java 16 and Spigot 1.17
* Fix Java 16 compilation.
* Use BentoBox 1.17.0
* Update pom.xml
* Create Statistic Requirement for Challenges addon.
Statistic requirement is a new type of challenge that is based on Statistic page for clients.
* Switch to annotations instead of plugin.yml file.
* Move managers to a separate directory.
* Add mojang authLib instead of NMS.
* Rename classes to Selectors.
Split single and multiple item selectors for easier implementation.
Update proper locales.
* Implement customizable user panels.
Server owners can customize 3 panels:
- main panel
- gamemode selector
- multiple completions
Panel functions will be explained in docs later.
* Update all admin panels.
Admin panels will not contain better locales codding and easier-to-improve design.
Remove old and unused GUIs.
* Remove unused adapters.
Updates Challenges and ChallengesLevel objects.
Add TypeMigrationAdapter that will fix issue with renamed challenge type.
* Update commands.
Commands will now call correct GUI.
* Update Settings file.
Remove unused parts.
* Fixes ChallengesManager and Completer.
* Adds panel saving to the `/challenges/panels` directory.
* Updates locales file.
Complete rework of the locales file.
Very sorry translators :( no migration.
* Updates pom.xml
* Updates tests.
ChallengesGUITest is removed because GUI is removed.
* Update default.json
Split text into multiple lines.
* Create template YAML file.
This file format is for people who has an alergy with ingame GUI.
* Implements Template reading.
Add template loading via Admin Panel.
Improve LibraryPanel so it could find json and yml files.
* Improve coloring scheme a bit.
* Change settings file.
Add ability to change commands for addon.
Change default mode from player challenges to island challenges.
* Update Main addon class.
Move vault and level detection after everything is loaded.
Update command names.
* Update all commands.
Commands now will have an option to change their call values.
* Update default config value.
* Fixes #264
Challenges Menu will be opened only if player is in correct world.
* Changes User#sendMessage to Utils#sendMessage
This allows add "prefix" to all messages send from Challenges addon.
* Separate singe and multiple listings.
* Clean up Constants a bit.
* Add meta for items translations.
* Fix permission link.
* Translates color codes for database texts.
* Fixes a bug when global commands does not displays in tab-complete.
Remove DefaultsCommand.java as it is not used anymore.
* Fixes small bugs in translation.
* Remove unnecessary "admin" tag.
* Update default locale.
* Update latvian locale to the latest version.
* Implement multi-linguistic server support.
Now server owners can specify different name, description and reward text for each challenge and level via locales file.
Add showcase example.
* Comment out showcase translation.
* Update BentoBox version
* Update missing icons for blocks.
Some blocks cannot be displayed in GUI's, and were leaving empty spaces.
This replaces their icon with a close representative.
Fixes #286
* Add missing mob heads.
* Fixes illegal stack issues in default challenges.
#249
* Change from click-to-select to a proper next/previous page tooltip
* Add search field to the PagedSelectors.
Add missing tooltips.
* Change download icon from hopper to cobweb.
* Add missing tooltips to the CommonPagedPanel
* Add search button to the CommonPagedPanel.
Search button will allow to search elements if there are more than displayed elements.
* Add missing strings into locale.
* Reorder dependencies
The Mojang dependency was blocking out the needed Google common
packages.
* Prevent errors in TryToCompleteTest
Note - tests still fail.
* Fixed errors and tests for CompleteChallengeCommandTest
* Fixed ChallengesCommandTest tests
* Fixes tests
* Fix JavaDoc, Shade plugin settings
* Updated .gitignore
* Try different spigot API version
* Remove Vault repo because it is not needed.
* Excluded unnecessary files from shading.
* Fixes #253
Adds TeamKick and TeamLeave events to the reset check.
Do not reset challenges if data is stored per island. As in that case, they will already lose their data.
* Fixes #187
Add a new method that updates unlocked level list without changing active level. This method returns if last unlocked level was changed, and in that case it triggers whole gui rebuilding.
* Fixes #269
Disable waiver amount message for last challenge level.
* Add timeout for repeatable challenges.
Relates #71
* Implement timeout respecting in challenges completion.
Implement timeout in GUI's.
Relates #71
* Implement changing Timeout in the Challenge Edit GUI.
Relates #71
* Implement an option to set which item type will ignore metadata per challenge.
Fixes #261
Fixes #252
* Fixes failing unit-test
* Removed shade plugin from POM
* Replace GuiUtils and HeadLib to the PanelUtils library.
* Link templates to the docs.
* Remove unnecessary NMS dependency.
NMS code was used for Player Heads, but instead of NMS now it uses public mojang lib.
* Address some code quality reports from SonarCloud.
Most of the errors are just sanity checks, as the most of null-pointers were already checked in other ways.
* Fixes incorrect NEXT and PREVIOUS button descriptions.
Fixes #289
* Implement MetaData ignoring for rewards.
While required items had a metadata grouping, reward items did not have it. This will fix that.
Fixes #289
* Fix an issue when edit menu did not display item amount.
* Update lv translation.
* Fixes some small bugs with translation potion base effect.
There was an issue that it tried to translate extra effects and ignored main one.
Relates to #290
* Fix a bug with completion broadcasting
Reported via Discord.
* Update pom.xml
* Fixes a bug with `-1` repeat-times
There was a bug that prevented the challenge to be completed if negative numbers were set in the "max-repeats" value.
* Improve equal item listing.
Change when items should be grouped.
Instead of relaying strictly from ignoreMetaData set, now try to group equal elements without durability check, and use set only if that fails.
* Update German translation (#295)
* Translate de.yml via GitLocalize
* Translate de.yml via GitLocalize
* Translate de.yml via GitLocalize
Co-authored-by: Patrick <patrick.wassmuth@gmx.de>
Co-authored-by: Michael F <unhappyangel83@googlemail.com>
Co-authored-by: DAge030 <dage030@web.de>
* Fix NPEs when running tests.
Note that there are still test failures, but these are assertions and
not errors.
* Fix error in test class.
Note this does not fix the failing assertion.
* Fix failing test. Make player default to being on island.
* Fixed test failures.
* Avoid potential call with a null parameter to User.getInstance
* Check for null world
* Null check
* Added null check
* Require non-nulls.
getInventory never returns null.
* Remove various code smells.
Co-authored-by: tastybento <tastybento@wasteofplastic.com>
Co-authored-by: apachezy <50116371+apachezy@users.noreply.github.com>
Co-authored-by: zhangYi <apachezy@hotmail.com>
Co-authored-by: Qumoo <76853697+Qumoo@users.noreply.github.com>
Co-authored-by: tastybento <tastybento@users.noreply.github.com>
Co-authored-by: gitlocalize-app[bot] <55277160+gitlocalize-app[bot]@users.noreply.github.com>
Co-authored-by: Patrick <patrick.wassmuth@gmx.de>
Co-authored-by: Michael F <unhappyangel83@googlemail.com>
Co-authored-by: DAge030 <dage030@web.de>
2022-05-06 18:51:54 +02:00
|
|
|
public static <T> T getPreviousValue(T[] values, T currentValue)
|
2019-09-05 12:23:19 +02:00
|
|
|
{
|
|
|
|
for (int i = 0; i < values.length; i++)
|
|
|
|
{
|
|
|
|
if (values[i].equals(currentValue))
|
|
|
|
{
|
|
|
|
if (i > 0)
|
|
|
|
{
|
|
|
|
return values[i - 1];
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
return values[values.length - 1];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return currentValue;
|
|
|
|
}
|
Prepare 1.0 Release (#287)
* Version 0.8.5
* Retranslated zh-CN.yml (#273)
* 50% completed.
* 60% completed.
* 63% completed.
* Completed.
* Change the indentation, some improvements.
Co-authored-by: zhangYi <apachezy@hotmail.com>
* Updated german language file (#278)
fixed double & and double whitespace
* Fixes a mistaken permission for completing multiple challenges at once.
* Fixes translated placeholders in PL translation.
Note: translation looks bad.
* Update CompleteChallengeCommandTest.java
* Upgrade to BentoBox 1.17 API changes.
Implement Pladdon functionality.
Compile against java 16 and Spigot 1.17
* Fix Java 16 compilation.
* Use BentoBox 1.17.0
* Update pom.xml
* Create Statistic Requirement for Challenges addon.
Statistic requirement is a new type of challenge that is based on Statistic page for clients.
* Switch to annotations instead of plugin.yml file.
* Move managers to a separate directory.
* Add mojang authLib instead of NMS.
* Rename classes to Selectors.
Split single and multiple item selectors for easier implementation.
Update proper locales.
* Implement customizable user panels.
Server owners can customize 3 panels:
- main panel
- gamemode selector
- multiple completions
Panel functions will be explained in docs later.
* Update all admin panels.
Admin panels will not contain better locales codding and easier-to-improve design.
Remove old and unused GUIs.
* Remove unused adapters.
Updates Challenges and ChallengesLevel objects.
Add TypeMigrationAdapter that will fix issue with renamed challenge type.
* Update commands.
Commands will now call correct GUI.
* Update Settings file.
Remove unused parts.
* Fixes ChallengesManager and Completer.
* Adds panel saving to the `/challenges/panels` directory.
* Updates locales file.
Complete rework of the locales file.
Very sorry translators :( no migration.
* Updates pom.xml
* Updates tests.
ChallengesGUITest is removed because GUI is removed.
* Update default.json
Split text into multiple lines.
* Create template YAML file.
This file format is for people who has an alergy with ingame GUI.
* Implements Template reading.
Add template loading via Admin Panel.
Improve LibraryPanel so it could find json and yml files.
* Improve coloring scheme a bit.
* Change settings file.
Add ability to change commands for addon.
Change default mode from player challenges to island challenges.
* Update Main addon class.
Move vault and level detection after everything is loaded.
Update command names.
* Update all commands.
Commands now will have an option to change their call values.
* Update default config value.
* Fixes #264
Challenges Menu will be opened only if player is in correct world.
* Changes User#sendMessage to Utils#sendMessage
This allows add "prefix" to all messages send from Challenges addon.
* Separate singe and multiple listings.
* Clean up Constants a bit.
* Add meta for items translations.
* Fix permission link.
* Translates color codes for database texts.
* Fixes a bug when global commands does not displays in tab-complete.
Remove DefaultsCommand.java as it is not used anymore.
* Fixes small bugs in translation.
* Remove unnecessary "admin" tag.
* Update default locale.
* Update latvian locale to the latest version.
* Implement multi-linguistic server support.
Now server owners can specify different name, description and reward text for each challenge and level via locales file.
Add showcase example.
* Comment out showcase translation.
* Update BentoBox version
* Update missing icons for blocks.
Some blocks cannot be displayed in GUI's, and were leaving empty spaces.
This replaces their icon with a close representative.
Fixes #286
* Add missing mob heads.
* Fixes illegal stack issues in default challenges.
#249
* Change from click-to-select to a proper next/previous page tooltip
* Add search field to the PagedSelectors.
Add missing tooltips.
* Change download icon from hopper to cobweb.
* Add missing tooltips to the CommonPagedPanel
* Add search button to the CommonPagedPanel.
Search button will allow to search elements if there are more than displayed elements.
* Add missing strings into locale.
* Reorder dependencies
The Mojang dependency was blocking out the needed Google common
packages.
* Prevent errors in TryToCompleteTest
Note - tests still fail.
* Fixed errors and tests for CompleteChallengeCommandTest
* Fixed ChallengesCommandTest tests
* Fixes tests
* Fix JavaDoc, Shade plugin settings
* Updated .gitignore
* Try different spigot API version
* Remove Vault repo because it is not needed.
* Excluded unnecessary files from shading.
* Fixes #253
Adds TeamKick and TeamLeave events to the reset check.
Do not reset challenges if data is stored per island. As in that case, they will already lose their data.
* Fixes #187
Add a new method that updates unlocked level list without changing active level. This method returns if last unlocked level was changed, and in that case it triggers whole gui rebuilding.
* Fixes #269
Disable waiver amount message for last challenge level.
* Add timeout for repeatable challenges.
Relates #71
* Implement timeout respecting in challenges completion.
Implement timeout in GUI's.
Relates #71
* Implement changing Timeout in the Challenge Edit GUI.
Relates #71
* Implement an option to set which item type will ignore metadata per challenge.
Fixes #261
Fixes #252
* Fixes failing unit-test
* Removed shade plugin from POM
* Replace GuiUtils and HeadLib to the PanelUtils library.
* Link templates to the docs.
* Remove unnecessary NMS dependency.
NMS code was used for Player Heads, but instead of NMS now it uses public mojang lib.
* Address some code quality reports from SonarCloud.
Most of the errors are just sanity checks, as the most of null-pointers were already checked in other ways.
* Fixes incorrect NEXT and PREVIOUS button descriptions.
Fixes #289
* Implement MetaData ignoring for rewards.
While required items had a metadata grouping, reward items did not have it. This will fix that.
Fixes #289
* Fix an issue when edit menu did not display item amount.
* Update lv translation.
* Fixes some small bugs with translation potion base effect.
There was an issue that it tried to translate extra effects and ignored main one.
Relates to #290
* Fix a bug with completion broadcasting
Reported via Discord.
* Update pom.xml
* Fixes a bug with `-1` repeat-times
There was a bug that prevented the challenge to be completed if negative numbers were set in the "max-repeats" value.
* Improve equal item listing.
Change when items should be grouped.
Instead of relaying strictly from ignoreMetaData set, now try to group equal elements without durability check, and use set only if that fails.
* Update German translation (#295)
* Translate de.yml via GitLocalize
* Translate de.yml via GitLocalize
* Translate de.yml via GitLocalize
Co-authored-by: Patrick <patrick.wassmuth@gmx.de>
Co-authored-by: Michael F <unhappyangel83@googlemail.com>
Co-authored-by: DAge030 <dage030@web.de>
* Fix NPEs when running tests.
Note that there are still test failures, but these are assertions and
not errors.
* Fix error in test class.
Note this does not fix the failing assertion.
* Fix failing test. Make player default to being on island.
* Fixed test failures.
* Avoid potential call with a null parameter to User.getInstance
* Check for null world
* Null check
* Added null check
* Require non-nulls.
getInventory never returns null.
* Remove various code smells.
Co-authored-by: tastybento <tastybento@wasteofplastic.com>
Co-authored-by: apachezy <50116371+apachezy@users.noreply.github.com>
Co-authored-by: zhangYi <apachezy@hotmail.com>
Co-authored-by: Qumoo <76853697+Qumoo@users.noreply.github.com>
Co-authored-by: tastybento <tastybento@users.noreply.github.com>
Co-authored-by: gitlocalize-app[bot] <55277160+gitlocalize-app[bot]@users.noreply.github.com>
Co-authored-by: Patrick <patrick.wassmuth@gmx.de>
Co-authored-by: Michael F <unhappyangel83@googlemail.com>
Co-authored-by: DAge030 <dage030@web.de>
2022-05-06 18:51:54 +02:00
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sanitizes the provided input. It replaces spaces and hyphens with underscores and lower cases the input.
|
|
|
|
* This code also removes all color codes from the input.
|
|
|
|
* @param input input to sanitize
|
|
|
|
* @return sanitized input
|
|
|
|
*/
|
|
|
|
public static String sanitizeInput(String input)
|
|
|
|
{
|
|
|
|
return ChatColor.stripColor(
|
|
|
|
Util.translateColorCodes(input.toLowerCase(Locale.ENGLISH).
|
|
|
|
replace(" ", "_").
|
|
|
|
replace("-", "_")));
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Send given message to user and add prefix to the start of the message.
|
|
|
|
*
|
|
|
|
* @param user User who need to receive message.
|
2023-04-15 21:55:34 +02:00
|
|
|
* @param world Reference to world where message must be send.
|
|
|
|
* @param translation String of message that must be send.
|
|
|
|
* @param parameters Parameters that must be added to translation.
|
Prepare 1.0 Release (#287)
* Version 0.8.5
* Retranslated zh-CN.yml (#273)
* 50% completed.
* 60% completed.
* 63% completed.
* Completed.
* Change the indentation, some improvements.
Co-authored-by: zhangYi <apachezy@hotmail.com>
* Updated german language file (#278)
fixed double & and double whitespace
* Fixes a mistaken permission for completing multiple challenges at once.
* Fixes translated placeholders in PL translation.
Note: translation looks bad.
* Update CompleteChallengeCommandTest.java
* Upgrade to BentoBox 1.17 API changes.
Implement Pladdon functionality.
Compile against java 16 and Spigot 1.17
* Fix Java 16 compilation.
* Use BentoBox 1.17.0
* Update pom.xml
* Create Statistic Requirement for Challenges addon.
Statistic requirement is a new type of challenge that is based on Statistic page for clients.
* Switch to annotations instead of plugin.yml file.
* Move managers to a separate directory.
* Add mojang authLib instead of NMS.
* Rename classes to Selectors.
Split single and multiple item selectors for easier implementation.
Update proper locales.
* Implement customizable user panels.
Server owners can customize 3 panels:
- main panel
- gamemode selector
- multiple completions
Panel functions will be explained in docs later.
* Update all admin panels.
Admin panels will not contain better locales codding and easier-to-improve design.
Remove old and unused GUIs.
* Remove unused adapters.
Updates Challenges and ChallengesLevel objects.
Add TypeMigrationAdapter that will fix issue with renamed challenge type.
* Update commands.
Commands will now call correct GUI.
* Update Settings file.
Remove unused parts.
* Fixes ChallengesManager and Completer.
* Adds panel saving to the `/challenges/panels` directory.
* Updates locales file.
Complete rework of the locales file.
Very sorry translators :( no migration.
* Updates pom.xml
* Updates tests.
ChallengesGUITest is removed because GUI is removed.
* Update default.json
Split text into multiple lines.
* Create template YAML file.
This file format is for people who has an alergy with ingame GUI.
* Implements Template reading.
Add template loading via Admin Panel.
Improve LibraryPanel so it could find json and yml files.
* Improve coloring scheme a bit.
* Change settings file.
Add ability to change commands for addon.
Change default mode from player challenges to island challenges.
* Update Main addon class.
Move vault and level detection after everything is loaded.
Update command names.
* Update all commands.
Commands now will have an option to change their call values.
* Update default config value.
* Fixes #264
Challenges Menu will be opened only if player is in correct world.
* Changes User#sendMessage to Utils#sendMessage
This allows add "prefix" to all messages send from Challenges addon.
* Separate singe and multiple listings.
* Clean up Constants a bit.
* Add meta for items translations.
* Fix permission link.
* Translates color codes for database texts.
* Fixes a bug when global commands does not displays in tab-complete.
Remove DefaultsCommand.java as it is not used anymore.
* Fixes small bugs in translation.
* Remove unnecessary "admin" tag.
* Update default locale.
* Update latvian locale to the latest version.
* Implement multi-linguistic server support.
Now server owners can specify different name, description and reward text for each challenge and level via locales file.
Add showcase example.
* Comment out showcase translation.
* Update BentoBox version
* Update missing icons for blocks.
Some blocks cannot be displayed in GUI's, and were leaving empty spaces.
This replaces their icon with a close representative.
Fixes #286
* Add missing mob heads.
* Fixes illegal stack issues in default challenges.
#249
* Change from click-to-select to a proper next/previous page tooltip
* Add search field to the PagedSelectors.
Add missing tooltips.
* Change download icon from hopper to cobweb.
* Add missing tooltips to the CommonPagedPanel
* Add search button to the CommonPagedPanel.
Search button will allow to search elements if there are more than displayed elements.
* Add missing strings into locale.
* Reorder dependencies
The Mojang dependency was blocking out the needed Google common
packages.
* Prevent errors in TryToCompleteTest
Note - tests still fail.
* Fixed errors and tests for CompleteChallengeCommandTest
* Fixed ChallengesCommandTest tests
* Fixes tests
* Fix JavaDoc, Shade plugin settings
* Updated .gitignore
* Try different spigot API version
* Remove Vault repo because it is not needed.
* Excluded unnecessary files from shading.
* Fixes #253
Adds TeamKick and TeamLeave events to the reset check.
Do not reset challenges if data is stored per island. As in that case, they will already lose their data.
* Fixes #187
Add a new method that updates unlocked level list without changing active level. This method returns if last unlocked level was changed, and in that case it triggers whole gui rebuilding.
* Fixes #269
Disable waiver amount message for last challenge level.
* Add timeout for repeatable challenges.
Relates #71
* Implement timeout respecting in challenges completion.
Implement timeout in GUI's.
Relates #71
* Implement changing Timeout in the Challenge Edit GUI.
Relates #71
* Implement an option to set which item type will ignore metadata per challenge.
Fixes #261
Fixes #252
* Fixes failing unit-test
* Removed shade plugin from POM
* Replace GuiUtils and HeadLib to the PanelUtils library.
* Link templates to the docs.
* Remove unnecessary NMS dependency.
NMS code was used for Player Heads, but instead of NMS now it uses public mojang lib.
* Address some code quality reports from SonarCloud.
Most of the errors are just sanity checks, as the most of null-pointers were already checked in other ways.
* Fixes incorrect NEXT and PREVIOUS button descriptions.
Fixes #289
* Implement MetaData ignoring for rewards.
While required items had a metadata grouping, reward items did not have it. This will fix that.
Fixes #289
* Fix an issue when edit menu did not display item amount.
* Update lv translation.
* Fixes some small bugs with translation potion base effect.
There was an issue that it tried to translate extra effects and ignored main one.
Relates to #290
* Fix a bug with completion broadcasting
Reported via Discord.
* Update pom.xml
* Fixes a bug with `-1` repeat-times
There was a bug that prevented the challenge to be completed if negative numbers were set in the "max-repeats" value.
* Improve equal item listing.
Change when items should be grouped.
Instead of relaying strictly from ignoreMetaData set, now try to group equal elements without durability check, and use set only if that fails.
* Update German translation (#295)
* Translate de.yml via GitLocalize
* Translate de.yml via GitLocalize
* Translate de.yml via GitLocalize
Co-authored-by: Patrick <patrick.wassmuth@gmx.de>
Co-authored-by: Michael F <unhappyangel83@googlemail.com>
Co-authored-by: DAge030 <dage030@web.de>
* Fix NPEs when running tests.
Note that there are still test failures, but these are assertions and
not errors.
* Fix error in test class.
Note this does not fix the failing assertion.
* Fix failing test. Make player default to being on island.
* Fixed test failures.
* Avoid potential call with a null parameter to User.getInstance
* Check for null world
* Null check
* Added null check
* Require non-nulls.
getInventory never returns null.
* Remove various code smells.
Co-authored-by: tastybento <tastybento@wasteofplastic.com>
Co-authored-by: apachezy <50116371+apachezy@users.noreply.github.com>
Co-authored-by: zhangYi <apachezy@hotmail.com>
Co-authored-by: Qumoo <76853697+Qumoo@users.noreply.github.com>
Co-authored-by: tastybento <tastybento@users.noreply.github.com>
Co-authored-by: gitlocalize-app[bot] <55277160+gitlocalize-app[bot]@users.noreply.github.com>
Co-authored-by: Patrick <patrick.wassmuth@gmx.de>
Co-authored-by: Michael F <unhappyangel83@googlemail.com>
Co-authored-by: DAge030 <dage030@web.de>
2022-05-06 18:51:54 +02:00
|
|
|
*/
|
2023-04-15 21:55:34 +02:00
|
|
|
public static void sendMessage(User user, World world, String translation, String... parameters)
|
Prepare 1.0 Release (#287)
* Version 0.8.5
* Retranslated zh-CN.yml (#273)
* 50% completed.
* 60% completed.
* 63% completed.
* Completed.
* Change the indentation, some improvements.
Co-authored-by: zhangYi <apachezy@hotmail.com>
* Updated german language file (#278)
fixed double & and double whitespace
* Fixes a mistaken permission for completing multiple challenges at once.
* Fixes translated placeholders in PL translation.
Note: translation looks bad.
* Update CompleteChallengeCommandTest.java
* Upgrade to BentoBox 1.17 API changes.
Implement Pladdon functionality.
Compile against java 16 and Spigot 1.17
* Fix Java 16 compilation.
* Use BentoBox 1.17.0
* Update pom.xml
* Create Statistic Requirement for Challenges addon.
Statistic requirement is a new type of challenge that is based on Statistic page for clients.
* Switch to annotations instead of plugin.yml file.
* Move managers to a separate directory.
* Add mojang authLib instead of NMS.
* Rename classes to Selectors.
Split single and multiple item selectors for easier implementation.
Update proper locales.
* Implement customizable user panels.
Server owners can customize 3 panels:
- main panel
- gamemode selector
- multiple completions
Panel functions will be explained in docs later.
* Update all admin panels.
Admin panels will not contain better locales codding and easier-to-improve design.
Remove old and unused GUIs.
* Remove unused adapters.
Updates Challenges and ChallengesLevel objects.
Add TypeMigrationAdapter that will fix issue with renamed challenge type.
* Update commands.
Commands will now call correct GUI.
* Update Settings file.
Remove unused parts.
* Fixes ChallengesManager and Completer.
* Adds panel saving to the `/challenges/panels` directory.
* Updates locales file.
Complete rework of the locales file.
Very sorry translators :( no migration.
* Updates pom.xml
* Updates tests.
ChallengesGUITest is removed because GUI is removed.
* Update default.json
Split text into multiple lines.
* Create template YAML file.
This file format is for people who has an alergy with ingame GUI.
* Implements Template reading.
Add template loading via Admin Panel.
Improve LibraryPanel so it could find json and yml files.
* Improve coloring scheme a bit.
* Change settings file.
Add ability to change commands for addon.
Change default mode from player challenges to island challenges.
* Update Main addon class.
Move vault and level detection after everything is loaded.
Update command names.
* Update all commands.
Commands now will have an option to change their call values.
* Update default config value.
* Fixes #264
Challenges Menu will be opened only if player is in correct world.
* Changes User#sendMessage to Utils#sendMessage
This allows add "prefix" to all messages send from Challenges addon.
* Separate singe and multiple listings.
* Clean up Constants a bit.
* Add meta for items translations.
* Fix permission link.
* Translates color codes for database texts.
* Fixes a bug when global commands does not displays in tab-complete.
Remove DefaultsCommand.java as it is not used anymore.
* Fixes small bugs in translation.
* Remove unnecessary "admin" tag.
* Update default locale.
* Update latvian locale to the latest version.
* Implement multi-linguistic server support.
Now server owners can specify different name, description and reward text for each challenge and level via locales file.
Add showcase example.
* Comment out showcase translation.
* Update BentoBox version
* Update missing icons for blocks.
Some blocks cannot be displayed in GUI's, and were leaving empty spaces.
This replaces their icon with a close representative.
Fixes #286
* Add missing mob heads.
* Fixes illegal stack issues in default challenges.
#249
* Change from click-to-select to a proper next/previous page tooltip
* Add search field to the PagedSelectors.
Add missing tooltips.
* Change download icon from hopper to cobweb.
* Add missing tooltips to the CommonPagedPanel
* Add search button to the CommonPagedPanel.
Search button will allow to search elements if there are more than displayed elements.
* Add missing strings into locale.
* Reorder dependencies
The Mojang dependency was blocking out the needed Google common
packages.
* Prevent errors in TryToCompleteTest
Note - tests still fail.
* Fixed errors and tests for CompleteChallengeCommandTest
* Fixed ChallengesCommandTest tests
* Fixes tests
* Fix JavaDoc, Shade plugin settings
* Updated .gitignore
* Try different spigot API version
* Remove Vault repo because it is not needed.
* Excluded unnecessary files from shading.
* Fixes #253
Adds TeamKick and TeamLeave events to the reset check.
Do not reset challenges if data is stored per island. As in that case, they will already lose their data.
* Fixes #187
Add a new method that updates unlocked level list without changing active level. This method returns if last unlocked level was changed, and in that case it triggers whole gui rebuilding.
* Fixes #269
Disable waiver amount message for last challenge level.
* Add timeout for repeatable challenges.
Relates #71
* Implement timeout respecting in challenges completion.
Implement timeout in GUI's.
Relates #71
* Implement changing Timeout in the Challenge Edit GUI.
Relates #71
* Implement an option to set which item type will ignore metadata per challenge.
Fixes #261
Fixes #252
* Fixes failing unit-test
* Removed shade plugin from POM
* Replace GuiUtils and HeadLib to the PanelUtils library.
* Link templates to the docs.
* Remove unnecessary NMS dependency.
NMS code was used for Player Heads, but instead of NMS now it uses public mojang lib.
* Address some code quality reports from SonarCloud.
Most of the errors are just sanity checks, as the most of null-pointers were already checked in other ways.
* Fixes incorrect NEXT and PREVIOUS button descriptions.
Fixes #289
* Implement MetaData ignoring for rewards.
While required items had a metadata grouping, reward items did not have it. This will fix that.
Fixes #289
* Fix an issue when edit menu did not display item amount.
* Update lv translation.
* Fixes some small bugs with translation potion base effect.
There was an issue that it tried to translate extra effects and ignored main one.
Relates to #290
* Fix a bug with completion broadcasting
Reported via Discord.
* Update pom.xml
* Fixes a bug with `-1` repeat-times
There was a bug that prevented the challenge to be completed if negative numbers were set in the "max-repeats" value.
* Improve equal item listing.
Change when items should be grouped.
Instead of relaying strictly from ignoreMetaData set, now try to group equal elements without durability check, and use set only if that fails.
* Update German translation (#295)
* Translate de.yml via GitLocalize
* Translate de.yml via GitLocalize
* Translate de.yml via GitLocalize
Co-authored-by: Patrick <patrick.wassmuth@gmx.de>
Co-authored-by: Michael F <unhappyangel83@googlemail.com>
Co-authored-by: DAge030 <dage030@web.de>
* Fix NPEs when running tests.
Note that there are still test failures, but these are assertions and
not errors.
* Fix error in test class.
Note this does not fix the failing assertion.
* Fix failing test. Make player default to being on island.
* Fixed test failures.
* Avoid potential call with a null parameter to User.getInstance
* Check for null world
* Null check
* Added null check
* Require non-nulls.
getInventory never returns null.
* Remove various code smells.
Co-authored-by: tastybento <tastybento@wasteofplastic.com>
Co-authored-by: apachezy <50116371+apachezy@users.noreply.github.com>
Co-authored-by: zhangYi <apachezy@hotmail.com>
Co-authored-by: Qumoo <76853697+Qumoo@users.noreply.github.com>
Co-authored-by: tastybento <tastybento@users.noreply.github.com>
Co-authored-by: gitlocalize-app[bot] <55277160+gitlocalize-app[bot]@users.noreply.github.com>
Co-authored-by: Patrick <patrick.wassmuth@gmx.de>
Co-authored-by: Michael F <unhappyangel83@googlemail.com>
Co-authored-by: DAge030 <dage030@web.de>
2022-05-06 18:51:54 +02:00
|
|
|
{
|
2023-04-15 21:55:34 +02:00
|
|
|
user.sendMessage(user.getTranslation(world, Constants.CONVERSATIONS + "prefix") +
|
|
|
|
user.getTranslation(world, translation, parameters));
|
Prepare 1.0 Release (#287)
* Version 0.8.5
* Retranslated zh-CN.yml (#273)
* 50% completed.
* 60% completed.
* 63% completed.
* Completed.
* Change the indentation, some improvements.
Co-authored-by: zhangYi <apachezy@hotmail.com>
* Updated german language file (#278)
fixed double & and double whitespace
* Fixes a mistaken permission for completing multiple challenges at once.
* Fixes translated placeholders in PL translation.
Note: translation looks bad.
* Update CompleteChallengeCommandTest.java
* Upgrade to BentoBox 1.17 API changes.
Implement Pladdon functionality.
Compile against java 16 and Spigot 1.17
* Fix Java 16 compilation.
* Use BentoBox 1.17.0
* Update pom.xml
* Create Statistic Requirement for Challenges addon.
Statistic requirement is a new type of challenge that is based on Statistic page for clients.
* Switch to annotations instead of plugin.yml file.
* Move managers to a separate directory.
* Add mojang authLib instead of NMS.
* Rename classes to Selectors.
Split single and multiple item selectors for easier implementation.
Update proper locales.
* Implement customizable user panels.
Server owners can customize 3 panels:
- main panel
- gamemode selector
- multiple completions
Panel functions will be explained in docs later.
* Update all admin panels.
Admin panels will not contain better locales codding and easier-to-improve design.
Remove old and unused GUIs.
* Remove unused adapters.
Updates Challenges and ChallengesLevel objects.
Add TypeMigrationAdapter that will fix issue with renamed challenge type.
* Update commands.
Commands will now call correct GUI.
* Update Settings file.
Remove unused parts.
* Fixes ChallengesManager and Completer.
* Adds panel saving to the `/challenges/panels` directory.
* Updates locales file.
Complete rework of the locales file.
Very sorry translators :( no migration.
* Updates pom.xml
* Updates tests.
ChallengesGUITest is removed because GUI is removed.
* Update default.json
Split text into multiple lines.
* Create template YAML file.
This file format is for people who has an alergy with ingame GUI.
* Implements Template reading.
Add template loading via Admin Panel.
Improve LibraryPanel so it could find json and yml files.
* Improve coloring scheme a bit.
* Change settings file.
Add ability to change commands for addon.
Change default mode from player challenges to island challenges.
* Update Main addon class.
Move vault and level detection after everything is loaded.
Update command names.
* Update all commands.
Commands now will have an option to change their call values.
* Update default config value.
* Fixes #264
Challenges Menu will be opened only if player is in correct world.
* Changes User#sendMessage to Utils#sendMessage
This allows add "prefix" to all messages send from Challenges addon.
* Separate singe and multiple listings.
* Clean up Constants a bit.
* Add meta for items translations.
* Fix permission link.
* Translates color codes for database texts.
* Fixes a bug when global commands does not displays in tab-complete.
Remove DefaultsCommand.java as it is not used anymore.
* Fixes small bugs in translation.
* Remove unnecessary "admin" tag.
* Update default locale.
* Update latvian locale to the latest version.
* Implement multi-linguistic server support.
Now server owners can specify different name, description and reward text for each challenge and level via locales file.
Add showcase example.
* Comment out showcase translation.
* Update BentoBox version
* Update missing icons for blocks.
Some blocks cannot be displayed in GUI's, and were leaving empty spaces.
This replaces their icon with a close representative.
Fixes #286
* Add missing mob heads.
* Fixes illegal stack issues in default challenges.
#249
* Change from click-to-select to a proper next/previous page tooltip
* Add search field to the PagedSelectors.
Add missing tooltips.
* Change download icon from hopper to cobweb.
* Add missing tooltips to the CommonPagedPanel
* Add search button to the CommonPagedPanel.
Search button will allow to search elements if there are more than displayed elements.
* Add missing strings into locale.
* Reorder dependencies
The Mojang dependency was blocking out the needed Google common
packages.
* Prevent errors in TryToCompleteTest
Note - tests still fail.
* Fixed errors and tests for CompleteChallengeCommandTest
* Fixed ChallengesCommandTest tests
* Fixes tests
* Fix JavaDoc, Shade plugin settings
* Updated .gitignore
* Try different spigot API version
* Remove Vault repo because it is not needed.
* Excluded unnecessary files from shading.
* Fixes #253
Adds TeamKick and TeamLeave events to the reset check.
Do not reset challenges if data is stored per island. As in that case, they will already lose their data.
* Fixes #187
Add a new method that updates unlocked level list without changing active level. This method returns if last unlocked level was changed, and in that case it triggers whole gui rebuilding.
* Fixes #269
Disable waiver amount message for last challenge level.
* Add timeout for repeatable challenges.
Relates #71
* Implement timeout respecting in challenges completion.
Implement timeout in GUI's.
Relates #71
* Implement changing Timeout in the Challenge Edit GUI.
Relates #71
* Implement an option to set which item type will ignore metadata per challenge.
Fixes #261
Fixes #252
* Fixes failing unit-test
* Removed shade plugin from POM
* Replace GuiUtils and HeadLib to the PanelUtils library.
* Link templates to the docs.
* Remove unnecessary NMS dependency.
NMS code was used for Player Heads, but instead of NMS now it uses public mojang lib.
* Address some code quality reports from SonarCloud.
Most of the errors are just sanity checks, as the most of null-pointers were already checked in other ways.
* Fixes incorrect NEXT and PREVIOUS button descriptions.
Fixes #289
* Implement MetaData ignoring for rewards.
While required items had a metadata grouping, reward items did not have it. This will fix that.
Fixes #289
* Fix an issue when edit menu did not display item amount.
* Update lv translation.
* Fixes some small bugs with translation potion base effect.
There was an issue that it tried to translate extra effects and ignored main one.
Relates to #290
* Fix a bug with completion broadcasting
Reported via Discord.
* Update pom.xml
* Fixes a bug with `-1` repeat-times
There was a bug that prevented the challenge to be completed if negative numbers were set in the "max-repeats" value.
* Improve equal item listing.
Change when items should be grouped.
Instead of relaying strictly from ignoreMetaData set, now try to group equal elements without durability check, and use set only if that fails.
* Update German translation (#295)
* Translate de.yml via GitLocalize
* Translate de.yml via GitLocalize
* Translate de.yml via GitLocalize
Co-authored-by: Patrick <patrick.wassmuth@gmx.de>
Co-authored-by: Michael F <unhappyangel83@googlemail.com>
Co-authored-by: DAge030 <dage030@web.de>
* Fix NPEs when running tests.
Note that there are still test failures, but these are assertions and
not errors.
* Fix error in test class.
Note this does not fix the failing assertion.
* Fix failing test. Make player default to being on island.
* Fixed test failures.
* Avoid potential call with a null parameter to User.getInstance
* Check for null world
* Null check
* Added null check
* Require non-nulls.
getInventory never returns null.
* Remove various code smells.
Co-authored-by: tastybento <tastybento@wasteofplastic.com>
Co-authored-by: apachezy <50116371+apachezy@users.noreply.github.com>
Co-authored-by: zhangYi <apachezy@hotmail.com>
Co-authored-by: Qumoo <76853697+Qumoo@users.noreply.github.com>
Co-authored-by: tastybento <tastybento@users.noreply.github.com>
Co-authored-by: gitlocalize-app[bot] <55277160+gitlocalize-app[bot]@users.noreply.github.com>
Co-authored-by: Patrick <patrick.wassmuth@gmx.de>
Co-authored-by: Michael F <unhappyangel83@googlemail.com>
Co-authored-by: DAge030 <dage030@web.de>
2022-05-06 18:51:54 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Prettify World.Environment object for user.
|
|
|
|
* @param object Object that must be pretty.
|
|
|
|
* @param user User who will see the object.
|
|
|
|
* @return Prettified string for World.Environment.
|
|
|
|
*/
|
|
|
|
public static String prettifyObject(World.Environment object, User user)
|
|
|
|
{
|
|
|
|
// Find addon structure with:
|
|
|
|
// [addon]:
|
|
|
|
// environments:
|
|
|
|
// [environment]:
|
|
|
|
// name: [name]
|
|
|
|
String translation = user.getTranslationOrNothing(Constants.ENVIRONMENTS + object.name().toLowerCase() + ".name");
|
|
|
|
|
|
|
|
if (!translation.isEmpty())
|
|
|
|
{
|
|
|
|
// We found our translation.
|
|
|
|
return translation;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Find addon structure with:
|
|
|
|
// [addon]:
|
|
|
|
// environments:
|
|
|
|
// [environment]: [name]
|
|
|
|
|
|
|
|
translation = user.getTranslationOrNothing(Constants.ENVIRONMENTS + object.name().toLowerCase());
|
|
|
|
|
|
|
|
if (!translation.isEmpty())
|
|
|
|
{
|
|
|
|
// We found our translation.
|
|
|
|
return translation;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Find general structure with:
|
|
|
|
// environments:
|
|
|
|
// [environment]: [name]
|
|
|
|
|
|
|
|
translation = user.getTranslationOrNothing("environments." + object.name().toLowerCase());
|
|
|
|
|
|
|
|
if (!translation.isEmpty())
|
|
|
|
{
|
|
|
|
// We found our translation.
|
|
|
|
return translation;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Lang Utils do not have Environment :(
|
|
|
|
//LangUtilsHook.getEnvrionmentName(object, user);
|
|
|
|
|
|
|
|
// Nothing was found. Use just a prettify text function.
|
|
|
|
return Util.prettifyText(object.name());
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Prettify World.Environment object description for user.
|
|
|
|
* @param object Object that must be pretty.
|
|
|
|
* @param user User who will see the object.
|
|
|
|
* @return Prettified description string for World.Environment.
|
|
|
|
*/
|
|
|
|
public static String prettifyDescription(World.Environment object, User user)
|
|
|
|
{
|
|
|
|
// Find addon structure with:
|
|
|
|
// [addon]:
|
|
|
|
// environments:
|
|
|
|
// [environment]:
|
|
|
|
// description: [text]
|
|
|
|
String translation = user.getTranslationOrNothing(Constants.ENVIRONMENTS + object.name().toLowerCase() + ".description");
|
|
|
|
|
|
|
|
if (!translation.isEmpty())
|
|
|
|
{
|
|
|
|
// We found our translation.
|
|
|
|
return translation;
|
|
|
|
}
|
|
|
|
|
|
|
|
// No text to return.
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Prettify Material object for user.
|
|
|
|
* @param object Object that must be pretty.
|
|
|
|
* @param user User who will see the object.
|
|
|
|
* @return Prettified string for Material.
|
|
|
|
*/
|
|
|
|
public static String prettifyObject(@Nullable Material object, User user)
|
|
|
|
{
|
|
|
|
// Nothing to translate
|
|
|
|
if (object == null)
|
|
|
|
{
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
// Find addon structure with:
|
|
|
|
// [addon]:
|
|
|
|
// materials:
|
|
|
|
// [material]:
|
|
|
|
// name: [name]
|
|
|
|
String translation = user.getTranslationOrNothing(Constants.MATERIALS + object.name().toLowerCase() + ".name");
|
|
|
|
|
|
|
|
if (!translation.isEmpty())
|
|
|
|
{
|
|
|
|
// We found our translation.
|
|
|
|
return translation;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Find addon structure with:
|
|
|
|
// [addon]:
|
|
|
|
// materials:
|
|
|
|
// [material]: [name]
|
|
|
|
|
|
|
|
translation = user.getTranslationOrNothing(Constants.MATERIALS + object.name().toLowerCase());
|
|
|
|
|
|
|
|
if (!translation.isEmpty())
|
|
|
|
{
|
|
|
|
// We found our translation.
|
|
|
|
return translation;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Find general structure with:
|
|
|
|
// materials:
|
|
|
|
// [material]: [name]
|
|
|
|
|
|
|
|
translation = user.getTranslationOrNothing("materials." + object.name().toLowerCase());
|
|
|
|
|
|
|
|
if (!translation.isEmpty())
|
|
|
|
{
|
|
|
|
// We found our translation.
|
|
|
|
return translation;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Use Lang Utils Hook to translate material
|
|
|
|
return LangUtilsHook.getMaterialName(object, user);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Prettify Material object description for user.
|
|
|
|
* @param object Object that must be pretty.
|
|
|
|
* @param user User who will see the object.
|
|
|
|
* @return Prettified description string for Material.
|
|
|
|
*/
|
|
|
|
public static String prettifyDescription(@Nullable Material object, User user)
|
|
|
|
{
|
|
|
|
// Nothing to translate
|
|
|
|
if (object == null)
|
|
|
|
{
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
// Find addon structure with:
|
|
|
|
// [addon]:
|
|
|
|
// materials:
|
|
|
|
// [material]:
|
|
|
|
// description: [text]
|
|
|
|
String translation = user.getTranslationOrNothing(Constants.MATERIALS + object.name().toLowerCase() + ".description");
|
|
|
|
|
|
|
|
if (!translation.isEmpty())
|
|
|
|
{
|
|
|
|
// We found our translation.
|
|
|
|
return translation;
|
|
|
|
}
|
|
|
|
|
|
|
|
// No text to return.
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Prettify EntityType object for user.
|
|
|
|
* @param object Object that must be pretty.
|
|
|
|
* @param user User who will see the object.
|
|
|
|
* @return Prettified string for EntityType.
|
|
|
|
*/
|
|
|
|
public static String prettifyObject(@Nullable EntityType object, User user)
|
|
|
|
{
|
|
|
|
// Nothing to translate
|
|
|
|
if (object == null)
|
|
|
|
{
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
// Find addon structure with:
|
|
|
|
// [addon]:
|
|
|
|
// entities:
|
|
|
|
// [entity]:
|
|
|
|
// name: [name]
|
|
|
|
String translation = user.getTranslationOrNothing(Constants.ENTITIES + object.name().toLowerCase() + ".name");
|
|
|
|
|
|
|
|
if (!translation.isEmpty())
|
|
|
|
{
|
|
|
|
// We found our translation.
|
|
|
|
return translation;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Find addon structure with:
|
|
|
|
// [addon]:
|
|
|
|
// entities:
|
|
|
|
// [entity]: [name]
|
|
|
|
|
|
|
|
translation = user.getTranslationOrNothing(Constants.ENTITIES + object.name().toLowerCase());
|
|
|
|
|
|
|
|
if (!translation.isEmpty())
|
|
|
|
{
|
|
|
|
// We found our translation.
|
|
|
|
return translation;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Find general structure with:
|
|
|
|
// entities:
|
|
|
|
// [entity]: [name]
|
|
|
|
|
|
|
|
translation = user.getTranslationOrNothing("entities." + object.name().toLowerCase());
|
|
|
|
|
|
|
|
if (!translation.isEmpty())
|
|
|
|
{
|
|
|
|
// We found our translation.
|
|
|
|
return translation;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Use Lang Utils Hook to translate material
|
|
|
|
return LangUtilsHook.getEntityName(object, user);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Prettify EntityType object description for user.
|
|
|
|
* @param object Object that must be pretty.
|
|
|
|
* @param user User who will see the object.
|
|
|
|
* @return Prettified description string for EntityType.
|
|
|
|
*/
|
|
|
|
public static String prettifyDescription(@Nullable EntityType object, User user)
|
|
|
|
{
|
|
|
|
// Nothing to translate
|
|
|
|
if (object == null)
|
|
|
|
{
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
// Find addon structure with:
|
|
|
|
// [addon]:
|
|
|
|
// entities:
|
|
|
|
// [entity]:
|
|
|
|
// description: [text]
|
|
|
|
String translation = user.getTranslationOrNothing(Constants.ENTITIES + object.name().toLowerCase() + ".description");
|
|
|
|
|
|
|
|
if (!translation.isEmpty())
|
|
|
|
{
|
|
|
|
// We found our translation.
|
|
|
|
return translation;
|
|
|
|
}
|
|
|
|
|
|
|
|
// No text to return.
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Prettify Statistic object for user.
|
|
|
|
* @param object Object that must be pretty.
|
|
|
|
* @param user User who will see the object.
|
|
|
|
* @return Prettified string for Statistic.
|
|
|
|
*/
|
|
|
|
public static String prettifyObject(@Nullable Statistic object, User user)
|
|
|
|
{
|
|
|
|
// Nothing to translate
|
|
|
|
if (object == null)
|
|
|
|
{
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
// Find addon structure with:
|
|
|
|
// [addon]:
|
|
|
|
// statistics:
|
|
|
|
// [statistic]:
|
|
|
|
// name: [name]
|
|
|
|
String translation = user.getTranslationOrNothing(Constants.STATISTICS + object.name().toLowerCase() + ".name");
|
|
|
|
|
|
|
|
if (!translation.isEmpty())
|
|
|
|
{
|
|
|
|
// We found our translation.
|
|
|
|
return translation;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Find addon structure with:
|
|
|
|
// [addon]:
|
|
|
|
// statistics:
|
|
|
|
// [statistic]: [name]
|
|
|
|
|
|
|
|
translation = user.getTranslationOrNothing(Constants.STATISTICS + object.name().toLowerCase());
|
|
|
|
|
|
|
|
if (!translation.isEmpty())
|
|
|
|
{
|
|
|
|
// We found our translation.
|
|
|
|
return translation;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Find general structure with:
|
|
|
|
// statistics:
|
|
|
|
// [statistic]: [name]
|
|
|
|
|
|
|
|
translation = user.getTranslationOrNothing("statistics." + object.name().toLowerCase());
|
|
|
|
|
|
|
|
if (!translation.isEmpty())
|
|
|
|
{
|
|
|
|
// We found our translation.
|
|
|
|
return translation;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Use Lang Utils Hook to translate material
|
|
|
|
//return LangUtilsHook.getStatisticName(object, user);
|
|
|
|
return Util.prettifyText(object.name());
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Prettify Statistic object description for user.
|
|
|
|
* @param object Object that must be pretty.
|
|
|
|
* @param user User who will see the object.
|
|
|
|
* @return Prettified description string for Statistic.
|
|
|
|
*/
|
|
|
|
public static String prettifyDescription(@Nullable Statistic object, User user)
|
|
|
|
{
|
|
|
|
// Nothing to translate
|
|
|
|
if (object == null)
|
|
|
|
{
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
// Find addon structure with:
|
|
|
|
// [addon]:
|
|
|
|
// statistics:
|
|
|
|
// [statistic]:
|
|
|
|
// description: [text]
|
|
|
|
String translation = user.getTranslationOrNothing(Constants.STATISTICS + object.name().toLowerCase() + ".description");
|
|
|
|
|
|
|
|
if (!translation.isEmpty())
|
|
|
|
{
|
|
|
|
// We found our translation.
|
|
|
|
return translation;
|
|
|
|
}
|
|
|
|
|
|
|
|
// No text to return.
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Prettify ItemStack object for user.
|
|
|
|
* @param object Object that must be pretty.
|
|
|
|
* @param user User who will see the object.
|
|
|
|
* @return Prettified string for ItemStack.
|
|
|
|
*/
|
|
|
|
public static String prettifyObject(@Nullable ItemStack object, User user)
|
|
|
|
{
|
|
|
|
// Nothing to translate
|
|
|
|
if (object == null)
|
|
|
|
{
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
// Find addon structure with:
|
|
|
|
// [addon]:
|
|
|
|
// item-stacks:
|
|
|
|
// [material]: ...
|
|
|
|
// meta:
|
|
|
|
// potion-type: ...
|
|
|
|
// ...
|
|
|
|
// generic: [amount] [name] [meta]
|
|
|
|
String translation;
|
|
|
|
switch (object.getType())
|
|
|
|
{
|
|
|
|
case POTION, SPLASH_POTION, LINGERING_POTION, TIPPED_ARROW ->
|
|
|
|
// Get Potion Meta
|
|
|
|
translation = prettifyObject(object, (PotionMeta) object.getItemMeta(), user);
|
|
|
|
case PLAYER_HEAD, PLAYER_WALL_HEAD ->
|
|
|
|
translation = prettifyObject(object, (SkullMeta) object.getItemMeta(), user);
|
|
|
|
case ENCHANTED_BOOK ->
|
|
|
|
translation = prettifyObject(object, (EnchantmentStorageMeta) object.getItemMeta(), user);
|
|
|
|
case WRITTEN_BOOK, WRITABLE_BOOK ->
|
|
|
|
translation = prettifyObject(object, (BookMeta) object.getItemMeta(), user);
|
|
|
|
case LEATHER_BOOTS,LEATHER_CHESTPLATE,LEATHER_HELMET,LEATHER_LEGGINGS,LEATHER_HORSE_ARMOR,
|
|
|
|
TRIDENT,CROSSBOW,CHAINMAIL_HELMET,CHAINMAIL_CHESTPLATE,CHAINMAIL_LEGGINGS,CHAINMAIL_BOOTS,IRON_HELMET,
|
|
|
|
IRON_CHESTPLATE,IRON_LEGGINGS,IRON_BOOTS,DIAMOND_HELMET,DIAMOND_CHESTPLATE,DIAMOND_LEGGINGS,DIAMOND_BOOTS,
|
|
|
|
GOLDEN_HELMET,GOLDEN_CHESTPLATE,GOLDEN_LEGGINGS,GOLDEN_BOOTS,NETHERITE_HELMET,NETHERITE_CHESTPLATE,
|
|
|
|
NETHERITE_LEGGINGS,NETHERITE_BOOTS,WOODEN_SWORD,WOODEN_SHOVEL,WOODEN_PICKAXE,WOODEN_AXE,WOODEN_HOE,
|
|
|
|
STONE_SWORD,STONE_SHOVEL,STONE_PICKAXE,STONE_AXE,STONE_HOE,GOLDEN_SWORD,GOLDEN_SHOVEL,GOLDEN_PICKAXE,
|
|
|
|
GOLDEN_AXE,GOLDEN_HOE,IRON_SWORD,IRON_SHOVEL,IRON_PICKAXE,IRON_AXE,IRON_HOE,DIAMOND_SWORD,DIAMOND_SHOVEL,
|
|
|
|
DIAMOND_PICKAXE,DIAMOND_AXE,DIAMOND_HOE,NETHERITE_SWORD,NETHERITE_SHOVEL,NETHERITE_PICKAXE,NETHERITE_AXE,
|
|
|
|
NETHERITE_HOE,TURTLE_HELMET,SHEARS,SHIELD,FLINT_AND_STEEL,BOW ->
|
|
|
|
translation = prettifyObject(object, object.getItemMeta(), user);
|
|
|
|
default ->
|
|
|
|
translation = "";
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!translation.isEmpty())
|
|
|
|
{
|
|
|
|
// We found our translation.
|
|
|
|
return translation;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Find addon structure with:
|
|
|
|
// [addon]:
|
|
|
|
// materials:
|
|
|
|
// [material]: [name]
|
|
|
|
|
|
|
|
translation = user.getTranslationOrNothing(Constants.MATERIALS + object.getType().name().toLowerCase());
|
|
|
|
|
|
|
|
if (!translation.isEmpty())
|
|
|
|
{
|
|
|
|
// We found our translation.
|
|
|
|
return translation;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Find general structure with:
|
|
|
|
// materials:
|
|
|
|
// [material]: [name]
|
|
|
|
|
|
|
|
translation = user.getTranslationOrNothing("materials." + object.getType().name().toLowerCase());
|
|
|
|
|
|
|
|
if (!translation.isEmpty())
|
|
|
|
{
|
|
|
|
// We found our translation.
|
|
|
|
return translation;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Use Lang Utils
|
|
|
|
return LangUtilsHook.getItemDisplayName(object, user);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Prettify enchant string.
|
|
|
|
*
|
|
|
|
* @param enchantment the enchantment
|
|
|
|
* @param user the user
|
|
|
|
* @return the string
|
|
|
|
*/
|
|
|
|
public static String prettifyObject(Enchantment enchantment, User user)
|
|
|
|
{
|
|
|
|
if (enchantment == null)
|
|
|
|
{
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
String type = user.getTranslationOrNothing(Constants.ITEM_STACKS + "enchant." + enchantment.getKey().getKey());
|
|
|
|
|
|
|
|
if (type.isEmpty())
|
|
|
|
{
|
|
|
|
type = LangUtilsHook.getEnchantName(enchantment, user);
|
|
|
|
}
|
|
|
|
|
|
|
|
return type;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Prettify type string.
|
|
|
|
*
|
|
|
|
* @param type the potion type
|
|
|
|
* @param user the user
|
|
|
|
* @return the string
|
|
|
|
*/
|
|
|
|
public static String prettifyObject(PotionType type, User user)
|
|
|
|
{
|
|
|
|
if (type == null)
|
|
|
|
{
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
String text = user.getTranslationOrNothing(Constants.ITEM_STACKS + "potion-type." + type.name().toLowerCase());
|
|
|
|
|
|
|
|
if (text.isEmpty())
|
|
|
|
{
|
|
|
|
text = LangUtilsHook.getPotionBaseEffectName(type, user);
|
|
|
|
}
|
|
|
|
|
|
|
|
return text;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Prettify potion item string.
|
|
|
|
*
|
|
|
|
* @param item the item
|
|
|
|
* @param potionMeta the potion meta
|
|
|
|
* @param user the user
|
|
|
|
* @return the string
|
|
|
|
*/
|
|
|
|
public static String prettifyObject(ItemStack item, @Nullable PotionMeta potionMeta, User user)
|
|
|
|
{
|
|
|
|
if (potionMeta == null)
|
|
|
|
{
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
Material itemType = item.getType();
|
|
|
|
|
|
|
|
final String itemReference = Constants.ITEM_STACKS + itemType.name().toLowerCase() + ".";
|
|
|
|
final String metaReference = Constants.ITEM_STACKS + "meta.";
|
|
|
|
|
|
|
|
PotionData potionData = potionMeta.getBasePotionData();
|
|
|
|
|
|
|
|
// Check custom translation for potions.
|
|
|
|
String type = user.getTranslationOrNothing(itemReference + potionData.getType().name().toLowerCase());
|
|
|
|
|
|
|
|
if (type.isEmpty())
|
|
|
|
{
|
|
|
|
// Check potion types translation.
|
|
|
|
type = prettifyObject(potionData.getType(), user);
|
|
|
|
}
|
|
|
|
|
|
|
|
String upgraded = user.getTranslationOrNothing(metaReference + "upgraded");
|
|
|
|
String extended = user.getTranslationOrNothing(metaReference + "extended");
|
|
|
|
|
|
|
|
// Get item specific translation.
|
|
|
|
String specific = user.getTranslationOrNothing(itemReference + "name",
|
|
|
|
"[type]", type,
|
|
|
|
"[upgraded]", (potionData.isUpgraded() ? upgraded : ""),
|
|
|
|
"[extended]", (potionData.isExtended() ? extended : ""));
|
|
|
|
|
|
|
|
if (specific.isEmpty())
|
|
|
|
{
|
|
|
|
// Use generic translation.
|
|
|
|
String meta = user.getTranslationOrNothing(metaReference + "potion-meta",
|
|
|
|
"[type]", type,
|
|
|
|
"[upgraded]", (potionData.isUpgraded() ? upgraded : ""),
|
|
|
|
"[extended]", (potionData.isExtended() ? extended : ""));
|
|
|
|
|
|
|
|
specific = user.getTranslationOrNothing(Constants.ITEM_STACKS + "generic",
|
|
|
|
"[type]", prettifyObject(itemType, user),
|
|
|
|
"[meta]", meta);
|
|
|
|
}
|
|
|
|
|
|
|
|
return specific;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Prettify skull item string.
|
|
|
|
*
|
|
|
|
* @param item the item
|
|
|
|
* @param skullMeta the skull meta
|
|
|
|
* @param user the user
|
|
|
|
* @return the string
|
|
|
|
*/
|
|
|
|
public static String prettifyObject(ItemStack item, @Nullable SkullMeta skullMeta, User user)
|
|
|
|
{
|
|
|
|
if (skullMeta == null)
|
|
|
|
{
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
Material itemType = item.getType();
|
|
|
|
final String metaReference = Constants.ITEM_STACKS + "meta.";
|
|
|
|
|
|
|
|
String meta = user.getTranslationOrNothing(metaReference + "skull-meta",
|
|
|
|
"[player-name]", skullMeta.getDisplayName());
|
|
|
|
|
|
|
|
return user.getTranslationOrNothing(Constants.ITEM_STACKS + "generic",
|
|
|
|
"[type]", prettifyObject(itemType, user),
|
|
|
|
"[meta]", meta);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Prettify item string.
|
|
|
|
*
|
|
|
|
* @param item the item
|
|
|
|
* @param itemMeta the item meta
|
|
|
|
* @param user the user
|
|
|
|
* @return the string
|
|
|
|
*/
|
|
|
|
public static String prettifyObject(ItemStack item, @Nullable ItemMeta itemMeta, User user)
|
|
|
|
{
|
|
|
|
if (itemMeta == null)
|
|
|
|
{
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
StringBuilder builder = new StringBuilder();
|
|
|
|
|
|
|
|
itemMeta.getEnchants().forEach((enchantment, level) -> {
|
|
|
|
builder.append("\n");
|
|
|
|
builder.append(user.getTranslationOrNothing(Constants.ITEM_STACKS + "meta.enchant-meta",
|
|
|
|
"[type]", prettifyObject(enchantment, user),
|
|
|
|
"[level]", String.valueOf(level)));
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
Material itemType = item.getType();
|
|
|
|
final String itemReference = Constants.ITEM_STACKS + itemType.name().toLowerCase() + ".";
|
|
|
|
|
|
|
|
String translation = user.getTranslationOrNothing(itemReference + "name",
|
|
|
|
"[type]", prettifyObject(itemType, user),
|
|
|
|
"[enchant]", builder.toString());
|
|
|
|
|
|
|
|
if (translation.isEmpty())
|
|
|
|
{
|
|
|
|
translation = user.getTranslationOrNothing(Constants.ITEM_STACKS + "generic",
|
|
|
|
"[type]", prettifyObject(itemType, user),
|
|
|
|
"[meta]", builder.toString());
|
|
|
|
}
|
|
|
|
|
|
|
|
return translation;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Prettify enchantment storage string.
|
|
|
|
*
|
|
|
|
* @param item the item
|
|
|
|
* @param enchantmentMeta the enchantment storage meta
|
|
|
|
* @param user the user
|
|
|
|
* @return the string
|
|
|
|
*/
|
|
|
|
public static String prettifyObject(ItemStack item, @Nullable EnchantmentStorageMeta enchantmentMeta, User user)
|
|
|
|
{
|
|
|
|
if (enchantmentMeta == null)
|
|
|
|
{
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
StringBuilder builder = new StringBuilder();
|
|
|
|
|
|
|
|
enchantmentMeta.getEnchants().forEach((enchantment, level) -> {
|
|
|
|
builder.append("\n");
|
|
|
|
builder.append(user.getTranslationOrNothing(Constants.ITEM_STACKS + "meta.enchant-meta",
|
|
|
|
"[type]", prettifyObject(enchantment, user),
|
|
|
|
"[level]", String.valueOf(level)));
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
Material itemType = item.getType();
|
|
|
|
final String itemReference = Constants.ITEM_STACKS + itemType.name().toLowerCase() + ".";
|
|
|
|
|
|
|
|
String translation = user.getTranslationOrNothing(itemReference + "name",
|
|
|
|
"[type]", prettifyObject(itemType, user),
|
|
|
|
"[enchant]", builder.toString());
|
|
|
|
|
|
|
|
if (translation.isEmpty())
|
|
|
|
{
|
|
|
|
translation = user.getTranslationOrNothing(Constants.ITEM_STACKS + "generic",
|
|
|
|
"[type]", prettifyObject(itemType, user),
|
|
|
|
"[meta]", builder.toString());
|
|
|
|
}
|
|
|
|
|
|
|
|
return translation;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Prettify book item string.
|
|
|
|
*
|
|
|
|
* @param item the item
|
|
|
|
* @param bookMeta the book meta
|
|
|
|
* @param user the user
|
|
|
|
* @return the string
|
|
|
|
*/
|
|
|
|
public static String prettifyObject(ItemStack item, @Nullable BookMeta bookMeta, User user)
|
|
|
|
{
|
|
|
|
if (bookMeta == null)
|
|
|
|
{
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
Material itemType = item.getType();
|
|
|
|
final String metaReference = Constants.ITEM_STACKS + "meta.";
|
|
|
|
|
|
|
|
String meta = user.getTranslationOrNothing(metaReference + "book-meta",
|
|
|
|
"[title]", bookMeta.getTitle(),
|
|
|
|
"[author]", bookMeta.getAuthor());
|
|
|
|
|
|
|
|
return user.getTranslationOrNothing(Constants.ITEM_STACKS + "generic",
|
|
|
|
"[type]", prettifyObject(itemType, user),
|
|
|
|
"[meta]", meta);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This method parses duration to a readable format.
|
|
|
|
* @param duration that needs to be parsed.
|
|
|
|
* @return parsed duration string.
|
|
|
|
*/
|
|
|
|
public static String parseDuration(Duration duration, User user)
|
|
|
|
{
|
|
|
|
final String reference = Constants.DESCRIPTIONS + "challenge.cooldown.";
|
|
|
|
|
|
|
|
String returnString = "";
|
|
|
|
|
|
|
|
if (duration.toDays() > 0)
|
|
|
|
{
|
|
|
|
returnString += user.getTranslationOrNothing(reference + "in-days",
|
|
|
|
Constants.PARAMETER_NUMBER, String.valueOf(duration.toDays()));
|
|
|
|
}
|
|
|
|
|
|
|
|
if (duration.toHoursPart() > 0)
|
|
|
|
{
|
|
|
|
returnString += user.getTranslationOrNothing(reference + "in-hours",
|
|
|
|
Constants.PARAMETER_NUMBER, String.valueOf(duration.toHoursPart()));
|
|
|
|
}
|
|
|
|
|
|
|
|
if (duration.toMinutesPart() > 0)
|
|
|
|
{
|
|
|
|
returnString += user.getTranslationOrNothing(reference + "in-minutes",
|
|
|
|
Constants.PARAMETER_NUMBER, String.valueOf(duration.toMinutesPart()));
|
|
|
|
}
|
|
|
|
|
|
|
|
if (duration.toSecondsPart() > 0 || returnString.isBlank())
|
|
|
|
{
|
|
|
|
returnString += user.getTranslationOrNothing(reference + "in-seconds",
|
|
|
|
Constants.PARAMETER_NUMBER, String.valueOf(duration.toSecondsPart()));
|
|
|
|
}
|
|
|
|
|
|
|
|
return returnString;
|
|
|
|
}
|
2019-06-16 14:57:05 +02:00
|
|
|
}
|