Introducción a Anti-Xray
¿Qué es X-Ray?
X-Ray es una técnica de trampa que permite a los jugadores ver a través de bloques sólidos para localizar fácilmente minerales, cuevas, bases ocultas y otras estructuras. Esta trampa se puede realizar a través de clientes modificados, paquetes de recursos o mods.
Solución Paper
Paper incorpora nativamente un sistema anti-Xray efectivo que funciona en el lado del servidor. A diferencia de los plugins tradicionales, esta solución no requiere ninguna instalación adicional y ofrece una protección sólida contra la mayoría de las técnicas de X-Ray.
Ventajas de la Solución Nativa
| Aspecto | Descripción |
|---|---|
| Rendimiento | Optimizado a nivel de código servidor |
| Compatibilidad | Funciona con todos los clientes vanilla |
| Mantenimiento | Actualizado automáticamente con Paper |
| Fiabilidad | Sin dependencias externas |
| Configuración | Personalizable por mundo/dimensión |
Funcionamiento Técnico
Principio Básico
El anti-Xray de Paper funciona modificando los datos de chunks enviados a los clientes. En lugar de enviar los bloques reales, el servidor reemplaza algunos bloques por señuelos hasta que el jugador se acerque lo suficiente para revelarlos legítimamente.
Proceso de Revelación
Un bloque oculto se revela cuando se cumple una de las siguientes condiciones:
- El jugador rompe un bloque adyacente
- El jugador coloca un bloque adyacente
- Un pistón mueve un bloque adyacente
- Una explosión destruye un bloque adyacente
- El agua o la lava fluyen sobre un bloque adyacente
- El bloque entra en el campo de visión directa (raytracing activado)
Bloques Adyacentes
El sistema considera las 6 caras de un bloque (arriba, abajo, norte, sur, este, oeste). Un bloque se considera "expuesto al aire" si al menos una de sus caras toca un bloque transparente (aire, vidrio, agua, etc.).
Modos de Funcionamiento
Paper ofrece dos modos distintos, cada uno con sus ventajas e inconvenientes.
Modo Motor 1: Reemplazo Simple
Este modo reemplaza todos los bloques ocultos (no expuestos al aire) por un bloque de reemplazo único, generalmente la piedra.
Funcionamiento:
Bloque original oculto → Piedra (o bloque definido)
Bloque expuesto al aire → Permanece sin cambios
Ventajas:
- Bajo impacto en el rendimiento
- Consumo de memoria mínimo
- Ancho de banda de red reducido
Inconvenientes:
- Vulnerable a X-Ray avanzados que filtran la piedra
- Los jugadores experimentados pueden adivinar las ubicaciones
Uso recomendado:
- Servidores con recursos limitados
- Gran población de jugadores
- Servidores creativos o semi-RP
Modo Motor 2: Ofuscación Aleatoria
Este modo reemplaza los bloques ocultos por bloques aleatorios seleccionados de una lista configurable, creando un "ruido visual" que hace inútil el X-Ray.
Funcionamiento:
Bloque original oculto → Bloque aleatorio (diamante, oro, hierro, etc.)
Bloque expuesto al aire → Permanece sin cambios
Ventajas:
- Protección máxima contra todos los tipos de X-Ray
- Imposible distinguir entre minerales reales y falsos
- Desalienta completamente el uso de X-Ray
Inconvenientes:
- Impacto más alto en el rendimiento
- Consumo de memoria aumentado
- Ancho de banda de red incrementado
Uso recomendado:
- Servidores de supervivencia competitivos
- Servidores PvP/Facción
- Servidores donde la economía de recursos es importante
Comparación Visual
| Criterio | Modo 1 | Modo 2 |
|---|---|---|
| Protección | Básica | Máxima |
| CPU | Bajo | Modrado |
| RAM | Bajo | Modrado |
| Red | Bajo | Modrado |
| Recomendado | Casual | Competitivo |
Configuración Completa
Ubicación del Archivo
El archivo de configuración se encuentra en:
config/paper-world-defaults.yml # Configuración por defecto
<world>/paper-world.yml # Configuración específica del mundo
Estructura de Configuración
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
Parámetros Detallados
enabled
enabled: true
Activa o desactiva el anti-Xray. Establecer en false para desactivar completamente.
engine-mode
engine-mode: 2
Define el modo de funcionamiento (1 o 2). Ver la sección anterior para más detalles.
max-block-height
max-block-height: 64
Altura máxima (coordenada Y) a la que se aplica el anti-Xray. Por encima de este valor, no se realiza ninguna obfuscación. Reducir este valor mejora el rendimiento.
Valores recomendados:
- Mundo Normal: 64 (nivel del mar)
- Inframundo: 128 (altura total)
- End: 0 (desactivado, pocos minerales)
update-radius
update-radius: 2
Radio de actualización de bloques cuando se revela un bloque. Un valor de 2 significa que los bloques en un radio de 2 bloques se actualizarán.
Valores:
- 1 : Máximo rendimiento, riesgo de bloques no revelados
- 2 : Equilibrio recomendado
- 3+ : Máxima seguridad, impacto en el rendimiento
lava-obscures
lava-obscures: false
Si se activa, la lava se considera un bloque opaco para la obfuscación. Útil para el Inframundo pero puede causar problemas visuales.
use-permission
use-permission: false
Si está activado, los jugadores con el permiso paper.antixray.bypass no se verán afectados por el anti-Xray. Útil para los administradores durante la depuración.
bloques-ocultos
bloques-ocultos:
- mineral_de_diamante
- mineral_de_esmeralda
# ...
Lista de bloques a ocultar/ofuscar. Estos bloques serán reemplazados cuando no estén expuestos al aire.
Modo 1: Estos bloques son reemplazados por piedra (o el primer bloque de bloques-de-reemplazo).
Modo 2: Estos bloques son reemplazados por un bloque aleatorio de la lista de bloques-de-reemplazo.
bloques-de-reemplazo
bloques-de-reemplazo:
- piedra
- pizarra
- granito
# ...
Lista de bloques utilizados como reemplazo.
Modo 1: Solo se utiliza el primer bloque de la lista.
Modo 2: Los bloques se eligen aleatoriamente de esta lista.
Optimización por Tipo de Servidor
Servidor de Supervivencia Vanilla
Configuración equilibrada para una experiencia de supervivencia clásica.
anticheat:
anti-xray:
enabled: true
engine-mode: 2
max-block-height: 64
update-radius: 2
lava-obscures: false
use-permission: false
bloques-ocultos:
- cofre
- mineral_de_carbón
- mineral_de_pizarra_de_profundidad
- mineral_de_cobre
- mineral_de_pizarra_de_cobre
- mineral_de_diamante
- mineral_de_pizarra_de_diamante
- mineral_de_esmeralda
- mineral_de_pizarra_de_esmeralda
- mineral_de_oro
- mineral_de_pizarra_de_oro
- mineral_de_hierro
- mineral_de_pizarra_de_hierro
- mineral_de_lapislázuli
- mineral_de_pizarra_de_lapislázuli
- mineral_de_redstone
- mineral_de_pizarra_de_redstone
bloques-de-reemplazo:
- cofre
- mineral_de_carbón
- mineral_de_pizarra_de_profundidad
- mineral_de_cobre
- mineral_de_pizarra_de_cobre
- mineral_de_diamante
- mineral_de_pizarra_de_diamante
- mineral_de_esmeralda
- mineral_de_pizarra_de_esmeralda
- mineral_de_oro
- mineral_de_pizarra_de_oro
- mineral_de_hierro
- mineral_de_pizarra_de_hierro
- mineral_de_lapislázuli
- mineral_de_pizarra_de_lapislázuli
- mineral_de_redstone
- mineral_de_pizarra_de_redstone
- bloque_de_amatista
- andesita
- amatista_brotante
- calcita
- pizarra
- diorita
- tierra
- granito
- grava
- basalto_pulido
- piedra
- toba
Servidor de Facción/PvP
Configuración máxima para entornos competitivos donde el fraude debe ser estrictamente evitado.
anticheat:
anti-xray:
enabled: true
engine-mode: 2
max-block-height: 320
update-radius: 2
lava-obscures: false
use-permission: false
bloques-ocultos:
- escombros_antiguos
- cofre
- mineral_de_carbón
- mineral_de_pizarra_de_profundidad
- mineral_de_cobre
- mineral_de_pizarra_de_cobre
- mineral_de_diamante
- mineral_de_pizarra_de_diamante
- mineral_de_esmeralda
- mineral_de_pizarra_de_esmeralda
- mineral_de_oro
- mineral_de_pizarra_de_oro
- mineral_de_hierro
- mineral_de_pizarra_de_hierro
- mineral_de_lapislázuli
- mineral_de_pizarra_de_lapislázuli
- mineral_de_oro_del_nether
- mineral_de_cuarzo_del_nether
- mineral_de_redstone
- mineral_de_pizarra_de_redstone
- cofre_trampeado
- cofre_de_ender
- caja_de_shulker
- caja_de_shulker_blanca
- caja_de_shulker_naranja
- caja_de_shulker_magenta
- caja_de_shulker_azul_celeste
- caja_de_shulker_amarilla
- caja_de_shulker_verde_lima
- caja_de_shulker_rosa
- caja_de_shulker_gris
- caja_de_shulker_gris_claro
- caja_de_shulker_cian
- caja_de_shulker_púrpura
- caja_de_shulker_azul
- caja_de_shulker_marrón
- caja_de_shulker_verde
- caja_de_shulker_roja
- caja_de_shulker_negra
- barril
- dispensador
- dropper
- embudo
- generador
- tnt
bloques-de-reemplazo:
- cofre
- mineral_de_carbón
- mineral_de_pizarra_de_profundidad
- mineral_de_cobre
- mineral_de_pizarra_de_cobre
- mineral_de_diamante
- mineral_de_pizarra_de_diamante
- mineral_de_esmeralda
- mineral_de_pizarra_de_esmeralda
- mineral_de_oro
- mineral_de_pizarra_de_oro
- mineral_de_hierro
- mineral_de_pizarra_de_hierro
- mineral_de_lapislázuli
- mineral_de_pizarra_de_lapislázuli
- mineral_de_redstone
- mineral_de_pizarra_de_redstone
- bloque_de_amatista
- andesita
- amatista_brotante
- calcita
- pizarra
- diorita
- tierra
- granito
- grava
- tablones_de_roble
- basalto_pulido
- piedra
- toba
Servidor Económico
Configuración dirigida a los recursos de valor para proteger la economía del servidor.
anticheat:
anti-xray:
enabled: true
engine-mode: 2
max-block-height: 64
update-radius: 2
lava-obscures: false
use-permission: false
bloques-ocultos:
- mineral_de_diamante
- mineral_de_pizarra_de_diamante
- mineral_de_esmeralda
- mineral_de_pizarra_de_esmeralda
- mineral_de_oro
- mineral_de_pizarra_de_oro
- escombros_antiguos
- cofre
- cofre_de_ender
- generador
bloques-de-reemplazo:
- mineral_de_diamante
- mineral_de_pizarra_de_diamante
- mineral_de_esmeralda
- mineral_de_pizarra_de_esmeralda
- mineral_de_oro
- mineral_de_pizarra_de_oro
- mineral_de_carbón
- mineral_de_pizarra_de_carbón
- mineral_de_hierro
- mineral_de_pizarra_de_hierro
- mineral_de_cobre
- mineral_de_pizarra_de_cobre
- pizarra
- piedra
- granito
- diorita
- andesita
Servidor de Rendimiento (Alta Población)
Configuración mínima para servidores con muchos jugadores donde el rendimiento es crítico.
anticheat:
anti-xray:
enabled: true
engine-mode: 1
max-block-height: 48
update-radius: 1
lava-obscures: false
use-permission: false
bloques-ocultos:
- mineral_de_diamante
- mineral_de_pizarra_de_diamante
- mineral_de_esmeralda
- mineral_de_pizarra_de_esmeralda
- escombros_antiguos
bloques-de-reemplazo:
- piedra
Configuración por Dimensión
Sobremundo (world)
Archivo: 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
bloques-ocultos:
- cofre
- mineral_de_carbón
- mineral_de_pizarra_de_profundidad
- mineral_de_cobre
- mineral_de_pizarra_de_cobre
- mineral_de_diamante
- mineral_de_pizarra_de_diamante
- mineral_de_esmeralda
- mineral_de_pizarra_de_esmeralda
- mineral_de_oro
- mineral_de_pizarra_de_oro
- mineral_de_hierro
- mineral_de_pizarra_de_hierro
- mineral_de_lapislázuli
- mineral_de_pizarra_de_lapislázuli
- mineral_de_redstone
- mineral_de_pizarra_de_redstone
- bloque_de_cobre_crudo
- bloque_de_oro_crudo
- bloque_de_hierro_crudo
bloques-de-reemplazo:
- bloque_de_amatista
- andesita
- amatista_brotante
- calcita
- cofre
- mineral_de_carbón
- mineral_de_pizarra_de_carbón
- mineral_de_cobre
- mineral_de_pizarra_de_cobre
- pizarra
- mineral_de_diamante
- mineral_de_pizarra_de_diamante
- diorita
- tierra
- mineral_de_esmeralda
- mineral_de_pizarra_de_esmeralda
- mineral_de_oro
- mineral_de_pizarra_de_oro
- granito
- grava
- mineral_de_hierro
- mineral_de_pizarra_de_hierro
- mineral_de_lapislázuli
- mineral_de_pizarra_de_lapislázuli
- tablones_de_roble
- mineral_de_redstone
- mineral_de_pizarra_de_redstone
- basalto_pulido
- piedra
- toba
Inframundo (world_nether)
Archivo: 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
Fin (world_the_end)
Fichier : world_the_end/paper-world.yml
El End contiene pocos recursos para proteger. Por lo general, una configuración mínima o desactivada es suficiente.
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
O simplemente desactivado:
anticheat:
anti-xray:
enabled: false
Impacto en el Rendimiento
Métricas por Modo
| Métrica | Modo 1 | Modo 2 | Sin Anti-Xray |
|---|---|---|---|
| CPU (generación de chunks) | +5-10% | +15-25% | Base |
| RAM por chunk | +0.1 KB | +0.5-1 KB | Base |
| Ancho de banda | +2-5% | +10-20% | Base |
| Latencia de red | Insignificante | +1-5 ms | Base |
Factores que Influyen en el Rendimiento
Número de hidden-blocks
Cuanto más larga sea la lista, más pesado será el procesamiento.
# Ligero (5-10 bloques)
hidden-blocks:
- diamond_ore
- emerald_ore
- gold_ore
- ancient_debris
- chest
# Pesado (más de 20 bloques)
hidden-blocks:
- coal_ore
- deepslate_coal_ore
- copper_ore
- deepslate_copper_ore
# ... 20+ entradas
max-block-height
Reducir este valor disminuye significativamente la carga.
# Rendimiento óptimo
max-block-height: 48
# Equilibrado
max-block-height: 64
# Protección máxima (costoso)
max-block-height: 320
update-radius
Cada aumento multiplica el número de bloques a verificar.
# Radio 1: 6 bloques verificados
update-radius: 1
# Radio 2: 26 bloques verificados
update-radius: 2
# Radio 3: 98 bloques verificados
update-radius: 3
Optimización del Rendimiento
Para servidores con alta carga
anticheat:
anti-xray:
enabled: true
engine-mode: 1 # Modo más ligero
max-block-height: 48 # Límite bajo
update-radius: 1 # Radio mínimo
hidden-blocks: # Lista corta
- diamond_ore
- deepslate_diamond_ore
- ancient_debris
replacement-blocks:
- stone
Monitoreo del rendimiento
Utilice Spark para analizar el impacto:
/spark profiler start
# Espere unos minutos mientras los jugadores juegan
/spark profiler stop
Busque en el informe:
AntiXrayen los hilosChunkSerializerpara el impacto en la generaciónPlayerConnectionpara el impacto en la red
Resolución de Problemas y Problemas Comunes
Problema: Bloques visibles brevemente antes de la obfuscación
Síntoma: Los jugadores ven los bloques reales durante una fracción de segundo al cargar los chunks.
Causa: Latencia de red o alta carga del servidor.
Soluciones:
# Aumentar la prioridad del anti-xray
update-radius: 2
# Verificar la configuración de red
# En server.properties
network-compression-threshold=256
Problema: Bloques que permanecen ocultos después de la extracción
Síntoma: Después de romper un bloque, los bloques adyacentes permanecen obstruidos.
Causa: update-radius demasiado bajo o error de versión.
Soluciones:
# Aumentar el radio de actualización
update-radius: 2
# Verificar que Paper esté actualizado
# Descargar la última versión en papermc.io
Problema: Rendimiento degradado
Síntoma: TPS bajo, lag al cargar chunks.
Soluciones:
# Reducir la carga
engine-mode: 1
max-block-height: 48
update-radius: 1
# Reducir la lista de bloques
hidden-blocks:
- diamond_ore
- deepslate_diamond_ore
- emerald_ore
- deepslate_emerald_ore
Problema: Algunos bloques no están ocultos
Síntoma: Los jugadores X-Ray ven algunos minerales.
Causa: Bloque no incluido en hidden-blocks o expuesto al aire.
Soluciones:
# Verificar que todas las variantes estén incluidas
hidden-blocks:
- diamond_ore
- deepslate_diamond_ore # No olvidar la versión deepslate
Problema: Incompatibilidad con ciertos plugins
Síntoma: Los plugins de protección o economía no funcionan correctamente.
Causa: Algunos plugins interactúan con los bloques de manera no estándar.
Soluciones:
- Actualizar el plugin afectado
- Contactar al desarrollador del plugin
- Agregar a los administradores al bypass:
use-permission: true
Luego otorgar el permiso paper.antixray.bypass a los administradores.
Comandos de Depuración
# Recargar la configuración (después de modificar)
/paper reload
# Verificar la configuración activa
/paper dumpplugins # Indirectamente, verifica que Paper esté funcionando
# Perfilador del servidor
/spark profiler start
/spark profiler stop
Mejores Prácticas
Configuración Inicial
- Comenzar en Modo 2 para una protección máxima
- Ajustar según el rendimiento observado
- Probar con jugadores de confianza que usen X-Ray
Lista de Bloques Recomendada
Imprescindibles (todos los servidores)
diamond_ore/deepslate_diamond_oreemerald_ore/deepslate_emerald_oreancient_debris
Recomendados (survival)
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
Contenedores (PvP/Facción)
chest/trapped_chestender_chestbarrelshulker_box(todos los colores)hopperdispenser/dropper
Especiales
spawner(si es importante en tu servidor)tnt(servidores PvP)obsidian(bases ocultas)
Mantenimiento
- Actualizar Paper regularmente para correcciones
- Supervise el rendimiento con Spark o Timings
- Pruebe después de cada actualización importante de Minecraft
- Documente sus modificaciones en un archivo de registro de cambios
Seguridad Adicional
El anti-Xray no reemplaza otras medidas:
- Plugin anti-trampas (Matrix, Vulcan, Grim)
- Registros de bloques (CoreProtect, Prism)
- Moderación activa y reportes de jugadores
- Verificación regular de jugadores sospechosos
Recursos y Referencias
Documentación Oficial
- Documentación de Paper: https://docs.papermc.io/
- Configuración Anti-Xray: https://docs.papermc.io/paper/anti-xray
Herramientas Útiles
- Perfilador Spark: https://spark.lucko.me/
- Timings de Paper: https://timings.aikar.co/
Comunidad
- Discord PaperMC: https://discord.gg/papermc
- Foros SpigotMC: https://www.spigotmc.org/

