✨ LetsPlaytest ✨ 1.19.4 - 1.21.5 ✨ Playtest Made Easy ✨ icon

✨ LetsPlaytest ✨ 1.19.4 - 1.21.5 ✨ Playtest Made Easy ✨ -----

Let players playtest your server for a short period of time!



[​IMG]
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
  • /playtest requestreset <player> - Request review reset
  • /playtest confirmreset - Accept reset request
  • /playtest denyreset - Deny reset request
Configuration
  • /playtest reload - Reload plugin configuration
Permissions:
  • playtest.admin
    • Default: Op
  • playtest.rate
    • Default: True
  • playtest.reviews
    • Default: Op

Permissions:
  • playtest.admin
    • Default: Op
Duration Format:
  • d: day(s) // 7d
  • h: hour(s) // 7h
  • m: minute(s) // 7m
  • (t): time(s) // The player will be able to join X times (/playtest addplayer steve 5)
FILES
Code (Text):

# 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.
''
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.'

# 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!"
 

PLANS
  1. HEX Colors Support (✔) - Available in 1.1.0+
  2. Players Feedback (✔) - Available in 1.1.0+
Resource Information
Author:
----------
Total Downloads: 34
First Release: Mar 29, 2025
Last Update: Mar 30, 2025
Category: ---------------
All-Time Rating:
0 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings