⭐ xSync [1.17] Multi-Server Survival System | Ownership⭐

FlowZz

Dreamer
Banned
Feedback score
2
Posts
99
Reactions
45
Resources
0
Hello i'm looking to sell ownership (source + resell rights) to my plugin xSync.
If you are interested add me on Discord FlowZz#3904.

(I will not consider offers below 100€)

Here's a brief description of the plugin and what it can do:

xSync
This is a plugin designed for multi-server survival networks. It uses database, cache and a pub/sub system to sync data across multiple server.
(MongoDB/MySQL and Redis)

What Data can be synced?
  • Inventory
  • Enderchest
  • Health
  • Food
  • Effects
  • Experience and Levels
  • Everything that you can save on a database
What are "Zones"?
Zones are section of the map that every server is responsible to handle. Whenever a player walk from a zone to another it will be sended to the corresponding server. This allows for virtually unlimited player counts by dividing the map into multiple servers.

Are Zones configurable?
Yes, you can configure the zone corners and specify which world will they handle. You can also configure the worldborder feature to display within the zone limits. (Worldborder feature needs zone to be perfect square)

Code:
settings:
  server-id: "over-2"
  worldborder: true


database:
  #MongoDB or MySQL
  type: "MySQL"
  hostname: "127.0.0.1"
  database: "xsync"
  username: "root"
  password: "password"
  #3306 MySQL
  #27017 MongoDB
  port: 3306

redis:
  hostname: "127.0.0.1"
  password: "password"
  port: 6379
 
#Each world can have multiple zones (Each server must have same world names)
#Each zone must be squared to allow worldborder
zones:
  north-overworld:
    server-id: "over-1"
    world: "world"
    X-Min: -512
    Z-Min: -512
    X-Max: 512
    Z-Max: 0
  south-overworld:
    server-id: "over-2"
    world: "world"
    X-Min: -512
    Z-Min: 0
    X-Max: 512
    Z-Max: 512
  nether:
    server-id: "nether-1"
    world: "world_nether"
    X-Min: -512
    Z-Min: -512
    X-Max: 512
    Z-Max: 512
  end:
    server-id: "end-1"
    world: "world_the_end"
    X-Min: -512
    Z-Min: -512
    X-Max: 512
    Z-Max: 512

Is it safe to sync data?
It works by saving everthing into a database, when a player logout or switches server the data is saved on the disk and after the save is complete the server will notify all others server that the player can now be loaded. That makes the data saving very secure and almost impossible to lose data.

How do I hook with other plugins?
xSync implements a complete API that allows you to fully use its potential.

  • There are events such as PlayerPostSaveEvent and PlayerPostLoadEvent that can be used to implement your custom plugin saving logic.

  • There are API methods that allows you to define your custom Message(Packet) to communicate to all the connected servers.

Code:
public interface SyncAPI {

    /**
     * Sends the message to all connected subscribers.
     * You can choose which server will receive the message
     * by specifing the receiver-id when you create the message.
     * If you want all servers to read the message you can set the
     * receiver-id to "Broadcast".
     *
     * @param message the message that extends AbstractMessage
     */
    void sendMessage(AbstractMessage... message);

    /**
     * Registers the message withing the internal MessageRegistry.
     *
     * @param clazz the message class.
     * @param <T>   the message type.
     * @return the generated id for the packet.
     */
    <T extends AbstractMessage> int registerMessage(Class<T> clazz);

    /**
     * Registers the message handler using a functional
     * interface implementation as handler.
     *
     * @param clazz          the message class.
     * @param messageHandler the functional interface.
     * @param <T>            the message type.
     */
    <T extends AbstractMessage> void registerMessageHandler(Class<T> clazz, IMessageHandler<T> messageHandler);

    /**
     * Return the server-id of the current server
     *
     * @return the server-id.
     */
    String getCurrentServerId();

    /**
     * Return the server-id of the server that the
     * player is connected to else if the player is
     * not connected it will return "nil"
     *
     * @param uuid the user's uuid.
     * @return player's server-id if online else "nil"
     */
    String getPlayerServerId(UUID uuid);

    /**
     * Returns true if the player is online on any of the linked servers.
     *
     * @param uuid the user's uuid.
     * @return true if the player is online in any of the linked servers.
     */
    boolean isOnline(UUID uuid);

    /**
     * Returns if the player is currently loading data.
     *
     * @param uuid the user's uuid.
     * @return true if the player is still load its data.
     */
    boolean isLoadingData(UUID uuid);

    /**
     * Returns the API implementation.
     *
     * @return API implementation.
     */
    static SyncAPI getInstance() {
        return DefaultImplementation.getImplementation();
    }

}

Where can i find some examples on how to use the API?
You can start by taking a look at xChat repository.

Ownership?
syNwzOA.png

Test Server:
Add me on discord FlowZz#3904 I will provide you one.
 
Type
Offering
Top