This mainly could permit to have texture pack, without needing other client to have them, server manager without needing the clients to have them, to make clients processing less data (because somebody else is using a client process hungry script to show him some data, that his computer can afford bbut not yours ... :lol: )
Here is a complete diagram about how it would works :
Diagram
I consider that actual mods could works the same way they do for now, there simply two main things to consider :
- mods could provide control-host.lua and control-client.lua for respectively host and client only mods:
- Visualy work on the same workspace but would be sandboxed and so couldn't cause a desync. For example, a client mod couldn't add, modify or delete any common gui.
- If a client or host script need to interface with common script (blueprint manager for example), would use remote interface, game would detect that it's a defined common interface and so would broadcast to everybody.
- Host scripts would get disabled if bot the host. Same for client script if a headless server.
- Host could interface directly with a specified client without informing other clients.
- Host could see in debug informations data size transmission from each client, a data limit in specified time could also be set to prevent spam (set to 0 to disallow such functionnality).
- mods would only provide data.lua and data-updates.lua:
- Host, Client and Common prototype would be "separated" at startup
- A mod than only modify client stuff would be considered as client mod. Same for host mods. For ease of use, any mod could set metadata to inform the player if it contain client, common and host content, but this data is totatly irelevant when connecting.
- Every cosmetic (graphics, audio, particles ...) property is considered client.
- Unless something is in place, to help with texture packs and variation, if client have less variation, then "actual variant" modulo "max client variant" rule could be applied.
- Some entities could be defined as client side, they could be used for helpers mods to planify, see range of turret,
- Gui would have inheritence to parent elements (so if the client don't have the wanted style, it takes his nearest defined parent)
Please ask if anything is not clear.