40servidoresMC 40servidoresMC

Discord oficial de 40servidoresMC. Comunidad, soporte y rango Owner para dueños de servidores.

Unirme
Icono de OnryxCraft Network
🇲🇽 Online #59 ranking Java + Bedrock

OnryxCraft Network

· 1.21-26.2 · 5 / 500 jugadores · 302 pts

Sobre el servidor

🌟 Bienvenido a OnryxCraft Network 🌟 Somos una comunidad de Minecraft en español pensada para ofrecer diversión, progreso y variedad en un solo lugar. 🎮 Modalidades disponibles: • Survival 1.21 • Survival RPG • 19 Minijuegos 🕹️ Los minijuegos pueden jugarse desde el selector de modalidades o directamente con los NPCs del lobby. ⚔️ ¿Qué encontrarás? • Jefes y mazmorras • Economía y tienda • Habilidades y progresión • Claims, homes y warps • Crates y recompensas • Rangos y cosméticos • Eventos y más contenido en camino 🌍 Compatible con jugadores de Java y Bedrock, ideal para quienes buscan una network hispana activa, entretenida y en constante crecimiento. 🚀 OnryxCraft sigue mejorando constantemente, y próximamente llegarán más modalidades, más cosméticos, más rangos y nuevas sorpresas para la comunidad. 📌 IP JAVA: mc.onryxcraft.net 🪨 IP Bedrock: mc.onryxcraft.net PORT BEDROCK: 19132 💬 Idioma principal: Español

Modos de juego

Quests 1vs1 TNTtag escapadelabestia custom factions splegg carreras UHC RPG spleef TNTrun vanilla survival Jobs Minijuegos

Jugadores · últimas 48h

Media horaria del histórico de estado del servidor.

Ahora
5
Media
4
Pico
9
05:0013:0021:0005:0013:0021:00
(function() { const root = document.querySelector('[data-prelaunch-feedback-root]'); if (!root) return; const toggle = root.querySelector('[data-feedback-toggle]'); const panel = root.querySelector('[data-feedback-panel]'); const close = root.querySelector('[data-feedback-close]'); const backdrop = root.querySelector('[data-feedback-backdrop]'); const form = root.querySelector('[data-feedback-form]'); const submit = root.querySelector('[data-feedback-submit]'); const status = root.querySelector('[data-feedback-status]'); const captchaHost = root.querySelector('[data-feedback-turnstile-host]'); const setOpen = (open) => { root.classList.toggle('is-open', open); panel.hidden = !open; panel.setAttribute('aria-hidden', open ? 'false' : 'true'); backdrop.hidden = !open; toggle?.setAttribute('aria-expanded', open ? 'true' : 'false'); if (open) { setStatus(''); window.setTimeout(() => form?.querySelector('textarea[name="message"]')?.focus(), 40); if (captchaHost) { captchaHost.hidden = false; // Si api.js ya estaba listo y el partial nunca monto el // captcha por estar el contenedor oculto al parsear, lo // montamos ahora que el panel es visible de verdad. const cfContainer = captchaHost.querySelector('.cf-turnstile'); if (cfContainer && cfContainer.dataset.turnstilePending === '1') { delete cfContainer.dataset.turnstilePending; if (window.mountTurnstile && form) { window.mountTurnstile(cfContainer, form); } } } } }; const setStatus = (message, tone = '') => { if (!status) return; status.textContent = message; status.classList.remove('is-error', 'is-success'); if (tone !== '') status.classList.add(tone); }; toggle?.addEventListener('click', () => setOpen(!root.classList.contains('is-open'))); close?.addEventListener('click', () => setOpen(false)); backdrop?.addEventListener('click', () => setOpen(false)); document.addEventListener('keydown', (event) => { if (event.key === 'Escape') setOpen(false); }); form?.addEventListener('submit', async (event) => { event.preventDefault(); if (!form || !submit) return; // El boton de enviar no se bloquea mientras carga el captcha (ver // _turnstile_init.php, $turnstileGateSubmit=false), asi que hay que // comprobar el token aqui explicitamente antes de disparar el // fetch: el guard de _turnstile_init.php (registrado aparte, al // abrir el panel) se encarga de avisar al usuario en ese caso // (reportValidity, flash en el boton, reset del widget) — este // listener simplemente no debe enviar nada si falta el token. const turnstileToken = form.querySelector('input[name="cf-turnstile-response"]'); if (turnstileToken && !turnstileToken.value) { return; } submit.disabled = true; setStatus('Guardando feedback...'); try { const response = await fetch(form.action, { method: 'POST', body: new FormData(form), credentials: 'same-origin', headers: { 'Accept': 'application/json', 'X-Requested-With': 'XMLHttpRequest' } }); const payload = await response.json().catch(() => ({})); if (!response.ok || !payload.ok) { throw new Error(payload.message || 'No se pudo guardar el feedback.'); } form.reset(); if (window.turnstile) { try { window.turnstile.reset(); } catch (error) {} } setStatus(payload.message || 'Feedback guardado.', 'is-success'); // Deja ver el mensaje de éxito un instante antes de cerrar, en // vez de desaparecer de golpe. window.setTimeout(() => setOpen(false), 1400); } catch (error) { setStatus(error.message || 'No se pudo guardar el feedback.', 'is-error'); } finally { submit.disabled = false; } }); })();