Plugin Release Radio — powerful broadcast abilities

Download Link
https://github.com/vie10/radio/releases/download/v1.2.0/spigot-1.12.2-radio-1.2.0.jar
Source Code
https://github.com/vie10/radio
Minecraft Versions
1.12+
Compatible Java Versions
8+
Radio

Radio is a paper plugin for providing the best experience of interaction with broadcasting.

Benefits:
  • Customisable permission system (manage commands and styles that your players can use).
  • Suggestions system (your players can suggest you news for broadcast).
  • Flexible GUI with a lot of abilities to custom.
  • Easy customization (every message used in the plugin can be edited in a config).
  • Different styles for every broadcast (declare so many as you want in a config).
  • Open-source (full access to the plugin code and a chance make it better).
  • Smart configuration system (declare variables and then use it for easy config changes).

Visual

In next list is declared subcommands of /radio that's fully customisable.
  • broadcast <style> <message> — broadcast a message in the style.
  • suggest <message> — suggest a message to broadcast (require approve by admin).
  • suggestions — list of suggestions in declared format.
  • approve <suggestion id> <style> — broadcast suggested message in the style.
  • decline <suggestion id> — decline suggestion with the id.
  • reload — reload config without server reload require.
  • styles — list of declared in config styles with their examples.
All permissions can be configured in related config.
  • radio.execute — execute /radio command.
  • radio.execute.subscommand — execute /radio subcommand.
  • radio.styles.stylename — use style with name "stylename".
YAML:
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# User placeholders.
# Use existent by enter {{name}} or declare a new yourself.
# Don't use placeholders in placeholders because of that will not work.
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
permission-prefix: "radio.execute"
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

broadcast:
  # /radio <name>.
  name: "broadcast"
  # The permission required for execute the command.
  permission: "{{permission-prefix}}.broadcast"

suggest:
  name: "suggest"
  permission: "{{permission-prefix}}.suggest"

suggestions:
  name: "suggestions"
  permission: "{{permission-prefix}}.suggestions"

approve:
  name: "approve"
  permission: "{{permission-prefix}}.approve"

decline:
  name: "decline"
  permission: "{{permission-prefix}}.decline"

styles:
  name: "styles"
  permission: "{{permission-prefix}}.styles"

reload:
  name: "reload"
  permission: "{{permission-prefix}}.reload"
YAML:
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# Every message related a player has {target} placeholder for the player nickname.
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# User placeholders.
# Use existent by enter {{name}} or declare a new yourself.
# Don't use placeholders in placeholders because of that will not work.
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
white: "§f"
red: "§c"
blue: "§9"
yellow: "§e"
gold: "§6"
gray: "§7"
dark-purple: "§5"

accent: "§f"
primary: "§7"

server-name: "FM"
server-block: "§9[§fFM§9]"
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #


# Common messages.
common:
  # {millis} — measured time of config reload in millis.
  reloaded:
    - "{{server-block}} {{primary}}Config reloaded in {{accent}}{millis}{{primary}} millis."
  # {id} — id of the suggestion that was approved.
  # {from} — sender the of suggestion.
  # {content} — content of the suggestion.
  # {created} — date of creation the suggestion.
  approved:
    - "{{server-block}} {{primary}}Suggestion {{accent}}{id} {{primary}}approved."
  # {id} — id of the suggestion that was approved.
  # {from} — sender the of suggestion.
  # {content} — content of the suggestion.
  # {created} — date of creation the suggestion.
  declined:
    - "{{server-block}} {{primary}}Suggestion {{accent}}{id} {{primary}}declined."
  # {id} — id of the suggestion that not found.
  suggestion-not-found:
    - "{{server-block}} {{primary}}Suggestion with id {{accent}}{id} {{primary}}not found."
  no-suggestions:
    - "{{server-block}} {{primary}}Good work, {{accent}}{target}{{primary}}! No more suggestions has found."
  # {id} — id of the suggestion.
  # {from} — id of the player that suggest it.
  # {created} — the creation date and time in "dd.MM hh:mm:ss" format.
  # {content} — the suggestion content.
  suggestion:
    - "{{blue}}[{{accent}}{id}{{blue}}] {{accent}}{from} {{gray}}{created} {{primary}}suggest broadcast {{accent}}'{content}'."
  # {max-count} — max count of suggestions.
  you-have-reached-max-suggestions:
    - "{{server-block}} {{accent}}{target}{{primary}}, you already have {{accent}}{max-count} {{primary}}suggestions, please, wait a bit before suggest one more."
  unexpected-exception:
    - "{{server-block}} {{primary}}Sorry, but seems unexpected exception has occurred. Please, try again later!"
  you-do-not-have-perm:
    - "{{server-block}} {{accent}}{target}, {{primary}}you don't have permission to do that."
  # {style} — style name.
  style-not-exists:
    - "{{server-block}} {{primary}}Style {{accent}}{style} {{primary}}not exists. Use {{accent}}/radio styles {{primary}}to see existing styles."
  broadcast-sent:
    - "{{server-block}} {{primary}}The broadcast sent to {{accent}}{{server-name}} Radio{{blue}."
  suggestion-sent:
    - "{{server-block}} {{primary}}Your suggestion sent to {{accent}}{{server-name}} Radio {{primary}}and will be processed in near time."

# Messages related to command (like help for command etc.).
commands:
  help:
    - "{{primary}}/radio suggest <your radio message> {{accent}}— suggest a message to broadcast."
    - "{{primary}}/radio broadcast <style> <your radio message> {{accent}}— broadcast a message."
    - "{{primary}}/radio styles {{accent}}— show broadcast styles."
    - "{{primary}}/radio suggestions {{accent}}— show suggestions."
    - "{{primary}}/radio approve <suggestion id> <style> {{accent}}— approve suggestion."
    - "{{primary}}/radio decline <suggestion id> {{accent}}— decline suggestion."
    - "{{primary}}/radio reload {{accent}}— reload plugin config."
  # Help for /radio suggest.
  suggest-help:
    - "{{server-block}} {{primary}}/radio suggest <your radio message>."
  broadcast-help:
    - "{{server-block}} {{primary}}/radio broadcast <style> <your radio message>."
  styles-help:
    - "{{server-block}} {{primary}}/radio styles."
  suggestions-help:
    - "{{server-block}} {{primary}}/radio suggestions."
  approve-help:
    - "{{server-block}} {{primary}}/radio approve <suggestion id> <style>."
  decline-help:
    - "{{server-block}} {{primary}}/radio decline <suggestion id>."
  reload-help:
    - "{{server-block}} {{primary}}/radio reload."

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# Original by vie10.
# If you're a translator just put your nickname here in "Translated to *language* by *your
# nickname*" format.
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
YAML:
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# User placeholders.
# Use existent by enter {{name}} or declare a new yourself.
# Don't use placeholders in placeholders because of that will not work.
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
green: "§a"
dark-green: "§2"
gray: "§7"
dark-red: "§4"
white: "§f"
yellow: "§e"
permission-prefix: "radio.styles"
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

# Styles for radio.
styles:
  # An example how to declare style.
  info:
    # Permission that broadcaster should to have for use the style.
    permission: "{{permission-prefix}}.info"
    # Sets date format for {date} placeholder.
    date-format: "yyyy-MM-dd"
    # Sets time format for {time} placeholder.
    time-format: "hh:mm:ss"
    # Use {lines} placeholder for mark the line from which lines will start.
    # Use {date} placeholder for provide current date in your format.
    # Use {time} placeholder for provide current time in your format.
    format:
      - "{{green}}┌──────────────────────────────────"
      - "{{green}}│ {{gray}}Open-source radio, {date} {time}."
      - "{{green}}│ {{dark-green}}Information wave"
      - "{{green}}├──────────────────────────────────"
      - "{lines}"
      - "{{green}}└──────────────────────────────────"
    # Format for every line.
    line-format: "{{green}}│ {{white}}{content}"
    # Settings about wrap lines.
    line-wraps:
      # True or false.
      enabled: true
      # The length over that requires line wrap.
      length: 50

  warn:
    permission: "{{permission-prefix}}.warn"
    date-format: "yyyy-MM-dd"
    time-format: "hh:mm:ss"
    format:
      - "{{dark-red}}┌──────────────────────────────────"
      - "{{dark-red}}│ {{gray}}Open-source radio, {date} {time}."
      - "{{dark-red}}│ {{yellow}}Warning wave!"
      - "{{dark-red}}├──────────────────────────────────"
      - "{lines}"
      - "{{dark-red}}└──────────────────────────────────"
    line-format: "{{dark-red}}│ {{white}}{content}"
    line-wraps:
      enabled: true
      length: 50
YAML:
# The maximum count of suggestions per player.
max-per-player: 1
# Format for created date and time.
date-time-format: "dd-MM hh:mm:ss"
YAML:
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# User placeholders.
# Use existent by enter {{name}} or declare a new yourself.
# Don't use placeholders in placeholders because of that will not work.
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
accent: "§f"
primary: "§7"
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

templates:
  # A template example.
  manage:
    # The template title.
    title: "Choose an action"
    # The template cells count.
    size: 9
    # Content of the cells.
    items:
      # Indexes where the item will be.
      "3":
        # Minecraft material id, you can find its there: https://minecraft-ids.grahamedgecombe.com (required).
        id: "stained_glass_pane"
        # Custom name for the item (if needed).
        name: "{{primary}}Decline"
        # It's a glass, so can have the color (if needed).
        color: "red"
      "5":
        id: "stained_glass_pane"
        name: "{{primary}}Send to info wave"
        # Mark as true if the item will be a container for data (if needed).
        data: true
        # Custom lore for the item (if needed).
        lore:
          - "{{primary}}The content will be sent to info wave on click:"
          - "{{accent}}{content}"
        color: "green"
      "0,1,2,4,6,7,8":
        id: "stained_glass_pane"
        name: "{{primary}}Just a cosmetic item"
    click-handlers:
      # Indexes where the handler will be listening for clicks.
      "3":
        # Performs the command as the player that clicks.
        - command: "radio decline {id}"
        - command: "radio gui"
      "5":
        - command: "radio approve {id} info"
        - command: "radio gui"
  main:
    title: "Radio GUI"
    size: 27
    items:
      "0,1,2,3,4,5,6,7,8,18,19,20,21,22,23,24,25,26":
        id: "stained_glass_pane"
        name: "{{primary}}Just a cosmetic item"
      "17":
        id: "arrow"
        name: "{{primary}}Next page"
      "9":
        id: "arrow"
        name: "{{primary}}Previous page"
      "10":
        id: "paper"
        name: "{{primary}}{id}"
        lore:
          - "{{primary}}Created {{accent}}{created} {{primary}}by {{accent}}{from}{{primary}}."
          - ""
          - "{{primary}}Content:"
          - "{{accent}}{content}"
        data: true
      "11":
        id: "paper"
        name: "{{primary}}{id}"
        lore:
          - "{{primary}}Created {{accent}}{created} {{primary}}by {{accent}}{from}{{primary}}."
          - ""
          - "{{primary}}Content:"
          - "{{accent}}{content}"
        data: true
      "12":
        id: "paper"
        name: "{{primary}}{id}"
        lore:
          - "{{primary}}Created {{accent}}{created} {{primary}}by {{accent}}{from}{{primary}}."
          - ""
          - "{{primary}}Content:"
          - "{{accent}}{content}"
        data: true
      "13":
        id: "paper"
        name: "{{primary}}{id}"
        lore:
          - "{{primary}}Created {{accent}}{created} {{primary}}by {{accent}}{from}{{primary}}."
          - ""
          - "{{primary}}Content:"
          - "{{accent}}{content}"
        data: true
      "14":
        id: "paper"
        name: "{{primary}}{id}"
        lore:
          - "{{primary}}Created {{accent}}{created} {{primary}}by {{accent}}{from}{{primary}}."
          - ""
          - "{{primary}}Content:"
          - "{{accent}}{content}"
        data: true
      "15":
        id: "paper"
        name: "{{primary}}{id}"
        lore:
          - "{{primary}}Created {{accent}}{created} {{primary}}by {{accent}}{from}{{primary}}."
          - ""
          - "{{primary}}Content:"
          - "{{accent}}{content}"
        data: true
      "16":
        id: "paper"
        name: "{{primary}}{id}"
        lore:
          - "{{primary}}Created {{accent}}{created} {{primary}}by {{accent}}{from}{{primary}}."
          - ""
          - "{{primary}}Content:"
          - "{{accent}}{content}"
        data: true

    click-handlers:
      "9":
        # Moves list to previous page if it's possible.
        - "PreviousPage"
      "17":
        # Moves list to next page if it's possible.
        - "NextPage"
      "0,1,2,3,4,5,6,7,8,18,19,20,21,22,23,24,25,26":
        # Closes the GUI.
        - "Close"
      "10,11,12,13,14,15,16":
        # Opens the GUI with the name if it exists.
        - gui: "manage"
 
Last edited:

viktorhrekh

New member
Feb 26, 2022
4
0
1
Important fixes related to version compatibility is included in the latest update. Be sure that's a good idea to update.