SpongePls [BungeeCord Forge Support]


It’s a widly known issue that you can’t have IP forwarding AND forge at the same time. Well no more! This plugin resolves that issue. (See BungeeCord pr #1557).


This is a bungeecord plugin, but I feel here is a better place for it rather than SpigotMC, you will probably need it more and it will be easier to find here.


Okay, it’s not zero-config but by default it treats all servers as forge, and you control what servers are and aren’t forge.


Download the jar file from my build server.
It requires Java 7 to run.

We’re on https://github.com/SilverCory/SpongePls as well.


I aimed to make this reasonably easy to use. And it’s more than easy for someone to make a quick GUI for the java program, so if you can/want; please do!

  1. Drag and drop SpongePls.jar into your BUNGEECORD plugins folder.
  2. Restart BungeeCord.
  3. Edit the Configuration to your preferences.

The reload command is a little wobbly. So let’s just not use that. :wink:


The configuration supports regex as well as normal server names. If the server name doesn’t match the server being joined then the extra data won’t be sent. You don’t want to send this data if the server is vanilla or SpigotMC.

Commands & Permissions

  • /spongepls - Prints useful information.

Doesn’t Sponge already support BungeeCord? There’s a settings option in the config for this. Unless there’s a bug I’m not aware of, this is implemented in both the vanilla and forge implementations.

Sponge supports IPForwarding yes. However the issue is; Forge + IPForwarding isn’t possible. This resolves that.

Sponge already supports the method used to overcome it, however bungeecord doesn’t. So a pull request was made, however it would break backwards compat, and would require modification of spigot aswell. A plugin is much more dynamic, configurable and supportive. Thus we have SpongePls.


Just to give a bit more background for those that are interested to explain why this has come about:

When Forge support was initially introduced, it was for 1.7. 1.7 Forge required a forge client and made no changes to the initial handshake packet. If a vanilla client tried to connect, it would find it was unable to. This also meant that Cauldron could just take Spigot’s IP forwarding mechanism, which does make changes to this initial packet. Everything is well.

Lex made a change in Forge 1.8 to allow vanilla clients. In order for forge servers to be able to work out if the client is a Forge client, Forge now mutates this handshake packet too to add a marker to say “Hey, I’m a Forge client!”, so Forge knows to treat it as such. This breaks Bungee’s IP forwading support - the changes clash with each other. This is why we’ve tried to come up with a way to allow both to work together. The downside would be that older Spigot builds would not then support Forge clients connecting - but I provided a patch for Spigot that would overcome this too, again, something that hasn’t been accepted as of yet.

The fundamental code that provides this IP forwarding support in this plugin is exactly what I wrote for the PR, all this plugin does it do some bytecode replacement to add it instead and put some config around it. It’s just a different approach. While I would rather see this as part of the Bungee becase IP forwarding support is a fundamental part of Bungee (and I’ve been waiting for md-5 to respond to questions on the PR), this plugin definately fills the gap until we get something that everyone can agree on.


@dualspire So does this plugin break IP forwarding for spigot servers?

At a guess, because it takes a configuration, it won’t because it’s configured to which server to act upon, right?

Precisely, however it’s a pretty large ask wanting BungeeCord to implement your patch. Not only will bungeecord have to change, Spigot, VanillaCord, other custom implementations of servers that use IP forawrding, and everything less than the newer minecraft server versions with the patch to allow this will no longer.

Yes it’s only a couple lines, but I can almost guarantee at least 50% of the users of them jars have absolutely no clue how to patch their, now severely outdated and incompatible jar.

Nail on the head. :smile:

(Sorry for douple post, couldn’t find a way to reply to two users).

Oh, don’t get me wrong, I knew it was a big ask, but as I said before, I made the point up front - I’ve not tried to be sneaky about it. I know others are unable to patch their jars, but at this stage, this would have only affected 1.8 servers, and so I felt there was a good chance that it would get accepted. I also provided a Spigot patch, which is the main consumer of this system, though I do accept VanillaCord and other implmentations exist.

I do have another idea that came to me yesterday that might let me do it in a zero config way that won’t (hopefully) break backwards compatibility, but I just need time to sit down and try it in all scenarios. Unfortunately, my job and my life gets in the way sometimes!

It’s unfortunate that a plugin is the best way seems to be the way to solve it right now because I think that IP forwarding should really being done on the bungee level, not a plugin level, but it takes the pressure off for now. I, and I’m sure others do too, thank you for taking the time to do it. At least I don’t have to maintain a custom fork…

(Oh, and you can @ mention to reply to multiple users, if it helps.)

Arguments about this in irc are mostly amusing. The plugin was already semi-made. I just edited it a little. I originally didn’t want to release the current source. But hey ho.

Thanks for the info on mentions, never even thought to try that.

As for other methods, I can only think of a pre handshake handshake.

I need this plugin, it’s all I’ve been waiting for to get my Pixelmon server connected onto my hub and other servers. I have an issue, and tested many times, making sure everything was done properly. First I tested just a base forge server with SpongeForge and connected it to my hub servers and it worked. But Ip forwarding didn’t even though both config’s have IP Forwarding enabled it said it wasn’t. But I could still connect to my hub and switch over to the Forge server. But, once I added the Pixelmonmod to the Forge server I get thrown a Kicked whilst connecting to Pixelmon: This server requires Forge installed. Any idea’s what could be the issue here?

Fixed this with the assistance of dark. Turns out I forgot to load the list from the config… :")

1 Like

Dont work for me can you explain exaclty how To config the plugins ^^
Thanks for this good works !

Regex match the name of the server that’s forge. That’s it.

I’m not usually the best at explaining these simple things, I can’t oversimplify. If you want a hand on teamspeak or Skype, or even in PM, then PM me. :smile:

Sorry yes its very simplie but i havre some difficult (im not english and i dont understand somes lines in configuration) also, i want to ask you , i mp you with my skype ^^

thanks :wink:

Can’t seem to get this to work with the latest bungeecord.

My forge server is sponge, and the allowed-server is also set to sponge… is this configuration correct?

Is there anything else I need to enable on the forge server?

Resolved. Down to user error.

Just a note to others.

In the sponge global.conf:
sponge.bungeecord.ipforwarding must be true.
sponge.modules.bungeecord must be true.

In the server.properties:
online-mode must be false.

In the BungeeCord config.yml:
ip-forwarding must be true


Just a warning, I just updated it, but haven’t had time to test.

I compleatly changed how it works to a much more delightful and cleaner method.

I can’t 100% guarentee it will work however. If you encounter any problems after updating, switch back to your old version and let me know ASAP so I can roll back the changes.

It doesn’t work. I’ll be testing moar later

1 Like

Only Java 7?!?!?

Generally when someone says requires Java 7 to run they mean 7 or later.

does this only support 1.8+ or is there a port for 1.7.10 pure forge servers?