I have completely stopped updating XServer here on BukkitDev. Please go to spigotmc.org for updates.
Plugin at spigotmc -> http://www.spigotmc.org/resources/xserver.270/
Snapshot 2.0.1 released.
Renaming packages from "com.mickare..." to "de.mickare..."
Your current plugins may not work with the new Version! Sry guys!
I won't upload any updates for XServer to Bukkit Dev until they change their guidelines regarding project-helper-plugins for e.g. BungeeCord (a minecraft proxy).
Warning! Bukkit Dev Team warns of external download sites, but I'll still give a link here to the Maven Repository.
Current versions can be downloaded from the Maven Repository on your own risk.
XServer is a helper for other plugins. It closes the communication gap between servers.
With this plugin it's simple to send byte arrays to other servers and receive them.
It's usefull if you use plugins on multiple servers that you want to communicate via sockets.
You, the developer, no more have to think about creating sockets and keeping the connection open.
XServer handles all complicated stuff and offers a nice solution to send messages.
It automatically queues outgoing messages and handles incoming messages with an own EventHandler.
Your servers are protected via passwords and are managed via MySql.
There are currently 2 Versions of XServer: one for Bukkit and one for BungeeCord.
XServer has a Core-Module and a API, so these are released in the future, so not only on Bukkit and on BungeeCord can be run XServer.
Setup - Preparation / Configuration
On your MySql-Server create a new Table with:
CREATE TABLE IF NOT EXISTS `xserver` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `NAME` varchar(64) COLLATE utf8_bin NOT NULL, `ADRESS` varchar(128) COLLATE utf8_bin NOT NULL, `PW` varchar(20) COLLATE utf8_bin NOT NULL, PRIMARY KEY (`ID`), UNIQUE KEY `ID` (`ID`), UNIQUE KEY `ADRESS` (`ADRESS`), KEY `ID_2` (`ID`) ) DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
Then add your servers to the table.
"NAME" is your servers name, this name identifies your server and has to be unique!
Remember "ADRESS" is like "host: port" (e.g. "localhost:19999", or "127.0.0.1:19999").
PW is the password you want, that other servers need to connect to this server.
Setup - Bukkit
- Copy "XServer-Bukkit.jar" to your plugin folder.
- Run once the server.
- Goto the xserver plugin folder.
- Open and edit "config.yml".
-> Here starts the config code section, but dev.bukkit.org is broken. So bear with me if there is no line breaking, etc.
-> Here stops the config code section.
Setup - BungeeCord
The setup on a BungeeCord Proxy Server is the same as the Bukkit Server.
How to use XServer
See: Your First Plugin]]
The commands are currently only available in the Bukkit Version.
The subcommands are:
- package [Servername] : Shows package speed to all servers, or the one as given.
- ping [Servername] : Ping all servers, or the one as given.
- reconnect [ s] : Reconnects all servers. It accepts one flag (s) for softly reconnect only those not connected servers.
- reload : Reloads the server list and reconnects.
- status : Shows the connection status to the servers.
- stresstest [times = 10] [targets = all] [async = false] : Stress test for XServer. Targets can be: (all|servernames splitted by ";")
Commands permission is "xserver".
Trying to force XServer to its knees, i fired on one of 43 Bukkit and 2 BungeeCord Servers running all XServer, the stresstest command with the factor 1000 and still got an average response time of 80-90ms. (The servers are distributed on 4 Root-Servers)
These are 45000 Messages of Strings with a lenght of 32, that are sended and then returned.
Meaning an Incoming and Outgoing traffic of > 64MBit/s on this particular Bukkit server.
- Renaming packages from "com.mickare..." to "de.mickare..."
- Complete Rework!!!
- New EventBus
- Usage of java's socket duplex functionality (single connections, no rebuilding of socket connections)
- Faster package sending
- Package statistics and stresstest
- Fully and only MySQL configuration
- Core and API divided from Bukkit/Bungeecord Code, so Core-Modul can be used in an own java application.
- Multiple Disabling Message Fix... when having failed in config.
- Bug Fix in Disabling Plugin
- Fix Exception Output to Console.
- EventHandler optimization.
- First release to public.
This plugin was developed for use in Server Clusters.
Original it was a Bukkit Plugin for BungeeCord Proxy use, but then was expanded and splitted from BungeeCord, because of some *near* real-time demands.
Plugins that uses XComServer
XComServerCommand - with open source code that shows how you can use XComServer
[spoiler]The MIT License (MIT)
Copyright (c) 2013 mickare
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Can u make a video tutorial?
in the config, there are like a list of 3 servers (you must own 3 servers with unique ip's) you then put each ip in a different server slot and you can have a "hub" server which you can have portals to connect to each servers, a great server that uses this plugin is shadow.novauk.eu they aat the moment have 3 different servers with their own unique plugins.
How to use this Plugin??
Thanks for this. Works flawlessly!
It is not a BungeeCord Plugin, it's a Bukkit Plugin. ^^... now it is also one
Problem with BungeeCord is that you can't send data to a empty server.
This plugin was somekind of a workaround, but then fully developped to a alone standing plugin.
This means you can use it in a BungeeCord Cluster.
In fact I use it for a bigger BungeeCord Server Projekt. ;)
I will share the IP to the server if it's released.
@Alexander: Check your "config.yml" and "servers.yml". In "servers.yml" needs to be the current running server itself listed.
I tried installing this on 2 bungeecorded Spigot 1.4.7 (fake 1.5) I configured both the same but when I enabled xcomserver it just spammed the console with "xcom server disabling" is this a bug? Or am I doing something wrong?
Is this available as a BungeeCord plugin too? This would be cool :)