Block-able activities on Minecraft Servers
There's usually a desire to block certain behaviors on a Minecraft server, however it may or may not be possible.
Seed Crackingโ
"Seed Cracking" is the process of reverse-engineering the seed of a world. This is usually undesirable in a survival setting, as if a player knows the seed of a world, they can then load the world in singleplayer and locate POIs, ores, etc. There's a few different ways to handle this.
Paper's Feature Seedsโ
Paper and it's forks have a feature called "Feature Seeds". While the world seed still determines the terrain of the world, feature seeds allow you to set a separate seed for each type of feature (villages, mineshafts, strongholds, etc). Paper even has an option to allow you to generate a random seed for every possible feature type. Check out their docs for more info.
While to the best of my knowledge this doesn't affect caves or ores, most loot is found in the various POIs. Additionally, by having the major POI locations randomized, this (hopefully) makes cracking the main terrain seed a bit harder.
Modify the world generationโ
Seed cracking relies on the ability to reverse engineer the vanilla Minecraft world generation code. By using a world generator plugin/mod, the vast majority of seed crackers will be broken. That being said, it's technically feasible that someone made a seed cracker for that specific plugin / mod, so it's not a horrible idea to tweak the generator's settings a bit, if possible. However, that would be a pretty dedicated seed cracker, so you probably don't need to go that far.
Use a hand-built worldโ
I hope it goes without saying that it's impossible to crack the seed of a world completely built by hand. That being said, if the world was downloaded from a public place, then it's possible a player could find it and download it, thus getting the same end goal (accessing the world in single player). If you've got the resources to commission a custom-built world, then that's the only way to completely and utterly make it impossible to get the original world.
Modified Clientsโ
This depends on what specific kind of modification you want to block, but in most cases info sent to and from clients applies.
Hacked clientsโ
In most cases, info sent from clients applies. Anti-cheats do their best to detect those who use hacks by seeing if they do anything that wouldn't be possible on vanilla, among other things, but they aren't perfect. It's often easier to detect the results of the hack (i.e. if a player has above-average stats) and then fire an alert for manual observation.
Botsโ
Pretty similar to hacked client, automated detection is very difficult. At least with miner bots, detecting the rate of ore acquisition is fairly easy for triggering an alert.
X-Ray, Free Cam, World Downloadersโ
X-Ray is an exceedingly common hack that makes common blocks (stone, dirt, gravel, etc.) invisible to make valuable blocks (ores, chests, etc.) easily visible.
Free cam is a fairly common hack that allows a player to move their camera away from their body and look around the nearby area while their body remains stationary.
World downloaders are modified clients that store chunks to eventually construct a world that can be loaded in single player.
While these might seem unrelated, they all rely on the same principle: chunks are sent to clients, and as such these hacks are completely impossible to detect. However, it's sometimes possible to block the affects of the hacks:
Obfuscation-based Anti-Xrayโ
This is probably the easiest way to block X-Ray. Instead of sending blocks that x-ray likely removes that aren't visible (i.e. stone hidden behind a wall), tell the client they are something that x-ray would care about (i.e. ores). This will result in x-ray seeing massive blocks of "fake" ores, but they have no way of differentiating the fake ores from the real ores until they actually mine to them.
Paper and it's forks have this style of anti-xray built in. Check out their docs for how to set it up (they call this style "engine mode 2").
Ray-casting Anti-Xray / Anti-Free Camโ
It's theoretically possible to not send parts of the world that aren't visible to the player (i.e. behind a wall), however this is incredibly performance-heavy (mainly on the server but also on the client) and as such is not a viable solution. That being said, there are a handful of plugins that attempt to implement this if you want to try it out.
F3 screen / Coordinatesโ
The vast majority of the F3 screen, and the screen itself is clientside, and as such is impossible to block (see also info sent to clients). Theoretically it's possible for a plugin to offset the coordinates sent to each player, however this is highly likely to cause issues.
Personal note, I don't know why people want to block coordinates anyways...
Generic Answersโ
(A few common answers shared by a bunch of topics)
Info sent to clientsโ
Unfortunately, the server must send the client a significant amount of data in order for the client to function. Once that data is on the client, there's no way to restrict what the client does with it (i.e. prevent the client from saving it). In some cases you might be able to detect if a player is attempting to save stuff, and disconnect them or block the data from being sent, but this is usually pretty difficult or impossible to do.
Info sent from clientsโ
The client sends a bunch of data back to the server. Unfortunately, there's no way to determine if the data a client it sends back is legitimately generated by the vanilla client, or if it's been modified or automated.