● Minecraft SMP

Mint SMP

A simple, welcoming Minecraft SMP built around survival, creativity and a good community.

✓
Server address
MintSMP.folium.vip
The server

Made for players.

No unnecessary clutter. Just a clean SMP experience where you can build, explore and make your own story.

◆

Survival first

Build your base, gather resources and create something worth coming back to.

+

Community driven

Meet other players, collaborate on projects and enjoy Minecraft together.

⌁

Your story

Start small, build big and leave your mark on the Mint SMP world.

Community

Keep it mint.

A few simple rules keep the server fun for everyone.

01
Respect everyone

No harassment, hate speech or unnecessary toxicity.

02
No cheating

No hacks, exploits or unfair advantages.

03
Don't grief

Respect other players' builds and belongings.

04
Use common sense

If it ruins someone else's experience, don't do it.

Ready?

Join Mint SMP.

Open Minecraft, add the server address below and jump into the world.

M
Minecraft server IP
MintSMP.folium.vip
Ready?

Join Mint SMP.

Open Minecraft, add the server address below and jump into the world.

M
Minecraft server IP
MintSMP.folium.vip
// ---- Report modal ---- // IMPORTANT: this posts to YOUR OWN server-side relay endpoint, never directly // to a Discord webhook URL. Set REPORT_ENDPOINT to that relay's address // (e.g. your deployed Cloudflare Worker or Node server from relay-worker.js). const REPORT_ENDPOINT = "https://mintsmp-report-relay.mintsmp.workers.dev/report";; const overlay = document.getElementById('reportOverlay'); function openReportModal(){overlay.classList.add('open');document.getElementById('issueType').focus()} function closeReportModal(){overlay.classList.remove('open');resetReportForm()} overlay.addEventListener('click', e => { if(e.target === overlay) closeReportModal(); }); document.addEventListener('keydown', e => { if(e.key === 'Escape' && overlay.classList.contains('open')) closeReportModal(); }); const fileInput = document.getElementById('issueVideo'); const fileDrop = document.getElementById('fileDrop'); fileInput.addEventListener('change', () => { if(fileInput.files.length){ fileDrop.textContent = fileInput.files[0].name; fileDrop.classList.add('has-file'); } else { fileDrop.textContent = 'Click to choose a video (optional)'; fileDrop.classList.remove('has-file'); } }); function resetReportForm(){ document.getElementById('reportForm').reset(); fileDrop.textContent = 'Click to choose a video (optional)'; fileDrop.classList.remove('has-file'); const status = document.getElementById('formStatus'); status.textContent = ''; status.className = 'form-status'; document.getElementById('reportSubmit').disabled = false; document.getElementById('reportSubmit').textContent = 'Send report'; } document.getElementById('reportForm').addEventListener('submit', async (e) => { e.preventDefault(); const status = document.getElementById('formStatus'); const submitBtn = document.getElementById('reportSubmit'); if(REPORT_ENDPOINT.includes('your-relay-worker')){ status.textContent = 'Set REPORT_ENDPOINT to your deployed relay URL first.'; status.className = 'form-status err'; return; } submitBtn.disabled = true; submitBtn.textContent = 'Sending…'; status.textContent = ''; status.className = 'form-status'; try { const fd = new FormData(); fd.append('issueType', document.getElementById('issueType').value); fd.append('issueDetail', document.getElementById('issueDetail').value); if(fileInput.files[0]) fd.append('video', fileInput.files[0]); const res = await fetch(REPORT_ENDPOINT, { method: 'POST', body: fd }); if(!res.ok) throw new Error('Request failed'); status.textContent = 'Thanks — your report was sent.'; status.className = 'form-status ok'; setTimeout(closeReportModal, 1400); } catch(err) { status.textContent = "Couldn't send that. Please try again."; status.className = 'form-status err'; submitBtn.disabled = false; submitBtn.textContent = 'Send report'; } });