I would like my mod to support vanilla clients when running on a server, as much as possible. I know that the following work:
The server will accept connections from vanilla clients if I set acceptableRemoteVersions = "*"
If I add a recipe, the client will not see a preview of the result, but they can still shift-click the output box and perform the recipe. I'm OK with this.
I saw items with the default model (purple/black box) while playing on a server using a vanilla client. So I know that in some cases the vanilla client will use this when it doesn't know how to render an item (but I don't know the details).
When I naively tried to connect to a server with my mod, I found out:
The vanilla client will crash if the server sends it an unknown item id.
I am wondering if I can get the server to substitute a vanilla item when it sends packets to a vanilla client; ie the server will know the player is holding mymod:item, but it will check if the client is vanilla, and if so it will tell the client the player is holding minecraft:dirt. Is there any hook I could use to accomplish this, or another approach?
See https://github.com/stewbasic/CommandItem if more specifics are needed.