Skip to content

The open source ticket plugin, originally for Xeno, now for everyone

License

Notifications You must be signed in to change notification settings

xeno-fi/aquamarine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Aquamarine is an open source ticket plugin for Spigot servers.

Features

  • 📙 MySQL/MariaDB support (but also flat-file, if you want it simple)
  • ✅ Simple permissions
  • 🚫 Configurable limits for open tickets per player or inside a radius
  • 📝 GUI and commands - easy access for everyone
  • 💬 Discord webhook support

Installation

  1. Download the .jar file
  2. Move the .jar file to your server's plugins folder
  3. Restart your server
  4. Configure the plugin on plugins/aquamarine/config.yml (see details further down)
  5. Restart your server again

Commands

Player commands

  • /ticket [message]

    • Will open a new ticket in the current location
    • Aliases: /apupyyntö, /avunpyyntö, /tiketti, /helpop
  • /tickets

    • Shows a list of your recent tickets
    • Aliases: /apupyynnöt, /avunpyynnöt, /tiketit

Staff commands

  • /xt

    • Lists unresolved (open) tickets
    • /xt help
      • Shows a help index
    • /xt all and /xt all [page]
      • Lists all tickets (including open and closed tickets)
    • /xt player [name] and /xt player [name] [page]
      • Lists all tickets created by a player
    • /xt view [id]
      • Shows a certain ticket
    • /xt goto [id]
      • Teleports you to a certain ticket
    • /xt solve [id] and /xt solve [id] [comment]
      • Solves (closes) a ticket, with or without a comment (visible to the player)
  • /xti

    • Shows the ticket GUI

Permissions

  • aquamarine.staff

    • Permission to list and solve (close) tickets
  • aquamarine.ticket

    • Permission to open new tickets

Configuring

Storage methods available are

  • file (flat-file as JSON in the plugin folder)
  • mysql (MySQL/MariaDB, configure the connection below), or
  • memory (not persistent - will not save anything)
storage-method: "file"

Database connection - configure your MySQL/MariaDB connection if you use mysql as your storage method. Otherwise these settings can be ignored.

mysql-host: localhost
mysql-port: 3306
mysql-user: user
mysql-pass: pass
mysql-db: database
mysql-table: aquamarine_tickets

Max tickets per radius - this setting will limit the ability to create tickets close to each other (inside a radius). For example, with the settings below, only 3 tickets can be opened simultaneously within a 5 block radius.

enable-max-per-radius: true
check-radius: 5.0
max-per-radius: 3

Max tickets per player - this setting will limit the player's ability to create tickets while old ones have not been resolved.

enable-max-per-player: true
max-per-player: 3

Message prefix - used in the beginning of every system message sent by this plugin

message-prefix: "&8[&bAquamarine&8] &7"

Date format - used when displaying dates and times in the GUI and the chat view of tickets. Uses SimpleDateFormat.

date-format: "dd.MM.yyyy kk:mm:ss"   # (SimpleDateFormat)

Join announcement - when a player with admin/moderator permissions joins, they will be notified about unresolved tickets. Set the delay of the announcement in seconds.

enable-join-announce: true
join-announce-delay-seconds: 5

Discord webhook - enable this and add a webhook URL to receive announcements about new tickets to your Discord server.

enable-webhook: false
webhook-url: https://example.com/

In English?

The plugin's built-in language file is written in Finnish. Copy and paste the following to the lang.yml file to use the plugin in English:

# Language file for XAquamarine
generic-no-permission: "You don't have the permission to do that."
generic-not-player: "This command only works for players."
generic-invalid-number: "Invalid number: &b$n$"
generic-ticket-not-found: "The ticket was not found."
generic-invalid-ticket: "Invalid ticket or ticket world. Are all worlds loaded?"
generic-invalid-player: "No such player '$player$'. Are you sure that they have played here with that name?"
generic-no-tickets: "No tickets were found."
generic-previous: "Previous"
generic-next: "Next"
generic-page: "Page "

gui-click-teleport: "Left-click to teleport"
gui-click-solve: "Right-click to resolve"

command-ticket-usage: "Usage: &b/$label$ [message]"
command-ticket-goto-usage: "Usage: &b/$label$ goto [id]"
command-ticket-goto-teleport: "Woosh! And here we are."
command-ticket-solve-usage: "Usage: &b/$label$ solve [id] [optional message]"
command-ticket-solved: "&b$solver$ &7resolved the ticket &b#$n$&7: &f&o$comment$"
command-ticket-view-usage: "Usage: &b/$label$ view [id]"
command-ticket-player-usage: "Usage: &b/$label$ player [player] [page]"

ticket-deny-nearby: "You may not open a new ticket here, as several tickets have already been opened nearby."
ticket-deny-player: "You may not open a new ticket, as you already have several unresolved tickets waiting."

ticket-created: "You opened a new ticket. Number: &b$ticketId$"
ticket-created-announcement: "&b$player$ &7opened a new ticket &b#$ticketId$&7:"
ticket-join-announcement: "There are &b$ticketCount$ unsolved tickets waiting"

ticket-preview-teleport: "Teleport"
ticket-preview-solve: "Mark as resolved"

ticket-hover-title: "&bTicket #$ticketId$"
ticket-hover-sender: "&7Sent by: &f%s"
ticket-hover-timestamp: "&7Timestamp: &f%s"
ticket-hover-location: "&7Location: &f%s"

ticket-hover-solver: "&7Solved by: &f%s"
ticket-hover-solved-at: "&7Solved: &f%s"
ticket-hover-comment: "&7Comment:"