diff --git a/.gradle/9.0.0/checksums/checksums.lock b/.gradle/9.0.0/checksums/checksums.lock
new file mode 100644
index 0000000..578b7f7
Binary files /dev/null and b/.gradle/9.0.0/checksums/checksums.lock differ
diff --git a/.gradle/9.0.0/checksums/md5-checksums.bin b/.gradle/9.0.0/checksums/md5-checksums.bin
new file mode 100644
index 0000000..9de99cc
Binary files /dev/null and b/.gradle/9.0.0/checksums/md5-checksums.bin differ
diff --git a/.gradle/9.0.0/checksums/sha1-checksums.bin b/.gradle/9.0.0/checksums/sha1-checksums.bin
new file mode 100644
index 0000000..262fab0
Binary files /dev/null and b/.gradle/9.0.0/checksums/sha1-checksums.bin differ
diff --git a/.gradle/9.0.0/executionHistory/executionHistory.bin b/.gradle/9.0.0/executionHistory/executionHistory.bin
new file mode 100644
index 0000000..009ced1
Binary files /dev/null and b/.gradle/9.0.0/executionHistory/executionHistory.bin differ
diff --git a/.gradle/9.0.0/executionHistory/executionHistory.lock b/.gradle/9.0.0/executionHistory/executionHistory.lock
new file mode 100644
index 0000000..cf18f27
Binary files /dev/null and b/.gradle/9.0.0/executionHistory/executionHistory.lock differ
diff --git a/.gradle/9.0.0/expanded/expanded.lock b/.gradle/9.0.0/expanded/expanded.lock
new file mode 100644
index 0000000..caedb6c
Binary files /dev/null and b/.gradle/9.0.0/expanded/expanded.lock differ
diff --git a/.gradle/9.0.0/fileChanges/last-build.bin b/.gradle/9.0.0/fileChanges/last-build.bin
new file mode 100644
index 0000000..f76dd23
Binary files /dev/null and b/.gradle/9.0.0/fileChanges/last-build.bin differ
diff --git a/.gradle/9.0.0/fileHashes/fileHashes.bin b/.gradle/9.0.0/fileHashes/fileHashes.bin
new file mode 100644
index 0000000..85e4da6
Binary files /dev/null and b/.gradle/9.0.0/fileHashes/fileHashes.bin differ
diff --git a/.gradle/9.0.0/fileHashes/fileHashes.lock b/.gradle/9.0.0/fileHashes/fileHashes.lock
new file mode 100644
index 0000000..6682079
Binary files /dev/null and b/.gradle/9.0.0/fileHashes/fileHashes.lock differ
diff --git a/.gradle/9.0.0/fileHashes/resourceHashesCache.bin b/.gradle/9.0.0/fileHashes/resourceHashesCache.bin
new file mode 100644
index 0000000..aa54947
Binary files /dev/null and b/.gradle/9.0.0/fileHashes/resourceHashesCache.bin differ
diff --git a/.gradle/9.0.0/gc.properties b/.gradle/9.0.0/gc.properties
new file mode 100644
index 0000000..e69de29
diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
new file mode 100644
index 0000000..4647b46
Binary files /dev/null and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/.gradle/buildOutputCleanup/cache.properties b/.gradle/buildOutputCleanup/cache.properties
new file mode 100644
index 0000000..dcc612e
--- /dev/null
+++ b/.gradle/buildOutputCleanup/cache.properties
@@ -0,0 +1,2 @@
+#Sat May 09 20:40:00 CDT 2026
+gradle.version=9.0.0
diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin
new file mode 100644
index 0000000..e9c5020
Binary files /dev/null and b/.gradle/buildOutputCleanup/outputFiles.bin differ
diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe
new file mode 100644
index 0000000..5f055e0
Binary files /dev/null and b/.gradle/file-system.probe differ
diff --git a/.gradle/vcs-1/gc.properties b/.gradle/vcs-1/gc.properties
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..ab1f416
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,10 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Ignored default folder with query files
+/queries/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
+# Editor-based HTTP Client requests
+/httpRequests/
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..b86273d
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/discord.xml b/.idea/discord.xml
new file mode 100644
index 0000000..912db82
--- /dev/null
+++ b/.idea/discord.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
new file mode 100644
index 0000000..7d3b3e8
--- /dev/null
+++ b/.idea/gradle.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/material_theme_project_new.xml b/.idea/material_theme_project_new.xml
new file mode 100644
index 0000000..0a4b8ad
--- /dev/null
+++ b/.idea/material_theme_project_new.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..7c47dd4
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 9181495..12e68d3 100644
--- a/build.gradle
+++ b/build.gradle
@@ -3,13 +3,12 @@ plugins {
id 'maven-publish'
}
-sourceCompatibility = 21
-targetCompatibility = 21
group = 'net.noscape.project.supremetags'
-version = '2.1.16'
+version = '2.1.17'
java {
- disableAutoTargetJvm()
+ sourceCompatibility = JavaVersion.VERSION_21
+ targetCompatibility = JavaVersion.VERSION_21
}
repositories {
@@ -60,7 +59,7 @@ configurations {
}
dependencies {
- compileOnly 'io.papermc.paper:paper-api:1.21.10-R0.1-SNAPSHOT'
+ compileOnly 'io.papermc.paper:paper-api:26.1.2.build.+'
compileOnly 'me.clip:placeholderapi:2.11.7'
compileOnly 'net.milkbowl.vault:VaultUnlockedAPI:2.16'
@@ -82,7 +81,7 @@ dependencies {
compileOnly files('libs/Score.jar')
compileOnly files('libs/ExecutableBlocks.jar')
- shade 'com.github.cryptomorin:XSeries:13.5.1'
+ shade 'com.github.CryptoMorin:XSeries:13.8.0'
compileOnly 'mysql:mysql-connector-java:8.0.33'
compileOnly 'redis.clients:jedis:5.1.0'
diff --git a/build/classes/java/main/net/noscape/project/supremetags/SupremeTags.class b/build/classes/java/main/net/noscape/project/supremetags/SupremeTags.class
new file mode 100644
index 0000000..b5822fe
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/SupremeTags.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/api/SupremeTagsAPI.class b/build/classes/java/main/net/noscape/project/supremetags/api/SupremeTagsAPI.class
new file mode 100644
index 0000000..dabd08f
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/api/SupremeTagsAPI.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/api/events/TagAssignEvent.class b/build/classes/java/main/net/noscape/project/supremetags/api/events/TagAssignEvent.class
new file mode 100644
index 0000000..5035630
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/api/events/TagAssignEvent.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/api/events/TagBuyEvent.class b/build/classes/java/main/net/noscape/project/supremetags/api/events/TagBuyEvent.class
new file mode 100644
index 0000000..7e41685
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/api/events/TagBuyEvent.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/api/events/TagResetEvent.class b/build/classes/java/main/net/noscape/project/supremetags/api/events/TagResetEvent.class
new file mode 100644
index 0000000..6d7cd43
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/api/events/TagResetEvent.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/checkers/Metrics$1.class b/build/classes/java/main/net/noscape/project/supremetags/checkers/Metrics$1.class
new file mode 100644
index 0000000..e3cdd06
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/checkers/Metrics$1.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/checkers/Metrics$AdvancedBarChart.class b/build/classes/java/main/net/noscape/project/supremetags/checkers/Metrics$AdvancedBarChart.class
new file mode 100644
index 0000000..22e8378
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/checkers/Metrics$AdvancedBarChart.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/checkers/Metrics$AdvancedPie.class b/build/classes/java/main/net/noscape/project/supremetags/checkers/Metrics$AdvancedPie.class
new file mode 100644
index 0000000..e915d87
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/checkers/Metrics$AdvancedPie.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/checkers/Metrics$CustomChart.class b/build/classes/java/main/net/noscape/project/supremetags/checkers/Metrics$CustomChart.class
new file mode 100644
index 0000000..dea0ae3
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/checkers/Metrics$CustomChart.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/checkers/Metrics$DrilldownPie.class b/build/classes/java/main/net/noscape/project/supremetags/checkers/Metrics$DrilldownPie.class
new file mode 100644
index 0000000..163f8d7
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/checkers/Metrics$DrilldownPie.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/checkers/Metrics$MultiLineChart.class b/build/classes/java/main/net/noscape/project/supremetags/checkers/Metrics$MultiLineChart.class
new file mode 100644
index 0000000..dc99df5
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/checkers/Metrics$MultiLineChart.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/checkers/Metrics$SimpleBarChart.class b/build/classes/java/main/net/noscape/project/supremetags/checkers/Metrics$SimpleBarChart.class
new file mode 100644
index 0000000..15f9ad4
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/checkers/Metrics$SimpleBarChart.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/checkers/Metrics$SimplePie.class b/build/classes/java/main/net/noscape/project/supremetags/checkers/Metrics$SimplePie.class
new file mode 100644
index 0000000..c940ad1
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/checkers/Metrics$SimplePie.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/checkers/Metrics$SingleLineChart.class b/build/classes/java/main/net/noscape/project/supremetags/checkers/Metrics$SingleLineChart.class
new file mode 100644
index 0000000..240e511
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/checkers/Metrics$SingleLineChart.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/checkers/Metrics.class b/build/classes/java/main/net/noscape/project/supremetags/checkers/Metrics.class
new file mode 100644
index 0000000..cc082fc
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/checkers/Metrics.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/checkers/UpdateChecker.class b/build/classes/java/main/net/noscape/project/supremetags/checkers/UpdateChecker.class
new file mode 100644
index 0000000..74054fe
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/checkers/UpdateChecker.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/commands/MyTags.class b/build/classes/java/main/net/noscape/project/supremetags/commands/MyTags.class
new file mode 100644
index 0000000..3e198b4
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/commands/MyTags.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/commands/tags/TagsCommand.class b/build/classes/java/main/net/noscape/project/supremetags/commands/tags/TagsCommand.class
new file mode 100644
index 0000000..b315f84
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/commands/tags/TagsCommand.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/enums/EditingType.class b/build/classes/java/main/net/noscape/project/supremetags/enums/EditingType.class
new file mode 100644
index 0000000..c1f5eba
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/enums/EditingType.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/enums/TPermissions.class b/build/classes/java/main/net/noscape/project/supremetags/enums/TPermissions.class
new file mode 100644
index 0000000..9cf1aa7
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/enums/TPermissions.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/enums/TagsComplete.class b/build/classes/java/main/net/noscape/project/supremetags/enums/TagsComplete.class
new file mode 100644
index 0000000..2cc7df2
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/enums/TagsComplete.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/guis/CategoryMenu.class b/build/classes/java/main/net/noscape/project/supremetags/guis/CategoryMenu.class
new file mode 100644
index 0000000..adec33b
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/guis/CategoryMenu.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/guis/MainMenu.class b/build/classes/java/main/net/noscape/project/supremetags/guis/MainMenu.class
new file mode 100644
index 0000000..4de0b97
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/guis/MainMenu.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/guis/TagMenu.class b/build/classes/java/main/net/noscape/project/supremetags/guis/TagMenu.class
new file mode 100644
index 0000000..aa5f16e
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/guis/TagMenu.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/guis/configeditor/ConfigOneMenu.class b/build/classes/java/main/net/noscape/project/supremetags/guis/configeditor/ConfigOneMenu.class
new file mode 100644
index 0000000..f005b67
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/guis/configeditor/ConfigOneMenu.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/guis/configeditor/ConfigTwoMenu.class b/build/classes/java/main/net/noscape/project/supremetags/guis/configeditor/ConfigTwoMenu.class
new file mode 100644
index 0000000..f012fae
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/guis/configeditor/ConfigTwoMenu.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/guis/confirm/ConfirmationMenu.class b/build/classes/java/main/net/noscape/project/supremetags/guis/confirm/ConfirmationMenu.class
new file mode 100644
index 0000000..fb9d25f
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/guis/confirm/ConfirmationMenu.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/guis/personaltags/PersonalTagEditorMenu.class b/build/classes/java/main/net/noscape/project/supremetags/guis/personaltags/PersonalTagEditorMenu.class
new file mode 100644
index 0000000..da3d935
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/guis/personaltags/PersonalTagEditorMenu.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/guis/personaltags/PersonalTagsMenu.class b/build/classes/java/main/net/noscape/project/supremetags/guis/personaltags/PersonalTagsMenu.class
new file mode 100644
index 0000000..782d258
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/guis/personaltags/PersonalTagsMenu.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/guis/search/SearchResultMenu.class b/build/classes/java/main/net/noscape/project/supremetags/guis/search/SearchResultMenu.class
new file mode 100644
index 0000000..2258ebe
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/guis/search/SearchResultMenu.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/guis/tagactions/TagActionsMenu.class b/build/classes/java/main/net/noscape/project/supremetags/guis/tagactions/TagActionsMenu.class
new file mode 100644
index 0000000..6155964
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/guis/tagactions/TagActionsMenu.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/guis/tageditor/EditorSelectorMenu.class b/build/classes/java/main/net/noscape/project/supremetags/guis/tageditor/EditorSelectorMenu.class
new file mode 100644
index 0000000..31ea395
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/guis/tageditor/EditorSelectorMenu.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/guis/tageditor/SpecificTagMenu.class b/build/classes/java/main/net/noscape/project/supremetags/guis/tageditor/SpecificTagMenu.class
new file mode 100644
index 0000000..f73c7bf
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/guis/tageditor/SpecificTagMenu.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/guis/tageditor/TagEditorMenu.class b/build/classes/java/main/net/noscape/project/supremetags/guis/tageditor/TagEditorMenu.class
new file mode 100644
index 0000000..a6e8bbc
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/guis/tageditor/TagEditorMenu.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/guis/variant/TagVariantsMenu.class b/build/classes/java/main/net/noscape/project/supremetags/guis/variant/TagVariantsMenu.class
new file mode 100644
index 0000000..0bbfc9c
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/guis/variant/TagVariantsMenu.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/handlers/Editor.class b/build/classes/java/main/net/noscape/project/supremetags/handlers/Editor.class
new file mode 100644
index 0000000..996556e
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/handlers/Editor.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/handlers/Rarity.class b/build/classes/java/main/net/noscape/project/supremetags/handlers/Rarity.class
new file mode 100644
index 0000000..982fae9
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/handlers/Rarity.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/handlers/SetupTag.class b/build/classes/java/main/net/noscape/project/supremetags/handlers/SetupTag.class
new file mode 100644
index 0000000..23aa345
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/handlers/SetupTag.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/handlers/Tag$1.class b/build/classes/java/main/net/noscape/project/supremetags/handlers/Tag$1.class
new file mode 100644
index 0000000..335a810
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/handlers/Tag$1.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/handlers/Tag$2.class b/build/classes/java/main/net/noscape/project/supremetags/handlers/Tag$2.class
new file mode 100644
index 0000000..70d06f2
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/handlers/Tag$2.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/handlers/Tag.class b/build/classes/java/main/net/noscape/project/supremetags/handlers/Tag.class
new file mode 100644
index 0000000..3c583ad
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/handlers/Tag.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/handlers/TagEconomy.class b/build/classes/java/main/net/noscape/project/supremetags/handlers/TagEconomy.class
new file mode 100644
index 0000000..ce733f1
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/handlers/TagEconomy.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/handlers/Variant$1.class b/build/classes/java/main/net/noscape/project/supremetags/handlers/Variant$1.class
new file mode 100644
index 0000000..b04304b
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/handlers/Variant$1.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/handlers/Variant$2.class b/build/classes/java/main/net/noscape/project/supremetags/handlers/Variant$2.class
new file mode 100644
index 0000000..6cfc7dd
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/handlers/Variant$2.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/handlers/Variant.class b/build/classes/java/main/net/noscape/project/supremetags/handlers/Variant.class
new file mode 100644
index 0000000..82043d6
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/handlers/Variant.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/handlers/hooks/EssentialsChatListener.class b/build/classes/java/main/net/noscape/project/supremetags/handlers/hooks/EssentialsChatListener.class
new file mode 100644
index 0000000..1035a57
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/handlers/hooks/EssentialsChatListener.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/handlers/hooks/PAPI.class b/build/classes/java/main/net/noscape/project/supremetags/handlers/hooks/PAPI.class
new file mode 100644
index 0000000..92b596d
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/handlers/hooks/PAPI.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/handlers/menu/Menu$1.class b/build/classes/java/main/net/noscape/project/supremetags/handlers/menu/Menu$1.class
new file mode 100644
index 0000000..7612630
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/handlers/menu/Menu$1.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/handlers/menu/Menu.class b/build/classes/java/main/net/noscape/project/supremetags/handlers/menu/Menu.class
new file mode 100644
index 0000000..aa2111a
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/handlers/menu/Menu.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/handlers/menu/MenuUtil.class b/build/classes/java/main/net/noscape/project/supremetags/handlers/menu/MenuUtil.class
new file mode 100644
index 0000000..a0297f7
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/handlers/menu/MenuUtil.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/handlers/menu/Paged.class b/build/classes/java/main/net/noscape/project/supremetags/handlers/menu/Paged.class
new file mode 100644
index 0000000..87158a6
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/handlers/menu/Paged.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/handlers/packets/PacketEventsChatListener.class b/build/classes/java/main/net/noscape/project/supremetags/handlers/packets/PacketEventsChatListener.class
new file mode 100644
index 0000000..4c551b3
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/handlers/packets/PacketEventsChatListener.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/handlers/packets/PacketEventsHandler.class b/build/classes/java/main/net/noscape/project/supremetags/handlers/packets/PacketEventsHandler.class
new file mode 100644
index 0000000..5eb555a
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/handlers/packets/PacketEventsHandler.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/handlers/packets/ProtocolLibHandler.class b/build/classes/java/main/net/noscape/project/supremetags/handlers/packets/ProtocolLibHandler.class
new file mode 100644
index 0000000..e24e8fd
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/handlers/packets/ProtocolLibHandler.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/handlers/packets/SystemChatPacketListener.class b/build/classes/java/main/net/noscape/project/supremetags/handlers/packets/SystemChatPacketListener.class
new file mode 100644
index 0000000..a586416
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/handlers/packets/SystemChatPacketListener.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/importer/TagImporter.class b/build/classes/java/main/net/noscape/project/supremetags/importer/TagImporter.class
new file mode 100644
index 0000000..17c1a81
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/importer/TagImporter.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/importer/types/AlonsoTagsImporter.class b/build/classes/java/main/net/noscape/project/supremetags/importer/types/AlonsoTagsImporter.class
new file mode 100644
index 0000000..2a95d06
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/importer/types/AlonsoTagsImporter.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/importer/types/DeluxeTagsImporter.class b/build/classes/java/main/net/noscape/project/supremetags/importer/types/DeluxeTagsImporter.class
new file mode 100644
index 0000000..77d0074
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/importer/types/DeluxeTagsImporter.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/importer/types/EternalTagsImporter.class b/build/classes/java/main/net/noscape/project/supremetags/importer/types/EternalTagsImporter.class
new file mode 100644
index 0000000..b3ad120
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/importer/types/EternalTagsImporter.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/importer/types/FreeSupremeTagsImporter.class b/build/classes/java/main/net/noscape/project/supremetags/importer/types/FreeSupremeTagsImporter.class
new file mode 100644
index 0000000..552c6bb
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/importer/types/FreeSupremeTagsImporter.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/listeners/EditorListener$1.class b/build/classes/java/main/net/noscape/project/supremetags/listeners/EditorListener$1.class
new file mode 100644
index 0000000..9553934
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/listeners/EditorListener$1.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/listeners/EditorListener.class b/build/classes/java/main/net/noscape/project/supremetags/listeners/EditorListener.class
new file mode 100644
index 0000000..b0e5dd6
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/listeners/EditorListener.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/listeners/MenuListener.class b/build/classes/java/main/net/noscape/project/supremetags/listeners/MenuListener.class
new file mode 100644
index 0000000..3c0e5ec
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/listeners/MenuListener.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/listeners/PlayerEvents.class b/build/classes/java/main/net/noscape/project/supremetags/listeners/PlayerEvents.class
new file mode 100644
index 0000000..0c86260
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/listeners/PlayerEvents.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/listeners/SetupListener.class b/build/classes/java/main/net/noscape/project/supremetags/listeners/SetupListener.class
new file mode 100644
index 0000000..90a8c0c
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/listeners/SetupListener.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/listeners/VoucherListener.class b/build/classes/java/main/net/noscape/project/supremetags/listeners/VoucherListener.class
new file mode 100644
index 0000000..1fbb9d0
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/listeners/VoucherListener.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/managers/AbilityManager.class b/build/classes/java/main/net/noscape/project/supremetags/managers/AbilityManager.class
new file mode 100644
index 0000000..cf15699
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/managers/AbilityManager.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/managers/CategoryManager.class b/build/classes/java/main/net/noscape/project/supremetags/managers/CategoryManager.class
new file mode 100644
index 0000000..60c0c02
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/managers/CategoryManager.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/managers/ConfigManager$Config.class b/build/classes/java/main/net/noscape/project/supremetags/managers/ConfigManager$Config.class
new file mode 100644
index 0000000..6acb3bc
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/managers/ConfigManager$Config.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/managers/ConfigManager.class b/build/classes/java/main/net/noscape/project/supremetags/managers/ConfigManager.class
new file mode 100644
index 0000000..6f416c2
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/managers/ConfigManager.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/managers/MergeManager.class b/build/classes/java/main/net/noscape/project/supremetags/managers/MergeManager.class
new file mode 100644
index 0000000..b8ed505
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/managers/MergeManager.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/managers/PlayerManager.class b/build/classes/java/main/net/noscape/project/supremetags/managers/PlayerManager.class
new file mode 100644
index 0000000..138e3e4
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/managers/PlayerManager.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/managers/RarityManager.class b/build/classes/java/main/net/noscape/project/supremetags/managers/RarityManager.class
new file mode 100644
index 0000000..ea0cb18
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/managers/RarityManager.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/managers/TagManager.class b/build/classes/java/main/net/noscape/project/supremetags/managers/TagManager.class
new file mode 100644
index 0000000..6a0308d
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/managers/TagManager.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/managers/VoucherManager$1.class b/build/classes/java/main/net/noscape/project/supremetags/managers/VoucherManager$1.class
new file mode 100644
index 0000000..4e72427
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/managers/VoucherManager$1.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/managers/VoucherManager.class b/build/classes/java/main/net/noscape/project/supremetags/managers/VoucherManager.class
new file mode 100644
index 0000000..895c366
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/managers/VoucherManager.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/storage/DataCache.class b/build/classes/java/main/net/noscape/project/supremetags/storage/DataCache.class
new file mode 100644
index 0000000..10bbe84
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/storage/DataCache.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/storage/H2Database.class b/build/classes/java/main/net/noscape/project/supremetags/storage/H2Database.class
new file mode 100644
index 0000000..dd6cef4
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/storage/H2Database.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/storage/H2UserData.class b/build/classes/java/main/net/noscape/project/supremetags/storage/H2UserData.class
new file mode 100644
index 0000000..f3c41e3
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/storage/H2UserData.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/storage/MySQLDatabase.class b/build/classes/java/main/net/noscape/project/supremetags/storage/MySQLDatabase.class
new file mode 100644
index 0000000..d78f5c6
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/storage/MySQLDatabase.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/storage/MySQLUserData.class b/build/classes/java/main/net/noscape/project/supremetags/storage/MySQLUserData.class
new file mode 100644
index 0000000..fd86ccc
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/storage/MySQLUserData.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/storage/PlayerConfig.class b/build/classes/java/main/net/noscape/project/supremetags/storage/PlayerConfig.class
new file mode 100644
index 0000000..1292178
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/storage/PlayerConfig.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/storage/SQLiteDatabase.class b/build/classes/java/main/net/noscape/project/supremetags/storage/SQLiteDatabase.class
new file mode 100644
index 0000000..bdb9f7f
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/storage/SQLiteDatabase.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/storage/SQLiteUserData.class b/build/classes/java/main/net/noscape/project/supremetags/storage/SQLiteUserData.class
new file mode 100644
index 0000000..1e743f7
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/storage/SQLiteUserData.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/storage/TagData.class b/build/classes/java/main/net/noscape/project/supremetags/storage/TagData.class
new file mode 100644
index 0000000..aa98323
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/storage/TagData.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/storage/UserData.class b/build/classes/java/main/net/noscape/project/supremetags/storage/UserData.class
new file mode 100644
index 0000000..e58fbcc
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/storage/UserData.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/storage/tags/MySQLTags.class b/build/classes/java/main/net/noscape/project/supremetags/storage/tags/MySQLTags.class
new file mode 100644
index 0000000..67e4bbb
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/storage/tags/MySQLTags.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/storage/tags/SQLiteTags.class b/build/classes/java/main/net/noscape/project/supremetags/storage/tags/SQLiteTags.class
new file mode 100644
index 0000000..0230295
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/storage/tags/SQLiteTags.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/storage/user/H2UserData.class b/build/classes/java/main/net/noscape/project/supremetags/storage/user/H2UserData.class
new file mode 100644
index 0000000..c68461b
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/storage/user/H2UserData.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/storage/user/MySQLUserData.class b/build/classes/java/main/net/noscape/project/supremetags/storage/user/MySQLUserData.class
new file mode 100644
index 0000000..1f70bc2
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/storage/user/MySQLUserData.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/storage/user/PlayerConfig.class b/build/classes/java/main/net/noscape/project/supremetags/storage/user/PlayerConfig.class
new file mode 100644
index 0000000..eac85e2
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/storage/user/PlayerConfig.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/storage/user/SQLiteUserData.class b/build/classes/java/main/net/noscape/project/supremetags/storage/user/SQLiteUserData.class
new file mode 100644
index 0000000..8085fda
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/storage/user/SQLiteUserData.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/utils/BungeeMessaging.class b/build/classes/java/main/net/noscape/project/supremetags/utils/BungeeMessaging.class
new file mode 100644
index 0000000..a9bc046
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/utils/BungeeMessaging.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/utils/ClassRegistrationUtils.class b/build/classes/java/main/net/noscape/project/supremetags/utils/ClassRegistrationUtils.class
new file mode 100644
index 0000000..ed8646e
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/utils/ClassRegistrationUtils.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/utils/CompatUtils.class b/build/classes/java/main/net/noscape/project/supremetags/utils/CompatUtils.class
new file mode 100644
index 0000000..04befbb
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/utils/CompatUtils.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/utils/ItemResolver$ResolvedItem.class b/build/classes/java/main/net/noscape/project/supremetags/utils/ItemResolver$ResolvedItem.class
new file mode 100644
index 0000000..1d739cd
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/utils/ItemResolver$ResolvedItem.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/utils/ItemResolver.class b/build/classes/java/main/net/noscape/project/supremetags/utils/ItemResolver.class
new file mode 100644
index 0000000..5b7d959
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/utils/ItemResolver.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/utils/SkullUtil.class b/build/classes/java/main/net/noscape/project/supremetags/utils/SkullUtil.class
new file mode 100644
index 0000000..7858933
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/utils/SkullUtil.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/utils/SoundUtils.class b/build/classes/java/main/net/noscape/project/supremetags/utils/SoundUtils.class
new file mode 100644
index 0000000..f82d710
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/utils/SoundUtils.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/utils/Utils.class b/build/classes/java/main/net/noscape/project/supremetags/utils/Utils.class
new file mode 100644
index 0000000..89e99ba
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/utils/Utils.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/utils/XMaterialUtil.class b/build/classes/java/main/net/noscape/project/supremetags/utils/XMaterialUtil.class
new file mode 100644
index 0000000..a6fa778
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/utils/XMaterialUtil.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/utils/commands/BaseCommand.class b/build/classes/java/main/net/noscape/project/supremetags/utils/commands/BaseCommand.class
new file mode 100644
index 0000000..114223c
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/utils/commands/BaseCommand.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/utils/commands/BukkitCommand.class b/build/classes/java/main/net/noscape/project/supremetags/utils/commands/BukkitCommand.class
new file mode 100644
index 0000000..9e691b0
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/utils/commands/BukkitCommand.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/utils/commands/BukkitCompleter.class b/build/classes/java/main/net/noscape/project/supremetags/utils/commands/BukkitCompleter.class
new file mode 100644
index 0000000..4294f3e
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/utils/commands/BukkitCompleter.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/utils/commands/Command.class b/build/classes/java/main/net/noscape/project/supremetags/utils/commands/Command.class
new file mode 100644
index 0000000..5a6126a
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/utils/commands/Command.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/utils/commands/CommandArguments.class b/build/classes/java/main/net/noscape/project/supremetags/utils/commands/CommandArguments.class
new file mode 100644
index 0000000..a58fdb0
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/utils/commands/CommandArguments.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/utils/commands/CommandFramework.class b/build/classes/java/main/net/noscape/project/supremetags/utils/commands/CommandFramework.class
new file mode 100644
index 0000000..8f1fdc9
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/utils/commands/CommandFramework.class differ
diff --git a/build/classes/java/main/net/noscape/project/supremetags/utils/commands/Completer.class b/build/classes/java/main/net/noscape/project/supremetags/utils/commands/Completer.class
new file mode 100644
index 0000000..9a8fbc5
Binary files /dev/null and b/build/classes/java/main/net/noscape/project/supremetags/utils/commands/Completer.class differ
diff --git a/build/libs/SupremeTags-2.1.17.jar b/build/libs/SupremeTags-2.1.17.jar
new file mode 100644
index 0000000..e4d11cc
Binary files /dev/null and b/build/libs/SupremeTags-2.1.17.jar differ
diff --git a/build/reports/problems/problems-report.html b/build/reports/problems/problems-report.html
new file mode 100644
index 0000000..e354a0b
--- /dev/null
+++ b/build/reports/problems/problems-report.html
@@ -0,0 +1,663 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ Gradle Configuration Cache
+
+
+
+
+
+
+ Loading...
+
+
+
+
+
+
+
diff --git a/build/resources/main/banned-words.yml b/build/resources/main/banned-words.yml
new file mode 100644
index 0000000..a3b9b1e
--- /dev/null
+++ b/build/resources/main/banned-words.yml
@@ -0,0 +1,206 @@
+############################################################
+# +------------------------------------------------------+ #
+# | Banned Words | #
+# | These blocked words are used for personal tags | #
+# +------------------------------------------------------+ #
+############################################################
+banned-words:
+ - 'anal'
+ - 'anus'
+ - 'arse'
+ - 'ass'
+ - 'ballsack'
+ - 'balls'
+ - 'bastard'
+ - 'bitch'
+ - 'biatch'
+ - 'bloody'
+ - 'blowjob'
+ - 'blow job'
+ - 'bollock'
+ - 'bollok'
+ - 'boner'
+ - 'boob'
+ - 'bugger'
+ - 'bum'
+ - 'butt'
+ - 'buttplug'
+ - 'clitoris'
+ - 'cock'
+ - 'coon'
+ - 'crap'
+ - 'cunt'
+ - 'damn'
+ - 'dick'
+ - 'dildo'
+ - 'dyke'
+ - 'fag'
+ - 'feck'
+ - 'fellate'
+ - 'fellatio'
+ - 'felching'
+ - 'fuck'
+ - 'f u c k'
+ - 'fudgepacker'
+ - 'flange'
+ - 'Goddamn'
+ - 'God damn'
+ - 'hell'
+ - 'homo'
+ - 'jerk'
+ - 'jizz'
+ - 'knobend'
+ - 'knob end'
+ - 'labia'
+ - 'lmao'
+ - 'lmfao'
+ - 'muff'
+ - 'nigger'
+ - 'nigga'
+ - 'omg'
+ - 'penis'
+ - 'piss'
+ - 'poop'
+ - 'prick'
+ - 'pube'
+ - 'pussy'
+ - 'queer'
+ - 'scrotum'
+ - 'sex'
+ - 'shit'
+ - 'slut'
+ - 'smegma'
+ - 'spunk'
+ - 'tit'
+ - 'tosser'
+ - 'turd'
+ - 'twat'
+ - 'vagina'
+ - 'wank'
+ - 'whore'
+ - 'wtf'
+ - 'arse'
+ - 'arsehole'
+ - 'balls'
+ - 'bastard'
+ - 'beaver'
+ - 'bell'
+ - 'bellend'
+ - 'bent'
+ - 'berk'
+ - 'bint'
+ - 'bitch'
+ - 'blighter'
+ - 'blimey'
+ - 'bloodclaat'
+ - 'bloody'
+ - 'blooming'
+ - 'bollocks'
+ - 'bonk'
+ - 'bukkake'
+ - 'bullshit'
+ - 'cack'
+ - 'cad'
+ - 'chav'
+ - 'choad'
+ - 'chuffer'
+ - 'clunge'
+ - 'cobblers'
+ - 'cock'
+ - 'cock-up'
+ - 'cocksucker'
+ - 'cockwomble'
+ - 'codger'
+ - 'corey'
+ - 'cow'
+ - 'crap'
+ - 'crikey'
+ - 'cunt'
+ - 'daft'
+ - 'damn'
+ - 'dick'
+ - 'dickhead'
+ - 'dildo'
+ - 'dodgy'
+ - 'duffer'
+ - 'fanny'
+ - 'feck'
+ - 'flaps'
+ - 'fuck'
+ - 'fucktard'
+ - 'gash'
+ - 'ginger'
+ - 'goddam'
+ - 'gorblimey'
+ - 'gormless'
+ - 'hell'
+ - 'hobknocker'
+ - 'jizz'
+ - 'knob'
+ - 'knobber'
+ - 'knobend'
+ - 'knobhead'
+ - 'ligger'
+ - 'manky'
+ - 'minge'
+ - 'minger'
+ - 'minging'
+ - 'motherfucker'
+ - 'munter'
+ - 'muppet'
+ - 'naff'
+ - 'nitwit'
+ - 'nonce'
+ - 'numpty'
+ - 'nutter'
+ - 'penguin'
+ - 'pillock'
+ - 'pish'
+ - 'piss off'
+ - 'piss-flaps'
+ - 'pissed'
+ - 'pissed off'
+ - 'plonker'
+ - 'ponce'
+ - 'poof'
+ - 'pouf'
+ - 'poxy'
+ - 'prat'
+ - 'prick'
+ - 'prick'
+ - 'prickteaser'
+ - 'punani'
+ - 'punny'
+ - 'pussy'
+ - 'randy'
+ - 'rapey'
+ - 'rat arsed'
+ - 'rotter'
+ - 'rubbish'
+ - 'scrubber'
+ - 'shag'
+ - 'shit'
+ - 'shite'
+ - 'shitfaced'
+ - 'skank'
+ - 'slag'
+ - 'slapper'
+ - 'slut'
+ - 'snatch'
+ - 'sod'
+ - 'sod-off'
+ - 'spunk'
+ - 'swine'
+ - 'tart'
+ - 'tits'
+ - 'toff'
+ - 'tosser'
+ - 'trollop'
+ - 'tuss'
+ - 'twat'
+ - 'twonk'
+ - 'wally'
+ - 'wanker'
+ - 'wankstain'
+ - 'wazzack'
+ - 'whore'
\ No newline at end of file
diff --git a/build/resources/main/categories.yml b/build/resources/main/categories.yml
new file mode 100644
index 0000000..efdddf8
--- /dev/null
+++ b/build/resources/main/categories.yml
@@ -0,0 +1,69 @@
+############################################################
+# +------------------------------------------------------+ #
+# | Categories | #
+# +------------------------------------------------------+ #
+############################################################
+
+categories-menu-fill-empty: false # set this to true if you want to fill empty slots in main menu of categories.
+
+categories:
+ default:
+ title: '&8Menu > &lDefault Tags' # title of the category gui.
+ material: 'NAME_TAG' # item material.
+ custom-model-data: 0
+ cost-category: false
+ glow: false
+ id_display: '&7&lDefault Tags' # item displayname.
+ slot: 11 # slot this item will be in the main menu.
+ lore:
+ - '&8&m-----------------------------'
+ - ''
+ - '&7Default tags: &7%tags_amount%'
+ - ''
+ - '&8&m-----------------------------'
+ filter-labels:
+ selected: '&7&lDEFAULT'
+ unselected: '&7Default'
+ permission: 'supremetags.category.default' # permission players will need to open this menu
+ permission-see-category: false # if set true and if player doesn't have the permission `supremetags.category.` they will not see it.
+ no-permission-message: '%prefix% &cYou have no permission to open the &7Default &cCategory!'
+ achievements:
+ title: '&8Menu > &lAchievements Tags' # title of the category gui.
+ material: 'NAME_TAG' # item material.
+ custom-model-data: 0
+ cost-category: false
+ glow: false
+ id_display: '&6&lAchievements Tags' # item displayname.
+ slot: 13 # slot this item will be in the main menu.
+ lore:
+ - '&8&m-----------------------------'
+ - ''
+ - '&6Achievements tags: &7%tags_amount%'
+ - ''
+ - '&8&m-----------------------------'
+ filter-labels:
+ selected: '&6&lACHIEVEMENTS'
+ unselected: '&7Achievements'
+ permission: 'supremetags.category.achievements' # permission players will need to open this menu
+ permission-see-category: false # if set true and if player doesn't have the permission `supremetags.category.` they will not see it.
+ no-permission-message: '%prefix% &cYou have no permission to open the &7Achievements &cCategory!'
+ holiday:
+ title: '&8Menu > &lHoliday Tags' # title of the category gui.
+ material: 'NAME_TAG' # item material.
+ custom-model-data: 0
+ cost-category: false
+ glow: false
+ id_display: '&c&lHoliday Tags' # item displayname.
+ slot: 15 # slot this item will be in the main menu.
+ lore:
+ - '&8&m-----------------------------'
+ - ''
+ - '&cHoliday tags: &7%tags_amount%'
+ - ''
+ - '&8&m-----------------------------'
+ filter-labels:
+ selected: '&c&lHOLIDAY'
+ unselected: '&7Holiday'
+ permission: 'supremetags.category.holiday' # permission players will need to open this menu
+ permission-see-category: false # if set true and if player doesn't have the permission `supremetags.category.` they will not see it.
+ no-permission-message: '%prefix% &cYou have no permission to open the &7Holiday &cCategory!'
\ No newline at end of file
diff --git a/build/resources/main/config.yml b/build/resources/main/config.yml
new file mode 100644
index 0000000..dedcae8
--- /dev/null
+++ b/build/resources/main/config.yml
@@ -0,0 +1,111 @@
+############################################################
+# +------------------------------------------------------+ #
+# | Settings | #
+# +------------------------------------------------------+ #
+############################################################
+
+settings:
+ commands:
+ # set custom aliases for /tags
+ # ** adding/removing these aliases require a restart to take effect! **
+ main-command: 'tags'
+ aliases:
+ - tag
+ no-permission-menu-action: true # set true, if the player doesn't have permission to the argument like "/tags reload" it will just open the tags' menu.
+ messaging-platform: 'bungeecord' # 'bungeecord' or 'velocity'
+ bungee-messaging: false # when set to true, this will sync all tags across all servers, without having to manually do this.
+ default-tag: 'none' # set 'none' players start with no tag.
+ forced-tag: false # this will make it force players to have a tag, they won't beable to take the tag off.
+ categories: false # should supremetags use the category system?
+ default-category: 'default' # used to set the tags category value when creating a new tag with the '/tag create' command
+ update-check: true # the plugin will check if there is an update available.
+ auto-merge: false # auto merges all tags from deluxetags into supremetags (DeluxeTags is required on the server)
+ active-tag-glow: true # adds a hidden enchantment to the tag item that is active for the player.
+ tag-command-in-disabled-worlds: true # should /tags command be disabled in 'disabled-worlds'.
+ disabled-worlds: # what worlds should tags be allowed in, tags in this world will not be shown.
+ - 'example'
+ - 'world2'
+ gui-messages: true # setting this to true, will enable 'tag-select-message' & 'reset-message'
+ locked-view: true # this setting allows players to view locked/unlocked tags.
+ personal-tags:
+ enable: true # this setting allows players to make and access their own tags.
+ limits:
+ # permission limits: supremetags.mytags.limit.
+ ## example: supremetags.mytags.limit.default
+ default: 10
+ ## example: supremetags.mytags.limit.vip
+ vip: 20
+ format-replace: '%tag%' # strict format replacer.
+ # layout types: [FULL, BORDER]
+ # FULL - 36 tags
+ # BORDER - 28 tags
+ layout-type: 'BORDER'
+ animated-tag-speed: 10 # in ticks
+ tag-vouchers: true # should tag vouchers withdraw be enabled?
+ prioritise-selected-tag: true # set false if you don't want selected tag to force at first slot.
+ voucher-redeem-permission: true # set false if you don't want permission 'supremetags.voucher.[identifier]' applying to tag vouchers.
+ deactivate-click: true # set false if you don't want function where if you click the active tag item in gui, it will deactivate.
+ only-show-player-access-tags: false # if true, the tag menus will only show the tags that the player has access to.
+ search-type: 'SIGN' # either 'SIGN' or 'ANVIL'
+ update-unlocked-cache: 300 # time in seconds (300 = 5 mins)
+
+############################################################
+# +------------------------------------------------------+ #
+# | Placeholders | #
+# +------------------------------------------------------+ #
+############################################################
+
+placeholders:
+ # %supremetags_tag%
+ # & {tag} / {TAG} / {supremetags_tag}
+ tag:
+ none-output: ''
+ format: '%tag%'
+ # %supremetags_chattag%
+ # is used for other built in placeholders as well.
+ chat:
+ none-output: ''
+ format: '%tag%'
+ # %supremetags_scorebardtag%
+ scoreboard:
+ none-output: ''
+ format: '%tag%'
+ # %supremetags_tabtag%
+ tab:
+ none-output: ''
+ format: '%tag%'
+
+############################################################
+# +------------------------------------------------------+ #
+# | Sounds | #
+# +------------------------------------------------------+ #
+############################################################
+# These default generated sounds are for 1.19+, make sure to look up your versions sounds:
+# latest: https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Sound.html
+# 1.19: https://helpch.at/docs/1.19/org/bukkit/Sound.html
+# 1.12: https://helpch.at/docs/1.12.2/org/bukkit/Sound.html
+# 1.8: https://helpch.at/docs/1.8.8/org/bukkit/Sound.html
+#
+# Google search: "spigot sounds ".
+
+sounds:
+ open-menus:
+ enable: true
+ sound: 'item.book.page_turn'
+ volume: 1.0
+ pitch: 1.0
+ selected-tag:
+ enable: true
+ sound: 'entity.player.levelup'
+ volume: 0.6
+ pitch: 1.2
+ reset-tag:
+ enable: true
+ sound: 'block.composter.fill_success'
+ volume: 0.9
+ pitch: 1.0
+ error-message:
+ enable: true
+ sound: 'entity.villager.no'
+ volume: 1.0
+ pitch: 0.9
\ No newline at end of file
diff --git a/build/resources/main/data.yml b/build/resources/main/data.yml
new file mode 100644
index 0000000..2719168
--- /dev/null
+++ b/build/resources/main/data.yml
@@ -0,0 +1,38 @@
+############################################################
+# +------------------------------------------------------+ #
+# | Data | #
+# +------------------------------------------------------+ #
+############################################################
+
+# make sure you can check your panel database info to make sure everything is correct.
+# Note: There are no extra steps needed for H2 or SQLite.
+data:
+
+ # Should SupremeTags cache data? this will optimize the amount of connections being used but will minimize db use across servers.
+ # If disabled, this setting only applies to MySQL type.
+ cache-data: true
+
+ # types: [H2 / SQLite(RECOMMENDED OVER H2) / MYSQL]
+ type: 'SQLite'
+
+ # The address for the database server.
+ # - to enable this part, change type to 'MYSQL'
+ # - some hosts can use your domain or server ip.
+ address: 'host'
+ # The standard DB engine port is used by default
+ port: 3306
+ # The name of the database to store tag data in.
+ database: 'database'
+ # Credentials for the database.
+ username: 'user'
+ password: 'pass'
+ useSSL: false
+
+ # connection pool settings.
+ mysql-pool-settings:
+ minimum-idle: 10
+ maximum-pool-size: 20
+ timeouts:
+ idle: 870000000
+ connection: 870000000
+ max-lifetime: 870000000
\ No newline at end of file
diff --git a/build/resources/main/guis.yml b/build/resources/main/guis.yml
new file mode 100644
index 0000000..675b3f3
--- /dev/null
+++ b/build/resources/main/guis.yml
@@ -0,0 +1,473 @@
+############################################################
+# +------------------------------------------------------+ #
+# | Gui | #
+# +------------------------------------------------------+ #
+############################################################
+# In 2.0.10 comes multi slots for any custom items in the gui, you can follow the format below.
+# - by simply changing "slot" to "slots", now you will be able to do a number list;
+# slots:
+# - 1
+# - 2
+# - 30
+
+gui:
+ main-menu:
+ title: '&8Menu > &lCategories'
+ size: 27
+ custom-items:
+ info:
+ enable: true
+ slot: 3
+ displayname: '&aWhat are Tags?'
+ material: 'BOOK'
+ custom-model-data: 0
+ lore:
+ - '&8Chat Tags'
+ - ''
+ - '&7Tags are basically like prefix''s'
+ - '&7and they can be display in chat/tab.'
+ - ''
+ - '&7Select a category below to see our amazing'
+ - '&7tags.'
+ click-commands: []
+ close:
+ enable: true
+ slot: 5
+ displayname: '&cClose'
+ material: 'RED_BED'
+ custom-model-data: 0
+ lore:
+ - '&7Click to close the menu!'
+ click-commands:
+ - '[close]'
+ border:
+ enable: true
+ slots:
+ - 0
+ - 1
+ - 2
+ - 4
+ - 6
+ - 7
+ - 8
+ - 9
+ - 17
+ - 18
+ - 19
+ - 20
+ - 21
+ - 22
+ - 23
+ - 24
+ - 25
+ - 26
+ displayname: '&c'
+ material: 'GRAY_STAINED_GLASS_PANE'
+ custom-model-data: 0
+ lore: []
+ click-commands: []
+ personal-tags:
+ title: '&8Menu > &lPersonal Tags'
+ items:
+ no-tags-item:
+ enable: true
+ slot: 22
+ material: 'ANVIL'
+ custom-model-data: 0
+ displayname: '&cYou don''t have any personal tags!'
+ lore:
+ - '&7Click on the &lCreate a Tag &7Item to create a tag'
+ personal-tags-editor:
+ title: '&8Tag Editor > %identifier%'
+ size: 27
+ tag-menu:
+ title: '&8Menu > &lTags'
+ size: 54
+ tags-per-page: 28
+ slots-tag:
+ # set true to control how you want to layout tags.
+ enable: false
+ # These will be the slots that tags will be assigned to each page.
+ # 1. In this example there are 14 slots, this means you need to put 'tags-per-page' above to 14.
+ # 2. if false, tags will start at the first empty slot by default.
+ slots:
+ - 19 # starting slot
+ - 20
+ - 21
+ - 22
+ - 23
+ - 24
+ - 25
+ - 28
+ - 29
+ - 30
+ - 31
+ - 32
+ - 33
+ - 34 # ending slot
+ global-locked-tag:
+ displayname: '&7Tag: %tag%'
+ display-item: BARRIER
+ custom-model-data: 0
+ global-tag-lores:
+ unlocked-lore:
+ - '%description%'
+ - ''
+ - '&7Tag &8➜ %tag%'
+ - '&7Variants &8➜ &e%variants%'
+ - '&7Preview &8➜ &f%player_name% %tag%&8: &fHi'
+ - '&7Unlocked &8➜ &f%track_unlocked%'
+ - '&7Rarity: &8➜ %rarity%'
+ - '&7Effects &8➜'
+ - '&7%effects%'
+ - ''
+ - '&e&nClick to Assign'
+ # used for selected tag view
+ selected-lore:
+ - '%description%'
+ - ''
+ - '&7Tag &8➜ %tag%'
+ - '&7Variants &8➜ &e%variants%'
+ - '&7Preview &8➜ &f%player_name% %tag%&8: &fHi'
+ - '&7Unlocked &8➜ &f%track_unlocked%'
+ - '&7Rarity: &8➜ %rarity%'
+ - '&7Effects &8➜'
+ - '&7%effects%'
+ - ''
+ - '&a&nThis tag is selected!'
+ # used for cost lores that are locked
+ locked-lore:
+ - '%description%'
+ - ''
+ - '&7Tag &8➜ %tag%'
+ - '&7Variants &8➜ &e%variants%'
+ - '&7Preview &8➜ &f%player_name% %tag%&8: &fHi'
+ - '&7Rarity: &8➜ %rarity%'
+ - '&7Effects &8➜'
+ - '&7%effects%'
+ - ''
+ - '&7Buy &8&l> &fRight-Click'
+ - '&7Cost &8&l> &f$%cost%'
+ - ''
+ - '&c&nThis tag is locked'
+ # used for when 'locked-view' is enabled and players doesn't have permission
+ locked-permission:
+ - '%description%'
+ - ''
+ - '&7Tag &8➜ %tag%'
+ - '&7Variants &8➜ &e%variants%'
+ - '&7Preview &8➜ &f%player_name% %tag%&8: &fHi'
+ - '&7Unlocked &8➜ &f%track_unlocked%'
+ - '&7Rarity: &8➜ %rarity%'
+ - '&7Effects &8➜'
+ - '&7%effects%'
+ - ''
+ - '&7&oNo permission to select this tag!'
+ - ''
+ - '&c&nThis tag is locked'
+ custom-items:
+ balance:
+ enable: true
+ slot: 0
+ displayname: '&7Balance &a$%vault_eco_balance%'
+ material: 'EMERALD'
+ custom-model-data: 0
+ hide-tooltip: false # 1.21.5+ only
+ click-commands:
+ - '[message] &7Balance: &a$%vault_eco_balance%'
+ #- '[player] balance'
+ #- '[console] eco give %player% 100'
+ confirmation-menu:
+ title: 'Confirm Action'
+ size: 27
+ items:
+ accept:
+ material: 'LIME_STAINED_GLASS_PANE'
+ displayname: '&aAccept'
+ slot: 11
+ custom-model-data: 0
+ hide-tooltip: false # 1.21.5+ only
+ deny:
+ material: 'LIME_STAINED_GLASS_PANE'
+ displayname: '&cDeny'
+ slot: 14
+ custom-model-data: 0
+ hide-tooltip: false # 1.21.5+ only
+ # Each action is auto synced, meaning they are hidden depending on the tag permissions/cost/active options.
+ # Don't change the item names as this will remove functionality.
+ tag-actions-menu:
+ enable: false # if false, the system will use its default click to active tag function.
+ title: '&8Menu > &lTag Actions'
+ size: 27
+ functions:
+ # withdraw-tag - withdraw
+ # this item will show rather than editor-tag if the player doesn't have permission.
+ withdraw-tag:
+ enable: true
+ slot: 11
+ display-item: 'NAME_TAG'
+ displayname: '&7Withdraw %tag%'
+ custom-model-data: 0
+ lore:
+ - '&8Withdraw'
+ - ''
+ - '&a&nClick to withdraw this tag'
+ hide-tooltip: false # 1.21.5+ only
+ # editor-tag - send you to the tag editor
+ editor-tag:
+ enable: true
+ slot: 11
+ permission-required: true # requires supremetags.admin
+ display-item: 'NAME_TAG'
+ displayname: '&7Edit %tag%'
+ custom-model-data: 0
+ lore:
+ - '&8Edit Tag'
+ - ''
+ - '&a&nClick to edit this tag'
+ hide-tooltip: false # 1.21.5+ only
+ # assigns-tag - equips the tag.
+ assign-tag:
+ enable: true
+ slot: 15
+ display-item: 'NAME_TAG'
+ displayname: '&7Assign %tag%'
+ custom-model-data: 0
+ lore:
+ - '&8Assign Tag'
+ - ''
+ - '&a&nClick to assign this tag'
+ hide-tooltip: false # 1.21.5+ only
+ # purchase-tag - buys the tag if it's a cost-tag.
+ purchase-tag:
+ enable: true
+ slot: 15
+ display-item: 'NAME_TAG'
+ displayname: '&7Purchase %tag%'
+ custom-model-data: 0
+ lore:
+ - '&8Purchase Tag'
+ - ''
+ - '&a&nClick to purchase this tag'
+ hide-tooltip: false # 1.21.5+ only
+ # unassign-tag - resets the activated tag to none.
+ unassign-tag:
+ enable: true
+ slot: 15
+ display-item: 'RED_DYE'
+ displayname: '&7Reset %tag%'
+ custom-model-data: 0
+ lore:
+ - '&8UnAssign Tag'
+ - ''
+ - '&a&nClick to reset this tag'
+ hide-tooltip: false # 1.21.5+ only
+ # variants - Opens variants Menu for the tag.
+ variants:
+ enable: true
+ hide-when-zero: true # If true, the plugin will hide the item when the tags has 0 variants.
+ slot: 13
+ display-item: 'LIME_DYE'
+ displayname: '&7Variants'
+ custom-model-data: 0
+ lore:
+ - '&8Variants'
+ - ''
+ - '&a&nClick to view variants'
+ hide-tooltip: false # 1.21.5+ only
+ back:
+ enable: true
+ slot: 18
+ display-item: 'RED_BED'
+ displayname: '&c&lGo Back'
+ custom-model-data: 0
+ lore:
+ - '&8Back Button'
+ - ''
+ - '&a&nClick to go back to tags menu'
+ hide-tooltip: false # 1.21.5+ only
+ tag-variants-menu:
+ title: '&8%identifier%''s Variants'
+ size: 54
+ item:
+ display-item: 'NAME_TAG'
+ displayname: '&7Variant: %tag%'
+ custom-model-data: 0
+ lore:
+ unlocked-lore:
+ - '%description%'
+ - ''
+ - '&7Tag &8➜ %tag%'
+ - '&7Preview &8➜ &f%player_name% %tag%&8: &fHi'
+ - ''
+ - '&e&nClick to Assign'
+ selected-lore:
+ - '%description%'
+ - ''
+ - '&7Tag &8➜ %tag%'
+ - '&7Preview &8➜ &f%player_name% %tag%&8: &fHi'
+ - ''
+ - '&a&nThis tag is selected!'
+ locked-permission:
+ - '%description%'
+ - ''
+ - '&7Tag &8➜ %tag%'
+ - '&7Preview &8➜ &f%player_name% %tag%&8: &fHi'
+ - ''
+ - '&7&oNo permission to select this variant!'
+ - ''
+ - '&c&nThis tag is locked'
+ tag-editor-menu:
+ title: '&8Menu > &lTag Editor'
+ specific-tag-editor-title: '&7Tag ➟ [%identifier%]'
+ tag-item:
+ displayname: '&7Tag: %tag%'
+ lore:
+ - '&7&m-----------------------------'
+ - ''
+ - '&bIdentifier: &7%identifier%'
+ - ''
+ - '&dDescription:'
+ - '&7%description%'
+ - ''
+ - '&eClick to Edit!'
+ - '&7&m-----------------------------'
+
+ ####### change
+ editor-items:
+ change-tag: '&e&lChange Tag'
+ change-description: '&e&lChange Description'
+ change-permission: '&e&lChange Permission'
+ change-category: '&e&lChange Category'
+ delete-tag: '&c&lDelete Tag'
+ # disable items in the gui.
+ # setting these values to false will not display the item in tag gui.
+ items:
+ ## WARNING ##
+ # these default items names can't be changed!
+ # but you can make new displayable static items.
+ close:
+ enable: true
+ slot: 49
+ displayname: '&c&lClose'
+ material: 'BARRIER'
+ custom-model-data: 0
+ lore:
+ - '&7Close the Menu!'
+ hide-tooltip: false # 1.21.5+ only
+ reset:
+ enable: true
+ slot: 46
+ displayname: '&c&lReset Tag'
+ material: 'RED_DYE'
+ custom-model-data: 0
+ lore: []
+ hide-tooltip: false # 1.21.5+ only
+ glass: # this will only be disabled for 'FULL' layout type.
+ enable: true
+ displayname: '&c'
+ material: 'GRAY_STAINED_GLASS_PANE'
+ custom-model-data: 0
+ hide-tooltip: true # 1.21.5+ only
+ personal-tags:
+ enable: true
+ slot: 8
+ displayname: '&b&lPersonal Tags'
+ material: 'ENDER_PEARL'
+ custom-model-data: 0
+ lore:
+ - '&7Create your own tags!'
+ hide-tooltip: false # 1.21.5+ only
+ # create tag is for personal tags menu
+ create-tag:
+ enable: true
+ slot: 53
+ displayname: '&b&lCreate a Tag'
+ material: 'ENDER_PEARL'
+ custom-model-data: 0
+ lore:
+ - '&7Create a new tag!'
+ hide-tooltip: false # 1.21.5+ only
+ active:
+ enable: true
+ slot: 52
+ displayname: '&6&l%player%'
+ material: 'NAME_TAG'
+ custom-model-data: 0
+ lore:
+ - '&7Your Active Tag: &6%identifier%'
+ hide-tooltip: false # 1.21.5+ only
+ next:
+ enable: true
+ slot: 50
+ displayname: '&f&lNext'
+ material: 'ARROW'
+ custom-model-data: 0
+ lore:
+ - '&7Go to the next page!'
+ hide-tooltip: false # 1.21.5+ only
+ back:
+ enable: true
+ slot: 48
+ displayname: '&f&lBack'
+ material: 'ARROW'
+ custom-model-data: 0
+ lore:
+ - '&7Go to the previous page!'
+ hide-tooltip: false # 1.21.5+ only
+ search:
+ enable: true
+ slot: 45
+ displayname: '&e&lSearch Tags'
+ material: 'OAK_SIGN'
+ custom-model-data: 0
+ lore:
+ - '&7Search for tags!'
+ hide-tooltip: false # 1.21.5+ only
+ sort:
+ enable: true
+ slot: 5
+ displayname: '&e&lSorting by: &7%sort%'
+ material: 'ENDER_EYE'
+ custom-model-data: 0
+ lore:
+ - '&8Sort'
+ - ''
+ - '%sort_lore%'
+ - ''
+ - '&a&nClick to change rarity'
+ hide-tooltip: false # 1.21.5+ only
+ sorts:
+ selected:
+ no-filter: '&8&l> &8No Filter!'
+ rarity: '&8&l> &f&l%rarity%'
+ unselected:
+ no-filter: '&8&l> &8No Filter!'
+ rarity: '&8&l> &7%rarity%'
+ replacements: # for %sort%
+ no-filter: '&7No Filter'
+ filter:
+ enable: true
+ slot: 3
+ displayname: '&e&lFiltering by: &7%filter%'
+ material: 'HOPPER'
+ custom-model-data: 0
+ lore:
+ - '&8Filter'
+ - ''
+ - '%filter_lore%'
+ - ''
+ - '&a&nClick to change filter type'
+ hide-tooltip: false # 1.21.5+ only
+ filters:
+ selected:
+ your-tags: '&8&l> &f&lYour Tags'
+ all-tags: '&8&l> &f&lAll Tags'
+ category: '&8&l> %category%'
+ unselected:
+ your-tags: '&8&l> &7Your Tags'
+ all-tags: '&8&l> &7All Tags'
+ category: '&8&l> %category%'
+ replacements: # for %filter%
+ all-tags: 'All Tags'
+ your-tags: 'Your Tags'
diff --git a/build/resources/main/messages.yml b/build/resources/main/messages.yml
new file mode 100644
index 0000000..012112d
--- /dev/null
+++ b/build/resources/main/messages.yml
@@ -0,0 +1,136 @@
+############################################################
+# +------------------------------------------------------+ #
+# | Messages | #
+# +------------------------------------------------------+ #
+############################################################
+
+messages:
+ prefix: '&e&lTags &8➜'
+ tag-select-message: '%prefix% &e%identifier% &7tag selected.'
+ reset-message: '%prefix% &7Reset tag.'
+ reset-command: '%prefix% &7Reset &e%player% &7tag.'
+ insufficient-funds: '%prefix% &cInsufficient funds. &7You need &c$%cost% &7to get this tag.'
+ tag-unlocked: '%prefix% &7You have unlocked the tag: &6%identifier%'
+ reload: '%prefix% &7Reloaded plugin.'
+ no-console-access: '%prefix% &cOnly in-game players can use this command!'
+ no-permission: '%prefix% &cNo Permission.'
+ no-permission-voucher: '%prefix% &cYou don''t have permission to redeem the &7%identifier% &cvoucher!'
+ no-tags: '%prefix% &cYou have no tags yet.'
+ tag-command-disabled: '%prefix% &cTag command is disabled in this world.'
+ invalid-tag: '%prefix% &cThis tag does not exist.'
+ valid-tag: '%prefix% &cThis tag already exists.'
+ invalid-category: '%prefix% &cThis category does not exist.'
+ locked-tag: '%prefix% &cYou do not have access to select this tag!'
+ already-have-tag: '%prefix% &7You already own this tag!'
+ not-owned-tag: '%prefix% &7You don''t own this tag!'
+ tag-updated: '%prefix% &7Tag has been updated.'
+ no-access-category: '%prefix% &cYou don''t have permission to access these tags.'
+ no-tags-category: '%prefix% &cThere are no tags in this category.'
+ bad-word: '%prefix% &cMessage contains a bad word! Please try again.'
+ player-not-have-tag: '%prefix% &7This player does not have this tag!'
+ inventory-full: '%prefix% &7Inventory full, remove some items.'
+ tag-vouchers-disabled: '%prefix% &7Tags vouchers are disabled!'
+ withdraw-failed-selected: '%prefix% &7You can''t withdraw a tag you''ve selected!'
+ tag-not-withdrawable: '%prefix% &7This tag is not withdrawable!'
+ tag-withdrawn: '%prefix% &7Tag &e%identifier% &7Withdrawn!'
+ tag-removed: '%prefix% &7You have removed the tag from %player%!'
+ vault-not-found: '%prefix% &7Vault not found, cancelling voucher!'
+ player-not-online: '%prefix% &cThis player is not online!'
+ given-voucher: '%prefix% &7You have given &f%target%&7 the &e%identifier% &7voucher!'
+ received-voucher: '%prefix% &7You have received voucher: &e%identifier%'
+ ptags-limit-reached: '%prefix% &7The tag limit has been reached!'
+ ptags-tag-deleted: '%prefix% &7Tag deleted!'
+ ptags-setting-new-tag: '%prefix% &7You are setting a new tag. &6Type it in chat.'
+ ptags-setting-new-description: '%prefix% &7You are setting a new description. &6Type it in chat.'
+ ptags-unselect-warning: '%prefix% &7Please unselect this tag before deleting!'
+ ptags-disabled: '%prefix% &cPersonal Tags are disabled!'
+ tag-edited: '%prefix% &7Updated Tag: &e%tag%'
+ editor:
+ tag: '%prefix% &7You are setting a new tag. &6Type it in chat.'
+ description: '%prefix% &7You are setting a new description. &6Type it in chat.'
+ category: '%prefix% &7You are setting a new category. &6Type it in chat.'
+ permission: '%prefix% &7You are setting a new permission. &6Type it in chat.'
+ deleted: '%prefix% &7Tag deleted!'
+ withdrawable: '%prefix% &7Withdrawable setting updated.'
+ cost: '%prefix% &7You are setting a new cost value. &6Type it in chat.'
+ rarity: '%prefix% &7You are setting a new rarity. &6Type it in chat.'
+ cancelled: '%prefix% &7edit cancelled, no changes have taken place.'
+ stages:
+ stage-1: '&6&lStage 1: &7Enter a name for the tag. &6&o(type in normal chat)'
+ stage-2: '&6&lStage 2: &7What do you want the tag to look like? &6&o(type in normal chat)'
+ complete: '&6&lComplete: &7New Tag: &6%identifier% &7- %tag% &7has been created.'
+ cancelled: '&6&lStage: &7Cancelled setup process.'
+ help:
+ default:
+ - '&6&lSupremeTags:'
+ - ''
+ - '&e/%command% &7- will open the tag menu.'
+ - '&e/%command% help &7- displays this help message.'
+ - '&e/%command% withdraw &7- withdraws the owned tag into a voucher.'
+ admin:
+ - '&6&lSupremeTags: &7(ADMIN)'
+ - ''
+ - '&e/%command% &7- will open the tag menu.'
+ - '&e/%command% create &7- creates a new tag.'
+ - '&e/%command% delete &7- creates a new tag.'
+ - '&e/%command% set &7- sets a new tag for that player.'
+ - '&e/%command% givevoucher (-s) &7- gives a voucher to the player.'
+ - '&e/%command% reset &7- resets the players tag to None.'
+ - '&e/%command% removetagp &7- remove a tag/permission from a player.'
+ - '&e/%command% merge &7- merges tag plugins into supremetags.'
+ - '&e/%command% reload &7- reloads the config.yml & unloads/loads tags.'
+ - '&e/%command% help &7- displays this help message.'
+ - '&e/%command% config &7- Edit/toggle configuration from a GUI.'
+ - '&e/%command% editor &7- Edit tags from a GUI.'
+ - '&e/%command% list &7- see how many tags are loaded.'
+ - '&e/%command% withdraw &7- withdraws the owned tag into a voucher.'
+ voucher-spam-warning: '&cPlease do not spam this command, wait 3 seconds before doing this again.'
+ search-invalid-1: '%prefix% &7Invalid Search, search a tag name or category.'
+ search-invalid-2: '%prefix% &7Invalid Search, line 2 is empty.'
+ invalid-custom-placeholder: '&7Unknown Placeholder'
+ sign-line-top: '&eSearch Result Below:'
+ no-tag-selected: '%prefix% &cNo tag selected!'
+ no-effects: '&7No Effects Found!'
+ effects-replace-style: '&8&l> &f%effect%'
+ placeholder-error: '%prefix% &cYou cannot use placeholders in the your tags.'
+ similar-error: '%prefix% &cTag too similar to an existing one. Try again.'
+ dev-build-alert:
+ - '&r'
+ - '&c&l⚠ DEV BUILD ACTIVE ⚠'
+ - '&eYou are running a &eDevelopment Build of SupremeTags.'
+ - '&eExpect bugs, unfinished features, and chaos.'
+ - '&r'
+ - '&7Version: &f%version%'
+ - '&7Link: &f%link%'
+ - '&r'
+ debug:
+ - "&f&lSupremeTags2 Debug Report &8➜"
+ - ""
+ - "&7Version:&f %version%"
+ - "&7Author:&f %author%"
+ - "&7Discord:&f %discord%"
+ - ""
+ - "&e&lBasic Information:"
+ - " &8● &7Tags Loaded: &f%tags_loaded%"
+ - " &8● &7Categories Loaded: &f%categories_loaded%"
+ - " &8● &7Database Type: &f%db_type%"
+ - " &8● &7Database Connected: &f%db_connected%"
+ - ""
+ - "&e&lPlugin Hooks:"
+ - " &8● &7Vault: %hook_vault%"
+ - " &8● &7PlayerPoints: %hook_playerpoints%"
+ - " &8● &7CoinsEngine: %hook_coinsengine%"
+ - " &8● &7NBT API: %hook_nbtapi%"
+ - " &8● &7PlaceholderAPI: %hook_papi%"
+ - ""
+ - "&e&lConfiguration Check:"
+ - "%config_errors%"
+ - ""
+ - "&e&lPlaceholderAPI Test:"
+ - "%papi_test_tag%"
+ - "%papi_test_chat%"
+ - ""
+ - "&e&lTag Sanity Check:"
+ - "%tag_errors%"
+ - ""
+ - "&7Debug complete."
diff --git a/build/resources/main/plugin.yml b/build/resources/main/plugin.yml
new file mode 100644
index 0000000..7c1f679
--- /dev/null
+++ b/build/resources/main/plugin.yml
@@ -0,0 +1,30 @@
+name: 'SupremeTags'
+version: '2.1.17'
+main: net.noscape.project.supremetags.SupremeTags
+api-version: 1.13
+depend: [NBTAPI]
+softdepend:
+ - ProtocolLib
+ - PlaceholderAPI
+ - packetevents
+ - HeadDatabase
+ - VaultAPI
+ - Nexo
+ - ItemsAdder
+ - PlayerPoints
+ - SimpleItemGenerator
+ - ExecutableItems
+ - SCore
+authors: [Scape]
+folia-supported: true
+description: Allow players to show of their supreme tags!
+commands:
+ tags:
+ description: Main command for SupremeTags
+ usage: /
+ aliases:
+ - tag
+ mytags:
+ description: Opens the personal tags menu.
+ usage: /mytags
+ permission: supremetags.mytags
\ No newline at end of file
diff --git a/build/resources/main/rarities.yml b/build/resources/main/rarities.yml
new file mode 100644
index 0000000..be62bc9
--- /dev/null
+++ b/build/resources/main/rarities.yml
@@ -0,0 +1,35 @@
+############################################################
+# +------------------------------------------------------+ #
+# | Rarities | #
+# +------------------------------------------------------+ #
+############################################################
+
+rarities:
+ common:
+ enable: true
+ order: 1
+ displayname: '&7Common'
+ filter-labels:
+ selected: '&7&lCOMMON'
+ unselected: '&7Common'
+ uncommon:
+ enable: true
+ order: 2
+ displayname: '&7UnCommon'
+ filter-labels:
+ selected: '&f&lUNCOMMON'
+ unselected: '&7UnCommon'
+ rare:
+ enable: true
+ order: 3
+ displayname: '&7Rare'
+ filter-labels:
+ selected: '&9&lRARE'
+ unselected: '&7Rare'
+ legendary:
+ enable: true
+ order: 4
+ displayname: '&7Legendary'
+ filter-labels:
+ selected: '&6&lLEGENDARY'
+ unselected: '&7Legendary'
\ No newline at end of file
diff --git a/build/resources/main/tags.yml b/build/resources/main/tags.yml
new file mode 100644
index 0000000..7ffffde
--- /dev/null
+++ b/build/resources/main/tags.yml
@@ -0,0 +1,1429 @@
+# ###########################################################
+# +------------------------------------------------------+ #
+# | Tags | #
+# +------------------------------------------------------+ #
+# ###########################################################
+#
+# |----| VARIANTS EXAMPLES |----|
+# ## - Variants are sub tags.
+# ## - Variant lores can be edit in guis.yml under 'gui > tag-variants-menu > item > lore'.
+# variants:
+# vipplus_blue:
+# enabled: true
+# tag:
+# - '&a[VIP&b+&a]'
+# permission: 'supremetags.tag.vip.blue'
+# vipplus_red:
+# enabled: true
+# tag:
+# - '&a[VIP&c+&a]'
+# permission: 'supremetags.tag.vip.red'
+#
+# Economy Option Feature (PER TAG)
+# economy:
+# enabled: true/false
+# type: 'VAULT' # Available eco types: [VAULT, PLAYERPOINTS, EXP_LEVELS, COINSENGINE-currencyhere]
+# amount: 200
+
+tags:
+ hexsupport: # 1.16+ server is required for hex colors to work.
+ # tags won't animate if there are only one string tag in the list.
+ tag:
+ - '&8[afe4a4&lHb1cdb1&leb3b6bd&lxb59fca&lCb688d7&lob871e3&llba5af0&lobc43fd&lr&8]'
+ permission: supremetags.tag.hex
+ description:
+ - '&7This plugin supports normal/hex colors'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8[afe4a4&lHb1cdb1&leb3b6bd&lxb59fca&lCb688d7&lob871e3&llba5af0&lobc43fd&lr&8]'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: default
+ order: 1
+ withdrawable: true
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants: []
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&8[afe4a4&lHb1cdb1&leb3b6bd&lxb59fca&lCb688d7&lob871e3&llba5af0&lobc43fd&lr&8]
+ &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: common
+ economy:
+ enabled: false
+ type: CUSTOM # Available eco types: [VAULT, PLAYERPOINTS, EXP_LEVELS, COINSENGINE-currencyhere, CUSTOM]
+ take-cmd: 'eco take %player% %amount%'
+ condition: '%vault_eco_balance% >= %amount%' # requires placeholderapi
+ amount: 200
+ santa: # Christmas themed tag, shows in the Xmas category.
+ tag:
+ - '&8[&c&lSanta&8]'
+ permission: supremetags.tag.santa
+ description:
+ - '&7ho ho hooooooo!'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8[&c&lSanta&8]'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: holiday
+ order: 2
+ withdrawable: false
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants:
+ white-santa:
+ enabled: true
+ tag:
+ - '&f[&cSanta&f]'
+ item:
+ locked:
+ material: 'BARRIER'
+ displayname: '&7Variant: %tag%'
+ custom-model-data: 0
+ unlocked:
+ material: 'NAME_TAG'
+ displayname: '&7Variant: %tag%'
+ custom-model-data: 0
+ permission: supremetags.tag.santa.white
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&8[&c&lSanta&8] &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: common
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
+ kill_master: # Christmas themed tag, shows in the Xmas category.
+ tag:
+ - '&8[&4&lKiller Master: &f%statistic_player_kills%&8]'
+ permission: supremetags.tag.killer
+ description:
+ - '&cRewarded for being the best pvper!'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8[&4&lKiller Master&8]'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: achivements
+ order: 3
+ withdrawable: false
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants: []
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&8[&4&lKiller Master&8] &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: common
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
+ vipplus: # vip plus tag, this comes with multi different varients.
+ tag:
+ - '&a[VIP+]'
+ permission: supremetags.tag.vip
+ description:
+ - '&aVIP donator tag!'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &a[VIP+]'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: achivements
+ order: 4
+ withdrawable: false
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ animated-tag-speed: 10 # in ticks
+ variants:
+ vipplus_blue:
+ enabled: true
+ tag:
+ - '&a[VIP&b+&a]'
+ description:
+ - '&aAqua VIP for VIP+'
+ item:
+ locked:
+ material: 'BARRIER'
+ displayname: '&7Variant: %tag%'
+ unlocked:
+ material: 'NAME_TAG'
+ displayname: '&7Variant: %tag%'
+ permission: supremetags.tag.vip.blue
+ rarity: common
+ vipplus_red:
+ enabled: true
+ tag:
+ - '&a[VIP&c+&a]'
+ description:
+ - '&aRed VIP for VIP+'
+ item:
+ locked:
+ material: 'BARRIER'
+ displayname: '&7Variant: %tag%'
+ unlocked:
+ material: 'NAME_TAG'
+ displayname: '&7Variant: %tag%'
+ permission: supremetags.tag.vip.red
+ rarity: rare
+ vipplus_gold:
+ enabled: true
+ tag:
+ - '&a[VIP&6+&a]'
+ description:
+ - '&aGold VIP for VIP+'
+ item:
+ locked:
+ material: 'BARRIER'
+ displayname: '&7Variant: %tag%'
+ unlocked:
+ material: 'NAME_TAG'
+ displayname: '&7Variant: %tag%'
+ permission: supremetags.tag.vip.gol
+ rarity: uncommon
+ vipplus_pink:
+ enabled: true
+ tag:
+ - '&a[VIP&d+&a]'
+ description:
+ - '&aPink VIP for VIP+'
+ item:
+ locked:
+ material: 'BARRIER'
+ displayname: '&7Variant: %tag%'
+ unlocked:
+ material: 'NAME_TAG'
+ displayname: '&7Variant: %tag%'
+ permission: supremetags.tag.vip.pin
+ rarity: common
+ vipplus_black:
+ enabled: true
+ tag:
+ - '&a[VIP&0+&a]'
+ description:
+ - '&aBlack VIP for VIP+'
+ item:
+ locked:
+ material: 'BARRIER'
+ displayname: '&7Variant: %tag%'
+ unlocked:
+ material: 'NAME_TAG'
+ displayname: '&7Variant: %tag%'
+ permission: supremetags.tag.vip.bla
+ rarity: common
+ vipplus_yellow:
+ enabled: true
+ tag:
+ - '&a[VIP&e+&a]'
+ description:
+ - '&aYellow VIP for VIP+'
+ item:
+ locked:
+ material: 'BARRIER'
+ displayname: '&7Variant: %tag%'
+ unlocked:
+ material: 'NAME_TAG'
+ displayname: '&7Variant: %tag%'
+ permission: supremetags.tag.vip.yel
+ rarity: common
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&a[VIP+] &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: common
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
+ epic:
+ tag:
+ - '&8&l[&5&lEpic&8&l]'
+ permission: supremetags.tag.epic
+ description:
+ - '&7&oClick to select &7&l&oEpic &7&oTag'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8[&5&lEpic&8]'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: default
+ order: 5
+ withdrawable: true
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants: []
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&8&l[&5&lEpic&8&l] &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: rare
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
+ gg:
+ tag:
+ - '&8&l[&e&lGG&8&l]'
+ permission: supremetags.tag.GG
+ description:
+ - '&7&oClick to select &7&l&oGG &7&oTag'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8[&e&lGGa&8]'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: default
+ order: 6
+ withdrawable: true
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants: []
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&8&l[&e&lGG&8&l] &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: common
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
+ banned:
+ tag:
+ - '&8&l[&c&lBanned&8&l]'
+ permission: supremetags.tag.Banned
+ description:
+ - '&7&oClick to select &7&l&oBanned &7&oTag'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8[&c&lBanned&8]'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: default
+ order: 7
+ withdrawable: true
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants: []
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&8&l[&c&lBanned&8&l] &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: common
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
+ toxic:
+ tag:
+ - '&8&l[&2&lToxic&8&l]'
+ permission: supremetags.tag.Toxic
+ description:
+ - '&7&oClick to select &7&l&oToxic &7&oTag'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8[&2&lToxic&8]'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: default
+ order: 8
+ withdrawable: true
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants: []
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&8&l[&2&lToxic&8&l] &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: legendary
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
+ heart:
+ tag:
+ - '&8&l<&c&l♥&8&l>'
+ permission: supremetags.tag.Heart
+ description:
+ - '&7&oClick to select &7&l&oHeart &7&oTag'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8&l<&c&l♥&8&l>'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: default
+ order: 9
+ withdrawable: true
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants: []
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&8&l<&c&l♥&8&l> &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: rare
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
+ star:
+ tag:
+ - '&8&l<&6&l★&8&l>'
+ permission: supremetags.tag.Star
+ description:
+ - '&7&oClick to select &7&l&oStar &7&oTag'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8&l<&6&l★&8&l>'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: default
+ order: 10
+ withdrawable: true
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants: []
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&8&l<&6&l★&8&l> &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: common
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
+ star2:
+ tag:
+ - '&8&l<&6&l☆&8&l>'
+ permission: supremetags.tag.Star2
+ description:
+ - '&7&oClick to select &7&l&oStar V2 &7&oTag'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8&l<&6&l☆&8&l>'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: default
+ order: 11
+ withdrawable: true
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants: []
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&8&l<&6&l☆&8&l> &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: common
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
+ star3:
+ tag:
+ - '&8&l<&6&l✰&8&l>'
+ permission: supremetags.tag.Star3
+ description:
+ - '&7&oClick to select &7&l&oStar V3 &7&oTag'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8&l<&6&l✰&8&l>'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: default
+ order: 12
+ withdrawable: true
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants: []
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&8&l<&6&l✰&8&l> &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: common
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
+ flower:
+ tag:
+ - '&8&l<&d&l❀&8&l>'
+ permission: supremetags.tag.Flower
+ description:
+ - '&7&oClick to select &7&l&oFlower &7&oTag'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8&l<&d&l❀&8&l>'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: default
+ order: 13
+ withdrawable: true
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants: []
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&8&l<&d&l❀&8&l> &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: common
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
+ starcircle:
+ tag:
+ - '&8&l<&d&l✪&8&l>'
+ permission: supremetags.tag.StarCircle
+ description:
+ - '&7&oClick to select &7&l&oStarCircle &7&oTag'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8&l<&d&l✪&8&l>'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: default
+ order: 14
+ withdrawable: true
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants: []
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&8&l<&d&l✪&8&l> &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: common
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
+ hacker:
+ tag:
+ - '&8&l[&a&lHacker&8&l]'
+ permission: supremetags.tag.Hacker
+ description:
+ - '&7&oClick to select &7&l&oHacker &7&oTag'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8&l[&a&lHacker&8&l]'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: default
+ order: 15
+ withdrawable: true
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants: []
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&8&l[&a&lHacker&8&l] &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: common
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
+ umbrella:
+ tag:
+ - '&8&l<&b&l☂&8&l>'
+ permission: supremetags.tag.Umbrella
+ description:
+ - '&7&oClick to select &7&l&oUmbrella &7&oTag'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8&l<&b&l☂&8&l>'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: default
+ order: 16
+ withdrawable: true
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants: []
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&8&l<&b&l☂&8&l> &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: common
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
+ fire:
+ tag:
+ - '&8&l[&6&lFi&c&lre&8&l]'
+ permission: supremetags.tag.Fire
+ description:
+ - '&7&oClick to select &7&l&oFire &7&oTag'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8&l[&6&lFi&c&lre&8&l]'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: default
+ order: 17
+ withdrawable: true
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants: []
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&8&l[&6&lFi&c&lre&8&l] &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: rare
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
+ water:
+ tag:
+ - '&8&l[&9&lWa&b<er&8&l]'
+ permission: supremetags.tag.Water
+ description:
+ - '&7&oClick to select &7&l&oWater &7&oTag'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8&l[&9&lWa&b<er&8&l]'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: default
+ order: 18
+ withdrawable: true
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants: []
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&8&l[&9&lWa&b<er&8&l] &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: common
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
+ magic:
+ tag:
+ - '&8&l[&5&lMagic&8&l]'
+ permission: supremetags.tag.Magic
+ description:
+ - '&7&oClick to select &7&l&oMagic &7&oTag'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8&l[&5&lMagic&8&l]'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: default
+ order: 19
+ withdrawable: true
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants: []
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&8&l[&5&lMagic&8&l] &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: rare
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
+ l:
+ tag:
+ - '&8&l[&c&lL&8&l]'
+ permission: supremetags.tag.L
+ description:
+ - '&7&oClick to select &7&l&oL &7&oTag'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8&l[&c&lL&8&l]'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: default
+ order: 20
+ withdrawable: true
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants: []
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&8&l[&c&lL&8&l] &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: common
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
+ vape:
+ tag:
+ - '&8&l[&9&lVape&8&l]'
+ permission: supremetags.tag.Vape
+ description:
+ - '&7&oClick to select &7&l&oVape &7&oTag'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8&l[&9&lVape&8&l]'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: default
+ order: 21
+ withdrawable: true
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants: []
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&8&l[&9&lVape&8&l] &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: common
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
+ papiphulo:
+ tag:
+ - '&8&l[&d&lPapiChulo&8&l]'
+ permission: supremetags.tag.PapiChulo
+ description:
+ - '&7&oClick to select &7&l&oPapiChulo &7&oTag'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8&l[&d&lPapiChulo&8&l]'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: default
+ order: 22
+ withdrawable: true
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants: []
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&8&l[&d&lPapiChulo&8&l] &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: common
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
+ yinandyang:
+ tag:
+ - '&8&l<&f&l☯&8&l>'
+ permission: supremetags.tag.YinAndYang
+ description:
+ - '&7&oClick to select &7&l&o☯ &7&oTag'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8&l<&f&l☯&8&l>'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: default
+ order: 23
+ withdrawable: true
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants: []
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&8&l<&f&l☯&8&l> &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: legendary
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
+ rich:
+ tag:
+ - '&8&l[&2&lRIC&6&lH&8&l]'
+ permission: supremetags.tag.Rich
+ description:
+ - '&7&oClick to select &7&l&oRich &7&oTag'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8&l[&2&lRIC&6&lH&8&l]'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: default
+ order: 24
+ withdrawable: true
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants: []
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&8&l[&2&lRIC&6&lH&8&l] &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: common
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
+ parkour:
+ tag:
+ - '&8&l[&7&lParkour&8&l]'
+ permission: supremetags.tag.Parkour
+ description:
+ - '&7&oClick to select &7&l&oParkour &7&oTag'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8&l[&7&lParkour&8&l]'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: default
+ order: 25
+ withdrawable: true
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants: []
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&8&l[&7&lParkour&8&l] &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: common
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
+ ultra:
+ tag:
+ - '&8&l[&b&lUltra&8&l]'
+ permission: supremetags.tag.Ultra
+ description:
+ - '&7&oClick to select &7&l&oUltra &7&oTag'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8&l[&b&lUltra&8&l]'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: default
+ order: 26
+ withdrawable: true
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants: []
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&8&l[&b&lUltra&8&l] &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ locked-tag:
+ displayname: '&7Tag: %tag%'
+ display-item: BARRIER
+ custom-model-data: 0
+ rarity: common
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
+ mega:
+ tag:
+ - '&8&l[&d&lMega&8&l]'
+ permission: supremetags.tag.Mega
+ description:
+ - '&7&oClick to select &7&l&oMega &7&oTag'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8&l[&d&lMega&8&l]'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: default
+ order: 27
+ withdrawable: true
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants: []
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&8&l[&d&lMega&8&l] &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: common
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
+ pro:
+ tag:
+ - '&8&l[&a&lPro&8&l]'
+ permission: supremetags.tag.Pro
+ description:
+ - '&7&oClick to select &7&l&oPro &7&oTag'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8&l[&a&lPro&8&l]'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: default
+ order: 28
+ withdrawable: true
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants: []
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&8&l[&a&lPro&8&l] &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: common
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
+ professional:
+ tag:
+ - '&8[&b&lProfessional&8]'
+ permission: supremetags.tag.Professional
+ description:
+ - '&7&oClick to select &7&l&oProfessional &7&oTag'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8&l[&b&lProfessional&8&l]'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: default
+ order: 29
+ withdrawable: true
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants: []
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&7&oClick to select &7&l&oProfessional &7&oTag &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: common
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
+ donator:
+ tag:
+ - '&8[&aDon&2ator&8]'
+ permission: supremetags.tag.Donator
+ description:
+ - '&7&oClick to select &7&l&oDonator &7&oTag'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8&l[&aDon&2ator&8&l]'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: default
+ order: 30
+ withdrawable: true
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants: []
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&8[&aDon&2ator&8] &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: common
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
+ teamkong:
+ tag:
+ - '&8&l[&9&lTeamKong&8&l]'
+ permission: supremetags.tag.TeamKong
+ description:
+ - '&7&oClick to select &7&l&oKong &7&oTag'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8&l[&9&lTeamKong&8&l]'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: default
+ order: 31
+ withdrawable: true
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants: []
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&8&l[&9&lTeamKong&8&l] &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: common
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
+ teamgodzilla:
+ tag:
+ - '&8&l[&6&lTeamGodzilla&8&l]'
+ permission: supremetags.tag.TeamGodzilla
+ description:
+ - '&7&oClick to select &7&l&oGodzilla &7&oTag'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8&l[&6&lTeamGodzilla&8&l]'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: default
+ order: 32
+ withdrawable: true
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants: []
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&8&l[&6&lTeamGodzilla&8&l] &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: legendary
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
+ experienced:
+ tag:
+ - '&8&l[&3&lExperienced&8&l]'
+ permission: supremetags.tag.Experienced
+ description:
+ - '&7&oClick to select &7&l&oExperienced &7&oTag'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8&l[&3&lExperience&8&l]'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: default
+ order: 33
+ withdrawable: true
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants: []
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&8&l[&3&lExperienced&8&l] &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: common
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
+ flash:
+ tag:
+ - '&8&l[&c&lFla&e&lsh&8&l]'
+ permission: supremetags.tag.Flash
+ description:
+ - '&7&oClick to select &7&l&oFlash &7&oTag'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8&l[&c&lFla&e&lsh&8&l]'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: default
+ order: 34
+ withdrawable: true
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants: []
+ effects:
+ - SPEED:1
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&8&l[&c&lFla&e&lsh&8&l] &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: common
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
+ superman:
+ tag:
+ - '&8&l[&9&lSuper&c&lman&8&l]'
+ permission: supremetags.tag.Superman
+ description:
+ - '&7&oClick to select &7&l&oSuperman &7&oTag'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8&l[&9&lSuper&c&lman&8&l]'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: default
+ order: 35
+ withdrawable: true
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants: []
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&8&l[&9&lSuper&c&lman&8&l] &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: common
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
+ booster:
+ tag:
+ - '&8&l[&d&lBooster&8&l]'
+ permission: supremetags.tag.Booster
+ description:
+ - '&7&oClick to select &7&l&oBooster &7&oTag'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8&l[&d&lBooster&8&l]'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: default
+ order: 36
+ withdrawable: true
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants: []
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&8&l[&d&lBooster&8&l] &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: common
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
+ elite:
+ tag:
+ - '&8&l[&f&lElite&8&l]'
+ permission: supremetags.tag.Elite
+ description:
+ - '&7&oClick to select &7&l&oElite &7&oTag'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8&l[&f&lElite&8&l]'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: default
+ order: 37
+ withdrawable: true
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants: []
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&8&l[&f&lElite&8&l] &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: common
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
+ superdonator:
+ tag:
+ - '&8&l[&a&lSuper&e&lDonator&8&l]'
+ permission: supremetags.tag.SuperDonator
+ description:
+ - '&7&oClick to select &7&l&oSuperDonator &7&oTag'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8&l[&a&lSuper&e&lDonator&8&l]'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: default
+ order: 38
+ withdrawable: true
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants: []
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&8&l[&a&lSuper&e&lDonator&8&l] &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: common
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
+ cool:
+ tag:
+ - '&8&l[&c&lCool&8&l]'
+ permission: supremetags.tag.Cool
+ description:
+ - '&7&oClick to select &7&l&oCool &7&oTag'
+ custom-placeholders:
+ # %custom-placeholder_%
+ # %supremetags_tag_custom-placeholder_%
+ nopermission: '&cYou do not have any permission to use &8&l[&c&lCool&8&l]'
+ wheretofind: '&eYou find this tag in &e&lExample Crate&e!'
+ category: default
+ order: 39
+ withdrawable: true
+ displayname: '&7Tag: %tag%'
+ custom-model-data: 0
+ display-item: NAME_TAG
+ variants: []
+ effects: []
+ voucher-item:
+ material: NAME_TAG
+ displayname: '&8&l[&c&lCool&8&l] &f&lVoucher'
+ custom-model-data: 0
+ glow: true
+ lore:
+ - '&7&m-----------------------------'
+ - '&eClick to equip!'
+ - '&7&m-----------------------------'
+ rarity: common
+ economy:
+ enabled: false
+ type: VAULT
+ amount: 200
\ No newline at end of file
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/PAPI.class.uniqueId0 b/build/tmp/compileJava/compileTransaction/stash-dir/PAPI.class.uniqueId0
new file mode 100644
index 0000000..23cccee
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/PAPI.class.uniqueId0 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/SupremeTags.class.uniqueId1 b/build/tmp/compileJava/compileTransaction/stash-dir/SupremeTags.class.uniqueId1
new file mode 100644
index 0000000..b5822fe
Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/SupremeTags.class.uniqueId1 differ
diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin
new file mode 100644
index 0000000..e076a14
Binary files /dev/null and b/build/tmp/compileJava/previous-compilation-data.bin differ
diff --git a/build/tmp/jar/MANIFEST.MF b/build/tmp/jar/MANIFEST.MF
new file mode 100644
index 0000000..6dfef43
--- /dev/null
+++ b/build/tmp/jar/MANIFEST.MF
@@ -0,0 +1,5 @@
+Manifest-Version: 1.0
+Main-Class: net.noscape.project.supremetags.SupremeTags
+Implementation-Title: SupremeTags
+Implementation-Version: 2.1.17
+
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..8bdaf60
Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..2a84e18
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,7 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-9.0.0-bin.zip
+networkTimeout=10000
+validateDistributionUrl=true
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/gradlew b/gradlew
index aeb74cb..ef07e01 100644
--- a/gradlew
+++ b/gradlew
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# Copyright © 2015-2021 the original authors.
+# Copyright © 2015 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -15,6 +15,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
+# SPDX-License-Identifier: Apache-2.0
+#
##############################################################################
#
@@ -55,7 +57,7 @@
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
-# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
@@ -83,7 +85,8 @@ done
# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
-APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
+# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
+APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
@@ -111,7 +114,7 @@ case "$( uname )" in #(
NONSTOP* ) nonstop=true ;;
esac
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+CLASSPATH="\\\"\\\""
# Determine the Java command to use to start the JVM.
@@ -130,10 +133,13 @@ location of your Java installation."
fi
else
JAVACMD=java
- which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+ if ! command -v java >/dev/null 2>&1
+ then
+ die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
+ fi
fi
# Increase the maximum file descriptors if we can.
@@ -141,7 +147,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
- # shellcheck disable=SC3045
+ # shellcheck disable=SC2039,SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
@@ -149,7 +155,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
'' | soft) :;; #(
*)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
- # shellcheck disable=SC3045
+ # shellcheck disable=SC2039,SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
@@ -198,16 +204,16 @@ fi
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
-# Collect all arguments for the java command;
-# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
-# shell script including quotes and variable substitutions, so put them in
-# double quotes to make sure that they get re-expanded; and
-# * put everything else in single quotes, so that it's not re-expanded.
+# Collect all arguments for the java command:
+# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
+# and any embedded shellness will be escaped.
+# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
+# treated as '${Hostname}' itself on the command line.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
- org.gradle.wrapper.GradleWrapperMain \
+ -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
"$@"
# Stop when "xargs" is not available.
diff --git a/gradlew.bat b/gradlew.bat
new file mode 100644
index 0000000..db3a6ac
--- /dev/null
+++ b/gradlew.bat
@@ -0,0 +1,94 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+@rem SPDX-License-Identifier: Apache-2.0
+@rem
+
+@if "%DEBUG%"=="" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%"=="" set DIRNAME=.
+@rem This is normally unused
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if %ERRORLEVEL% equ 0 goto execute
+
+echo. 1>&2
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
+echo. 1>&2
+echo Please set the JAVA_HOME variable in your environment to match the 1>&2
+echo location of your Java installation. 1>&2
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto execute
+
+echo. 1>&2
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
+echo. 1>&2
+echo Please set the JAVA_HOME variable in your environment to match the 1>&2
+echo location of your Java installation. 1>&2
+
+goto fail
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=
+
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
+
+:end
+@rem End local scope for the variables with windows NT shell
+if %ERRORLEVEL% equ 0 goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+set EXIT_CODE=%ERRORLEVEL%
+if %EXIT_CODE% equ 0 set EXIT_CODE=1
+if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
+exit /b %EXIT_CODE%
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/src/main/java/net/noscape/project/supremetags/guis/MainMenu.java b/src/main/java/net/noscape/project/supremetags/guis/MainMenu.java
index df608ac..e4d26fa 100644
--- a/src/main/java/net/noscape/project/supremetags/guis/MainMenu.java
+++ b/src/main/java/net/noscape/project/supremetags/guis/MainMenu.java
@@ -97,7 +97,12 @@ public void handleMenu(InventoryClickEvent e) {
String category = dataItem.get(e.getSlot());
if (category != null) {
- int slot = SupremeTags.getInstance().getCategoryManager().getCatConfig().getInt("categories." + category + ".slot");
+ List slots = new ArrayList<>();
+ if (SupremeTags.getInstance().getCategoryManager().getCatConfig().getInt("categories." + category + ".slot") != 0) {
+ slots = List.of(SupremeTags.getInstance().getCategoryManager().getCatConfig().getInt("categories." + category + ".slot"));
+ } else {
+ slots = SupremeTags.getInstance().getCategoryManager().getCatConfig().getIntegerList("categories." + category + ".slots");
+ }
String permission = SupremeTags.getInstance().getCategoryManager().getCatConfig().getString("categories." + category + ".permission");
String prefix = SupremeTags.getInstance().getConfigManager().getConfig("messages.yml").get().getString("messages.prefix");
@@ -112,7 +117,7 @@ public void handleMenu(InventoryClickEvent e) {
}
}
- if (e.getSlot() == slot) {
+ if (slots.contains(e.getSlot())) {
if (hasMinTags) {
if (permission != null && player.hasPermission(permission)) {
menuUtil.setCategory(category);
@@ -136,7 +141,12 @@ public void setMenuItems() {
boolean glow = SupremeTags.getInstance().getCategoryManager().getCatConfig().getBoolean("categories." + cats + ".glow");
String permission = SupremeTags.getInstance().getCategoryManager().getCatConfig().getString("categories." + cats + ".permission");
String material = SupremeTags.getInstance().getCategoryManager().getCatConfig().getString("categories." + cats + ".material");
- int slot = SupremeTags.getInstance().getCategoryManager().getCatConfig().getInt("categories." + cats + ".slot");
+ List slots = new ArrayList<>();
+ if (SupremeTags.getInstance().getCategoryManager().getCatConfig().getInt("categories." + cats + ".slot") != 0) {
+ slots = List.of(SupremeTags.getInstance().getCategoryManager().getCatConfig().getInt("categories." + cats + ".slot"));
+ } else {
+ slots = SupremeTags.getInstance().getCategoryManager().getCatConfig().getIntegerList("categories." + cats + ".slots");
+ }
int custom_model_data = SupremeTags.getInstance().getCategoryManager().getCatConfig().getInt("categories." + cats + ".custom-model-data");
String displayname = SupremeTags.getInstance().getCategoryManager().getCatConfig().getString("categories." + cats + ".id_display");
@@ -206,9 +216,10 @@ public void setMenuItems() {
cat_item.setItemMeta(cat_itemMeta);
- dataItem.put(slot, cats);
-
- inventory.setItem(slot, cat_item);
+ slots.forEach(slot -> {
+ dataItem.put(slot, cats);
+ inventory.setItem(slot, cat_item);
+ });
} else if (permission != null && !menuUtil.getOwner().hasPermission(permission) && !canSee) {
assert material != null;
ItemStack cat_item;
@@ -267,9 +278,10 @@ public void setMenuItems() {
cat_item.setItemMeta(cat_itemMeta);
- dataItem.put(slot, cats);
-
- inventory.setItem(slot, cat_item);
+ slots.forEach(slot -> {
+ dataItem.put(slot, cats);
+ inventory.setItem(slot, cat_item);
+ });
} else if (permission != null && menuUtil.getOwner().hasPermission(permission) && !canSee) {
assert material != null;
ItemStack cat_item;
@@ -323,9 +335,10 @@ public void setMenuItems() {
cat_item.setItemMeta(cat_itemMeta);
- dataItem.put(slot, cats);
-
- inventory.setItem(slot, cat_item);
+ slots.forEach(slot -> {
+ dataItem.put(slot, cats);
+ inventory.setItem(slot, cat_item);
+ });
}
}
}
diff --git a/src/main/java/net/noscape/project/supremetags/handlers/hooks/PAPI.java b/src/main/java/net/noscape/project/supremetags/handlers/hooks/PAPI.java
index 27db1a4..b4bc960 100644
--- a/src/main/java/net/noscape/project/supremetags/handlers/hooks/PAPI.java
+++ b/src/main/java/net/noscape/project/supremetags/handlers/hooks/PAPI.java
@@ -17,6 +17,7 @@
import java.util.UUID;
import java.util.stream.Collectors;
+import static net.noscape.project.supremetags.utils.Utils.format;
import static net.noscape.project.supremetags.utils.Utils.formatNumber;
public class PAPI extends PlaceholderExpansion {
@@ -163,7 +164,7 @@ private String getTagInfo(Tag t, String params, OfflinePlayer player, String act
String tagStr1 = (t.getCurrentTag() != null) ? t.getCurrentTag() : t.getTag().get(0);
String formatted = SupremeTags.getInstance().getConfig().getString("placeholders.tag.format");
- formatted = formatted.replace("%tag%", tagStr1);
+ formatted = format(formatted.replace("%tag%", tagStr1));
return PlaceholderAPI.setPlaceholders(player, formatted);
case "chattag":
@@ -173,7 +174,7 @@ private String getTagInfo(Tag t, String params, OfflinePlayer player, String act
String tagStr2 = (t.getCurrentTag() != null) ? t.getCurrentTag() : t.getTag().get(0);
String formatted2 = SupremeTags.getInstance().getConfig().getString("placeholders.chat.format");
- formatted2 = formatted2.replace("%tag%", tagStr2);
+ formatted2 = format(formatted2.replace("%tag%", tagStr2));
return PlaceholderAPI.setPlaceholders(player, formatted2);
case "scoreboardtag":
@@ -183,7 +184,7 @@ private String getTagInfo(Tag t, String params, OfflinePlayer player, String act
String sbStr = (t.getCurrentTag() != null) ? t.getCurrentTag() : t.getTag().get(0);
String sbformatted = SupremeTags.getInstance().getConfig().getString("placeholders.scoreboard.format");
- sbformatted = sbformatted.replace("%tag%", sbStr);
+ sbformatted = format(sbformatted.replace("%tag%", sbStr));
return PlaceholderAPI.setPlaceholders(player, sbformatted);
case "tabtag":
@@ -193,13 +194,13 @@ private String getTagInfo(Tag t, String params, OfflinePlayer player, String act
String tabStr = (t.getCurrentTag() != null) ? t.getCurrentTag() : t.getTag().get(0);
String tabformatted = SupremeTags.getInstance().getConfig().getString("placeholders.tab.format");
- tabformatted = tabformatted.replace("%tag%", tabStr);
+ tabformatted = format(tabformatted.replace("%tag%", tabStr));
return PlaceholderAPI.setPlaceholders(player, tabformatted);
case "identifier":
return t.getIdentifier();
case "description":
- return t.getDescription().stream().map(Utils::format).collect(Collectors.joining("\n"));
+ return format(t.getDescription().stream().map(Utils::format).collect(Collectors.joining("\n")));
case "permission":
return t.getPermission();
case "rarity":
@@ -231,7 +232,7 @@ private String getVariantInfo(Variant v, String params, OfflinePlayer player, St
String tag = v.getTag().get(0);
String formatted = SupremeTags.getInstance().getConfig().getString("placeholders.tag.format");
- formatted = formatted.replace("%tag%", tag);
+ formatted = format(formatted.replace("%tag%", tag));
text = PlaceholderAPI.setPlaceholders(player, formatted);
}
@@ -244,7 +245,7 @@ private String getVariantInfo(Variant v, String params, OfflinePlayer player, St
String tag = v.getTag().get(0);
String formatted = SupremeTags.getInstance().getConfig().getString("placeholders.chat.format");
- formatted = formatted.replace("%tag%", tag);
+ formatted = format(formatted.replace("%tag%", tag));
text = PlaceholderAPI.setPlaceholders(player, formatted);
}
@@ -257,7 +258,7 @@ private String getVariantInfo(Variant v, String params, OfflinePlayer player, St
String tag = v.getTag().get(0);
String formatted = SupremeTags.getInstance().getConfig().getString("placeholders.tab.format");
- formatted = formatted.replace("%tag%", tag);
+ formatted = format(formatted.replace("%tag%", tag));
text = PlaceholderAPI.setPlaceholders(player, formatted);
}
@@ -270,13 +271,13 @@ private String getVariantInfo(Variant v, String params, OfflinePlayer player, St
String tag = v.getTag().get(0);
String formatted = SupremeTags.getInstance().getConfig().getString("placeholders.scoreboard.format");
- formatted = formatted.replace("%tag%", tag);
+ formatted = format(formatted.replace("%tag%", tag));
text = PlaceholderAPI.setPlaceholders(player, formatted);
}
if (params.equalsIgnoreCase("description")) {
- text = v.getDescription().stream().map(Utils::format).collect(Collectors.joining("\n"));
+ text = format(v.getDescription().stream().map(Utils::format).collect(Collectors.joining("\n")));
return text;
}
diff --git a/src/main/java/net/noscape/project/supremetags/utils/Utils.java b/src/main/java/net/noscape/project/supremetags/utils/Utils.java
index 6c004b6..bd729a7 100644
--- a/src/main/java/net/noscape/project/supremetags/utils/Utils.java
+++ b/src/main/java/net/noscape/project/supremetags/utils/Utils.java
@@ -343,56 +343,54 @@ public static boolean isValidVersion(String version) {
}
public static boolean isVersionLessThan(String version) {
- String serverVersion = Bukkit.getVersion();
- String[] serverParts = serverVersion.split(" ")[2].split("\\.");
- String[] targetParts = version.split("\\.");
+ try {
+ String current = Bukkit.getBukkitVersion().split("-")[0];
- for (int i = 0; i < Math.min(serverParts.length, targetParts.length); i++) {
- if (!isValidVersion(serverParts[i]) || !isValidVersion(targetParts[i])) {
- return false;
- }
+ String[] currentParts = current.split("\\.");
+ String[] targetParts = version.split("\\.");
+
+ int length = Math.max(currentParts.length, targetParts.length);
- int serverPart = Integer.parseInt(serverParts[i]);
- int targetPart = Integer.parseInt(targetParts[i]);
+ for (int i = 0; i < length; i++) {
+ int currentNum = i < currentParts.length
+ ? Integer.parseInt(currentParts[i])
+ : 0;
- if (serverPart < targetPart) {
- return true;
- } else if (serverPart > targetPart) {
- return false;
+ int targetNum = i < targetParts.length
+ ? Integer.parseInt(targetParts[i])
+ : 0;
+
+ if (currentNum < targetNum) return true;
+ if (currentNum > targetNum) return false;
}
+
+ return false;
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
}
- return serverParts.length < targetParts.length;
}
- /**
- * Gets a simplified major version (..., 9, 10, ..., 14).
- * In most cases, you shouldn't be using this method.
- *
- * @return the simplified major version, or -1 for bungeecord
- * @since 1.0.0
- */
private static int getVersion() {
- if (!classExists("org.bukkit.Bukkit") && classExists("net.md_5.bungee.api.ChatColor")) {
+ if (!classExists("org.bukkit.Bukkit") &&
+ classExists("net.md_5.bungee.api.ChatColor")) {
return -1;
}
- String version = Bukkit.getVersion();
- Validate.notEmpty(version, "Cannot get major Minecraft version from null or empty string");
-
- // getVersion()
- int index = version.lastIndexOf("MC:");
- if (index != -1) {
- version = version.substring(index + 4, version.length() - 1);
- } else if (version.endsWith("SNAPSHOT")) {
- // getBukkitVersion()
- index = version.indexOf('-');
- version = version.substring(0, index);
- }
- // 1.13.2, 1.14.4, etc...
- int lastDot = version.lastIndexOf('.');
- if (version.indexOf('.') != lastDot) version = version.substring(0, lastDot);
+ try {
+ String bukkitVersion = Bukkit.getBukkitVersion();
+
+ String mcVersion = bukkitVersion.split("-")[0];
- return Integer.parseInt(version.substring(2));
+ String[] parts = mcVersion.split("\\.");
+
+ return Integer.parseInt(parts[1]);
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ return 21; // safe fallback
+ }
}
/**
@@ -476,7 +474,7 @@ public static void take(Player player, String economyType, double cost, String t
/**
* Supports comparisons like:
- * - >=, <=, >, <, ==, !=
+ * - >=, <=, >, <, ==, !=
*/
private static boolean evaluateCondition(String condition) {
condition = condition.replace(" ", "");
@@ -499,8 +497,8 @@ private static boolean evaluateCondition(String condition) {
return switch (op) {
case ">=" -> left >= right;
case "<=" -> left <= right;
- case ">" -> left > right;
- case "<" -> left < right;
+ case ">" -> left > right;
+ case "<" -> left < right;
case "==" -> left == right;
case "!=" -> left != right;
default -> false;