A good system could be implemented if graal stored players location for the last 5 seconds. When you swing, you send your current location and a timestamp to the server. It deducts the timestamp from the current time then checks if any players was in that spot at that time. If so, hit them. Otherwise, nothing. If over 5 seconds, reject and laugh at the player.
It's not going to be perfect but might make things better than what I have seen at times. This follows the method i've seen used on FPS