BanWave 1.2

BanWave is a plugin that allows you to execute a specified command on a list of players at once.

  1. Hellinduction
    Native Minecraft Version:
    Legacy (< 1.13)
    Tested Minecraft Versions:
    • 1.8
    • 1.9
    • 1.10
    • 1.11
    • 1.12
    • 1.13
    • 1.14
    • 1.15
    • 1.16
    • 1.17
    Contributors:
    Hellin
    BanWave

    Description
    BanWave is a plugin that allows you to add and remove players to and from a list. You can specify an interval for which every player in that list will have the command specified in the config be executed on them or you can forcefully execute the command on the players in that list.

    How to use
    1. Download the plugin.
    2. Open your server's plugin folder.
    3. Copy or move the jar file into the folder.
    4. Reload or restart the server.
    5. Enjoy BanWave!


    Commands
    1. '/banwave add' - Add a player to the BanWave.
    2. '/banwave remove' - Remove a player from the BanWave.
    3. '/banwave force' - Loops through all players in the BanWave and executes the command in the config on them.
    4. '/banwave list' - Gives you a list of players in the BanWave.
    5. '/banwave clear' - Removes all players from the BanWave.
    6. '/banwave info' - Gives you some generic information about the plugin.
    7. '/banwave reload' - Reloads the config.

    Permissions
    1. 'banwave.add' - Allows anyone with this permission to add players to the BanWave. (default: op)
    2. 'banwave.remove' - Allows anyone with this permission to remove players from the BanWave. (default: op)
    3. 'banwave.force' - Allows anyone with this permission to force a BanWave to execute. (default: op)
    4. 'banwave.list' - Allows anyone with this permission to get a list of all players in the BanWave. (default: op)
    5. 'banwave.clear' - Allows anyone with this permission to clear the BanWave. (default: op)

    6. 'banwave.info' - Allows anyone with this permission to get generic plugin information. (default: op)
    7. 'banwave.reload' - Allows anyone with this permission to reload the config. (default: op)
    8. 'banwave.alerts' - Allows anyone with this permission to receive alerts. (default: op)

    config.yml:
    Code (Text):

    #  ____                   __          __                        #
    # |  _ \                  \ \        / /                        #
    # | |_) |   __ _   _ __    \ \  /\  / /    __ _  __   __   ___  #
    # |  _ <   / _` | | '_ \    \ \/  \/ /    / _` | \ \ / /  / _ \ #
    # | |_) | | (_| | | | | |    \  /\  /    | (_| |  \ V /  |  __/ #
    # |____/   \__,_| |_| |_|     \/  \/      \__,_|   \_/    \___| #
    #                                                               #
    # Some settings require /banwave reload or a
    # server restart to take effect!
    # Please do not change this value!
    ConfigVersion: 1.2
    # Command executed on each player in banwave. (Supports color codes using '&')
    # %player% is a placeholder for the player getting banned in the BanWave.
    # %reason% is a placeholder for the reason to why the player was banned.
    BanCommand: ban %player% %reason%
    # This is the reason that will be used if none was provided when the player was added to the BanWave.
    DefaultReason: Unfair Advantage
    # Should BanWave automatically run a BanWave?
    Auto: true
    # Time between each BanWave. (In minutes)
    Interval: 15
    # Delay before BanWave happens. (In seconds)
    Delay: 5
    # Interval between each ban during a BanWave. (In ticks)
    BanInterval: 5
    # How often BanWave saves how long before the next BanWave is to data.yml. (In ticks)
    # Requires Requires ResumeInterval to be true.
    SaveCounterRate: 300
    # Should BanWave announce the BanWave before it happens?
    PreAnnouncement: true
    # Should BanWave announce the BanWave after it has happened?
    PostAnnouncement: true
    # Should BanWave announce each ban?
    AnnounceEachBan: false
    # Should BanWave announce PreAnnouncement and PostAnnouncement to all players or just those with permission?
    AnnounceMessagesToAll: true
    # Should BanWave announce players added/removed to the BanWave to all players who have permission?
    AnnounceFeedBackToAll: true
    # Should BanWave continue the interval where it left off?
    ResumeInterval: true
    # Should BanWave reset the interval when the BanWave is forced?
    ResetInterval: true
    # Should BanWave automatically broadcast a message to chat?
    AutoAnnounce: false
    # Time between each announcement. (In seconds)
    AutoAnnounceInterval: 300
    # What file should BanWave get messages from?
    LanguageFile: english.yml

    english.yml:
    Code (Text):

    #  ____                   __          __                        #
    # |  _ \                  \ \        / /                        #
    # | |_) |   __ _   _ __    \ \  /\  / /    __ _  __   __   ___  #
    # |  _ <   / _` | | '_ \    \ \/  \/ /    / _` | \ \ / /  / _ \ #
    # | |_) | | (_| | | | | |    \  /\  /    | (_| |  \ V /  |  __/ #
    # |____/   \__,_| |_| |_|     \/  \/      \__,_|   \_/    \___| #
    #                                                               #
    #  _____                                      _                     _    #
    # |_   _|                                    | |                   | |   #
    #   | |    _ __ ___    _ __     ___    _ __  | |_    __ _   _ __   | |_  #
    #   | |   | '_ ` _ \  | '_ \   / _ \  | '__| | __|  / _` | | '_ \  | __| #
    #  _| |_  | | | | | | | |_) | | (_) | | |    | |_  | (_| | | | | | | |_  #
    # |_____| |_| |_| |_| | .__/   \___/  |_|     \__|  \__,_| |_| |_|  \__| #
    #                     | |                                                #
    #                     |_|                                                #
    # This is the default language file for BanWave. This file is in english,
    # to use a different language, please make a new file called '%language%.yml'
    # replacing '%language%' with the name of your language. Then copy the contents
    # of this file into the new file you just created and change all the messages
    # as you please. Once you have done that you then must set 'LanguageFile' in
    # the config.yml to the name of the file you just made including the file extension.
    # Example: 'LanguageFile: spanish.yml'. To update the messages in game, use /banwave reload.
    #  _____    _                         _               _       _                      #
    # |  __ \  | |                       | |             | |     | |                     #
    # | |__) | | |   __ _    ___    ___  | |__     ___   | |   __| |   ___   _ __   ___  #
    # |  ___/  | |  / _` |  / __|  / _ \ | '_ \   / _ \  | |  / _` |  / _ \ | '__| / __| #
    # | |      | | | (_| | | (__  |  __/ | | | | | (_) | | | | (_| | |  __/ | |    \__ \ #
    # |_|      |_|  \__,_|  \___|  \___| |_| |_|  \___/  |_|  \__,_|  \___| |_|    |___/ #
    #                                                                                    #
    # Placeholders are not applicable to every message!
    # %counter% = The time in seconds before the BanWave.
    # %amount% = The amount of players the BanWave banned.
    # %sender% = The name of the player that ran the command.
    # %player% = The name of the player that was banned in the BanWave.
    # %target% = The name of the player that was used as an argument in a BanWave command.
    # %list% = List of players in the BanWave.
    # %listsize% = Size of the list of players in the BanWave.
    # %label% = The name of the command executed.
    # %name% = Plugin name.
    # %authors% = Authors of the plugin.
    # %website% = The link to the spigot.
    # %version% = The version of the plugin.
    # %auto% = Auto from config.yml.
    # %interval% = Interval from config.yml.
    # %counter% = Time remaining before next BanWave.
    # %bancommand% = BanCommand from config.yml.
    # %delay% = Delay from config.yml.
    # %languagefile% = LanguageFile from config.yml.
    # %resumeinterval% = ResumeInterval from config.yml.
    # %bannedlastbanwave% = The amount of bans BanWave has got in the last BanWave.
    # %bannedoverall% = The amount of bans BanWave has ever gotten.
    # %reason% = The reason the player was banned.
    # \n = New line.
    #  __  __                                                  #
    # |  \/  |                                                 #
    # | \  / |   ___   ___   ___    __ _    __ _    ___   ___  #
    # | |\/| |  / _ \ / __| / __|  / _` |  / _` |  / _ \ / __| #
    # | |  | | |  __/ \__ \ \__ \ | (_| | | (_| | |  __/ \__ \ #
    # |_|  |_|  \___| |___/ |___/  \__,_|  \__, |  \___| |___/ #
    #                                       __/ |              #
    #                                      |___/               #
    # Most of these messages support color codes using '&'.
    # Prefix in front of every message. Leave empty if you don't want a prefix.
    Prefix: "&8(&dBanWave&8) "
    # Message BanWave announces before it happens.
    PreAnnouncementMessage: "&eBanWave in %delay% seconds..."
    # Message BanWave announces after it has happened.
    PostAnnouncementMessage: "&aThere were %amount% players banned in the latest BanWave."
    # Message BanWave announces for every ban.
    # Requires AnnounceEachBan to be true in config.yml!
    BanWaveMessage: "&b%player% has been banned in the BanWave for &5'%reason%'&b."
    # Message BanWave sends to a player without permission to execute BanWave commands.
    NoPermission: "&cYou do not have permission to execute this command."
    # Message BanWave sends if the specified player cannot be found.
    PlayerNotFound: "&c%target% could not be found."
    # Message BanWave sends if specified player is already in BanWave.
    AlreadyInBanWave: "&c%target% is already in the BanWave."
    # Message BanWave broadcasts when a player is added to the BanWave.
    # Requires AnnounceFeedBackToAll to be true in config.yml!
    BanWaveAddBroadcast: "&b%sender% has &a&ladded&b %target% to the BanWave."
    # Message BanWave broadcasts when a player is added to the BanWave with a reason.
    # Requires AnnounceFeedBackToAll to be true in config.yml!
    BanWaveAddReasonBroadcast: "&b%sender% has &a&ladded&b %target% to the BanWave for &5'%reason%'&b."
    # Message BanWave sends when a player is added to the BanWave.
    # Requires AnnounceFeedBackToAll to be false in config.yml!
    BanWaveAddMessage: "&b%target% has been &a&ladded&b to the BanWave."
    # Message BanWave sends when a player is added to the BanWave with a reason.
    # Requires AnnounceFeedBackToAll to be false in config.yml!
    BanWaveAddMessageReason: "&b%target% has been &a&ladded&b to the BanWave for &5'%reason%'&b."
    # Message BanWave broadcasts when a player is removed from the BanWave.
    # Requires AnnounceFeedBackToAll to be true in config.yml!
    BanWaveRemoveBroadcast: "&b%sender% has &c&lremoved&b %target% from the BanWave."
    # Message BanWave sends when a player is removed from the BanWave.
    # Requires AnnounceFeedBackToAll to be false in config.yml!
    BanWaveRemoveMessage: "&b%target% has been &c&lremoved&b from the BanWave."
    # Message BanWave sends if specified player is not in the BanWave.
    NotInBanWave: "&c%target% is not in the BanWave."
    # Message BanWave broadcasts when the BanWave is cleared.
    # Requires AnnounceFeedBackToAll to be true in config.yml!
    BanWaveClearBroadcast: "&b%sender% has &4&lcleared&b the BanWave."
    # Message BanWave sends when the BanWave is cleared.
    # Requires AnnounceFeedBackToAll to be false in config.yml!
    BanWaveClearMessage: "&bThe BanWave has been cleared."
    # Message BanWave sends when /banwave force is used and there are no players in the BanWave.
    BanWaveNoPlayers: "&cThere are no players in the BanWave."
    # Message BanWave sends when /banwave force is used.
    ForcingBanWave: "&aForcing BanWave."
    # Message BanWave sends when /banwave list is used and there is no players in the BanWave list.
    EmptyList: "&cThere are no players in the BanWave."
    # Message BanWave sends when /banwave list is used.
    BanWaveList: "&aList of queued players (%listsize%):&7 %list%"
    # Confirmation Message BanWave sends when /banwave clear is used.
    BanWaveClearConfirm: "&6Are you sure you want to execute this command? This will clear the entire BanWave. Do '/%label% clear confirm' to confirm."
    # Message BanWave sends when /banwave info is used.
    BanWaveInfo: "&bGeneral Info:\n &7- &ePlugin: %name%\n &7- &eAuthor(s): %authors%\n &7- &eWebsite: %website%\n &7- &eVersion: %version%\n &7- &eAuto: %auto%\n &7- &eInterval: %interval% minutes\n &7- &eTime Remaining: %counter%"
    # Message BanWave sends when the config is reloaded.
    BanWaveReload: "&aThe config has been reloaded."
    # Message BanWave sends when the command cannot be found.
    UnknownCommand: "&bList of commands:\n &7- &e/%label% add\n &7- &e/%label% remove\n &7- &e/%label% force\n &7- &e/%label% list\n &7- &e/%label% clear\n &7- &e/%label% info\n &7- &e/%label% reload"
    # The syntax message for adding players to the BanWave.
    AddSyntax: "&cSyntax: &e/%label% add <player> (reason)"
    # The syntax message for removing players from the BanWave.
    RemoveSyntax: "&cSyntax: &e/%label% remove <player>"
    # Message BanWave broadcasts to chat.
    # Requires AutoAnnounce to be true in config.yml!
    AutoAnnounceMessage: "&b%bannedlastbanwave% players have been banned in the last BanWave."


    Additional Features
    Since the BanWave list is stored in memory, to ensure it doesn't get lost after a server reload/restart the list will get saved to a file called queued-bans.txt. The plugin will attempt to retrieve the list from this file on server startup. Player UUID's are used and not names.

    Find any bugs? Message my Spigot and I will fix them.
    Have a suggestion? Leave them in the discussion.

Recent Reviews

  1. Ghost_LoneWalker
    Ghost_LoneWalker
    5/5,
    Version: 1.2
    I have never seen such a good banwave plugin.
    I look forward to it can add more interesting features.
    1. Hellinduction
      Author's Response
      Thank you so much for your review. I really appreciate it and it helps keep me going.