CommandSync 2.3

Synchronize console and player commands between multiple Minecraft server instances.

  1. YoFuzzy3
    Introduction
    I wrote this plugin because quite a few people wanted it. Request thread.

    Installation
    This is a two-part plugin.
    1. Read this entire post before installing.
    2. Download the zip package and put it wherever.
    3. Unzip the package.
    4. Stop your BungeeCord server, if it isn't already.
    5. Put the CommandSyncServer.jar file in your BungeeCord's plugin folder.
    6. Start your BungeeCord server.
    7. Stop your BungeeCord server.
    8. Set the pass in the <BungeeCord>/plugins/CommandSync/config.txt.
    9. Start your BungeeCord server.
    10. Stop your Minecraft servers, if they aren't already.
    11. Put the CommandSyncClient.jar file in your Minecraft servers' plugin folders. Magically, they don't need to be under the same BungeeCord instance.
    12. Start your Minecraft servers.
    13. Stop your Minecraft servers.
    14. In each <MinecraftServer>/plugins/CommandSync/config.txt put a UNIQUE name for identification. Example: survival, creative or whatever. Also put the pass that you set in CommandSyncServer's config.txt.
    15. Start your Minecraft servers.
    16. Woo, you're done!
    Usage
    Here are some example uses.
    1. /sync console all broadcast Hi there people! would make the console on all servers run the command broadcast Hi there people!
    2. /sync console survival broadcast Hey there! would make the console on the server identified as survival run the command broadcast Hey there!
    3. /sync console bungee alert Wassup! would make the console of the BungeeCord server run the command alert Wassup!
    4. /sync player all me Hey would make every online player under the BungeeCord instance the CommandSyncServer is running off run the command /me Hey
    5. /sync player md_5 give YoFuzzy3 cookie 1337 would make the player md_5 run the command /give YoFuzzy3 cookie 1337
    (Of course when you make a player perform a command they must have the permission to use it)

    Commands
    • /sync - view the help menu.
    • /sync console - Send a command to run on all Minecraft servers, a single Minecraft server, or the BungeeCord server.
    • /sync player - Send a command to run for all players, or a single player.
    Permissions
    • sync.use - Access to the command /sync - a Bukkit command. Default: OP.
    Configuration
    CommandSyncServer:
    Code (Text):
    ip=localhost
    port=9190
    heartbeat=1000
    pass=UNSET
    debug=false
    • ip - The IP that the CommandSyncServer tries to bind to.
    • port - The port that the CommandSyncServer tries to bind to.
    • heartbeat - In milliseconds, how often should the CommandSyncServer process data.
    • pass - A password that all clients must authorize through. (UNSET means the plugin will not operate.)
    • debug - If true all debug will be saved to a log.txt file.
    CommandSyncClient:
    Code (Text):
    ip=localhost
    port=9190
    heartbeat=1000
    name=UNSET
    pass=UNSET
    debug=false
    • ip - The IP that the CommandSyncClient tries to connect to.
    • port - The port that the CommandSyncClient tries to connect to.
    • heartbeat - In milliseconds, how often should the CommandSyncClient process data.
    • name - A UNIQUE identifier for the CommandSyncClient, used for the /sync console single command. (UNSET means the plugin will not operate.)
    • pass - A password that the client uses to authorize with the server. (UNSET means the plugin will not operate.)
    • debug - If true all debug will be saved to a log.txt file.
    Awesome Features
    • This plugin now uses Java networking, making it much more reliable than the Plugin Messaging System. This means that silly bugs no longer exist. It also means you can synchronize commands across Minecraft servers under different BungeeCord server instances!
    • If you try sync a command and the CommandSyncServer is down, it will be kept in a queue for when it comes back online!
    • If a Minecraft server is down the CommandSyncServer will wait until it comes back online before it tells it to run a command!
    • If you try sync a command for a player that is offline, the command will not be attempted to run until they come back online!
    • All command queues are saved to a file on shutdown, meaning you can have downtimes across many servers but every command will be stored and run as soon as possible!
    • Authorization for secure cross-network links!
    • Debug file logging!
    Internals
    Here's my very bad diagram of how it works made in Paint, you're welcome to make me a better one. http://imgur.com/llIbkia

    If that diagram made no sense to you here it is in most basic text form.
    • /sync console all /sync -> Single CSC -> CSS -> All CSCs -> MC Console -> Run
    • /sync console <server> /sync -> Single CSC -> CSS -> Defined CSC -> MC Console -> Run
    • /sync console bungee /sync -> Single CSC -> CSS -> Bungee Console -> Run
    • /sync player all /sync -> Single CSC -> CSS -> All Players -> Run
    • /sync player <name> /sync -> Single CSC -> CSC -> Defined Player -> Run
    Because of how it all works data has to be saved. So here's that explained.

    CommandSyncClient (CSC) saves:
    • All the string commands that have been sent. These are never cleared.
    • An int value representing where the CSC is up to in sending commands to the CSS. This is not cleared.
      • This allows the CSC to queue up commands if the CSS goes down.
    CommandSyncServer (CSS) saves:
    • All the string commands that have been received. These are never cleared.
    • An int value for every CSC representing where it is up to in sending commands to that CSC. These are never cleared.
      • This allows the CSS to queue up commands so when a CSC goes down commands will be run when it comes back online, or when a new CSC is added to the setup the stored commands can be run for it.
    • All the commands that have been queued up for offline players. These are cleared after being run.
      • These are run when the player comes online.
    Deleting any piece of data (excluding the queued commands for offline players) will cause the CSS and the CSCs to go out of sync (wow such pun) potentially causing commands to be run duplicate times.

    If the CSS or a CSC crashes and prevents its data from saving then the same effect as described above may occur.

    If you are confident that all commands have been processed successfully and would like to reset the saves then you must:
    1. Shut down the Bungee server running CSS and all MC servers running CSC.
    2. Delete all the data.txt files located at:
      1. Bungee/plugins/CommandSync/data.txt
      2. MC Server/plugins/CommandSync/data.txt
    3. Start up all the servers.
    Changelog
    Version 2.3 - Added support for spaces in the /sync command. Added version to internal checking. Fix null password bug.

    Version 2.2 - Fix config file generation.

    Version 2.1 - The config.txt will be updated on startup with some new options for auth and debug file logging.

    Version 2.0b - Complete rewrite! Now uses Java networking making it a lot more flexible, reliable and secure.

    Version 1.0 - Initial release. Not feature complete.

    Source
    GitHub.

    Notice
    This plugin is using Hidendra's MCStats service. This means it will report anonymous statistics to MCStats.org.

    Statistics
    [​IMG]

    Donate
    If you appreciate my development work a donation is always much welcome and greatly appreciated!​

    Donations so far:​
    • MostFunGuy - 09/12/13 - $50
    • MostFunGuy - 09/12/13 - $50
    [​IMG]

Recent Reviews

  1. xemles
    xemles
    3/5,
    Version: 2.3
    Works but sometimes, it doesn't sync to the bungee and just locks the server while starting instead of just saying "Couldn't connect to server"
  2. omermarvel
    omermarvel
    4/5,
    Version: 2.3
    I need help beacuse when it add queue when i restart server its using all i used commands before
  3. Paperboypaddy16
    Paperboypaddy16
    4/5,
    Version: 2.3
    Great plugin! works perfect between my 1.12 and 1.10 server. only thing it doesn't work with 1.13 yet and be great for you to update it to be compatible with all the versions
  4. Goobs_1
    Goobs_1
    4/5,
    Version: 2.3
    Looks really cool! unfortunately, I am not sure what a "Pass" is! Please help me out if possible, and then if the plugin performs well I will be able to give it a 5 star!!
  5. C02
    C02
    1/5,
    Version: 2.3
    Does not work. I know it hasn't been updated since 2013 but I'm using version 1.8 so it doesn't work regardless.
  6. Slimerblue22
    Slimerblue22
    5/5,
    Version: 2.3
    I don't think people realize that this plugin isn't updated anymore, they keep asking for the owner to fix things when it was last updated 2013.
  7. justmineplayz
    justmineplayz
    3/5,
    Version: 2.3
    Overwrites the Data.txt to make server crash! Please fix that
    maybe you can fix that with a auto deletion of the data.txt at every start
    to prevent that
  8. JackyCraft
    JackyCraft
    3/5,
    Version: 2.3
    Sometimes when i restart my server it do again all the command i already run ... Please fix that because it creates me a lot of bugs :/
  9. TNTSquid
    TNTSquid
    5/5,
    Version: 2.3
    Very great plugin,, work flawlessly, and is able to do what I wanted to do :) Nice job
  10. inbar_shelef
    inbar_shelef
    1/5,
    Version: 2.3
    dont work: when i do command...... noting noting happen!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!