Major:
- Added: Rating system for players to provide feedback.
- Added: GUI for rating with star selection and feedback input.
- Added: Reset request system for players to reset their ratings.
- Added: Support for HEX color codes, allowing server owners to use RGB colors alongside traditional legacy color codes for better customization.
Minor:
- Improved: Database structure with new tables for ratings and global joins.
- Improved: Notification system for player joins and playtest mode status.
- Improved: Command structure for easier management of players and staff.
Fixes:
- Fixed: Various bug fixes and performance improvements.
- Fixed: Adding a duration using time causes the plugin to produce a null error (e.g /playtest addplayer steve 0)
Please update your config.yml & messages.yml:
Updated: config.yml
# LetsPlaytest Plugin Configuration
# Thank you for installing my plugin! <3
# Database Configuration
database:
# Supported types: sqlite, mysql
type: sqlite
# MySQL Configuration (only used if the type is 'mysql')
mysql:
host: localhost
port: 3306
database: minecraft
username: root
password: ''
notifications:
join-alerts: true
rewards:
enabled: true
star-rewards:
5:
- "give %player% diamond 3"
- "eco give %player% 1000"
4:
- "give %player% diamond 1"
- "eco give %player% 500"
3:
- "give %player% gold 32"
2:
- "give %player% iron 3"
1:
- "give %player% coal 1" # No hard feelings :)
rating:
# Whether feedback is required after rating
feedback-required: true
feedback-min-length: 10 # Minimum characters (0 to disable)
feedback-max-length: 200 # Maximum characters (0 to disable)
# Rating items configuration
# Hex code support is available
# Format: &#FFFFFF
rating-items:
1:
material: "RED_STAINED_GLASS_PANE"
custom-model-data: 1001
name: "&fPoor" # Do not add any color other than white, it will be removed automatically.
lore:
- "&7Click to rate 1 star"
- "&eLowest rating"
2:
material: "ORANGE_STAINED_GLASS_PANE"
custom-model-data: 1002
name: "&fDecent" # Do not add any color other than white, it will be removed automatically.
lore:
- "&7Click to rate 2 stars"
- "&eBelow average"
3:
material: "YELLOW_STAINED_GLASS_PANE"
custom-model-data: 1003
name: "&fOkay" # Do not add any color other than white, it will be removed automatically.
lore:
- "&7Click to rate 3 stars"
- "&eAverage experience"
4:
material: "LIME_STAINED_GLASS_PANE"
custom-model-data: 1004
name: "&fGood" # Do not add any color other than white, it will be removed automatically.
lore:
- "&7Click to rate 4 stars"
- "&eAbove average"
5:
material: "BLUE_STAINED_GLASS_PANE"
custom-model-data: 1005
name: "&fExcellent" # Do not add any color other than white, it will be removed automatically.
lore:
- "&7Click to rate 5 stars"
- "&ePerfect experience"
confirm-button:
material: "LIME_DYE"
custom-model-data: 1010
name: "&aConfirm Rating" # Color can be changeable
lore:
- "&7Click to confirm your rating"
- "&eYou can't edit your review later"
close-button:
material: "BARRIER"
custom-model-data: 0
name: "&cClose" # Color can be changeable
lore:
- "&7Click to cancel rating"
- "&7No rating will be saved"
# To change the GUI title check messages.yml
# And find "rating-gui-title" all the way down.
Updated: messages.yml
# LetsPlaytest Plugin Messages Configuration
# Hex code support is available
# Format: &#FFFFFF
# Player-related messages
player-add-success: '&6[LetsPlaytest] &aAdded {0} to playtest list.'
player-remove-success: '&6[LetsPlaytest] &aRemoved {0} from playtest list.'
player-not-found: '&6[LetsPlaytest] &cPlayer not found.'
player-already-in-list: '&6[LetsPlaytest] &cPlayer is already in the playtest list.'
player-not-in-list: '&6[LetsPlaytest] &cPlayer is not in the playtest list.'
# Staff-related messages
staff-add-success: '&6[LetsPlaytest] &aAdded {0} to staff list.'
staff-remove-success: '&6[LetsPlaytest] &aRemoved {0} from staff list.'
staff-not-found: '&6[LetsPlaytest] &cStaff member not found.'
staff-already-in-list: '&6[LetsPlaytest] &cPlayer is already a staff member.'
staff-not-in-list: '&6[LetsPlaytest] &cPlayer is not a staff member.'
# Playtest mode messages
playtest-mode-enabled: '&6[LetsPlaytest] &ePlaytest mode &aEnabled'
playtest-mode-disabled: '&6[LetsPlaytest] &ePlaytest mode &cDisabled'
# New notification messages with status placeholder
playtest-mode-active-notification: '&6[LetsPlaytest] &ePlaytest mode is currently &6{status}!'
playtest-mode-inactive-notification: '&6[LetsPlaytest] &ePlaytest mode is currently &c{status}.'
playtest-join-notification: "&6[LetsPlaytest] This server is in playtest mode with an overall rating of &e{average}&6/&e5"
playtest-join-staff-notification: "&6[LetsPlaytest] &ePlaytest mode is currently &6ACTIVE"
# Global playtest messages
global-playtest-notification: "&6[LetsPlaytest] &aGlobal playtest has been enabled for {duration}."
global-playtest-disabled-notification: "&6[LetsPlaytest] &cGlobal playtest has been disabled."
global-playtest-enabled: '&6[LetsPlaytest] &eGlobal playtest &aenabled &efor {duration}'
global-playtest-disabled: '&6[LetsPlaytest] &eGlobal playtest &cdisabled &epermanently.'
global-playtest-error: '&6[LetsPlaytest] &cError setting global playtest.'
# Command usage messages
command-usage-addplayer: '&6[LetsPlaytest] &cUsage: /playtest addplayer <player> <duration>'
command-usage-removeplayer: '&6[LetsPlaytest] &cUsage: /playtest removeplayer <player>'
command-usage-addstaff: '&6[LetsPlaytest] &cUsage: /playtest addstaff <player>'
command-usage-removestaff: '&6[LetsPlaytest] &cUsage: /playtest removestaff <player>'
command-usage-global: '&6[LetsPlaytest] &cUsage: /playtest global <duration>'
command-usage-invalid-duration: '&6[LetsPlaytest] &cInvalid duration format. Use 5d, 3h, 30m, or just a number.'
command-usage-invalid: '&6[LetsPlaytest] &cUnknown subcommand. Use /playtest for help.'
command-no-permissions: '&6[LetsPlaytest] &cYou don''t have enough permissions to do this.'
# Kick messages
playtest-kick-message: '&6This server is currently in playtest mode. You are not authorized to join yet.'
playtest-expired-message: '6Your playtest access has expired.'
playtest-join-limit-message: '&6You have reached your maximum number of joins.'
# Database error messages
database-error-general: '&6[LetsPlaytest] &cA database error occurred. Please contact an administrator.'
database-error-connection: '&6[LetsPlaytest] &cFailed to establish database connection.'
# Help command messages
help-header: '&6[LetsPlaytest] &fCommands:'
help-toggle: '&6/playtest toggle &7- Toggle playtest mode'
help-addplayer: '&6/playtest addplayer <player> <duration> &7- Add a player'
help-removeplayer: '&6/playtest removeplayer <player> &7- Remove a player'
help-addstaff: '&6/playtest addstaff <player> &7- Add a staff member'
help-removestaff: '&6/playtest removestaff <player> &7- Remove a staff member'
help-global: '&6/playtest global <duration> &7- Enable global playtest'
help-disableglobal: '&6/playtest disableglobal &7- Disables global playtest'
help-status: '&6/playtest status &7- Views the status of the playtest'
help-reviews: '&6/playtest reviews &7- Views all the playtester''s reviews'
help-requestreset: "&6/playtest requestreset <player> &7- Request review reset"
help-confirmreset: "&6/playtest confirmreset &7- Accept reset request"
help-denyreset: "&6/playtest denyreset &7- Deny reset request"
help-playerslist: '&6/playtest playerslist &7- List of playtest players'
help-stafflist: '&6/playtest stafflist &7- List of staff members'
help-reload: '&6/playtest reload &7- Reload plugin configuration'
# Reload
reload-message: '&6[LetsPlaytest] Playtest plugin configuration reloaded successfully.'
# List headers
playtest-players-header: '&6--- Playtest Players ---'
playtest-status-header: "&#FFAA00--- Playtest Status ---"
staff-members-header: '&6--- Staff Members ---'
player-list-format: "&7{player} - {expiration_info}"
staff-list-format: "&7{staff_member}"
# Status Messages
playtest-mode-status: "&ePlaytest Mode: &f{0}"
global-playtest-active: "&eGlobal Playtest: &6Active for {time}"
global-playtest-expired: "&eGlobal Playtest: &fExpired"
global-playtest-not-active: "&eGlobal Playtest: &fNot Active"
active-player-count: "&eActive Playtest Players: &f{0}"
staff-count: "&eStaff Members: &f{0}"
playtest-expiration: "&eYour access expires in: &f{time}"
# Rating Summary Messages
overall-rating: "&6Overall Rating: &#FFFFFF{average}/5 (from {count} reviews)"
rating-distribution: "&6Rating Distribution:"
rating-stars: "&6{stars} &f{count} reviews"
# Review Command Messages
reviews-header: "&6--- Player Reviews ---"
review-format: "&6{player}: {rating}/5 - &7{feedback}"
no-reviews: "&6No reviews found."
reviews-usage: "&6Usage: /playtest reviews [page]"
review-page: "&6Page {current}/{total}"
# Rating and Feedback Messages
rating-gui-title: "&8Rate this Server" # <- it's right here
rating-message: "&6[LetsPlaytest] Please rate your experience with /letsrateit"
rating-overall-message: "&6[LetsPlaytest] This server is in playtest mode with the overall rating of {rating}/5"
rating-success: "&6[LetsPlaytest] Thank you for your rating of {0}/5!"
rating-error: "&6[LetsPlaytest] &cThere was an error saving your review! Please contact an administrator."
reward-message: "&6[LetsPlaytest] You received rewards for your {rating}-star review! ({rewards_count} items)"
feedback-prompt: "&6[LetsPlaytest] Please type your feedback in chat (or type 'cancel' to skip):"
feedback-success: "&6[LetsPlaytest] Thank you for your feedback!"
feedback-cancelled: "&6[LetsPlaytest] Feedback submission cancelled."
rating-already-given: "&6[LetsPlaytest] You've already rated this server."
rating-no-permission: "&6[LetsPlaytest] You don't have permission to rate this server."
feedback-too-short: "&6[LetsPlaytest] Your feedback must be at least {0} characters long."
feedback-too-long: "&6[LetsPlaytest] Your feedback cannot exceed {0} characters."
reset-request-sent: "&6[LetsPlaytest] &eSent review reset request to &6{player}"
reset-request-received: "&6[LetsPlaytest] &eAdmin wants to reset your review. Type &6/playtest confirmreset &eor &6/playtest denyreset"
reset-success: "&6[LetsPlaytest] Your review has been reset! You can submit a new one now."
reset-denied: "&6[LetsPlaytest] Review reset request denied."
reset-expired: "&6[LetsPlaytest] Reset request is either expired or doesn't exist."
admin-reset-cancelled: "&6[LetsPlaytest] Player {player} has &cdenied &6the review reset."
admin-reset-confirmed: "&6[LetsPlaytest] Player {player} has &aaccepted &6the review reset!"