Proposal: Kick on unsupported feature
#1
This is an alternative to "Proposal: Allowed Protocols configuration".

1. Clients of all supported protocols are allowed to join.

2. If a client is about to encounter an unsupported feature, it is kicked with a proper error message. For instance, "Sorry, your protocol (1.7.2) does not support purpur blocks, and they were encountered in-game".

3. If a feature is deemed non essential (e.g. new unsupported sound), it is simply not shown/sent to the client.

Advantages: No complicated configurations, no client-side crashes, simple protocol transitions. Admins that want to support older protocols are responsible for disabling newer mobs, blocks, or features.

Implementation: Should be simple. Some boolean lookup arrays with O(1) lookup complexity.
Reply
Thanks given by:
#2
Implementation is not so simple - the code will need to inspect each chunk for unsupported blocks.

Also, right now Cuberite does kinda allow client-mod-blocks - it will not simulate such blocks, but it will accept their placement and won't touch them. Your proposal breaks that. Not that I'm saying it's essential, but it could be considered an advantage, especially if we allow plugin-provided block handlers in the future (for which this proposal is non-compatible).
Reply
Thanks given by:
#3
Good points regarding blocks. My mind was thinking of unknown mobs and items. However, unknown blocks do not crash clients and thus can be ignored. What do you think of my proposal if blocks are ignored and this is applied for the things such as mobs, inventory items, etc?
Reply
Thanks given by:
#4
Older clients crash on unknown blocks as well. And still it's non-compatible with plugin-provided entities (if we ever get those).

Another point to consider: Once the client gets kicked, there's no way for them to re-connect until someone else goes in and removes the offending feature - the kick would save the player's position so reconnecting will result in a kick again.
Reply
Thanks given by:
#5
Wouldn't it be wiser, to just have a black-list per version.
Like if i run latest cuberite, and i set version to 1.7 there would be a config for 1.7
blacklist-1.7.conf and it would contain all blocks that are not compatible with this version and the server will simply not generate those.
Having a
[blocks]
[mobs]

section in there would fix a ton ? not sure if this is already something thats done or voted against.
just read this and was like uhmz.
The configs could be updated for every new version, though not sure if the generators will be messed up cause of this.
cause some structure like things might need those new blocks, so a
[structure] section might be needed as well to block some of those.

could also be simply a replace with option instead of removing.
redsand=sand if in this case redsand is not supported.
Reply
Thanks given by:




Users browsing this thread: 1 Guest(s)