Bungeecord API

Have a Bungeecord API to allow cool things to be done with Sponge plugins on a proxy server. It could take elements from Sponge like chat or economy to easily be put into a Bungeecord server. This will require some work from people who work on Bungee but it would be nice. This may not be considered an API but well I don’t know. I am no programmer. I just have an idea to share.
Please read whole post before commenting.

                        Things I would like to see.
  1. Allowing Bungee and Sponge to work perfect together with plugins like global chat or something

  2. Add some hooks to certain API’s and certain things sponge plugins currently use and will use in the future for Bungeecord to hook into.

  3. Allow plugin data be sent cross server to only other sponge servers like permissions. MySQL does exist but the plugin developer has to allow support for it.

  4. Allow Bungee to Sponge bridges like there are bukkit bridges for certain bungeecord plugins that use them allow them for sponge.

  5. Make it so it works seamlessly with any plugin even if the plugin has no though of Bungee.

  6. A good way to disable certain features from going cross server, and allow certain data be sent to certain servers that can be called by name in the config. (Example if you don’t want cross server Factions and want to just have multiple Faction servers with their own data.)

  7. Forge mods are taken into account right at the Bungeecord server. If there is no available server that doesn’t require mods (or whatever) it will kick you with a message.

  8. Shared inventories and other things with Sponge can be cross server with specific servers, and active command blocks active on one could be allowed cross server.

  9. Certain forge mod data (like text and maybe a few others) can be sent cross server.

  10. Features used in this could also be used in your normal sponge server with worlds instead of servers if you don’t use Bungee. You could have the ability to separate data per world or worlds.

                                                    What this could be used for...
    
  11. Chat plugins that use Sponge: People don’t need to find a bungeecord plugin that will work with Sponge, which may take awhile after support is added.

  12. Economy plugins could allow cross server currency without needing bungeecord in mind.

  13. You don’t need to know the Bungeecord API to do cool things with cross server.

  14. Essential type plugins can work all across a Bungeecord network. Like homes and warps.

  15. For non bungee servers worlds can have separate data and joined inventories.

  16. YOUR SERVERS! You don’t need to try and find Bungee plugins. As plugins grow too the potential for this can grow. Big servers wanting to port to sponge can use our diverse list of plugins and plugins to come instead and the list of plugins that already exist with Bungeecord. Plenty of plugins to choose from.

SO MUCH MORE!!! I can’t list them all here so I tried to go as broad as possible with these and to give some examples.

Disclaimer: I am not saying plugins cross server or mods cross server meaning that mods and plugins automatically get sent to all other servers I am not saying this. This may not be an API just support with Bungee. And I know that Bungee does not have support to allow such things as I have posted here. I want to see some work together to allow such things.

I have posted this on the Bungeecord forums at SpigotMC here

So, essentially, what you’re asking for is a way to treat a load of linked servers via Bungee/Waterfall/Lillypad (let’s call them “Proxies”) as one server, with one set of plugins and one set of configurations?

I don’t see it happening. This is a huge undertaking, and I think it’s far beyond what these proxy solutions do. These proxies are just that - proxies, they provide a middle man between players and servers so that switching servers is as simple as a world change to players. Proxies don’t necessarily know where the player is, what they are doing, what they have, they just know they have to forward packets onwards. Some packets do get intercepted - I did that with all the FML handshake packets in Bungee so we could get the mod list because that’s potentially important for the connection phase, but in itself, these proxies do not care as to what is going on and thus are unable to easily capture player states without plugins on the servers to send back the information.

Most players and many developers don’t realise that these proxy solutions are not, and should never be treated as, server synchronisation platforms, they are player distribution systems. They should not be used to communicate critical data between servers, especially if some of that data will need to be transferred when no players are online.

So, I do not see any way that Sponge + Proxy will ever support plugins that “just work” with a Proxy setup, without any extensive modification of even Sponge itself. Indeed, I do not see it being advantageous to them doing so. It would be much better to have a separate synchronising system that works with proxied servers for what you want to do, which will be capable of what you want it to do, that way, it would be proxy independent, which is advantageous where the proxy you post in your question, Bungee, is controlled by a rival server API who don’t seem likely to want to work with a rival platform in Sponge.

Let these proxies do their job of proxying players (and if you are using Forge, you really should be using Waterfall because they support mods much better), if there is demand, I’m sure a server sync platform will emerge in time.

2 Likes

You speak of Sponge just staying like Bukkit in a proxy situation. Sponge is supposed to be change. This in itself is [quote=“dualspiral, post:2, topic:12509”]
a huge undertaking
[/quote]
We are trying to make the modding community better with Sponge so if change is what our goal is then who chain ourselves to the past. [quote=“dualspiral, post:2, topic:12509”]
I think it’s far beyond what these proxy solutions do.
[/quote]

That is another extra server to configure and run. If it was part of a popular server proxy like Bungeecord could just make it all around better. I don’t like the idea of ANOTHER server to run if I want this. Bungeecord is an exception because Bungee is so different compared to base servers that it is accepted as needed to be another server to run. [quote=“dualspiral, post:2, topic:12509”]
Most players and many developers don’t realise that these proxy solutions are not, and should never be treated as, server synchronisation platforms, they are player distribution systems.
[/quote]

Player distribution systems but they are all apart of one proxy. Servers are connected to the proxy same as players are connected to the proxy. Why not have some communication between servers. Bungee could collect data from all servers when requested from server and all servers sync that data to one. Bungee could be used for more. It can be configurable. Some Bungee plugins do this in a way like global chat plugins. Chats from one server has to be sent to the rest as chat from the rest can be sent to each other.
Also as I have stated in my post that this could bring big servers to port because Sponge is growing with plugins.[quote=“dualspiral, post:2, topic:12509”]
I do not see any way that Sponge + Proxy will ever support plugins that “just work” with a Proxy setup, without any extensive modification of even Sponge itself.
[/quote]

Well Sponge is changing as different API versions come out breaks plugins anyway. There are still more to come. This could be an API version itself because it may break plugins a great deal. Plugin developers understand that when a API version comes out their plugin will break. [quote=“dualspiral, post:2, topic:12509”]
So, essentially, what you’re asking for is a way to treat a load of linked servers via Bungee/Waterfall/Lillypad (let’s call them “Proxies”) as one server, with one set of plugins and one set of configurations?
[/quote]

I never said ONE SET of plugins and configurations. Plugins can share data with certain servers that have the same plugin. Other servers can have different plugins and configurations while others are synced.

I could say more but I want to sum up. Sponge meant that all Bukkit plugins will not work. This is a minor version of that but Sponge is still in development. Things CAN change and that what I am trying to say. I get that its a proxy server but it can be more. It has that capability. It would get people to port to Sponge. Easier to manage a proxy and your servers. You can have them separate that is an option.
I want to see this for Sponge. Sponge can change. It can change to do something impossible with Bukkit.

Edit: I knew I would have to defend my idea. Some people are not up to that task or sometimes that is not possible.

I’m going to start by pointing out that Spigot and Bungee are two completely different things. A proxy solution does not appear to be within the scope of Sponge - tight integration between Sponge and a proxy is not, and will probably never be, a goal of the Sponge project. While I know what you want as a server owner, I’m saying this from a developer point of view, with the current systems and limitations. I never said your idea in itself was a bad one. I said I did not see it happening.

Yeah, for the server software. Bungee is not a minecraft server. Sponge’s goal isn’t to provide a proxy.

OK, but you’re asking in the wrong place. If you want Bungee to do this, you need to ask them to provide the support.

That said, many server owners won’t want this.

I don’t know what you’re getting at here - but as I said, Bungee is NOT a server. It’s a proxy. It’s completely different.

Player distribution systems is just my way of explaining a proxy. A proxy’s job is to “imitate” another player, nothing more.

No, no they are not. As far as a server is concerned, each connection from Bungee is a player. It technically does not know it’s Bungee unless it sends a custom packet to it. If no players are connected to the server, there is no way for the server to communicate with Bungee, because Bungee is not connected with it.

Sure, but in order to be able to do this effectively, servers need a way to connect with a server sync system when NO players are on. This is my point, Bungee is not a way for servers to communicate with each other for critical tasks like syncing settings, and was never designed to be.

My point still stands. One set, multiple sets, sharing some configurations - my point is still there and still valid.

Your posts have not been clear. What I think you meant to say is that you want a piece of software that does proxy and sync duties, so rather than having a set of servers acting as servers behind Bungee, each server acted like a different world and shared a lot more information. Yeah, I agree, that could be nice. However, Bungee is not the solution here, what you’re asking for is not really in the scope of the Sponge project because they don’t have a proxy solution, and don’t seem to have a desire for one.

Similarly, Sponge are not likely going to go out of their way to have complex support for plugin synchronisation without plugin authors having to lift a finger. This really does not fit in with their goals as far as I can see it.

Finally, Sponge and BungeeCord are run by two different groups. Bungee is built by the Spigot team. Do you really think they are going to do something so radical that would help Sponge when they would rather promote their own product? Indeed, I’ve had a PR waiting for almost a year to include native IP fowarding support for Sponge.

I was never attacking the idea, I was commenting on the complexities, from my point of view, on why it’s not feasible.

1 Like

You hit hard with good points. Problem is we see things with two different perspectives. It starts at the developer (example you) then the end user (example me). They can see things from different view points. I get Sponge is not providing a proxy solution. I never saw that. I sought Sponge to allow certain Sponge plugin functions to work with the proxy. I see now where you may think I am saying provide a proxy solution. I never meant to. You probably know what I mean. The API will change I get that plugin devs will have to adjust like every other version to the Sponge API. I also know Bungee is NOT a minecraft server.
I want to make things clear. I do understand things but I may not be getting my information out correctly for people to understand. That is my fault. I tried this time not to break down the whole post and give my thoughts.
We are 2 different people. Your point of view would probably be more broad then mine because at the heart of it all is the developer. You may not be one of them working with Sponge but you make valid points.

I am going to stand by on this post. I want to see more peoples reply to this. Even though you probably will influence how they look at this I want to see some other peoples thoughts.