Player-driven reputation system for Minecraft servers.
Let players like and dislike each other, browse reputations in a GUI, and rank the whole server.
- 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.
- 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.
- Download the latest
AstraRating.jarfrom Releases. - Drop it into your server's
plugins/folder. - Start the server once to generate the default configuration.
- 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.
| 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 |
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.
All files live in plugins/AstraRating/.
# 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: falseAstraRating 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.
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 |
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"Listed as an optional soft-dependency for the need_discord_linked voting requirement.
If our projects help you, consider supporting their development.
|
Bitcoin |
|
|
Ethereum |
|
|
Boosty |
|
- Author: Makeev Roman Β· makeevrserg@gmail.com
- Organization: AstraInteractive Β· empireprojekt.ru
- More plugins: github.com/Astra-Interactive
