Cuberite Forum
Proposal: Kick on unsupported feature - Printable Version

+- Cuberite Forum (https://forum.cuberite.org)
+-- Forum: Cuberite (https://forum.cuberite.org/forum-4.html)
+--- Forum: Development (https://forum.cuberite.org/forum-13.html)
+--- Thread: Proposal: Kick on unsupported feature (/thread-2862.html)



Proposal: Kick on unsupported feature - LogicParrot - 01-25-2017

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.


RE: Proposal: Kick on unsupported feature - xoft - 01-25-2017

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).


RE: Proposal: Kick on unsupported feature - LogicParrot - 01-25-2017

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?


RE: Proposal: Kick on unsupported feature - xoft - 01-26-2017

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.


RE: Proposal: Kick on unsupported feature - ThuGie - 01-26-2017

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.