40servidoresMC 40servidoresMC

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

Unirme
Icono de Dextrality
🇵🇪 Premium Online #71 ranking

Dextrality

· 1.12-1.21 · 10 / 11 jugadores · 483 pts

Sobre el servidor

Al aventurarte dentro de este gran y basto mundo, no puedes andar campante haciendo lo que te plazca, pequeño viajero, deberás de acatar una serie de normas para que así evites ser exiliado de la humanidad, de tu tierra y del mundo...

Modos de juego

oneblock Slimefun survival

Jugadores · últimas 48h

Media horaria del histórico de estado del servidor.

Ahora
10
Media
10
Pico
24
07:0015:0023:0007:0015:0023: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; } }); })();