Guía completa para optimizar un servidor de Minecraft con PaperMC

como optimizar un server de minecraft​

¿Tu servidor de Minecraft sufre de lag? ¿Buscas cómo optimizar un servidor de Minecraft para ofrecer la mejor experiencia a tus jugadores? ¡Has llegado al lugar correcto! Esta guía exhaustiva te llevará de la mano a través de las configuraciones más importantes, plugins recomendados y mejores prácticas para exprimir al máximo el rendimiento de tu servidor. Olvídate de los valores predeterminados que a menudo causan más problemas de los que resuelven. Aquí, profundizaremos en el funcionamiento interno de un servidor de Minecraft para que entiendas por qué cada cambio es importante y cómo afecta la jugabilidad.

Última Actualización: 11 de julio de 2025 para Paper Versión 1.21.6

Novedades Recientes:

  • Añadidos comentarios sobre la optimización xp-orb-group-per-area.
  • Añadidos los proyectos Adorena y VillagerLobotomy a la lista de plugins sugeridos.
  • Añadido despawn-time, una nueva característica de Paper.
Índice del artículo
  1. ⚙️ Configuraciones y Optimizaciones Esenciales
  2. 📁 Archivos de Configuración Clave
  3. bukkit.yml
  4. spigot.yml
  5. 📄 Configuraciones de Paper: paper-world-defaults.yml
  6. 🌎 Configuraciones de Paper: paper-global.yml
  7. 💎 Anti-Xray Integrado de Paper
  8. ➕ Anexo
  9. 🚫 Errores Comunes a Evitar
  10. 🚀 Flags JVM Imprescindibles
  11. 💾 Mejores Prácticas de Respaldo y Recuperación
  12. 💎 Plugins y Herramientas Esenciales para la Calidad de Vida
  13. ❌ Cosas a Evitar Absolutamente
  14. 💻 Opciones de Alojamiento (Hosting)
  15. 🌐 Dominio y Registro de Servicio (SRV)
  16. 🎯 Notas Finales

⚙️ Configuraciones y Optimizaciones Esenciales

Antes de sumergirnos en los detalles, es crucial entender que no existe una configuración única que funcione para cada servidor. La configuración óptima variará según el hardware del servidor, el promedio de jugadores en línea y el tipo de modo de juego. Los valores que verás a continuación son ejemplos y defaults, pero la clave está en probar y experimentar para encontrar los números que mejor se adapten a tu comunidad.

💡 A medida que tu mundo envejece y los jugadores avanzan en el late game, la carga de trabajo del servidor aumentará gradualmente. Por lo tanto, la optimización del servidor no es una tarea única, sino un esfuerzo continuo.

Con las versiones modernas de Minecraft, ejecutar el juego en su configuración por defecto (Vanilla) requiere un hardware decente. Para muchos propietarios de servidores con recursos limitados, optimizar las configuraciones y hacer compromisos con la jugabilidad Vanilla es esencial. ¡Lee atentamente las opciones de configuración y asegurarás un funcionamiento fluido!

🌍 Pre-generar Tu Mapa

Generar nuevos chunks consume una cantidad considerable de recursos. Es altamente recomendado pre-generar tu mapa si estás lanzando un nuevo mundo o servidor.

Incluso si no planeas establecer un borde de mundo, es una buena idea pre-generar entre 5.000 y 10.000 bloques alrededor de tu spawn. Esto aliviará el estrés del servidor el día del lanzamiento y te permitirá detectar cualquier bug potencial de generación antes de que afecte a tus jugadores.

Para esto, te sugiero utilizar:

  • Chunky y ChunkyBorder de pop4959: Chunky es el plugin de pre-generación más simple y, combinado con ChunkyBorder, te permite personalizar la forma de los bordes a tu gusto.

💡 ¡Sé razonable al elegir el tamaño del borde! El tamaño del archivo crecerá exponencialmente cuanto más lejos establezcas el borde, lo que puede causar problemas de almacenamiento y copias de seguridad más adelante.


👁️‍🗨️ Eligiendo la Distancia de Renderizado y Simulación Óptimas

  • simulation-distance (distancia de simulación) determina cuánta parte del entorno está activa (ticking) alrededor del jugador.
  • view-distance (distancia de renderizado) determina cuántos chunks (terreno) son visibles para el jugador.

La simulation-distance tiene un impacto enorme en el rendimiento, por lo que un valor más bajo ayudará a mantener un entorno sin lag. El valor predeterminado para Minecraft Vanilla es 10, y la mayoría de los diseños de granjas en YouTube están hechos en base a este valor. Reducir este valor afectará a esas granjas, algo que veremos más adelante. Personalmente, no bajaría de 5 para que la experiencia de juego sea algo agradable; sin embargo, si estás creando minijuegos o un Skyblock, puedes bajarla mucho más.

La view-distance proporciona una vista de terreno de chunks más lejana y no es tan exigente en rendimiento como simulation-distance, pero sí ocupa más RAM. Aumenta el valor incrementalmente para encontrar tu punto óptimo en tu servidor si decides aumentarlo.

Además, puedes definir valores individuales por mundo en spigot.yml para anular server.properties. (Cubriremos cómo configurar esto correctamente en la sección de configuración por mundo más adelante).


📉 Manteniendo a Raya el Conteo de Entidades

Las entidades son intensivas en recursos en las versiones modernas de Minecraft. Incluso las CPU de gama alta del mercado actual se verían sobrecargadas si no mantienes las entidades bajo control.

Idealmente, debes mantener el total de ticks de entidades por debajo del 30% (asumiendo una cantidad razonable de actividad de jugadores y no solo un servidor vacío).

spark es una excelente herramienta para encontrar la fuente del lag y comparar el resultado de las optimizaciones.


⚠️ Sé Consciente del Impacto de tus Alteraciones

¡Con cada alteración viene un compromiso! La mayoría de tus jugadores simplemente copian diseños de granjas populares bloque por bloque sin saber cómo funcionan realmente. Como propietario de un servidor, es importante que entiendas el impacto de tus alteraciones para poder explicárselas mejor a los jugadores. A continuación, intentaré explicar el impacto de cada cambio y cómo combatir los compromisos.


🧟 Entendiendo la Mecánica de Generación de Mobs

A continuación, se muestra una demostración de cómo funciona la generación de mobs alrededor de un jugador. El gráfico y el valor indicado se basan en la configuración por defecto de Vanilla/Paper.

Entendiendo la Mecanica de Generacion de Mobs
Guía completa para optimizar un servidor de Minecraft con PaperMC 3
Leyenda del Gráfico de Generación de Mobs:

Cilindros Marrones: Indican el rango de generación de mobs.
Esfera Roja: Indica la zona de generación de mobs (entre 24 y 128 bloques).
Esfera Amarilla: Indica la zona libre de mobs, ya que no aparecerán mobs tan cerca de un jugador (24 bloques).
Cualquier entidad que caiga dentro del anillo de 32 bloques (rango de activación de entidades) será *tickeada* a velocidad normal.
Cualquier entidad que resida entre los anillos de 32 y 128 bloques será *tickeada* a una velocidad reducida.
Cualquier entidad que caiga fuera del bloque 128 se eliminará instantáneamente.

💡 Cualquier alteración a las configuraciones siguientes requiere que ajustes el tamaño general de la granja y su punto de AFK designado en consecuencia.

Valores predeterminados de Vanilla / Paper:

  • View Distance (Distancia de Renderizado): 10 (chunks)
  • Simulation Distance (Distancia de Simulación): 10 (chunks)
  • Mob Spawn Range (Rango de Generación de Mobs): 8 (chunks)
  • Despawn range (soft - Suave): 32 (bloques)
  • Despawn Range (hard - Duro): 128 (bloques)
  • Entity Activation Range (Rango de Activación de Entidades): 32 (bloques)

Las 5 opciones de configuración mencionadas anteriormente están estrechamente relacionadas entre sí, y es crucial asegurarse de que cada valor esté configurado correctamente.

  • simulation distance determina el tamaño máximo posible de una granja, ya que el área fuera de este rango no será tickeada.
    • Una granja no puede exceder el radio de (distancia de simulación - 1) x 16 bloques.
    • Todo lo que esté fuera de la distancia de simulación no se tickeará, por lo que cualquier granja más grande que este valor no será funcional.
  • mob spawn range también determina el tamaño máximo de una granja, ya que no se generarán mobs fuera de este rango definido.
    • El rango de generación de mobs debe estar entre (distancia de simulación - 1) y 3 como mínimo.
    • Si estás ejecutando la distancia de simulación predeterminada de Vanilla de 10, puedes mantener el rango de generación de mobs en 8 o menos.
    • Los mobs solo pueden aparecer a un mínimo de 24 bloques de los jugadores, por lo que establecer el rango de generación de mobs por debajo de 3 está fuertemente desaconsejado, a menos que tu distancia de simulación sea extremadamente baja (3 o menos).
    • Cada granja de mobs tiene una plataforma de recolección de mobs designada; el tamaño de la plataforma está determinado únicamente por este valor (en chunks).
  • Despawn range (rango de desgeneración), tanto suave como duro, rige el comportamiento de desgeneración de cualquier entidad no persistente en Minecraft. Cualquier entidad dentro del rango de desgeneración suave tiene una probabilidad predeterminada de desgenerarse, lo que ayuda a rotar la variedad de entidades alrededor de un jugador. Sin embargo, cualquier entidad no persistente se desgenerará instantáneamente si está fuera del rango de desgeneración duro.

Paper ofrece a los propietarios de servidores la opción de ajustar el rango de desgeneración tanto horizontal como verticalmente, lo que puede ser muy útil para servidores que necesitan funcionar con una distancia de simulación inferior a 10. Esto se explicará con mayor detalle en la sección posterior de rango de desgeneración.

Al solucionar problemas por los que una granja no funciona, asegúrate de revisar cada configuración mencionada anteriormente y realizar las modificaciones necesarias en el diseño de la granja en consecuencia. No copies y pegues de tutoriales de YouTube bloque por bloque sin tener en cuenta estas configuraciones.

Pronto publicaremos una pequeña Guía para arreglar tu granja del Nether para que veas un ejemplo de pasos comunes para solucionar problemas.

Utiliza /paper mobcaps y /paper playermobcaps para obtener detalles adicionales sobre la generación de mobs alrededor de un jugador. Es especialmente útil para encontrar errores en la protección contra spawns.

El siguiente video proporciona una explicación detallada de la generación de mobs, presentado por "Nico is LOST". Se recomienda encarecidamente verlo:

Usando la Ciencia para MAXIMIZAR el Algoritmo de Generación de Mobs

¿Por qué mi granja construida en una versión anterior es más lenta ahora, si nada ha cambiado?

Minecraft realiza la verificación de aparición entre el bloque más bajo y el bloque más alto (que va de Y0 a Y265 en 1.17) para verificar si el bloque es elegible para un intento de aparición. Luego, tiene un 24% de probabilidad de éxito en la aparición en esa posición Y particular. Las granjas están diseñadas en base a esta regla y su ubicación ideal se elige en consecuencia.

  • Perímetro grande: Crear un perímetro grande alrededor de tu granja elimina todas las demás posibles ubicaciones de aparición, excepto el lugar designado en la plataforma de la granja. (Esto se puede ver en el servidor SciCraft y en la mayoría de los tutoriales de granjas que usan mundos planos vacíos para demostración).
  • Granja de Enderman en Y0: Se recomienda construir granjas de Enderman en Y0, ya que es la ubicación más efectiva.
  • Granja del Nether por encima del techo del Nether: Las granjas del Nether suelen construirse muy por encima del techo del Nether, ya que generalmente es difícil hacer un perímetro grande debido a la cantidad de lava presente. Al subir más alto en el techo del Nether, mueves tu esfera de desgeneración hacia el cielo para eliminar todas las posibilidades de que un mob aparezca en cualquier lugar fuera de la plataforma de tu granja.

Dicho esto, tu granja puede ser menos efectiva ahora debido al cambio de altura del mundo. En lugar de buscar un intento de aparición elegible de Y0 a Y265, ahora está buscando de Y-64 a Y320 para encontrar el bloque más bajo y más alto para realizar intentos de aparición. Tu granja de 1.17 ubicada en Y0 ahora tiene 64 bloques adicionales debajo, lo que ralentiza la generación de mobs.

Cómo mitigar los problemas...

  • Reconstruye tu granja en el punto más bajo del mundo, que ahora es Y-64. (Esta es la solución más ideal pero también la más dolorosa).
  • Cava un perímetro aún más grande y vacía todo debajo de la granja de Y-64 a Y0 (solo bloques de aire).

Los intentos de generación de mobs se realizan en todos los chunks cargados con límites de generación definidos en bukkit.yml (o paper-world-defaults).

Acepta y comprende que la generación de mobs es inherentemente defectuosa en los servidores multijugador, y se proporciona una explicación más detallada en la sección per-player-mob-spawns más adelante.

💡 TL;DR: La ubicación de granja más efectiva es en el nivel Y más bajo posible con solo bloques de aire arriba. Debido al cambio de altura del mundo, tu granja ya no se encuentra en la ubicación más ideal.


📁 Archivos de Configuración Clave

server.properties

Aquí están las configuraciones esenciales para server.properties:

  • view-distance=10: Establece la distancia de renderizado (solo terreno) del servidor, a menos que se especifique lo contrario en spigot.yml.
  • simulation-distance=10: Establece la distancia de simulación (ticking) del servidor, a menos que se especifique lo contrario en spigot.yml.

Elegir una combinación adecuada de view-distance y simulation-distance es extremadamente importante.

Si decides reducir tu view-distance y simulation-distance, por favor, consulta la sección Cómo funciona la generación de mobs para asegurarte de que todas las demás configuraciones se ajusten en consecuencia.

  • simulation-distance siempre debe ser igual o menor que view-distance. (Si la distancia de simulación se establece más alta que la distancia de renderizado, solo se aplicará un área hasta la distancia de renderizado).
  • Se desaconseja encarecidamente reducir estos valores por debajo de 5.
  • Si deseas proporcionar una vista de terreno más lejana a los jugadores, ten en cuenta que cada aumento adicional después de 10, la cantidad total de chunks cargados alrededor de un jugador aumentará exponencialmente.

La fórmula para calcular el total de chunks cargados por un solo jugador es [(View Distance +2)x2+1]^2.

  • Para view-distance=10 (predeterminado de Vanilla), un solo jugador cargará 625 chunks.
  • Para view-distance=5, un solo jugador cargará 225 chunks.
  • Para view-distance=15, un solo jugador cargará 1225 chunks.

Aunque view-distance utiliza significativamente menos recursos en comparación con simulation-distance, ten en cuenta su impacto en el rendimiento, especialmente en servidores grandes donde cada pequeña reducción de recursos ayuda.

Además, tienes la capacidad de sobrescribir/especificar la distancia de renderizado y la distancia de simulación para cada mundo en spigot.yml. Lo veremos más adelante en la sección de configuración por mundo. Por ejemplo, puedes optar por una view-distance más alta en la dimensión the_end, lo que haría que navegar por el vacío con Elytra sea una experiencia mucho más agradable para tus jugadores.

💡 ¡Anima a tus jugadores a instalar cargadores de mods de Fabric con mods de cliente como Bobby o Farsight para almacenar en caché las vistas de chunks localmente sin costo para el rendimiento del servidor!


  • allow-flight=true: Esto evita que los jugadores sean expulsados del servidor por "volar" mientras montan un caballo o escalan andamios. Tener esta opción en true no significa que todos puedan volar, solo significa que los jugadores no serán expulsados si el servidor cree que están volando.
  • log-ips=true: Minecraft Vanilla ofrece una opción para activar o desactivar el registro de direcciones IP de los jugadores. Para aquellos que desean proteger la privacidad de los jugadores, pueden cambiar esta opción a false. Esto es especialmente útil en momentos en que los archivos de registro deben compartirse con un auditor, mantenedor o desarrollador externo para solucionar problemas generales.
  • pause-when-empty-seconds=-1: Mojang ha introducido una nueva función de pausa que pone al servidor en una especie de modo de suspensión cuando no hay jugadores en línea. Es muy probable que esto cause problemas con los servidores que tienen plugins. La opción se establece en -1 por defecto, lo que significa que está deshabilitada.

bukkit.yml

Configuraciones esenciales para bukkit.yml:

spawn-limits

Esta sección determina el límite de mobs en tu servidor. Reducir el valor aquí tiene el impacto más directo en el rendimiento del servidor, ya que las entidades son una de las tareas que más recursos consumen para el servidor.

YAML

spawn-limits:
  monsters: 70
  animals: 10
  water-animals: 5
  water-ambient: 20
  water-underground-creature: 5
  axolotls: 5
  ambient: 15

El límite global de entidades se escalará según el número de jugadores en línea, siempre que per-player-mob-spawns esté configurado en true en paper-world-defaults.yml. Dado que existen ubicaciones de generación válidas alrededor de un jugador, el servidor intentará generar entidades hasta que se alcance el límite de generación.

El límite de generación también se puede establecer por mundo. Consulta la sección de configuración por mundo para obtener información adicional.

💡 Para ayudar a mantener la densidad de mobs percibida consistente con el valor predeterminado de Vanilla, también altera el mob-spawn-range en spigot.yml en consecuencia para lograr esta ilusión.

Aquí tienes una tabla de referencia rápida con sugerencias predefinidas para la categoría de monstruos para quienes no quieran hacer cálculos. ¡Por favor, lee atentamente y aplica la configuración en consecuencia!

Porcentaje de Entidades Generalspawn-limit sugerido en bukkit.ymlmob-spawn-range sugerido en spigot.ymlNúmero Calculado Real
100% (Vanilla)70 (por defecto)8 (por defecto)8 (por defecto)
90%637 u 87.6
80%5677.18
70%496 o 76.74
60%4266.26
50%355 o 65.75
40%2855.18
30%214 o 54.55
20%1443.81
10%732.89
3%2Por favor, mejora tu hardware del servidorMi nevera Samsung puede con más entidades

Los números sugeridos anteriormente buscan mantener la densidad de mobs consistente con Vanilla. Siéntete libre de crear tus propios valores que funcionen para tu servidor. En cuanto a otras categorías, nunca habrá un número ideal, ya que entidades como ovejas, vacas y peces tienen reglas de generación y mecánicas adicionales más complicadas. Genera un informe de spark, analízalo y realiza los ajustes adecuados según sea necesario.

Por favor, lee la sección Entendiendo la Generación de Mobs para validar otras configuraciones si realizas cambios aquí.

💡 Reducir los límites de mobs hasta un 50% del valor de Vanilla es poco probable que se note en la mayoría de los casos. Si tienes problemas para decidir un valor, comienza con 35 y luego ajústalo.

¿Problemas de rendimiento relacionados con entidades?

Genera un informe de spark durante el período de mayor actividad, cuando la mayoría de los jugadores están en línea en tu servidor, y analiza el informe en busca de áreas problemáticas a abordar.

En general, las entidades deberían ocupar menos del 30% de tu tick. Si observas un tiempo de tick alto dedicado a la generación de mobs, significa que tu límite de entidades es demasiado alto; redúcelo en consecuencia. Idealmente, quieres que tu densidad de mobs se acerque lo más posible a Vanilla mientras mantienes un promedio de menos de 50 mspt durante las horas pico. Sigue bajando el valor hasta que puedas lograr esto si no puedes mantenerlo con el valor preestablecido anterior.

Siempre que los mobs sean eliminados instantáneamente en una granja, el rendimiento de la granja debería ser aproximadamente el mismo que en Minecraft Vanilla, siempre que el diseño de la granja se ajuste en consecuencia.

Ten en cuenta que los límites aquí solo se aplican a las entidades generadas naturalmente. Las entidades creadas a través de mecanismos de generación especiales, como la duplicación de Allays, los Golems de Hierro del chismorreo de los Aldeanos, los Guardianes dentro de los Monumentos Oceánicos, no están limitadas por esta configuración. Se requiere un plugin para limitarlas correctamente.

Consulta la sección Plugins y Herramientas Esenciales para la Calidad de Vida a continuación para obtener más información.

Cada entidad en el juego se clasifica en 1 de las 7 categorías que se enumeran a continuación:

  • Categoría monstruo: Incluye Husk, Bruja, Zombie, Guardián, Gigante, Warden, Wither, Cubo de magma, Invocador, Esqueleto, Shulker, Devastador, Saqueador, Phantom, Piglin Zombificado, Endermita, Ghast, Ahogado, Ilusionista, Zoglin, Wither Skeleton, Vex, Araña, Piglin Bruto, Pez plateado, Blaze, Vindicador, Aldeano Zombificado, Creeper, Enfangado, Errante, Slime, Hoglin, Brisa, Piglin, Araña de cueva, Enderman, Dragón del Fin, y Guardián Anciano.
  • Categoría animal o criatura: Incluye Allay, Cabra, Lobo, Oso polar, Caballo Zombi, Strider, Caballo, Tortuga, Rana, Abeja, Llama, Cerdo, Panda, Conejo, Oveja, Gato, Zorro, Renacuajo, Sniffer, Vaca, Ocelote, Loro, Caballo Esqueleto, Mula, Camello, Mercader errante, Pollo, Mooshroom, Armadillo, Burro, Llama mercader.
  • Categoría ambient: Incluye murciélago. El murciélago es inútil.
  • Categoría water-animals o water_creature: Incluye calamar y delfines.
  • Categoría water-ambient: Incluye bacalao, pez globo, salmón, pez tropical.
  • Categoría water-underground-creature o underground_water_creature: Incluye Calamar Brillante.
  • Categoría axolotl: Incluye Axolotl.
  • Categoría miscelánea: Incluye Barco, Golem de nieve, Colmillos de invocador, Tridente, Vagoneta con bloque de comandos, Vagoneta con tolva, Huevo arrojado, Marco de ítem brillante, Cohete de fuegos artificiales, Visualización de ítem, Cristal del Fin, Nudo de correa, Ojo de Ender, Cuadro, Vagoneta con generador de monstruos, Proyectil de Shulker, Bola de nieve, Barco con cofre, Marco de ítem, TNT activado, Cráneo de Wither, Rayo, Vagoneta con cofre, Bola de fuego pequeña, Poción, Bloque en caída, Saliva de Llama, Flecha espectral, Carga de viento, Vagoneta, Ítem, Flotador de pesca, Interacción, Generador de ítems ominosos, Jugador, Flecha, Vagoneta con horno, Visualización de bloque, Botella de experiencia arrojada, Perla de Ender arrojada, Nube de efecto de área, Soporte de armadura, Marcador, Vagoneta con TNT, Orbe de experiencia, Visualización de texto, Bola de fuego de dragón, Aldeano, Golem de hierro, Carga de viento, Bola de fuego.

Algunas categorías tienen dos nombres diferentes debido a que Paper usa los nombres correctos en las configuraciones de Paper relacionadas, mientras que bukkit.yml todavía usa los nombres antiguos.

💡 Cada entidad aparecerá individualmente en el informe de spark, puedes realizar los ajustes necesarios en función de sus categorías.

💡 El murciélago es la única entidad en la categoría ambient y no tiene funcionalidad de juego, por lo que es seguro establecer ambient en cero para un ahorro de rendimiento sin compromisos.

Los aldeanos son entidades complejas y muy intensivas en recursos.

Los aldeanos se generan con estructuras de aldea y son criados por los jugadores. Son la entidad que causa una gran cantidad de problemas de rendimiento en la mayoría de los servidores de Minecraft. Dado que no están limitados por las opciones de configuración en bukkit.yml mencionadas anteriormente, se recomienda encarecidamente utilizar los métodos recomendados a continuación para controlar artificialmente sus poblaciones y su impacto en el servidor. Es una alteración a la jugabilidad de Vanilla, pero lamentablemente es necesaria ya que la mayoría de los jugadores no son eficientes en el uso de recursos y producirían toneladas de aldeanos innecesariamente.

A continuación, se presentan algunos enfoques diferentes para ayudar a abordar los problemas de los aldeanos. Por favor, considéralos cuidadosamente y elige el que mejor funcione para tu comunidad:

  • Intentos de reducir las tasas de tick de los aldeanos para facilitar la carga de trabajo en el servidor.
  • Introducir un límite estricto con plugins tipo "limitador de granjas" y luego comunicar claramente el límite a tus jugadores para que puedan ajustar su estilo de juego.
  • Usar un plugin para eliminar dinámicamente la IA de los aldeanos si se utilizan como vendedores en un trading hall.
  • Introducir diferentes formas para que los jugadores obtengan loots, lo que reduce en gran medida la necesidad de trading halls hechos por los jugadores. Esto puede incluir un trading hall comunitario, una tienda de administrador global con loots de aldeanos o personalizar la tabla de loots de tus mercaderes errantes con ítems superiores.

ticks-per

Esta sección determina la frecuencia con la que cada categoría de entidades intenta generarse (valor en ticks).

YAML

ticks-per:
  animal-spawns: 400
  monster-spawns: 1
  water-spawns: 1
  water-ambient-spawns: 1
  water-underground-creature-spawns: 1
  axolotl-spawns: 1
  ambient-spawns: 1
  autosave: 6000

Minecraft siempre intentará generar entidades hasta que alcance los spawn-limits en la sección anterior. Alterar el número aquí debería ser tu segunda opción, debido a que el límite de mobs casi siempre se alcanzará. Todo lo que estás haciendo es retrasar el desastre inminente; por favor, establece un límite de entidades adecuado en los spawn-limits mencionados anteriormente primero.

No Alcanzar los Límites de Mobs

Calcular y validar los costos de generación de mobs consume recursos, por lo que siempre es mejor reducir primero el límite general de entidades en la sección spawn-limits y luego ajustar la configuración de ticks-per como un búfer secundario.

Utiliza /paper mobcaps y /paper playermobcaps para monitorear y asegurarte de que el límite de mobs se alcance consistentemente. Si tu límite de mobs no se puede alcanzar de manera oportuna, es probable que tus spawn-limits estén configurados demasiado altos. Usando un informe de spark con el plugin EntityDetection, deberías poder observar e identificar por qué no se está alcanzando el límite de mobs.

net.minecraft.server.level.ServerChunkCache.tick() 69.03%
  net.minecraft.server.level.ServerChunkCache.tickChunks() 42.04%
    net.minecraft.server.world.level.NaturalSpawner.spawnForChunk() 37.08%

(Así podría aparecer en un informe de Spark el hecho de no alcanzar el límite de mobs.)

Si observas un número inusualmente alto de ticks dedicados a la generación de mobs en tu informe de Spark, tus spawn-limits pueden ser demasiado altos. Reduce el límite de mobs en la sección anterior para permitir que el límite de mobs se alcance de manera más eficiente.

Para los modos de juego Skyblock/Oneblock, este ajuste es especialmente crucial porque el área de generación limitada a menudo dificulta que el servidor alcance el límite de mobs. Esto puede hacer que el servidor intente repetidamente generar mobs. Ajusta las configuraciones en consecuencia para abordar este problema.

Esta opción reduce directamente la tasa de rendimiento de todas las granjas de mobs, por lo que seleccionar un valor óptimo es esencial. Lograr el equilibrio adecuado es clave para optimizar el rendimiento y mantener una experiencia de juego decente.

💡 Se recomienda establecer la tasa de tick por mundo para abordar problemas específicos de mundos particulares, utilizando las opciones por mundo de Paper.

paper-world-defaults.yml/entities.spawning.ticks-per-spawn:

YAML

entities:
  spawning:
    ticks-per-spawn:
      ambient: -1
      axolotls: -1
      creature: -1
      monster: -1
      underground_water_creature: -1
      water_ambient: -1
      water_creature: -1

La configuración anterior se puede definir individualmente en [carpeta del mundo]/paper-world.yml para que sirva como anulación de la configuración predeterminada. Esto permite a los propietarios de servidores ajustar los intervalos entre cada intento de generación por mundo.


spigot.yml

Configuraciones esenciales para spigot.yml:

world-settings.default.view-distance y simulation-distance

YAML

view-distance: default
simulation-distance: default

Esto sirve como una anulación de la configuración idéntica en server.properties. Colocar un valor aquí sobrescribirá el valor dentro de server.properties. El valor default indica al servidor que use el valor de server.properties. El valor se puede establecer por mundo si se crea una categoría adicional.

world-settings.default.mob-spawn-range

YAML

mob-spawn-range: 8

Radio en chunks alrededor de un jugador en el que el servidor intenta generar mobs. Como se mencionó anteriormente en la sección bukkit.yml, este valor se puede modificar para ajustar la densidad de mobs percibida.

Este valor siempre debe establecerse a un máximo de (Simulation Distance - 1) con un mínimo de 3, ya que cualquier entidad que caiga fuera de la distancia de simulación y el chunk adyacente no se tickeará. (ver nota abajo)

Si estás ejecutando con la simulation-distance predeterminada de Vanilla de 10, puedes ajustar el número entre 8 y 3 sin seguir la regla anterior.

Si tu mob-spawn-range es más alto que la simulation-distance (por ejemplo), la densidad de mobs percibida sería menor debido a que los monstruos intentarían aparecer fuera de tu simulation-distance. Es crucial tener el valor correcto.

Por ejemplo, si tienes una simulation-distance de 6, tu mob-spawn-range puede establecerse entre 3 y 5.

Técnicamente, 3 no es el valor mínimo, pero como no aparecerán mobs dentro de los 24 bloques alrededor del jugador, no tiene sentido ir por debajo de 3, ya que reduce drásticamente el área de aparición y el límite de mobs podría no alcanzarse en casos extremos.

Consulta la sección Entendiendo la Generación de Mobs para obtener todos los detalles.

world-settings.default.nerf-spawner-mobs

YAML

nerf-spawner-mobs: false

Esta configuración elimina la IA de los mobs generados por un generador (spawner). Si tu servidor permite a los jugadores reubicar generadores, establecer esta opción en true puede reducir el lag.

Además, activa spawner-nerfed-mobs-should-jump a true en paper-world-defaults.yml si decides habilitar esto. Permitirá que los mobs salten para que ciertas granjas sigan siendo funcionales.

Lee la sección Cosas a Evitar para saber por qué permitir a tus jugadores obtener spawners con silk touch es una mala idea.

world-settings.default.entity-tracking-range

YAML

entity-tracking-range:
  players: 128
  animals: 96
  monsters: 96
  misc: 96
  display: 128
  other: 64

entity-tracking-range determina qué tan lejos en bloques se rastrea una entidad y se envía al cliente para que los jugadores puedan verlas.

Paper ofrece estas opciones para que decidas qué tan lejos debe rastrearse una entidad (mostrar al cliente) en lugar de rastrear todo hasta los chunks adyacentes (simulation-distance - 1). Esta es una solución optimizada para combatir los costosos tickings de entidades.

Puedes encontrar méritos de rendimiento relacionados en tu informe de spark bajo Chunk provider tick.

  • La etapa 1 del rastreador está rastreando entidades.
  • La etapa 2 del rastreador está transmitiendo cambios de seguimiento de entidades.

Si el Chunk provider tick está consumiendo una cantidad significativa de recursos, primero debes intentar reducir el número total de entidades, luego reducir la distancia de simulación; y si todo lo demás falla, reducir el rango de seguimiento como último recurso.

Para un servidor con hardware suficiente para soportarlo, puede ser beneficioso aumentar entity-tracking-range para mejorar la experiencia de juego. El valor está en bloques y, si decides aumentarlos, mantenlo a un máximo igual o inferior a (simulation distance -1)x16.

💡 La mayoría de los servidores son pequeños y están limitados solo a amigos. Estos valores se pueden aumentar de forma segura para mejorar la experiencia de juego, con una compensación implícita en el rendimiento.

Además, Paper permite a los propietarios del servidor definir el valor Y vertical de entity-tracking-range en paper-world-defaults.yml/entities.tracking-range-y si se desea que las entidades aparezcan o desaparezcan más rápido.

Categorías de entity-tracking-range:

  • player: Incluye jugadores.
  • monster: Incluye monstruos, raiders y monstruos voladores.
  • animal: Incluye aldeanos, animales acuáticos y animales terrestres.
  • misc: Incluye marcos de ítems, cuadros, letreros, ítems caídos, orbes de experiencia.
  • display: Incluye entidades de visualización.
  • other: Incluye todo lo no listado anteriormente (ej. soportes de armadura).

El valor está en bloques y siempre debe establecerse a un máximo de (simulation-distance -1)x16 y no menos de 1.

Si experimentas emboscadas de Ghasts invisibles, puede ser un síntoma de que tu entity-tracking-range para monstruos está configurado demasiado bajo.

Además, revisa la configuración del lado del cliente en Opciones > Ajustes de Video > Distancia de Entidades y asegúrate de que esté configurada lo suficientemente alta para mostrar el Ghast.

💡 Si realizas cambios en entity-tracking-range, ajusta y haz coincidir el valor en la categoría correspondiente de entity-activation-range también, para que los jugadores no vean entidades congeladas.

world-settings.default.entity-activation-range

YAML

entity-activation-range:
  animals: 96
  monsters: 96
  raiders: 96
  misc: 16
  water: 16
  villagers: 32
  flying-monsters: 32
  wake-up-inactive:
    animals-max-per-tick: 4
    animals-every: 1200
    animals-for: 100
    monsters-max-per-tick: 8
    monsters-every: 400
    monsters-for: 100
    villagers-max-per-tick: 4
    villagers-every: 600
    villagers-for: 100
    flying-monsters-max-per-tick: 8
    flying-monsters-every: 200
    flying-monsters-for: 100
  villagers-work-immunity-after: 100
  villagers-work-immunity-for: 20
  villagers-active-for-panic: true
  tick-inactive-villagers: true
  ignore-spectators: false

entity-activation-range determina qué tan lejos (en bloques) debe activarse una entidad. Cualquier entidad que caiga fuera de esta zona se tickeará con una frecuencia reducida.

Estos valores siempre deben establecerse a un máximo de (simulation-distance - 1)x16 y no menos de 16 si estás ejecutando una simulation-distance/view-distance extremadamente baja en tu servidor.

Paridad con Vanilla y una mejor experiencia de juego

Ten en cuenta que el valor sugerido anteriormente es más alto que la configuración predeterminada proporcionada por Paper con una distancia de simulación predeterminada de 10. Si bien puede parecer contradictorio usar un valor más grande, es crucial comprender que estamos optimizando para una mejor experiencia de juego. Por lo tanto, la paridad con Vanilla debe tener prioridad sobre las posibles ganancias de rendimiento.

Si estás considerando deshabilitar completamente la función EAR (Entity Activation Range), puedes establecer sus valores en 0. Esto los deshabilitará. Para la mayoría de los servidores pequeños y medianos, esto debería ser aceptable.

Reducir el rango de activación de entidades debería ser el último recurso...

💡 Mantener el recuento total de entidades bajo control es una forma más efectiva de evitar problemas de rendimiento que ejecutar un gran número de entidades con mecánicas Vanilla parcialmente rotas.

Además,...

tick-inactive-villager podría cambiarse a false si no deseas que todos los aldeanos que están cargados pero fuera del rango de activación se tickeen. En otras palabras, solo los aldeanos que estén dentro del rango de activación estarán activos.

Sin embargo, hacerlo puede reducir el rendimiento de las granjas de Golems de Hierro si un jugador no está cerca. El temporizador de enfriamiento de comercio de aldeanos no bajará si no hay ningún jugador cerca.

world-settings.default.entity-activation-range.wake-up-inactive

Las propiedades work immunity (inmunidad al trabajo) y wake up inactive (despertar inactivos) son implementadas por Paper con el objetivo de dar más vida al mundo al permitir que ciertas entidades se "despierten" y hagan algo de trabajo por un tiempo determinado. Permite a los aldeanos reabastecerse, encontrar trabajo, etc.

Cambia max-per-tick a 0 si no quieres este comportamiento para esa categoría en particular.

Puedes leer el mensaje de commit de EAR en Github aquí.

Para elaborar un poco más, usaremos este fragmento de wake-up-inactive a continuación como ejemplo para ayudarte a comprender mejor esta mecánica:

YAML

wake-up-inactive:
  villagers-max-per-tick: 4
  villagers-every: 600
  villagers-for: 100
villagers-work-immunity-after: 120
villagers-work-immunity-for: 20

La configuración anterior se traduce en el siguiente comportamiento...

Por cada 600 ticks del juego, existe la posibilidad de que hasta 4 aldeanos cargados seleccionados aleatoriamente, que no hayan estado activos durante 120 ticks, se despierten durante 100 ticks, donde podrán despertarse y hacer cosas durante 20 ticks mientras son inmunes al efecto de congelación de estar demasiado lejos de los jugadores.

Para deshabilitar la inmunidad al trabajo, establece villagers-work-immunity-after en 0. Ten en cuenta que esto romperá el comportamiento de los aldeanos a menos que EAR esté deshabilitado por completo.

world-settings.default.merge-radius

YAML

merge-radius:
  item: -1
  exp: -1

Paper, por defecto, sigue el mismo mecanismo de fusión que Minecraft Vanilla en la versión 1.21.

A partir de la versión 1.21 de Paper, build #38, el comportamiento de fusión se ha restaurado para que coincida con Minecraft Vanilla (un valor de -1 significa "por defecto"). Para comprender completamente cómo funciona la fusión de experiencia, consulta este video de Nico is LOST. Contiene una explicación en profundidad de la mecánica de fusión de Vanilla.

Si decides usar la función de fusión de Craftbukkit/Spigot, el valor está en bloques; ajústalo según tus necesidades. Además, puedes definir manualmente un valor en config/paper-world-defaults.yml/entities.behavior.experience-merge-max-value si deseas seguir fusionando los orbes de experiencia, pero con una cantidad máxima establecida por orbe.

💡 Es beneficioso mantener la mecánica de Vanilla intacta, ya que cambiar el valor aquí resultará en la ruptura de granjas que dependen de los flujos de XP o la fusión de ítems de maneras particulares.

Optimizaciones adicionales y opcionales:

config/paper-global.yml:

YAML

misc:
  xp-orb-groups-per-area: default

Esta opción te permite establecer un valor más alto que el predeterminado (40) para fusionar orbes de experiencia de forma más agresiva, lo que reduce el impacto potencial en el rendimiento de granjas de experiencia muy grandes y rápidas, a costa de algunos cambios de comportamiento.

config/paper-world-defaults.yml:

YAML

entities:
  behavior:
    only-merge-items-horizontally: true

Además, only-merge-items-horizontally también se puede activar a true en config/paper-world-defaults.yml para alinear aún más el comportamiento de los orbes de experiencia con Vanilla. Tiene un ligero impacto en el rendimiento, pero es muy beneficioso para la experiencia de juego del jugador.


Configuraciones de Paper

Una carpeta config ahora almacena los archivos de configuración predeterminados y globales para tu servidor Paper, y se encuentra en la carpeta raíz de tu Minecraft.

  • paper-global.yml consiste en todas las configuraciones globales disponibles.
  • paper-world-defaults.yml consiste en la configuración predeterminada para todos los mundos.

Además, también se genera un archivo de configuración por mundo llamado paper-world.yml en cada carpeta de mundo.

paper-world.yml se puede editar para sobrescribir la configuración por mundo y se encuentra en /[nombre_del_mundo]/paper-world.yml.


📄 Configuraciones de Paper: paper-world-defaults.yml

Configuraciones esenciales para paper-world-defaults.yml:

entities.tracking-range-y

YAML

tracking-range-y:
  enabled: true
  animal: default
  display: default
  misc: default
  monster: default
  other: default
  player: default

Además del entity-tracking-range en spigot.yml, Paper te da la capacidad de configurar las distancias de seguimiento vertical del nivel Y. Esto es especialmente útil para servidores que desean que las entidades aparezcan/desaparezcan antes o después. Se puede habilitar para categorías particulares por mundo según las necesidades de tu servidor.

entities.spawning.despawn-ranges

YAML

despawn-ranges:
  ambient:
    hard: default
    soft: default
  axolotls:
    hard: default
    soft: default
  creature:
    hard: default
    soft: default
  misc:
    hard: default
    soft: default
  monster:
    hard:
      horizontal: default
      vertical: default
    soft: default
  underground_water_creature:
    hard: default
    soft: default
  water_ambient:
    hard: default
    soft: default
  water_creature:
    hard: default
    soft: default

Este valor define qué tan lejos debe tener un mob la probabilidad de desaparecer (soft - suave) o desaparecer instantáneamente (hard - duro).

Paper también te ofrece la posibilidad de definir por separado el rango de desgeneración tanto vertical como horizontalmente. Esto es extremadamente útil para servidores que necesitan funcionar con una distancia de simulación inferior a la predeterminada de 10, ya sea por hardware más débil o por un mayor número de jugadores.

💡 El default (por defecto) significa que sigue a Minecraft Vanilla, donde el rango de desgeneración suave es de 32 y el rango de desgeneración duro es de 128.

entities.spawning.despawn-ranges-notes

Reglas a seguir:

Si simulation-distance está por debajo de 10, mob-spawn-range debe establecerse en un valor igual o inferior a 8, o a (simulation-distance -1), lo que sea menor. Mientras que despawn-ranges.hard.horizontal debe establecerse en (simulation-distance -1)x16.

Esto asegura que todas las entidades tengan la oportunidad de desaparecer antes de llegar al chunk limítrofe. De esta manera, se preserva la densidad natural de mobs y se evitan intentos innecesarios de aparición o desaparición de mobs.

Para definir individualmente los rangos de desgeneración horizontal y vertical, se deben agregar dos líneas adicionales bajo la sección monster.hard, como se muestra a continuación:

YAML

despawn-ranges:
  monster:
    hard:
      horizontal: default
      vertical: default
    soft: default

El valor vertical siempre debe mantenerse en el valor predeterminado, que es 128 en Minecraft Vanilla. Esto es muy importante para preservar la coherencia del juego, ya que la mayoría de los tutoriales de granjas de YouTube instruyen a los jugadores a construir sus puntos de AFK en consecuencia.

Si necesitas ejecutar la simulación con una distancia inferior a 10, consulta la siguiente tabla para una mejor visualización de los valores sugeridos:

simulation-distancemob-spawn-rangedespawn-range.hard.horizontal
10 (Vanilla)8 (Vanilla)128 (Vanilla)
98128
87112
7696
6580
5464
4348
3 (no ideal)336 (no recomendado)

Exportar a Hojas de cálculo

💡 No aparecerán mobs naturalmente dentro de 24 bloques o menos alrededor de un jugador, por lo que no se recomienda cambiar el valor de hard.horizontal a menos de 36.

💡 Ten en cuenta que el tamaño de la granja sigue estando directamente limitado por tu distancia de simulación horizontalmente. Tener el rango de desgeneración vertical establecido en el valor predeterminado (128) simplemente significa que los jugadores aún pueden construir su punto de AFK coincidiendo con Minecraft Vanilla.

entities.spawning.despawn-time

Paper proporciona la capacidad de establecer tiempos de desaparición individualmente para cada tipo de entidad, además de las reglas de desaparición de Vanilla existentes. Puedes encontrar una lista completa de tipos de entidades aquí.

YAML

despawn-time:
  llama_spit: 1200
  snowball: 1200
  fireball: 1200
  dragon_fireball: 1200
  small_fireball: 1200
  arrow: 3000
  shulker_bullet: 3000
  wither_skull: 3000
  trident: 3000

Usar despawn-time junto con entity-per-chunk-save-limit y alt-item-despawn-rate en las siguientes secciones ayuda a prevenir entidades generadas por jugadores o por el juego que a veces pueden causar problemas de rendimiento o bloqueos del servidor.

chunks.entity-per-chunk-save-limit

YAML

entity-per-chunk-save-limit:
  experience_orb: 50
  snowball: 20
  ender_pearl: 20
  arrow: 20
  fireball: 10
  small_fireball: 10
  dragon_fireball: 5
  egg: 20
  area_effect_cloud: 10
  llama_spit: 5
  shulker_bullet: 8
  spectral_arrow: 5
  potion: 5
  experience_bottle: 5
  trident: 10
  wither_skull: 10

Esta opción limita la cantidad máxima de cada entidad especificada que se guarda en un chunk. Este límite es esencial, ya que evita que el servidor se detenga al intentar cargar un chunk que contiene una gran cantidad de estas entidades de proyectiles.

(A veces, los proyectiles son disparados a chunks descargados intencionalmente por jugadores para crashear un servidor, o sin querer por pura suerte. Ambos pueden evitarse con estos límites establecidos).

entities.spawning.alt-item-despawn-rate

YAML

alt-item-despawn-rate:
  enabled: true
  items:
    cobblestone: 600
    cobbled_deepslate: 600
    netherrack: 600
    rotten_flesh: 900
    ender_pearl: 900
    leather: 900
    bone: 1200
    bone_meal: 1200
    cactus: 900
    egg: 900
    feather: 900
    gunpowder: 1200
    arrow: 900
    blaze_rod: 1200
    cod: 1200
    salmon: 1200
    string: 1200
    ink_sac: 900
    slime_ball: 1200
    phantom_membrane: 900

Habilitar esta opción te permitirá hacer desaparecer más rápido los objetos comunes/ítems de basura.

  • El cactus se añade a la lista en un esfuerzo por reducir el impacto de las granjas de cactus comunes, en las que muchos cactus se dejarían en la superficie hasta que desaparecieran debido al diseño de la granja.
  • El huevo también se incluye aquí para evitar que los zombis los recojan, lo que impediría que desaparezcan. Es un problema común en los servidores de supervivencia donde los jugadores pueden estar AFK durante un período prolongado y esto da como resultado grupos de zombis que sostienen objetos comunes cerca de las bases de los jugadores.

El valor está en ticks, lo que significa que un valor de 20 equivale a 1 segundo de tiempo del servidor.

Se pueden añadir elementos adicionales a la lista anterior, y deberías encontrar tu propio valor razonable que se adapte a tus necesidades, ya que cada servidor tiene sus propias circunstancias únicas. Por ejemplo, si una granja utiliza vagonetas en un bucle cerrado para recoger las gotas, querrás asegurarte de que el valor no sea demasiado bajo para que la vagoneta pueda recoger los elementos antes de que desaparezcan.

Puedes encontrar una lista completa de tipos de ítems aquí.

Además, existe una configuración similar, item-despawn-rate, que controla el temporizador de desaparición de todos los ítems caídos en spigot.yml; sin embargo, ese es un cambio muy intrusivo que rompe la promesa de tiempo de desaparición de 5 minutos con la que la mayoría de los jugadores de Minecraft están familiarizados, por lo que se omite aquí.

¡El objetivo de optimizar el servidor es hacer el juego más divertido para tus jugadores, no hacerlos sufrir!

collisions.max-entity-collisions

YAML

max-entity-collisions: 8

El valor es la cantidad máxima de entidades que deben incluirse en las búsquedas de colisiones. El servidor dejará de procesar cualquier colisión de entidad adicional después de este umbral.

Reducir este valor ayudará con el rendimiento, ya que la IA de los animales se vuelve loca tratando de encontrar un camino lejos unos de otros en un espacio pequeño y confinado.

No establezcas el valor por debajo de 3, ya que tendrá efectos que romperán el juego en cosas que dependen de las colisiones para funcionar correctamente.

Esto no debe confundirse con la gamerule maxEntityCramming.

La gamerule de aplastamiento (maxEntityCramming) establece la cantidad máxima de entidades que pueden apiñarse antes de que comiencen a sufrir daño por sofocación. Para bajar este valor, usa /gamerule maxEntityCramming [número] (el valor predeterminado es 24). Esta gamerule tiene un impacto directo en las granjas de animales de un bloque, ya que el número máximo de animales que se pueden mantener dentro de un espacio de bloque está determinado por este valor.

collisions.fix-climbing-bypassing-cramming-rule

YAML

fix-climbing-bypassing-cramming-rule: true

Esto soluciona el problema de los mobs trepadores que eluden las reglas de apiñamiento. Déjalo en false si tienes granjas que utilizan este comportamiento (muy poco probable).

entities.spawning.per-player-mob-spawns

YAML

per-player-mob-spawns: true

Paper intentará generar mobs de manera más uniforme entre todos los jugadores en línea. Asegúrate de que esta opción esté configurada en true. Esto es beneficioso para la mayoría de los servidores.

Cuando está habilitada, el límite global de mobs se escalará en función del número de jugadores en línea. Para acceder a un desglose detallado de los límites de mobs, utiliza los siguientes comandos:

  • /paper mobcaps: para los límites globales de mobs y el total de chunks generables.
  • /paper playermobcaps: para los límites de mobs por jugador.

💡 Estos dos comandos son especialmente útiles para solucionar problemas de granjas de mobs. Ejecuta el comando mientras estás parado en el punto AFK de una granja, y si no aparecen mobs dentro de la granja mientras el límite de mobs ya está lleno, significa que has fallado en la protección contra spawns.

Los chunks generables se basan en el número de chunks cargados y los spawn-limits definidos en bukkit.yml (o paper-world-defaults.yml). Realiza los ajustes necesarios, especialmente si no lo tenías habilitado previamente.

La generación de mobs en Vanilla no solo es complicada, sino también inherentemente defectuosa en los servidores multijugador.

Por ejemplo, tenemos dos jugadores en la dimensión del Nether: el jugador A está AFK en una granja de Piglins en el techo del Nether, mientras que el jugador B simplemente está relajándose en el bioma de Nether Waste.

Aunque los intentos de generación se realizan en todos los chunks cargados alrededor de ambos jugadores, la gran mayoría de los intentos exitosos de generación de mobs terminarán alrededor del jugador con las condiciones de generación más favorables.

En este caso, el jugador B recibirá la mayoría de los mobs, mientras que el jugador A recibirá pocos, simplemente porque hay más chunks generables alrededor del jugador B en general.

chunks.prevent-moving-into-unloaded-chunks

YAML

prevent-moving-into-unloaded-chunks: true

Esto evita que los jugadores se muevan a un chunk descargado, lo que de otro modo causaría una carga de chunk síncrona. Cuando un jugador se mueve a un chunk descargado, el servidor priorizaría la carga del chunk con la máxima prioridad, lo que afectaría el TPS.

misc.redstone-implementation

YAML

redstone-implementation: ALTERNATE_CURRENT

Paper proporciona opciones para especificar la implementación de redstone que utiliza el servidor. Las opciones disponibles son VANILLA, EIGENCRAFT y ALTERNATE_CURRENT, siendo VANILLA el predeterminado.

La implementación ALTERNATE_CURRENT es más eficiente y recomendada, pero conlleva posibles cambios de comportamiento. ¡Úsala con precaución!

Para detalles técnicos sobre ALTERNATE_CURRENT, puedes leer más aquí.

environment.treasure-maps

YAML

treasure-maps:
  enabled: true
  find-already-discovered:
    loot-tables: default
    villager-trade: true

Existen varios métodos para mitigar aún más el problema de rendimiento en torno a los mapas del tesoro, como se indica a continuación:

  • Método 1 - OkTreasures: Una solución de plugin de Kyle. OkTreasures corrige los crashes relacionados con los mapas al reemplazar la búsqueda de tesoros enterrados de Vanilla con una personalizada, más rápida y más simple: selecciona aleatoriamente una playa dentro de una distancia razonable y coloca el tesoro allí. Dado que este proceso es en gran medida asíncrono, no causará lag.
  • Método 2 - TreasureMapsPlus: Una solución de plugin de Machine Maker. TreasureMapsPlus está hecho por Machine Maker, un miembro activo del proyecto PaperMC, cuyo objetivo es resolver el problema de los mapas del tesoro con un ligero cambio de comportamiento. En lugar de llevar a los jugadores a un tesoro no descubierto, el plugin simplemente recompensa al jugador con los loots de la tabla de loots del cofre al usar el mapa.
  • Método 3 - Limitar el radio de búsqueda: Al activar la opción villager-trade en find-already-discovered a true, se reducirá el impacto en el rendimiento de los mapas del tesoro. (El mapa ya no intentará encontrar tesoros no descubiertos, sino que devolverá el más cercano).
  • Método 4 - Desactivar completamente los mapas del tesoro: Alternativamente, también puedes optar por deshabilitar completamente la funcionalidad de los mapas del tesoro estableciendo enabled en false para evitar cualquier problema relacionado con la búsqueda prolongada de características.

¿Por qué los mapas del tesoro consumen muchos recursos?

Debido a cómo Minecraft Vanilla genera/busca nuevas tablas de loots a partir de mapas del tesoro encontrados a través de aldeanos cartógrafos o cofres de botín de mazmorras, el servidor puede detenerse debido a la gran cantidad potencial de búsquedas realizadas cuando intenta localizar un cofre que aún no ha sido descubierto por otros jugadores.

El problema se puede mitigar utilizando las opciones proporcionadas anteriormente, junto con modificaciones a la jugabilidad de Vanilla. Sin embargo, a veces es necesario para evitar picos de lag significativos o paradas prolongadas del servidor que podrían resultar en el cierre del servidor por parte del watchdog.

👉 ¿Sabías que...

El mapa del tesoro busca hasta un radio de ~1100 bloques para encontrar tesoros enterrados y permanece en blanco si no hay ninguno dentro del rango.

¡Ese es un radio grande!

/gamerule spawnChunkRadius

Anteriormente conocido como paper-world-defaults.yml/spawn.keep-spawn-loaded ha sido eliminado en favor de la nueva gamerule spawnChunkRadius en la versión de Minecraft 1.20.6+.

/gamerule spawnChunkRadius 2

💡 Si tu spawn mundial es visitado con frecuencia, puede ser una buena idea mantenerlo siempre cargado para reducir la carga y descarga redundante de chunks alrededor del área.

Ten en cuenta que, a diferencia de Minecraft Vanilla, la configuración de gamerule se establece por mundo en un servidor Paper.

Ejemplos de uso de comandos:

  • /execute in minecraft:overworld run gamerule spawnChunkRadius 0
  • /execute in minecraft:the_nether run gamerule spawnChunkRadius 0
  • /execute in minecraft:the_end run gamerule spawnChunkRadius 0

Establecer spawnChunkRadius en 0 esencialmente deshabilitaría esta función.

El valor del rango está en chunks, y la fórmula para el total de chunks a mantener cargados es [((spawnChunkRadius+1)x2)+1]^2.

Con spawnChunkRadius establecido en 2, [(2+1)x2+1]^2=49, tendrías constantemente 49 chunks cargados.

chunks.max-auto-save-chunks-per-tick

YAML

chunks:
  auto-save-interval: default
  max-auto-save-chunks-per-tick: 24

Por defecto, Paper guarda los chunks incrementalmente, hasta 24 chunks por tick.

Esta opción de configuración es solo para usuarios avanzados y se proporciona aquí con fines informativos. La mayoría de los servidores funcionarán bien con el valor predeterminado, y no se requiere ningún cambio. Ten mucho cuidado si decides cambiar el valor aquí, ya que una configuración incorrecta probablemente resultará en un impacto negativo en el rendimiento y un mayor riesgo de pérdida de datos.

La fórmula básica es la siguiente:

max-auto-save-chunks-per-tick x auto-save-interval ≥ total de chunks cargados que requieren guardado

Si sospechas que el guardado de chunks está causando problemas de rendimiento, únete al Discord de Paper con un informe de spark antes de alterar las configuraciones aquí.

💡 No existe tal cosa como "el valor más ideal" para las configuraciones aquí; lo más probable es que el valor predeterminado sea el más óptimo y no se requiera ningún cambio.

chunks.delay-chunk-unloads-by

YAML

chunks:
  delay-chunk-unloads-by: 10s

Paper proporciona un control más preciso sobre la frecuencia con la que se guardan los chunks y la rapidez con la que se descargan. Bajar el valor de delay-chunk-unloads-by demasiado bajo en realidad resultaría en trabajo adicional para el servidor al recargar los chunks que acaban de descargarse si un jugador está cerca de un área.

El valor predeterminado aquí será probablemente la opción más óptima para la mayoría de los propietarios de servidores.

tick-rates

YAML

tick-rates:
  behavior:
    villager:
      validatenearbypoi: -1
  container-update: 1
  dry-farmland: 1
  grass-spread: 1
  mob-spawner: 1
  sensor:
    villager:
      secondarypoisensor: 40

Paper ofrece opciones de control más precisas que rigen ciertas tasas de tick. Aumentar el valor aquí reducirá el uso de recursos con un costo para sus respectivos comportamientos.

dry-farmland, grass-spread y mob-spawner se pueden ajustar para aumentar el intervalo entre cada verificación, reduciendo así su impacto en el rendimiento. La diferencia es en su mayoría insignificante para la mayoría de los servidores pequeños; sin embargo, puede ser beneficioso para servidores con un gran número de spawners y granjas.

Si tu servidor está experimentando problemas de rendimiento relacionados con los aldeanos, primero intenta jugar con esta configuración antes de pasar a una solución de plugin.

Por ejemplo, puedes aumentar secondarypoisensor a 240 y validatenearbypoi a 120 para ahorrar recursos. Es probable que el cambio de comportamiento negativo no sea notorio.

environment.optimize-explosions

YAML

optimize-explosions: false

Establecer esto en true reducirá el impacto de calcular una gran cantidad de explosiones.

El escenario real en el que esto sería beneficioso es mínimo; sin embargo, si a tus amigos les encanta volar cosas con una cantidad desmesurada de TNT, esta configuración puede ser adecuada para ti.

En caso de que realmente te encante volar cosas y notes que la detonación de tu TNT no se comporta como en Vanilla, aumenta el umbral max-tnt-per-tick ubicado en spigot.yml para solucionar el problema.

Ten en cuenta que el umbral está ahí para salvaguardar tu servidor y aumentar el valor también aumentaría el riesgo de que tu servidor se bloquee en caso de una gran cantidad de detonaciones de TNT.

entities.armor-stands

YAML

armor-stands:
  do-collision-entity-lookups: true
  tick: true

Esto decide si los soportes de armadura deben ser tickeados y contabilizados para las colisiones.

Establecerlos en false hará lo siguiente:

  • Eliminará por completo cualquier máquina de lag relacionada con los soportes de armadura.
  • Romperá los plugins que utilizan soportes de armadura.
  • Romperá granjas como la de hielo automático.

lootables

YAML

lootables:
  auto-replenish: false
  max-refills: -1
  refresh-max: 2d
  refresh-min: 12h
  reset-seed-on-fill: true
  restrict-player-reloot: true
  restrict-player-reloot-time: disabled

Cambia auto-replenish a true si planeas ejecutar un servidor de supervivencia a largo plazo. Repone el cofre una vez saqueado y le daría algo de vida a tus viejos mundos.

max-refill establece el número máximo de recargas; un valor de -1 lo hará ilimitado.

refresh-min/max define la cantidad de tiempo que debe transcurrir antes de que el cofre se reponga. Esto no requiere que el chunk esté cargado.

reset-seed-on-fill mezclará las semillas de la tabla de loot en cada recarga para que los elementos dentro del cofre siempre sean diferentes.

restrict-player-reloot evitará que el mismo jugador acampe y saquee el cofre varias veces.

restrict-player-reloot-time (deshabilitado por defecto) se puede habilitar para evitar que los mismos jugadores saqueen el mismo cofre nuevamente con un tiempo definible.

Las unidades de medida aquí son s para segundos, m para minutos, h para horas, d para días. ¡m NO es para meses!

  • Escenario 1: Si un jugador saquea un cofre una vez y vuelve más tarde, no habrá nuevo botín.
  • Escenario 2: Si el jugador A saquea un cofre y luego el jugador B pasa más tarde, el cofre se rellenará y el jugador A podrá volver a saquearlo.
  • Escenario 3: Si restrict-player-reloot-time se establece en 3d, un jugador no puede volver a saquear el mismo cofre hasta 3 días después.

El cofre se rellenará independientemente de los elementos restantes en su interior, a menos que esté lleno.

  • Escenario 4: Si el jugador A abre el cofre (genera el botín) y deja el botín dentro, el jugador B que pase más tarde obtendrá un conjunto de botín recién generado más lo que haya dejado el jugador A previamente.
  • Escenario 5: Si el jugador A abre el cofre y lo llena de diorita, el jugador B que pase más tarde no obtendrá nada nuevo (excepto diorita) porque el cofre ya está lleno, por lo que no se generará nuevo botín.

💡 La función de recarga de lootables solo funciona con los cofres originales generados por el mundo. Por favor, dile a tus jugadores que no los rompan.

feature-seeds.generate-random-seeds-for-all

YAML

generate-random-seeds-for-all: true

Al activar esta opción a true, obtendrás un cierto nivel de seguridad contra las herramientas de seed-cracking, ya que aleatoriza la sub-semilla de un mundo de Minecraft, en lugar de usar la semilla del mundo para generar características. Esta es una característica muy útil si deseas evitar ventajas injustas que los jugadores pueden obtener si logran averiguar la semilla de tu mundo utilizando herramientas como SeedcrackerX.

Ten en cuenta que esta configuración solo cubre características; para las estructuras generadas, altera manualmente las semillas de la estructura en spigot.yml. (Este comportamiento se heredó de Spigot, que no aleatoriza automáticamente la semilla de la estructura que proporciona, por lo que esta parte del proceso sigue siendo manual).

Ten en cuenta que esta configuración no afecta a los chunks que se generaron antes de habilitar esta opción. Para obtener los mejores resultados, se recomienda utilizar esta función en un mundo completamente nuevo. Aquí te explicamos cómo puedes habilitar esta función correctamente:

Cómo habilitar la generación de semillas aleatorias para todas las características

  1. Inicia el servidor para que se genere el archivo paper-world-defaults.yml y luego detenlo.
  2. Abre paper-world-defaults.yml (ubicado dentro de la carpeta config) y establece generate-random-seeds-for-all en true.
  3. Abre spigot.yml e introduce manualmente las semillas de estructura a tu gusto.
  4. Elimina las carpetas world, world_nether y world_the_end.
    • (Este paso es necesario porque /gamerule spawnChunkRadius está configurado en 2 por defecto, por lo que ya se generaron algunos chunks cuando se inició el servidor).
    • (Por favor, verifica que level-seed no esté ya configurado en server.properties, de lo contrario se generará la misma semilla).
  5. BONUS: Si quieres definir semillas de características individuales, puedes volver a paper-world-defaults.yml y configurarlas manualmente. (Por defecto, las feature-seeds se aleatorizan automáticamente).
  6. Inicia el servidor y ¡listo!

Para definir la semilla del mundo manualmente, añade la línea level-seed=[número_de_semilla] a server.properties o edita tu level.dat con un Editor NBT, y luego realiza los pasos anteriores.

Una vez que la función esté habilitada, encontrarás una nueva sección con feature-seeds generadas aleatoriamente listadas en tus archivos paper-world-defaults.yml y paper-world.yml. Si tienes alguna otra configuración específica por mundo, asegúrate de añadirla en las categorías correspondientes.

💡 Ten en cuenta que esto puede no evitar que los seed-crackers fuercen la semilla de tu mundo; sin embargo, esta opción inutiliza la ventaja de conocer la semilla del mundo, ya que las ubicaciones de todas las características y estructuras no coincidirán con la semilla del mundo. Dicho esto, la única forma real de prevenir completamente el seed-cracking es tener una generación de mundo personalizada.

misc.legacy-ender-pearl-behavior

YAML

legacy-ender-pearl-behavior: false

Desde la versión 1.21.3, Mojang ha hecho que las perlas de Ender puedan cargar chunks por sí mismas. Establecer esta opción en true deshabilitará la capacidad de las perlas de Ender para cargar chunks.

👋 Dato curioso: ¡Con una simple cámara de estasis de perlas de Ender configurada, ahora se puede cargar un área de 3x3 con facilidad!


🌎 Configuraciones de Paper: paper-global.yml

Configuraciones esenciales para paper-global.yml:

chunk-loading-advanced

YAML

chunk-loading-advanced:
  auto-config-send-distance: true
  player-max-concurrent-chunk-generates: 0
  player-max-concurrent-chunk-loads: 0
chunk-loading-basic:
  player-max-chunk-generate-rate: -1.0
  player-max-chunk-load-rate: 100.0
  player-max-chunk-send-rate: 75.0

Paper proporciona control sobre cómo se envían los datos de los chunks a los jugadores. Los valores predeterminados enumerados anteriormente deberían funcionar para la mayoría de los servidores.

Si estás solucionando problemas de carga de chunks, consulta primero el canal #paper-help en Discord para obtener asesoramiento; no alteres los valores sin comprender completamente lo que hacen. No sigas ninguna guía aleatoria para el valor recomendado, ¡hay mucha información errónea por ahí!

En 1.20, las opciones de carga de chunks se han revisado y se ha eliminado por completo su antigua configuración de límite global. La opción predeterminada ahora debería funcionar para la mayoría de los servidores, grandes o pequeños.

Si experimentas lentitud al cargar chunks en tu servidor, revisa la siguiente lista para solucionar problemas relacionados con la carga de chunks:

  • ¿El mapa está pregenerado? Si es posible, asegúrate de que la totalidad del mapa esté pregenerada. Esto ayudaría a aliviar cualquier tensión innecesaria en el servidor.
  • ¿El servidor está sobrecargado? Generar chunks es una tarea pesada. Paper genera chunks de forma asíncrona, y normalmente no sería un problema a menos que la máquina de hosting del servidor esté sobrecargada y no pueda seguir el ritmo.
  • ¿Está habilitado el anti-xray de Paper? El anti-xray hace que los chunks sean menos compresibles, lo que aumenta el uso de la red. Intenta deshabilitar la función para ver si la velocidad de carga mejora.
  • ¿Posible problema relacionado con plugins? Asegúrate de que no haya plugins que causen problemas que puedan estar reteniendo los hilos de Netty. Considera la búsqueda binaria para aislar el plugin problemático.
  • ¿Posibles cuellos de botella en la red? Supervisa el uso de la red para asegurarte de tener suficiente ancho de banda para soportar todas las actividades de los jugadores.
  • ¿Posible cuello de botella de E/S de disco? Esto podría ser un problema si estás utilizando hardware antiguo o alojando un servidor con un host compartido que puede imponer límites en tu instancia.
  • ¿Los jugadores viajan a altas velocidades y cargan una gran cantidad de chunks? Si tienes varios jugadores volando con elytra y cohetes, o volando en barco en el servidor, esto podría saturar el sistema de chunks. Además del anti-cheat, una solución como TooManyGen puede ayudar a imponer ciertos límites a los jugadores que están cargando muchos chunks en un corto período de tiempo.

¿Experimentas ping alto o problemas de tiempo de espera?

Si uno o más jugadores experimentan un ping más alto de lo normal cuando inician sesión en el servidor por primera vez, se teletransportan a una nueva ubicación o cambian de dimensión, revisa la siguiente lista de posibles causas:

  • Cliente abrumado: Paper envía chunks mucho más rápido que Minecraft Vanilla. Como resultado, el cliente de Minecraft puede tener dificultades para manejar esto y podría dejar de renderizar chunks por completo. Aconsejar a los jugadores que reduzcan la distancia de renderizado en su cliente podría ayudar a mitigar este problema. También se deben considerar las optimizaciones modernas del cliente.
  • Mal enrutamiento o Internet inestable: Se envía una cantidad significativa de información al cliente durante el proceso de inicio de sesión. Los jugadores con una velocidad de Internet inferior a la ideal o problemas de enrutamiento a tu servidor pueden experimentar un ping más alto de lo normal durante este proceso. Aconsejar a los jugadores que instalen CloudFlare WARP puede ayudar a resolver problemas relacionados con el mal enrutamiento.
  • Posiblemente causado por plugins: El paso final sería revisar tus plugins. Esta tarea podría no ser fácil; sin embargo, un plugin problemático podría ser la causa raíz de que los jugadores se desconecten con frecuencia. Utiliza el método de búsqueda binaria para identificar posibles problemas.

💡 Un valor más alto en player-max-send-rate no siempre es mejor. Realiza tus propias pruebas y encuentra un conjunto de valores que funcione para tu servidor.

chunk-system

YAML

chunk-system:
  gen-parallelism: default
  io-threads: -1
  worker-threads: -1

Con la introducción del parche de reescritura de chunks, se proporcionan estas opciones para que los propietarios de servidores ajusten el nuevo sistema de chunks a sus necesidades.

Ten en cuenta que el valor predeterminado es probablemente la opción más óptima para la mayoría de los servidores. Se recomienda encarecidamente no cambiar manualmente este valor, ya que hacerlo puede afectar negativamente el rendimiento del servidor.

Si tienes alguna pregunta, visita el Discord de Paper para obtener más ayuda.

item-validation.book

YAML

book:
  author: 8192
  page: 16384
  title: 8192
book-size:
  page-max: 2560
  total-multiplier: 0.98
display-name: 8192
lore-line: 8192
resolve-selectors-in-books: false

Paper ofrece opciones para ajustar el tamaño general de un libro. Esta es una característica útil para evitar el "bookban" (bloqueo por libro), ya sea a propósito o por accidente (poco probable).

El valor de page-max está en bytes. Es seguro reducirlo a la mitad o más, a tu gusto (por ejemplo, 640~1280).

Además, puedes utilizar un plugin para prohibir caracteres no ASCII en un libro, que se encuentra en la sección Plugins y Herramientas Esenciales para la Calidad de Vida.


Configuraciones por Mundo (paper-world.yml)

Todas las configuraciones predeterminadas ahora se almacenarán dentro de la carpeta config en la carpeta raíz de tu Minecraft. La configuración por mundo ahora se puede definir en paper-world.yml ubicada en /[nombre_del_mundo]/paper-world.yml (el archivo predeterminado está vacío).

Paper te permite aplicar un conjunto personalizado de configuraciones en paper-world.yml para anular el valor predeterminado en paper-world-defaults.yml, como los límites de mobs.

El archivo paper-world.yml se encuentra dentro de cada una de las carpetas de tus mundos.

La siguiente sección sirve como ejemplo para ayudarte a visualizar las estructuras de archivos:

YAML

/world_the_end/paper-world.yml
entities:
  spawning:
    spawn-limits:
      monster: 35
      creature: 10
      ambient: 0
      axolotls: 0
      underground_water_creature: 0
      water_creature: 0
      water_ambient: 0

/world_nether/paper-world.yml
entities:
  spawning:
    spawn-limits:
      monster: 80
      creature: -1
      ambient: -1
      axolotls: -1
      underground_water_creature: -1
      water_creature: -1
      water_ambient: -1

/resource_world/paper-world.yml
entities:
  spawning:
    spawn-limits:
      monster: 5
      creature: 30
      ambient: -1
      axolotls: 10
      underground_water_creature: -1
      water_creature: -1
      water_ambient: -1

En el ejemplo anterior, al tener un valor de monstruo más bajo en resource_world, has hecho que el mundo de recursos sea un poco más seguro para los mineros y también has reducido la sobrecarga en el servidor al no mantener los chunks de generación cargados porque no se están utilizando activamente.

💡 Con algunos usos inteligentes de las configuraciones por mundo, puedes ahorrar recursos del servidor mientras mantienes una experiencia de juego óptima para tus jugadores.


💎 Anti-Xray Integrado de Paper

Paper tiene una opción anti-xray eficiente e integrada para combatir los resource packs básicos del lado del cliente que permiten ver los minerales ocultos.

Si decides habilitar esta función, sigue cuidadosamente la siguiente publicación:

Documentación Anti-Xray de PaperMC

  • El modo de motor 1 proporciona la protección más básica, dejando los minerales expuestos al aire intactos.
  • Los modos de motor 2 y 3 funcionan ocultando las vistas al presentar minerales falsos al cliente.

Ten en cuenta que en servidores con un alto número de jugadores concurrentes (más de 100), el uso del modo de motor 2 a veces puede saturar las tuberías de red, ya que se envían más datos a los jugadores. Algunos jugadores pueden recibir pings más altos de lo normal al iniciar sesión o cambiar de dimensión. Consulta los consejos a continuación para una alternativa.

¿Puede la gente eludir estas funciones anti-xray?

Sin entrar en demasiados detalles técnicos, con suficiente esfuerzo, la gente aún podría eludir la función anti-xray debido a cómo el cliente de Minecraft procesa la información alrededor de un jugador. Todavía es posible eludir las medidas anti-xray proporcionadas anteriormente.

Métodos alternativos para prevenir los xrays:

  • Método 1 - Plugin RayTraceAntiXray: Si tienes hilos de CPU disponibles en tu servidor, considera el complemento RayTraceAntiXray de stonar96. Proporciona una solución inquebrantable con un uso adicional de recursos.
  • Método 2 - Auditoría manual del personal: Combinando el uso de OreAnnouncer y la función de vista previa de CoreProtect, los miembros del personal pueden auditar el túnel de minería de un jugador y determinar fácilmente si está haciendo trampas o no (buscando signos de diseños de túneles inusuales y verificando si los minerales eran visibles para ellos). Este método, aunque manual, es 100% efectivo y no requiere recursos adicionales. Es probablemente la solución ideal para servidores pequeños o amistosos.Cómo hacer una Auditoría Manual:
    • Paso 1: Recibe una notificación de OreAnnouncer sobre una cantidad inusual de minerales extraídos.
    • Paso 2: Teletranspórtate a las coordenadas del túnel de minería del jugador.
    • Paso 3: Ejecuta el comando de CoreProtect como /co rollback action:-block exclude:stone,deepslate,dirt,gravel,andesite,diorite,granite radius:8 time:24h #preview.
    Si notas que el sospechoso está cavando hacia los minerales sin una línea de visión, es una fuerte indicación de que el jugador está usando x-ray.💡 La medida anti-xray más efectiva es fomentar una comunidad madura donde las trampas sean mal vistas. Crear un entorno donde se anime a los jugadores a denunciar a los tramposos siempre será la forma más ideal de prevenir el xray.

➕ Anexo

Hay muchas cosas que he omitido, y no es sin razón. Esas otras configuraciones a menudo introducen demasiados compromisos en la jugabilidad o solo tienen mejoras mínimas de rendimiento en la mayoría de los servidores de tamaño pequeño a mediano. Para obtener una lista completa de las configuraciones disponibles, consulta la Documentación oficial de PaperMC.

Minecraft moderno exige muchos recursos, y solo se puede optimizar hasta cierto punto antes de que tengas que preguntarte: ¿sigue valiendo la pena el esfuerzo?

Solo se puede quitar tanto de un coche para que vaya más rápido hasta que no te quede más que un volante y un chasis desnudo, lo mismo se aplica a la optimización de tu servidor.

Si ajustar las configuraciones mencionadas anteriormente no es suficiente para ayudar a mantener un TPS estable (18~20) en tu servidor, te sugiero encarecidamente que consideres una actualización directa del hardware, ya que esta será la forma más directa de ver cualquier mejora adicional en el rendimiento. Consulta las Opciones de Alojamiento a continuación para obtener más información.

En el momento de escribir esto, incluso con el hardware más reciente disponible, el techo máximo es de 60-80 jugadores con configuraciones cercanas a las predeterminadas de Vanilla o 100 jugadores con enormes compromisos en la jugabilidad. En ese punto, impón un límite razonable de jugadores máximos en el servidor y comienza a pensar en expansiones de red con múltiples servidores. ¡Y felicidades por tu logro!


🛠️ Herramientas de Diagnóstico de Rendimiento

spark Profiler

El perfilador spark puede proporcionar información sobre posibles problemas de rendimiento dentro de tu servidor. El uso del comando se puede encontrar aquí.

Si necesitas ayuda, es útil tener un informe de spark que haya capturado el problema de rendimiento listo para que los ayudantes de la comunidad de Paper te asistan con tus problemas de rendimiento.

Haz clic aquí para saber cómo generar un informe significativo...

💡 No todas las categorías que muestran un gran porcentaje indican problemas; leer dentro del contexto del informe es muy importante.


🚫 Errores Comunes a Evitar

  • El Mito de los Gigahertz: Al seleccionar CPUs para tu servidor de Minecraft, no uses la velocidad de reloj para comparar dos CPUs a menos que sean del mismo modelo y fabricante. Consulta el Mito de los Gigahertz para obtener más información. En resumen, selecciona la arquitectura de CPU más reciente y el modelo con la mayor clasificación de rendimiento de un solo núcleo disponible.
  • Asignar más RAM =/= mejor rendimiento: El rendimiento del servidor depende en gran medida de tu CPU, no de la RAM. La mayoría de los servidores funcionarán bien con 10 GB de RAM asignada, independientemente del número de jugadores o plugins. Cualquier host que afirme que más RAM aumentaría el rendimiento de tu servidor está tratando de venderte algo para obtener ganancias. No caigas en esta trampa.
  • El uso de RAM no es un indicio de problemas de rendimiento: La lectura del uso de RAM obtenida de los paneles/htop carece de significado en una JVM correctamente configurada. En su lugar, monitoriza tus intervalos y duraciones de GC (recolección de basura) para detectar posibles problemas.
  • Alto uso de memoria =/= Fuga de memoria: Puede ser un síntoma de una fuga de memoria, pero no es necesariamente cierto en la mayoría de los casos. Genera un informe de heap durante el período sospechoso en el que crees que se está produciendo la fuga con el comando /paper heap dump y luego alimenta el informe a Eclipse Memory Analyzer u otros programas similares para solucionar el problema. También puedes buscar ayuda en el Discord de Paper.
  • El TPS no es una medida precisa del rendimiento: En su lugar, debes prestar atención a los MSPT (milisegundos por tick). Minecraft funciona a una velocidad fija de 20 ticks por segundo, por lo que, mientras tu MSPT sea inferior a 50, mantendrás 20 TPS. Un servidor podría mostrar un promedio de 20 TPS, pero con un alto porcentaje de TPS perdidos, los jugadores aún podrían experimentar lag en este escenario.
  • El recuento mínimo recomendado de hilos/núcleos para un servidor de Minecraft es CUATRO: Si bien es cierto que el bucle principal del juego se realiza en 1 hilo, hay muchas tareas que pueden beneficiarse de tener múltiples hilos, como Netty, plugins, bases de datos SQL, etc. Se recomienda tener al menos 4 hilos/núcleos para la mayoría de los servidores. Si estás buscando un host, ten esto en cuenta y selecciona tu plan en consecuencia. Muchos planes de hosting económicos son apenas utilizables.

🚀 Flags JVM Imprescindibles

Flags de Aikar (G1GC)

Para la mayoría de los servidores de Minecraft, grandes y pequeños, los flags de Aikar para G1GC deberían ser suficientes.

Genera un script de inicio con los flags de Aikar en el Generador de Scripts de Inicio aquí.

ZGC Generacional

Para aquellos que usan Java 21 y versiones posteriores, pueden probar el ZGC generacional si G1GC no produce buenos resultados.

El flag es muy simple y no requiere ajustes adicionales, ya que ya es altamente efectivo por sí solo. Simplemente indica a la JVM que use ZGC generacional con dos flags, como se muestra a continuación:

-Xms18432M -Xmx18432M -XX:+UseZGC -XX:+ZGenerational

💡 Muchos han afirmado haber descifrado el código para los flags JVM más optimizados, pero evita copiar y usar a ciegas lo que otros proporcionan. La mayoría de los servidores funcionarán perfectamente con los flags de Aikar. Si no estás seguro de lo que estás haciendo, quédate con las opciones convencionales, como se muestra arriba.

Asegúrate de que Xms=Xmx. Esto permite que la JVM reclame la totalidad de la RAM asignada y minimiza la posibilidad de errores OOM (Out Of Memory) debido a un entorno mal configurado o un host incompetente.

(Encontrar un buen host que respete este flag sería lo más ideal; consulta las sugerencias de hosting a continuación para obtener más detalles).

¿Y qué pasa con Shenandoah? Shenandoah está diseñado para entornos altamente multihilo, lo cual no se aplica a las aplicaciones de Minecraft. Por eso, generalmente no se recomienda. Cualquier persona que afirme lo contrario debe tomarse con cautela, especialmente si no tienen datos que respalden sus afirmaciones.

💡 El tiempo de inicio del servidor y el MSPT inactivo no son métricas útiles, ni tampoco son indicadores de un mejor rendimiento del GC. Muchas afirmaciones cuestionables utilizan estos como puntos de referencia, lo cual es un signo de incompetencia. No debes confiar en sus afirmaciones.


💾 Mejores Prácticas de Respaldo y Recuperación

La mierda pasa y no querrás quedarte atascado en el baño con los pantalones sucios, ¿verdad? ¡Es importante llevar un par de calzoncillos de repuesto! ¡Haz una copia de seguridad hoy!

Tener un plan de respaldo y recuperación en marcha es esencial.

Los crashes inesperados o los apagados incorrectos pueden causar corrupción del mundo o pérdida de datos en tu servidor. Mantener múltiples copias de seguridad tanto in situ como fuera del sitio no solo es crucial, sino también un aspecto importante para el funcionamiento de un servidor a largo plazo.

Las soluciones de respaldo se presentan en muchas formas. Investiga y considera las siguientes opciones, y elige la que sea más adecuada para ti. Varias opciones de respaldo que se enumeran a continuación proporcionan funciones de snapshot que realizan copias de seguridad de forma incremental, basándose solo en los archivos que han cambiado, lo que ahorra espacio y permite guardar varias copias de la copia de seguridad.

  • BorgBase
  • borgmatic
  • Kopia (soporta Windows)
  • rsync.net
  • Hetzner storage box
  • restic

Como mínimo, crear un archivo comprimido tarball o zip de toda la carpeta del servidor puede servir como la solución de respaldo más básica.

  • En Linux: tar -czvf backup_fecha.tar.gz /[ruta]/.
  • En Windows: Clic derecho en la carpeta raíz de Minecraft > Enviar a > Carpeta comprimida (zipeada).

💡 Una copia de seguridad no probada es como no tener copia de seguridad. Asegúrate de probarlas regularmente para confirmar que funcionan correctamente.


💎 Plugins y Herramientas Esenciales para la Calidad de Vida

Hangar es el propio repositorio de plugins de PaperMC para plugins de Paper, Velocity, Folia y Waterfall. Aquí, puedes encontrar herramientas modernas y fáciles de usar para desarrolladores para crear, compartir y descubrir plugins para tu servidor de Minecraft. ¡Compruébalo!

Hangar - El mejor lugar para descargar plugins de Minecraft (https://hangar.papermc.io/) Hangar te permite encontrar y descargar los mejores plugins de Minecraft para tu servidor de Minecraft.

A continuación, mi lista personal de plugins que pueden ser beneficiosos para cada servidor.

Descargo de responsabilidad: No estoy patrocinado por ninguna persona o grupo en la elaboración de esta lista. Esta lista está hecha puramente con amor y mi experiencia personal con ellos.

💡Un buen plugin puede traer funcionalidades y mejoras adicionales a tu servidor; por otro lado, un plugin mal hecho podría afectar drásticamente el rendimiento o incluso causar daños permanentes a tu servidor. Por favor, haz tu diligencia debida investigando el historial del desarrollador/organización detrás del plugin antes de la instalación y pruébalos correctamente antes de ponerlos en producción.


Plugins creados por la comunidad diseñados para abordar problemas particulares:


Herramientas de generación de mundos personalizadas:


Herramientas útiles para administradores de servidor:

  • Item Command Converter (https://docs.papermc.io/misc/tools/item-command-converter) En 1.20.5+, Mojang ha pasado de NBT no estructurado a Componentes de Ítems. Esta herramienta proporcionada por PaperMC te ayuda a convertir comandos de ítems antiguos al nuevo formato.
  • MCA Selector (https://github.com/Querz/mcaselector) Una herramienta para ver, recortar y alterar tus datos de chunks sin conexión. Por favor, asegúrate de tener una copia de seguridad adecuada antes de realizar cualquier acción con esta herramienta.
  • Axiom (https://axiom.moulberry.com/) Una herramienta todo en uno para editar mundos de Minecraft con potentes funciones.
  • Minecraft Server Tools (https://mctools.org/) Una colección de herramientas útiles para administradores de servidores, como creador de server.properties, creador de listas blancas y probador de Votifier.
  • HelpChat Toolbox (https://toolbox.helpch.at/) Una colección de herramientas útiles para administradores de servidores, como validador de Yaml y convertidor de formato de chat.
  • Amulet Editor (https://www.amuletmc.com/) Un editor de mundos de Minecraft moderno que permite ediciones externas de tu mundo.
  • Web NBT Editor (https://irath96.github.io/webNBT) Una herramienta simple para ver y editar archivos NBT.
  • World Size Calculator (https://onlinemo.de/world) Una herramienta para estimar el tamaño del archivo de un mundo dado.
  • Chunker Bedrock/JAVA world converter (https://chunker.app/) Una herramienta experimental para convertir tu mundo entre las dos versiones.

Además, existen mods del lado del cliente que tienen como objetivo mejorar la experiencia de juego de Vanilla y son altamente recomendados para los jugadores que deseen tener la mejor experiencia de juego posible.

Herramientas útiles para desarrolladores:

  • diffs.dev (https://diffs.dev/) Visor de diferencias rico en múltiples archivos para GitHub y archivos diff/patch.
  • mappings.dev (https://mappings.dev/) Mappings del lado del cliente y del servidor de Minecraft: Java Edition.

❌ Cosas a Evitar Absolutamente

  • Evita el plugin MobStacker: El mob stacking es una idea inherentemente defectuosa. La generación de mobs consume recursos del servidor. Con el mob stacking habilitado, el servidor nunca alcanzaría el límite de mobs y podría quedar atrapado en un ciclo interminable de generación. Combinado con la aparente inexistencia de plugins de stacker bien codificados, el mob stacking debe evitarse a toda costa.
  • Evita los plugins de eliminación de lag o mejora del rendimiento: Arregla la causa raíz del problema de rendimiento en lugar de enmascararlo. Plugins como ClearLagg o EntityTrackerFixer (ETF) introducen inconsistencias en la jugabilidad, crean trabajo innecesario para tareas ya existentes (como limpiar objetos del suelo y dejar de rastrear entidades), y a veces pueden causar daños permanentes a tu mundo (ETF eliminaría la IA de las entidades, lo que las dejaría con daño cerebral permanente incluso después de que se elimine el plugin).
  • NO permitas que tus jugadores reubiquen spawners: Poder obtener spawners con silk touch es a menudo solicitado por los jugadores; sin embargo, no es una buena idea considerando que los spawners son básicamente una máquina de lag incorporada cuando se juntan suficientes. Por el bien del rendimiento del servidor, no permitas que tus jugadores reubiquen spawners.
  • NO uses datapacks con funciones repetidas/recurrentes: Los datapacks con funciones repetitivas impondrán un impacto en el rendimiento y deben evitarse a toda costa. Busca plugins que reemplacen las características del datapack que deseas tener.
  • NO obtengas tus plugins de BlackSpigot, builtbybit, un individuo aleatorio o cualquier otra fuente desconocida: No comprarías salchichas para el desayuno a un extraño al azar en la parte trasera de tu gasolinera local, ¿verdad? Lo mismo se aplica a la obtención de tus plugins.Practica tu diligencia debida para auditar el código base o al desarrollador para asegurarte de que el recurso que obtienes esté limpio. Los sitios web mencionados anteriormente a menudo contienen recursos mal hechos, tintados (contienen backdoors) o códigos directamente ilegales/robados debido a una combinación de malas moderaciones y, a veces, compañías completamente sombrías.Para decirlo a la ligera, tu servidor puede sufrir un gran impacto en el rendimiento por plugins mal hechos, o peor aún, ser invadido por griefers a través de backdoors incorporados, o peor aún, tu propio servidor puede ser tomado para otras actividades maliciosas.Obtén tus plugins solo de sitios de buena reputación como GitHub o Modrinth.
  • NO actualices automáticamente tu Paper.jar: El ciclo de desarrollo de Paper no incluye un esquema de versiones de lanzamiento/beta adecuado, por lo que ocasionalmente una build defectuosa puede pasar desapercibida hasta el lanzamiento. La automatización brinda comodidad, pero no debes descargar ciegamente el último jar de Paper para usarlo en ningún entorno de producción.
  • NO uses plugins anti-Fabric: Un número creciente de propietarios de servidores tienen la idea equivocada de que bloquear clientes no-Vanilla reducirá la cantidad de tramposos en el servidor. Esto es completamente falso. La mayoría de los usuarios de clientes Fabric buscan los mods de optimización que proporciona el ecosistema. Al usar plugins como gProtector o Advanced Security, no solo estás bloqueando a jugadores legítimos, sino que también estás permitiendo que los tramposos y los clientes hackeados deshonestos corran libremente en tu servidor, debido al hecho de que cualquier desarrollador de cheats competente disfrazará a su cliente como Vanilla. Como resultado, usar plugins anti-Fabric solo dañará a tu propia comunidad al final.
  • El plugin anti-trampas NO es imprescindible: La mejor anti-trampa es una comunidad madura. Atrapar a los tramposos es un juego del gato y el ratón y una carrera armamentista continua entre el anti-trampas y los desarrolladores de clientes hackeados. No existe un plugin único, pagado o no, que los atrape a todos y nunca lo habrá, debido a la gran cantidad de cosas que Minecraft simplemente "confía en el cliente". Concéntrate en el aspecto de construcción de la comunidad y crea un entorno donde los tramposos sean expuestos y expulsados de la comunidad, combinado con auditorías activas del personal, siempre será la forma más efectiva de moderar tu servidor y mantener el juego justo para todos.
  • Evita usar plugins para deshabilitar la función de informe de chat: Ha habido preocupaciones sobre las características de informe de chat recién implementadas en las versiones recientes de Minecraft. La cantidad falsa de desinformación y teorías de conspiración locas al respecto fue muy preocupante; afortunadamente, han pasado algunos meses y no ha habido ningún informe de ningún problema grave, y la mayoría de las preocupaciones al respecto han sido refutadas o demostradas ser información completamente falsa. Dicho esto, hay algunos plugins en el mercado que afirman deshabilitar esta función de seguridad; sin embargo, algunos de ellos están mal implementados y podrían causar problemas potenciales en tu servidor. Si decides ir en contra de este consejo y aún deseas deshabilitar el informe de chat, el único plugin de deshabilitación de informe de chat algo decente es FreedomChat. Evita usar cualquier otra cosa.La función de informe de chat está diseñada para mantener segura a tu base de jugadores de los peores delincuentes de la comunidad. Es importante que te eduques como propietario de un servidor y no caigas en la desinformación, y comprendas que deshabilitar la función de informe de chat es un neto negativo para tu comunidad.
  • La famosa lista negra de Minecraft del popular streamer de Twitch Knenytv: Evita todo lo que esté en esta lista siempre que sea aplicable.

💻 Opciones de Alojamiento (Hosting)

Consejos para elegir un proveedor de hosting de alta calidad

Al evaluar proveedores de hosting, considera la siguiente lista de verificación para asegurarte de que estás tomando la mejor decisión:

  • Transparencia del modelo de CPU: El plan de hosting debe especificar claramente el modelo de CPU. (Para un rendimiento óptimo, evita procesadores antiguos como cualquier cosa anterior a la AMD Ryzen 3900. Las CPU más nuevas, particularmente las diseñadas para juegos, generalmente proporcionan un mejor rendimiento de un solo núcleo, lo cual es crucial para los servidores de Minecraft).
  • Soporte para "Flags de Aikar" o, como mínimo, la capacidad de cambiar los Flags JVM: Un host de calidad soportará los "Flags de Aikar" por defecto y te permitirá establecer tu Xmx igual a Xms. (No dudes en preguntar a los posibles hosts sobre esto. Si no están familiarizados con los "Flags de Aikar", es una señal de alerta; busca en otro lugar. Puedes encontrar más detalles a continuación en la sección "Premium Host").
  • Estado público del nodo: El proveedor debe ofrecer información de estado del nodo accesible públicamente, mostrando el uso de recursos del sistema en tiempo real.
  • Características adicionales a buscar:
    • Protección anti-DDoS incorporada.
    • Una solución de respaldo externo.
    • Un Acuerdo de Nivel de Servicio (SLA) bien definido que describa el tiempo de actividad y los compromisos de soporte.
    • Soporte al cliente receptivo y conocedor para resolver problemas.

💡 Generalmente, si un host puede cumplir con todos los requisitos anteriores, sería un host decente para tu servidor. Ten en cuenta que cualquier host que cumpla con la lista de verificación anterior a menudo será más caro que otros. Considera tus opciones cuidadosamente, ya que obtienes lo que pagas. ¡No escatimes!

Descargo de responsabilidad: No estoy patrocinado por ninguna persona o grupo en la elaboración de esta lista. Esta lista está hecha puramente con amor y mi experiencia personal y la opinión de la comunidad.

Existen varias opciones disponibles cuando se trata de alojar servidores de Minecraft. Por favor, lee y comprende las limitaciones de cada configuración a continuación haciendo clic en su categoría.

  • Servidor Dedicado (Baremetal)
  • Alojamiento Compartido Premium
  • Oracle Cloud Free Tier
  • VPS (Servidor Privado Virtual)
  • Alojamiento Económico
  • Alojamiento Gratuito
  • Autoalojado
  • Raspberry Pi

🌐 Dominio y Registro de Servicio (SRV)

Si tienes un dominio, puedes configurar un registro A y un registro de servicio (SRV) para tener una dirección de servidor más bonita y fácil de recordar.

En lugar de tener 192.168.1.1:25555 como dirección de tu servidor, puedes obtener minecraft.tudominio.com.

Para hacer esto, necesitarás un registro A y un registro SRV.

En este escenario, www.tudominio.com es tu dominio y quieres crear mc.tudominio.com como la dirección de tu servidor en lugar de 192.168.1.1:25555.

  • Paso 1: Crea un registro A que apunte el nombre de host mc.tudominio.com a la dirección IP pública de tu servidor.
  • Paso 2: Crea un registro SRV con el nombre de host _minecraft._tcp.mc.tudominio.com.Habrá opciones para configurar la prioridad, el peso, el puerto y el destino. Los configurarás como 0, 0, 25555, mc.tudominio.com respectivamente.

Si estás ejecutando Minecraft en el puerto predeterminado (25565), solo se necesita un registro A. (El ejemplo anterior se proporciona para servidores que están en un host compartido o se ejecutan en puertos no predeterminados).

Algunos DNS de ISP no respetan el registro SRV, por lo que tu experiencia puede variar si eliges ejecutar en el puerto no estándar 25565.

Consejos avanzados: Se puede usar un registro CNAME para apuntar a tu registro A de dominio existente si no deseas lidiar con posibles cambios de IP más adelante.

💡 Ten en cuenta que los cambios de DNS tardan en propagarse y el enlace resultante podría no funcionar de inmediato. Sé paciente.


🎯 Notas Finales

¡Vaya, has llegado hasta aquí! Espero que no te hayas saltado nada. La idea original de esta guía era hacerla lo más simple posible para principiantes que recién se están adentrando en el alojamiento de servidores de Minecraft. En el proceso de escritura, intenté simplificar las cosas. Por favor, hazme saber si algo se puede explicar mejor o mejorar.

¡Espero que esta guía te sea de gran utilidad para optimizar un servidor de Minecraft y crear un mundo increíble para tus jugadores!

Avatar de admin

admin

Artículos relacionados

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Tu puntuación: Útil

Subir