Better Advancements

Better Advancements

142M Downloads

Servers are marked incompatible when installed client-side only.

Moleculor opened this issue ยท 3 comments

commented

It's my understanding that this mod is client-side only. (I could be wrong?)

It's also my understanding that you should be able to connect to servers that do not have this mod installed, if you have the mod installed on your client.

In fact, I have a server with (many) mods installed, but this mod is not installed on the server, and my client can connect to my server with this mod installed on my client.

So far? So good.

However, the server, in the server listing menu, reports to the client that the client is incompatible.

image

Reminder, I can still connect to this server with no issues.

In full disclosure, I haven't narrowed this down to exclusively this mod being one cause of it, however I have looked up the debug.log which shows

[18Jan2021 15:53:28.651] [Netty Client IO #2/DEBUG] [net.minecraftforge.fml.client.ClientHooks/CLIENTHOOKS]: Received FML ping data from server at moleculor.mcserver.us: FMLNETVER=2, mod list is compatible : false, channel list is compatible: true, extra server mods: {}
[18Jan2021 15:53:28.651] [Netty Client IO #2/INFO] [net.minecraftforge.fml.client.ClientHooks/CLIENTHOOKS]: Client has mods that are missing on server: [mightyarchitect, autofish, betteradvancements, blame]

As you can see, this mod appears in the list of mods that are "missing on server".

According to Forge's documentation, a client side only mod...

...should override the DISPLAYTEST extension point to make sure that Forge does not think your mod is required on the server, which would lead to the server being shown as incompatible. For that, put something similar to this into your main mod class constructor:

//Make sure the mod being absent on the other network side does not cause the client to display the server as incompatible
ModLoadingContext.get().registerExtensionPoint(ExtensionPoint.DISPLAYTEST, () -> Pair.of(() -> FMLNetworkConstants.IGNORESERVERONLY, (a, b) -> true));

As I do not seem to be able to pull up DISPLAYTEST in a search of this repository, I suspect the above (or something equivalent) has not been done.

I would like to request it, or something like it, be done? Please? ๐Ÿ˜€

commented

Will add that soon (this week, when I have some time). Thanks for the amazing report and providing the solution ๐Ÿ‘

commented

Confirmed fixed in #96

commented

up