Updated Rank GUI to display Rank Name in the path instead of path (rank) ID
Updated Rank GUI to better identify Job Costs for players
Bug fix for gold passive
Bug fix for quest requirements
Created and implemented database interface class to reduce duplicate code and improve database management
Improved kill count SQLite/MySQL queries to reduce database calls and optimize performance
Updated legacy discord calls to strip colors
Added Discord SRV support - falls back to legacy mode if you do not have DiscordSRV
structure.yml removed in lieu of new Web UI
Experimental
New Web UI!!! (Requires DiscordSRV with linked accounts) - Simple, Lightweight, and Convenient GUI for displaying plugin information including a visual representation of your rank tree. Created dynamically using the set configuration.
Simply setup web.yml to initiate the webserver on plugin startup.
Players will be able to login using Discord at the designated port (which is confirmed working through reverse proxy)
128-bit OAuth Discord authentication
Set login expiration - Default 30 days (expires on server restart)
OP Users will see additional plugin data (Rank ID, Path ID, Quest ID, commands, etc.)
Light/Dark mode toggle
MC Color code conversion
Run quest PAPI placeholders - giving players the ability to see if they meet the requirement
WebGUI includes:
/index.html
/quests.html
/tree.html
/kills.html
/<rankID>.html - accessible via /tree.html
Changed quest timer logic to set only after turning quest in.
Fixed null error when opening quest GUI using MySQL.
Placeholder API logic for quest requirements.
Note: for placeholders returning a number such as player_level, kills, etc the required number set is a minimum. I.e. below the player requires minimum level of 10.
Suggestion: NEW REQUIREMENT FOR QUESTS
PlaceholderAPI Match: Complete the quest if the Placeholder matches the value in quests.yml
Examples:
Requirements: ["PAPI:%player_level%", 10]
Requirements: ["PAPI:%player_is_op%", "yes"]
Requirements: ["PAPI:%player_gamemode%", "survival"]
Example quests.yml:
Code:Quest1: # This can be anything - no duplicates # Quest title Title: "&dQuest1" # Quest GUI Object Button: STICK # Cooldown - set to 0 for no cool down Cooldown: 300 # 5 minutes # Quest completion limit Limit: -1 # No limit # Quest lore Lore: - "&fGIVE ME COAL" - "&dRight click to turn in quest" - "&cRequirements: 10 Coal, 5 Iron Ore" - "&e&lRewards: 300 Dollars, 3 Raindrops, 1 Diamond, 1 MelonWand" # Format: <Requirement, Amount> # Note: Only accepts vanilla items Requirements: ["PAPI:%player_level%", 10, "PAPI:%player_is_op%", "yes", "PAPI:%player_gamemode%", "survival", COAL, 10, IRON_ORE, 5] # Quest money reward Economy: # Current rewards (-1 to disable) Vault: 300 # Your economy currency Currency: 3 # Plugin currency - Set the currency name in the config # Format: <Reward>, <Number> # Number = amount if material or number of times the command will run # Command Format: CMD:<command> Reward: [DIAMOND, 1, "CMD:/rq melonwand %player_name% 10", 1] # Message upon completing a quest Messages: Discord: false Logger: false Broadcast: false Player: false Completed: "%player_name% completed Quest1!"
Added 2.2.0 perms to plugin.yml
Updated tab complete to filter by first letter
Added PotionCount to tab complete
Check if sync enabled before initiating runnable - instead of after - reducing overhead if disabled
By Request: Randomly available quests - A broadcast message will be sent when the server detects or changes the quests available. Number of quests available and cool down are configurable.
New config options:
config.yml
Code:Quests: # Enables randomly available quests Random: false # Number of quests randomly available Available: 2 # Cool down before new quests are available - server wide - seconds CoolDown: 86400 # If using MySQL - One server must have this enabled to use Quest Random Available across server networks # If this is enabled - every server will select and change the available quests when the timer is met # For SQLite users - Leave enabled Master: true MySQL: # Quest Random table - only used if random is enabled random_table: random
