Skip to content

Repository files navigation

AstraRating logo

AstraRating

Player-driven reputation system for Minecraft servers.

Let players like and dislike each other, browse reputations in a GUI, and rank the whole server.


Supported version

  • Loader: Paper (Bukkit/Spigot-based)
  • Minecraft: 1.13+ (api-version: 1.13)
  • Java: 21

AstraRating registers its commands through Paper's modern Brigadier command API, so a recent Paper build is recommended.


Features

  • Player ratings — players give each other a +1 (like) or -1 (dislike) together with a short message explaining why.
  • Ratings leaderboard GUI — an in-game menu listing every rated player, sortable and paginated.
  • Per-player reviews GUI — open any player's page to read every rating and message they received.
  • Daily vote limits — cap how many votes a player may cast per day, and how many times they may vote for the same player. Limits are configurable and can be raised per group via permissions.
  • Moderation — staff can delete individual ratings/reports straight from the GUI.
  • Message validation — enforce a minimum and maximum message length and trim long messages in the GUI.
  • Kill penalty (optional) — automatically change a killer's rating when they kill a positively-rated player.
  • PlaceholderAPI support — expose a player's rating value and a configurable rating color.
  • Multiple databases — H2 (default), SQLite, MySQL, or MariaDB.
  • Live reload — reload configuration and even switch databases at runtime, no restart required.
  • bStats metrics.

Installation

  1. Download the latest AstraRating.jar from Releases.
  2. Drop it into your server's plugins/ folder.
  3. Start the server once to generate the default configuration.
  4. Edit the files in plugins/AstraRating/ and run /aratingreload.

The JDBC drivers (H2, SQLite, MySQL, MariaDB) are downloaded automatically as plugin libraries on first start.


Commands & permissions

Command Description Permission
/arating Open the ratings leaderboard GUI
/arating rating Open the ratings leaderboard GUI
/arating rating <like|dislike|+|-> <player> <message> Give a +1 / -1 rating to a player with a message astra_rating.vote
/arating player <player> Open the reviews GUI for a specific player
/aratingreload Reload configuration and translations astra_rating.reload

Capability permissions

These permissions are not tied to a single command — they grant abilities or raise limits:

Permission Effect
delete_report.vote Show and allow the "delete report" button inside the reviews GUI
astra_rating.max_rate_per_day.<N> Allow up to N total votes per day (overrides max_rating_per_day)
astra_rating.single_player_rate_per_day.<N> Allow up to N votes per day on the same player (overrides max_rating_per_player)

The .<N> suffix is read as a weighted permission: assign the highest number you want a group to have, e.g. astra_rating.max_rate_per_day.20.


Configuration

All files live in plugins/AstraRating/.

config.yml

# Maximum number of ratings a player may give per day (overridable via astra_rating.max_rate_per_day.<N>)
max_rating_per_day: 5
# Maximum number of ratings a player may give to the same player per day
# (overridable via astra_rating.single_player_rate_per_day.<N>)
max_rating_per_player: 1
# Require the voter to have a linked DiscordSRV account
need_discord_linked: false
# Minimum time played on the server required before a player may rate others
min_time_on_server: 0
# Minimum time on Discord required before a player may rate others
min_time_on_discord: 0
# Allowed rating message length
min_message_length: 5
max_message_length: 30
# Trim displayed messages after this many characters in the GUI
trim_message_after: 10
cut_words: false
gui:
  show_first_connection: true
  show_last_connection: true
  show_delete_report: true
  # Date format used in the GUI
  format: "yyyy-MM-dd"
  buttons:
    back:
      material: "PAPER"
      custom_model_data: 0
    prev:
      material: "PAPER"
      custom_model_data: 0
    next:
      material: "PAPER"
      custom_model_data: 0
    sort:
      material: "SUNFLOWER"
      custom_model_data: 0
events:
  # Lower the killer's rating when they kill a player who has a positive rating
  kill_player:
    change_by: -1
    enabled: false
debug: false

database.yml

AstraRating stores ratings through a flexible database configuration. The default is a local H2 file — no setup required. Switch the type to use another backend.

Database examples

H2 (default, file-based):

rating_database:
  type: "H2"
  path: "./plugins/AstraRating/ASTRA_RATING_RATINGS"

SQLite (file-based):

rating_database:
  type: "SQLite"
  path: "./plugins/AstraRating/ratings.db"
  arguments: [ ]

MySQL (recommended for production):

rating_database:
  type: "MySql"
  host: "localhost"
  port: 3306
  user: "astra_rating"
  password: "your_secure_password"
  name: "astra_rating"
  arguments:
    - "useSSL=false"
    - "allowPublicKeyRetrieval=true"
    - "serverTimezone=UTC"

MariaDB:

rating_database:
  type: "MariaDB"
  host: "localhost"
  port: 3306
  user: "astra_rating"
  password: "your_secure_password"
  name: "astra_rating"
  arguments:
    - "useSSL=false"

Changing this file and running /aratingreload reconnects to the new database without a restart.


Integrations

PlaceholderAPI

When PlaceholderAPI is installed, AstraRating registers the erating expansion:

Placeholder Description
%erating_rating% The player's total rating
%erating_color% A hex color for the player's rating, based on the thresholds in papi.yml

papi.yml — rating colors

Define color thresholds for %erating_color%. Entries are evaluated by value; cover every interval so there are no gaps.

# Sorted by value: e.g. [-10, -5, 0, 5, 10]
# Fill ALL gaps/intervals — uncovered ratings produce an error in console.
# Remove the colorings section to disable this feature.
colorings:
  # (-inf, -10)
  - type: "LESS"
    value: -10
    color: "#9c0303"
  # [-10, 0)
  - type: "LESS"
    value: 0
    color: "#eb3131"
  # [0]
  - type: "EQUALS"
    value: 0
    color: "#FFFFFF"
  # (0, 10]
  - type: "MORE"
    value: 0
    color: "#51a8f5"
  # (10, +inf)
  - type: "MORE"
    value: 10
    color: "#0872cf"

DiscordSRV

Listed as an optional soft-dependency for the need_discord_linked voting requirement.


💜 Support Us

If our projects help you, consider supporting their development.

BTC
Bitcoin
bc1q9a8dr55jgfae0mhevw3vvczegjv0khfp0ngrnv
ETH
Ethereum
0x0BaAeEA44Ce08c8DC139224ff57563695B30d423
Boosty
Boosty
Donate on Boosty

Links

bStats

Releases

Packages

Used by

Contributors

Languages