Introduction à l'Anti-Xray
Qu'est-ce que le X-Ray ?
Le X-Ray est une technique de triche permettant aux joueurs de voir à travers les blocs solides pour localiser facilement les minerais, caves, bases cachées et autres structures. Cette triche peut être réalisée via des clients modifiés, des resource packs ou des mods.
Solution Paper
Paper intègre nativement un système anti-Xray performant qui fonctionne côté serveur. Contrairement aux plugins traditionnels, cette solution ne nécessite aucune installation supplémentaire et offre une protection robuste contre la majorité des techniques de X-Ray.
Avantages de la Solution Native
| Aspect | Description |
|---|---|
| Performance | Optimisé au niveau du code serveur |
| Compatibilité | Fonctionne avec tous les clients vanilla |
| Maintenance | Mis à jour automatiquement avec Paper |
| Fiabilité | Aucune dépendance externe |
| Configuration | Personnalisable par monde/dimension |
Fonctionnement Technique
Principe de Base
L'anti-Xray de Paper fonctionne en modifiant les données de chunks envoyées aux clients. Au lieu d'envoyer les véritables blocs, le serveur remplace certains blocs par des leurres jusqu'à ce que le joueur s'en approche suffisamment pour les révéler légitimement.
Processus de Révélation
Un bloc caché est révélé lorsqu'une des conditions suivantes est remplie :
- Le joueur casse un bloc adjacent
- Le joueur place un bloc adjacent
- Un piston déplace un bloc adjacent
- Une explosion détruit un bloc adjacent
- L'eau ou la lave coule sur un bloc adjacent
- Le bloc entre dans le champ de vision direct (raytracing activé)
Blocs Adjacents
Le système considère les 6 faces d'un bloc (haut, bas, nord, sud, est, ouest). Un bloc est considéré comme "exposé à l'air" si au moins une de ses faces touche un bloc transparent (air, verre, eau, etc.).
Modes de Fonctionnement
Paper propose deux modes distincts, chacun avec ses avantages et inconvénients.
Engine Mode 1 : Remplacement Simple
Ce mode remplace tous les blocs cachés (non exposés à l'air) par un bloc de remplacement unique, généralement la stone.
Fonctionnement :
Bloc original caché → Stone (ou bloc défini)
Bloc exposé à l'air → Reste inchangé
Avantages :
- Faible impact sur les performances
- Consommation mémoire minimale
- Bande passante réseau réduite
Inconvénients :
- Vulnérable aux X-Ray avancés qui filtrent la stone
- Les joueurs expérimentés peuvent deviner les emplacements
Cas d'usage recommandé :
- Serveurs avec ressources limitées
- Grande population de joueurs
- Serveurs créatifs ou semi-RP
Engine Mode 2 : Obfuscation Aléatoire
Ce mode remplace les blocs cachés par des blocs aléatoires choisis dans une liste configurable, créant un "bruit visuel" rendant le X-Ray inutile.
Fonctionnement :
Bloc original caché → Bloc aléatoire (diamond_ore, gold_ore, iron_ore, etc.)
Bloc exposé à l'air → Reste inchangé
Avantages :
- Protection maximale contre tous les types de X-Ray
- Impossible de distinguer les vrais minerais des faux
- Décourage complètement l'utilisation de X-Ray
Inconvénients :
- Impact plus élevé sur les performances
- Consommation mémoire accrue
- Bande passante réseau augmentée
Cas d'usage recommandé :
- Serveurs survie compétitifs
- Serveurs PvP/Faction
- Serveurs où l'économie des ressources est importante
Comparaison Visuelle
| Critère | Mode 1 | Mode 2 |
|---|---|---|
| Protection | Basique | Maximale |
| CPU | Faible | Modéré |
| RAM | Faible | Modéré |
| Réseau | Faible | Modéré |
| Recommandé | Casual | Compétitif |
Configuration Complète
Localisation du Fichier
Le fichier de configuration se trouve à :
config/paper-world-defaults.yml # Configuration par défaut
<world>/paper-world.yml # Configuration spécifique au monde
Structure de Configuration
anticheat:
anti-xray:
enabled: true
engine-mode: 2
max-block-height: 64
update-radius: 2
lava-obscures: false
use-permission: false
hidden-blocks:
- copper_ore
- deepslate_copper_ore
- raw_copper_block
- gold_ore
- deepslate_gold_ore
- raw_gold_block
- iron_ore
- deepslate_iron_ore
- raw_iron_block
- coal_ore
- deepslate_coal_ore
- lapis_ore
- deepslate_lapis_ore
- mossy_cobblestone
- obsidian
- chest
- diamond_ore
- deepslate_diamond_ore
- redstone_ore
- deepslate_redstone_ore
- clay
- emerald_ore
- deepslate_emerald_ore
- ender_chest
replacement-blocks:
- chest
- amethyst_block
- andesite
- budding_amethyst
- calcite
- coal_ore
- deepslate_coal_ore
- deepslate
- deepslate_copper_ore
- deepslate_diamond_ore
- deepslate_emerald_ore
- deepslate_gold_ore
- deepslate_iron_ore
- deepslate_lapis_ore
- deepslate_redstone_ore
- diorite
- dirt
- emerald_ore
- granite
- gravel
- iron_ore
- oak_planks
- smooth_basalt
- stone
- tuff
Paramètres Détaillés
enabled
enabled: true
Active ou désactive l'anti-Xray. Mettre à false pour désactiver complètement.
engine-mode
engine-mode: 2
Définit le mode de fonctionnement (1 ou 2). Voir la section précédente pour les détails.
max-block-height
max-block-height: 64
Hauteur maximale (coordonnée Y) à laquelle l'anti-Xray s'applique. Au-dessus de cette valeur, aucune obfuscation n'est effectuée. Réduire cette valeur améliore les performances.
Valeurs recommandées :
- Overworld : 64 (niveau de la mer)
- Nether : 128 (hauteur totale)
- End : 0 (désactivé, peu de minerais)
update-radius
update-radius: 2
Rayon de mise à jour des blocs lorsqu'un bloc est révélé. Une valeur de 2 signifie que les blocs dans un rayon de 2 blocs seront mis à jour.
Valeurs :
- 1 : Performance maximale, risque de blocs non révélés
- 2 : Équilibre recommandé
- 3+ : Sécurité maximale, impact performance
lava-obscures
lava-obscures: false
Si activé, la lave est considérée comme un bloc opaque pour l'obfuscation. Utile pour le Nether mais peut causer des problèmes visuels.
use-permission
use-permission: false
Si activé, les joueurs avec la permission paper.antixray.bypass ne seront pas affectés par l'anti-Xray. Utile pour les administrateurs lors du debug.
hidden-blocks
hidden-blocks:
- diamond_ore
- emerald_ore
# ...
Liste des blocs à cacher/obfusquer. Ces blocs seront remplacés lorsqu'ils ne sont pas exposés à l'air.
Mode 1 : Ces blocs sont remplacés par de la stone (ou le premier bloc de replacement-blocks).
Mode 2 : Ces blocs sont remplacés par un bloc aléatoire de la liste replacement-blocks.
replacement-blocks
replacement-blocks:
- stone
- deepslate
- granite
# ...
Liste des blocs utilisés comme remplacement.
Mode 1 : Seul le premier bloc de la liste est utilisé.
Mode 2 : Les blocs sont choisis aléatoirement dans cette liste.
Optimisation par Type de Serveur
Serveur Survie Vanilla
Configuration équilibrée pour une expérience survie classique.
anticheat:
anti-xray:
enabled: true
engine-mode: 2
max-block-height: 64
update-radius: 2
lava-obscures: false
use-permission: false
hidden-blocks:
- chest
- coal_ore
- deepslate_coal_ore
- copper_ore
- deepslate_copper_ore
- diamond_ore
- deepslate_diamond_ore
- emerald_ore
- deepslate_emerald_ore
- gold_ore
- deepslate_gold_ore
- iron_ore
- deepslate_iron_ore
- lapis_ore
- deepslate_lapis_ore
- redstone_ore
- deepslate_redstone_ore
replacement-blocks:
- chest
- coal_ore
- deepslate_coal_ore
- copper_ore
- deepslate_copper_ore
- diamond_ore
- deepslate_diamond_ore
- emerald_ore
- deepslate_emerald_ore
- gold_ore
- deepslate_gold_ore
- iron_ore
- deepslate_iron_ore
- lapis_ore
- deepslate_lapis_ore
- redstone_ore
- deepslate_redstone_ore
- amethyst_block
- andesite
- budding_amethyst
- calcite
- deepslate
- diorite
- dirt
- granite
- gravel
- smooth_basalt
- stone
- tuff
Serveur Faction/PvP
Configuration maximale pour environnements compétitifs où la triche doit être strictement empêchée.
anticheat:
anti-xray:
enabled: true
engine-mode: 2
max-block-height: 320
update-radius: 2
lava-obscures: false
use-permission: false
hidden-blocks:
- ancient_debris
- chest
- coal_ore
- deepslate_coal_ore
- copper_ore
- deepslate_copper_ore
- diamond_ore
- deepslate_diamond_ore
- emerald_ore
- deepslate_emerald_ore
- gold_ore
- deepslate_gold_ore
- iron_ore
- deepslate_iron_ore
- lapis_ore
- deepslate_lapis_ore
- nether_gold_ore
- nether_quartz_ore
- redstone_ore
- deepslate_redstone_ore
- trapped_chest
- ender_chest
- shulker_box
- white_shulker_box
- orange_shulker_box
- magenta_shulker_box
- light_blue_shulker_box
- yellow_shulker_box
- lime_shulker_box
- pink_shulker_box
- gray_shulker_box
- light_gray_shulker_box
- cyan_shulker_box
- purple_shulker_box
- blue_shulker_box
- brown_shulker_box
- green_shulker_box
- red_shulker_box
- black_shulker_box
- barrel
- dispenser
- dropper
- hopper
- spawner
- tnt
replacement-blocks:
- chest
- coal_ore
- deepslate_coal_ore
- copper_ore
- deepslate_copper_ore
- diamond_ore
- deepslate_diamond_ore
- emerald_ore
- deepslate_emerald_ore
- gold_ore
- deepslate_gold_ore
- iron_ore
- deepslate_iron_ore
- lapis_ore
- deepslate_lapis_ore
- redstone_ore
- deepslate_redstone_ore
- amethyst_block
- andesite
- budding_amethyst
- calcite
- deepslate
- diorite
- dirt
- granite
- gravel
- oak_planks
- smooth_basalt
- stone
- tuff
Serveur Économique
Configuration ciblant les ressources de valeur pour protéger l'économie du serveur.
anticheat:
anti-xray:
enabled: true
engine-mode: 2
max-block-height: 64
update-radius: 2
lava-obscures: false
use-permission: false
hidden-blocks:
- diamond_ore
- deepslate_diamond_ore
- emerald_ore
- deepslate_emerald_ore
- gold_ore
- deepslate_gold_ore
- ancient_debris
- chest
- ender_chest
- spawner
replacement-blocks:
- diamond_ore
- deepslate_diamond_ore
- emerald_ore
- deepslate_emerald_ore
- gold_ore
- deepslate_gold_ore
- coal_ore
- deepslate_coal_ore
- iron_ore
- deepslate_iron_ore
- copper_ore
- deepslate_copper_ore
- deepslate
- stone
- granite
- diorite
- andesite
Serveur Performance (Grande Population)
Configuration minimale pour serveurs avec beaucoup de joueurs où les performances sont critiques.
anticheat:
anti-xray:
enabled: true
engine-mode: 1
max-block-height: 48
update-radius: 1
lava-obscures: false
use-permission: false
hidden-blocks:
- diamond_ore
- deepslate_diamond_ore
- emerald_ore
- deepslate_emerald_ore
- ancient_debris
replacement-blocks:
- stone
Configuration par Dimension
Overworld (world)
Fichier : world/paper-world.yml
anticheat:
anti-xray:
enabled: true
engine-mode: 2
max-block-height: 64
update-radius: 2
lava-obscures: false
use-permission: false
hidden-blocks:
- chest
- coal_ore
- deepslate_coal_ore
- copper_ore
- deepslate_copper_ore
- diamond_ore
- deepslate_diamond_ore
- emerald_ore
- deepslate_emerald_ore
- gold_ore
- deepslate_gold_ore
- iron_ore
- deepslate_iron_ore
- lapis_ore
- deepslate_lapis_ore
- redstone_ore
- deepslate_redstone_ore
- raw_copper_block
- raw_gold_block
- raw_iron_block
replacement-blocks:
- amethyst_block
- andesite
- budding_amethyst
- calcite
- chest
- coal_ore
- deepslate_coal_ore
- copper_ore
- deepslate_copper_ore
- deepslate
- diamond_ore
- deepslate_diamond_ore
- diorite
- dirt
- emerald_ore
- deepslate_emerald_ore
- gold_ore
- deepslate_gold_ore
- granite
- gravel
- iron_ore
- deepslate_iron_ore
- lapis_ore
- deepslate_lapis_ore
- oak_planks
- redstone_ore
- deepslate_redstone_ore
- smooth_basalt
- stone
- tuff
Nether (world_nether)
Fichier : world_nether/paper-world.yml
anticheat:
anti-xray:
enabled: true
engine-mode: 2
max-block-height: 128
update-radius: 2
lava-obscures: false
use-permission: false
hidden-blocks:
- ancient_debris
- chest
- nether_gold_ore
- nether_quartz_ore
- gilded_blackstone
replacement-blocks:
- ancient_debris
- basalt
- blackstone
- chest
- gilded_blackstone
- gravel
- magma_block
- nether_bricks
- nether_gold_ore
- nether_quartz_ore
- netherrack
- soul_sand
- soul_soil
End (world_the_end)
Fichier : world_the_end/paper-world.yml
L'End contient peu de ressources à protéger. Une configuration minimale ou désactivée est généralement suffisante.
anticheat:
anti-xray:
enabled: true
engine-mode: 1
max-block-height: 0
update-radius: 2
lava-obscures: false
use-permission: false
hidden-blocks:
- chest
- ender_chest
- shulker_box
replacement-blocks:
- end_stone
Ou simplement désactivé :
anticheat:
anti-xray:
enabled: false
Impact sur les Performances
Métriques par Mode
| Métrique | Mode 1 | Mode 2 | Sans Anti-Xray |
|---|---|---|---|
| CPU (chunk gen) | +5-10% | +15-25% | Baseline |
| RAM par chunk | +0.1 KB | +0.5-1 KB | Baseline |
| Bande passante | +2-5% | +10-20% | Baseline |
| Latence réseau | Négligeable | +1-5 ms | Baseline |
Facteurs Influençant les Performances
Nombre de hidden-blocks
Plus la liste est longue, plus le traitement est lourd.
# Léger (5-10 blocs)
hidden-blocks:
- diamond_ore
- emerald_ore
- gold_ore
- ancient_debris
- chest
# Lourd (20+ blocs)
hidden-blocks:
- coal_ore
- deepslate_coal_ore
- copper_ore
- deepslate_copper_ore
# ... 20+ entrées
max-block-height
Réduire cette valeur diminue significativement la charge.
# Performances optimales
max-block-height: 48
# Équilibré
max-block-height: 64
# Protection maximale (coûteux)
max-block-height: 320
update-radius
Chaque augmentation multiplie le nombre de blocs à vérifier.
# Rayon 1 : 6 blocs vérifiés
update-radius: 1
# Rayon 2 : 26 blocs vérifiés
update-radius: 2
# Rayon 3 : 98 blocs vérifiés
update-radius: 3
Optimisation des Performances
Pour serveurs à haute charge
anticheat:
anti-xray:
enabled: true
engine-mode: 1 # Mode le plus léger
max-block-height: 48 # Limite basse
update-radius: 1 # Rayon minimal
hidden-blocks: # Liste courte
- diamond_ore
- deepslate_diamond_ore
- ancient_debris
replacement-blocks:
- stone
Monitoring des performances
Utilisez Spark pour analyser l'impact :
/spark profiler start
# Attendez quelques minutes pendant que les joueurs jouent
/spark profiler stop
Recherchez dans le rapport :
AntiXraydans les threadsChunkSerializerpour l'impact sur la générationPlayerConnectionpour l'impact réseau
Dépannage et Problèmes Courants
Problème : Blocs visibles brièvement avant obfuscation
Symptôme : Les joueurs voient les vrais blocs pendant une fraction de seconde lors du chargement des chunks.
Cause : Latence réseau ou charge serveur élevée.
Solutions :
# Augmenter la priorité de l'anti-xray
update-radius: 2
# Vérifier la configuration réseau
# Dans server.properties
network-compression-threshold=256
Problème : Blocs qui restent cachés après minage
Symptôme : Après avoir cassé un bloc, les blocs adjacents restent obfusqués.
Cause : update-radius trop faible ou bug de version.
Solutions :
# Augmenter le rayon de mise à jour
update-radius: 2
# Vérifier que Paper est à jour
# Télécharger la dernière build sur papermc.io
Problème : Performance dégradée
Symptôme : TPS bas, lag lors du chargement de chunks.
Solutions :
# Réduire la charge
engine-mode: 1
max-block-height: 48
update-radius: 1
# Réduire la liste des blocs
hidden-blocks:
- diamond_ore
- deepslate_diamond_ore
- emerald_ore
- deepslate_emerald_ore
Problème : Certains blocs ne sont pas cachés
Symptôme : Les joueurs X-Ray voient certains minerais.
Cause : Bloc non inclus dans hidden-blocks ou exposé à l'air.
Solutions :
# Vérifier que tous les variants sont inclus
hidden-blocks:
- diamond_ore
- deepslate_diamond_ore # Ne pas oublier la version deepslate
Problème : Incompatibilité avec certains plugins
Symptôme : Plugins de protection ou d'économie fonctionnent mal.
Cause : Certains plugins interagissent avec les blocs de manière non standard.
Solutions :
- Mettre à jour le plugin concerné
- Contacter le développeur du plugin
- Ajouter les admins au bypass :
use-permission: true
Puis donner la permission paper.antixray.bypass aux admins.
Commandes de Debug
# Recharger la configuration (après modification)
/paper reload
# Vérifier la configuration active
/paper dumpplugins # Indirectement, vérifie que Paper fonctionne
# Profiler le serveur
/spark profiler start
/spark profiler stop
Bonnes Pratiques
Configuration Initiale
- Commencer en Mode 2 pour une protection maximale
- Ajuster selon les performances observées
- Tester avec des joueurs de confiance utilisant X-Ray
Liste des Blocs Recommandée
Indispensables (tous serveurs)
diamond_ore/deepslate_diamond_oreemerald_ore/deepslate_emerald_oreancient_debris
Recommandés (survie)
gold_ore/deepslate_gold_oreiron_ore/deepslate_iron_orecopper_ore/deepslate_copper_orelapis_ore/deepslate_lapis_oreredstone_ore/deepslate_redstone_orecoal_ore/deepslate_coal_ore
Conteneurs (PvP/Faction)
chest/trapped_chestender_chestbarrelshulker_box(toutes couleurs)hopperdispenser/dropper
Spéciaux
spawner(si important sur votre serveur)tnt(serveurs PvP)obsidian(bases cachées)
Maintenance
- Mettez à jour Paper régulièrement pour les correctifs
- Surveillez les performances avec Spark ou Timings
- Testez après chaque mise à jour majeure de Minecraft
- Documentez vos modifications dans un fichier de changelog
Sécurité Complémentaire
L'anti-Xray ne remplace pas d'autres mesures :
- Plugin anti-cheat (Matrix, Vulcan, Grim)
- Logs de blocs (CoreProtect, Prism)
- Modération active et signalements joueurs
- Vérification régulière des joueurs suspects
Ressources et Références
Documentation Officielle
- Paper Documentation : https://docs.papermc.io/
- Configuration Anti-Xray : https://docs.papermc.io/paper/anti-xray
Outils Utiles
- Spark Profiler : https://spark.lucko.me/
- Paper Timings : https://timings.aikar.co/
Communauté
- Discord PaperMC : https://discord.gg/papermc
- Forums SpigotMC : https://www.spigotmc.org/

