The LetsPlaytest plugin allows server owners to easily whitelist players for a specified duration, enabling exclusive playtesting. Choose between global access, where all players can join without individual whitelisting or a per-player whitelist for targeted testing. Perfect for gathering feedback and improving your server!
P.S. Take a look at our Modrinth page! Updates roll out faster there!
DEPENDENCIES Java Version:17+ Server Version: 1.19.4+
FEATURES
Playtest Mode: Easily toggle a dedicated playtest mode for server testing.
Global Whitelist: Allow all players to join without individual whitelisting for a specified duration.
Per-Player Whitelist: Add specific players to the whitelist with customizable expiration times and limits on join counts.
Database Support: Choose between SQLite and MySQL for storing player and staff data, with improved structure for ratings and joins.
Rating System: Enable players to rate the server with a star system and provide feedback through a user-friendly GUI. Also, reward your players for rating your server!
Reset Request System: Allow players to request a reset of their ratings, with confirmation and expiration features.
HEX Color Support: Use HEX color codes for messages, enhancing visual customization while retaining legacy color codes.
Notifications: Inform players of join status and playtest mode activities, including average ratings.
Command Management: Intuitive command structure for managing playtests, including adding/removing players and staff, and viewing player lists.
COMMANDS
Playtest Management
/playtest toggle - Toggle playtest mode
/playtest global <duration> - Enable global playtest
/playtest disableglobal - Disables global playtest
/playtest status - Views the status of the playtest
Player Management
/playtest addplayer <player> <duration> - Add a player
/playtest removeplayer <player> - Remove a player
/playtest playerslist - List of playtest players
Staff Management
/playtest addstaff <player> - Add a staff member
/playtest removestaff <player> - Remove a staff member
/playtest stafflist - List of staff members
Review Management
/playtest reviews - Views all the playtester’s reviews
# 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.
''
Code (Text):
# 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.'
# 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.'
# 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!"