1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-09-30 19:22:14 +00:00
Commit graph

4 commits

Author SHA1 Message Date
HybridDog
6327101607 Refactor server-side node placement or dig prediction handling
The code for handling `TOSERVER_INTERACT` packets has some style-related
problems:
* There are five places with mapblock-sending code to undo predictions in
  the large `handleCommand_Interact` method in `serverpackethandler.cpp`,
  so these can be abstracted away into a function to shorten the code.
* In `networkprotocol.h`, below `TOSERVER_INTERACT`,
  there is an outdated copy of the `InteractAction` enum
  documentation and the player position information is not mentioned.
* In `serverpackethandler.cpp`, there is a (newer) copy of the
  `TOSERVER_INTERACT` documentation from `networkprotocol.h`.

Furthermore, the way the server undoes or confirms client-side node placement
or dig predictions looks inconsistent, thus erroneous:
* If a player tries to place a node in a distance too far away or if he/she
  is dead,
  only the mapblock containing `pointed.node_undersurface` is triggered to be
  sent although the player may have placed the node at
  `pointed.node_abovesurface` and this position may be in a different mapblock.
* Similarly, if a player without interact privilege tries to place a node,
  only the mapblock containing `pointed.node_abovesurface` is triggered to be
  sent although the player may have placed the node at
  `pointed.node_undersurface` and this position may be in a different mapblock.

This change addresses the problems listed above:
* Fix the documentation comments related to the TOSERVER_INTERACT package
  content
* Move mapblock sending code related to predictions to ClientInterface
* If the player tries to place but has no interact privilege, is dead,
  or exceeds the permitted distance,
  send both the mapblock corresponding to `pointed.node_undersurface` and
  `pointed.node_abovesurface` if these mapblocks differ
2024-08-14 17:15:39 +02:00
sfan5
85e717fcd1
Rework object attachment handling to fix bugs (#14825) 2024-08-12 15:32:18 +02:00
lhofhansl
0d4b489545
Detect air-only blocks instead of day/night differences (#14264)
* Detect air-only blocks instead day/night differences

* Write !is_air into the former day-night-diff bit on disk, so that old server can still read maps written by new servers

* Only set is_air bit when reading from disk
2024-02-22 21:47:42 -08:00
sfan5
5dbc1d4c08 Move some files to src/server/ 2024-01-27 10:33:32 +01:00
Renamed from src/clientiface.cpp (Browse further)