Plugin Release Radio — powerful broadcast abilities

  • After careful consideration and due to limited usage, we’ve made the decision to discontinue the PaperMC forums. Moving forward, we recommend using Hangar for plugin uploads, and for all other community discussions and support, please join us on Discord.
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.