diff --git a/servers/index.html b/servers/index.html index fab5812..1147617 100644 --- a/servers/index.html +++ b/servers/index.html @@ -65,7 +65,7 @@

Public Server List

- Discover servers publically hosted on My-MC.
Our public Realms list resets daily at 12 AM EST daily. + Discover servers publically hosted on My-MC.
Our public Realms list resets daily at 12 AM EST.

diff --git a/servers/server_list.js b/servers/server_list.js index b7855f7..cc06f26 100644 --- a/servers/server_list.js +++ b/servers/server_list.js @@ -1,150 +1,151 @@ - // Function to copy text to clipboard and trigger animation - function copyToClipboard(text, button) { - navigator.clipboard.writeText(text).then(() => { - button.classList.add('copied'); - setTimeout(() => { - button.classList.remove('copied'); - }, 2000); - }).catch(err => { - console.error('Failed to copy:', err); - }); - } +// Function to copy text to clipboard and trigger animation +function copyToClipboard(text, button) { + navigator.clipboard.writeText(text).then(() => { + button.classList.add('copied'); + setTimeout(() => { + button.classList.remove('copied'); + }, 2000); + }).catch(err => { + console.error('Failed to copy:', err); + }); +} - // Function to create a server card - function createServerCard(server, isNew = false) { +// Function to create a server card +// Function to create a server card +function createServerCard(server, isNew = false) { + const ownerName = server.ops && server.ops.length > 0 ? server.ops[0].name : 'Unknown'; + const serverCard = document.createElement('div'); + serverCard.className = `feature-card tilt-card ${isNew ? 'new-server-animation' : ''}`; + serverCard.dataset.connect = server.connect; // Add identifier + serverCard.innerHTML = ` +
+ +

${ownerName}'s Server

+
+

MOTD: ${server.motd}

+

Version: ${server.gameVersion}

+

Gamemode: ${server.gamemode}

+

Hardcore: ${server.hardcore ? 'Yes' : 'No'}

+

Status: ${server.online ? 'Online' : 'Offline'}

+
+ Connect: + ${server.connect} + +
+ `; + return serverCard; +} + +// Function to update server list dynamically +function updateServerList(newServers) { + const serverList = document.getElementById('server-list'); + const currentCards = Array.from(serverList.children); + const currentConnects = currentCards.map(card => card.dataset.connect); + const newConnects = newServers.map(server => server.connect); + + // Find new servers + const serversToAdd = newServers.filter(server => !currentConnects.includes(server.connect)); + const serversToRemove = currentCards.filter(card => !newConnects.includes(card.dataset.connect)); + + // Remove old servers + serversToRemove.forEach(card => { + card.style.opacity = '0'; + card.style.transform = 'translateY(20px)'; + setTimeout(() => card.remove(), 300); + }); + + // Add new servers with animation + serversToAdd.forEach(server => { + const newCard = createServerCard(server, true); + serverList.insertBefore(newCard, serverList.firstChild); + }); + + // Update existing servers + newServers.forEach(server => { + const existingCard = currentCards.find(card => card.dataset.connect === server.connect); + if (existingCard) { const ownerName = server.ops && server.ops.length > 0 ? server.ops[0].name : 'Unknown'; - const serverCard = document.createElement('div'); - serverCard.className = `feature-card tilt-card ${isNew ? 'new-server-animation' : ''}`; - serverCard.dataset.connect = server.connect; // Add identifier - serverCard.innerHTML = ` -
- -

${ownerName}'s Server

-
-

MOTD: ${server.motd}

-

Version: ${server.gameVersion}

-

Gamemode: ${server.gamemode}

-

Hardcore: ${server.hardcore ? 'Yes' : 'No'}

-

Status: ${server.online ? 'Online' : 'Offline'}

-
- Connect: - ${server.connect} - -
- `; - return serverCard; + const updatedCard = createServerCard(server); + existingCard.innerHTML = updatedCard.innerHTML; + existingCard.className = updatedCard.className; } + }); - // Function to update server list dynamically - function updateServerList(newServers) { - const serverList = document.getElementById('server-list'); - const currentCards = Array.from(serverList.children); - const currentConnects = currentCards.map(card => card.dataset.connect); - const newConnects = newServers.map(server => server.connect); + console.log('Server list updated:', { + added: serversToAdd.length, + removed: serversToRemove.length, + total: newServers.length + }); +} - // Find new servers - const serversToAdd = newServers.filter(server => !currentConnects.includes(server.connect)); - const serversToRemove = currentCards.filter(card => !newConnects.includes(card.dataset.connect)); +// Function to fetch and display servers +async function fetchServers() { + const serverList = document.getElementById('server-list'); + const loadingMessage = document.getElementById('loading-message'); + const errorMessage = document.getElementById('error-message'); + const searchInput = document.getElementById('search-input'); - // Remove old servers - serversToRemove.forEach(card => { - card.style.opacity = '0'; - card.style.transform = 'translateY(20px)'; - setTimeout(() => card.remove(), 300); - }); + try { + const response = await fetch('https://api.my-mc.link/list_all_servers_public'); + const data = await response.json(); - // Add new servers with animation - serversToAdd.forEach(server => { - const newCard = createServerCard(server, true); - serverList.insertBefore(newCard, serverList.firstChild); - }); + if (data.success && data.servers) { + loadingMessage.classList.add('hidden'); + errorMessage.classList.add('hidden'); - // Update existing servers - newServers.forEach(server => { - const existingCard = currentCards.find(card => card.dataset.connect === server.connect); - if (existingCard) { - const ownerName = server.ops && server.ops.length > 0 ? server.ops[0].name : 'Unknown'; - const updatedCard = createServerCard(server); - existingCard.innerHTML = updatedCard.innerHTML; - existingCard.className = updatedCard.className; - } - }); + // Store servers globally for search filtering + window.serverData = data.servers; - console.log('Server list updated:', { - added: serversToAdd.length, - removed: serversToRemove.length, - total: newServers.length - }); - } - - // Function to fetch and display servers - async function fetchServers() { - const serverList = document.getElementById('server-list'); - const loadingMessage = document.getElementById('loading-message'); - const errorMessage = document.getElementById('error-message'); - const searchInput = document.getElementById('search-input'); - - try { - const response = await fetch('https://api.my-mc.link/list_all_servers_public'); - const data = await response.json(); - - if (data.success && data.servers) { - loadingMessage.classList.add('hidden'); - errorMessage.classList.add('hidden'); - - // Store servers globally for search filtering - window.serverData = data.servers; - - // Initial render or update - if (serverList.children.length === 0) { - window.serverData.forEach(server => { - serverList.appendChild(createServerCard(server)); - }); - } else { - updateServerList(window.serverData); - } - - // Add search event listener (only once) - if (!searchInput.dataset.listener) { - searchInput.dataset.listener = 'true'; - searchInput.addEventListener('input', () => { - const searchTerm = searchInput.value.trim().toLowerCase(); - const filteredServers = window.serverData.filter(server => { - const ownerName = server.ops && server.ops.length > 0 ? server.ops[0].name.toLowerCase() : 'unknown'; - const motd = server.motd.toLowerCase(); - const version = server.gameVersion.toLowerCase(); - const status = server.online ? 'online' : 'offline'; - - return ( - ownerName.includes(searchTerm) || - motd.includes(searchTerm) || - version.includes(searchTerm) || - status.includes(searchTerm) - ); - }); - - updateServerList(filteredServers); - }); - } - } else { - throw new Error('No servers found'); - } - } catch (error) { - loadingMessage.classList.add('hidden'); - errorMessage.classList.remove('hidden'); - console.error('Error fetching servers:', error); + // Initial render or update + if (serverList.children.length === 0) { + window.serverData.forEach(server => { + serverList.appendChild(createServerCard(server)); + }); + } else { + updateServerList(window.serverData); } + + // Add search event listener (only once) + if (!searchInput.dataset.listener) { + searchInput.dataset.listener = 'true'; + searchInput.addEventListener('input', () => { + const searchTerm = searchInput.value.trim().toLowerCase(); + const filteredServers = window.serverData.filter(server => { + const ownerName = server.ops && server.ops.length > 0 ? server.ops[0].name.toLowerCase() : 'unknown'; + const motd = server.motd.toLowerCase(); + const version = server.gameVersion.toLowerCase(); + const status = server.online ? 'online' : 'offline'; + + return ( + ownerName.includes(searchTerm) || + motd.includes(searchTerm) || + version.includes(searchTerm) || + status.includes(searchTerm) + ); + }); + + updateServerList(filteredServers); + }); + } + } else { + throw new Error('No servers found'); } + } catch (error) { + loadingMessage.classList.add('hidden'); + errorMessage.classList.remove('hidden'); + console.error('Error fetching servers:', error); + } +} - // Initial fetch - fetchServers(); +// Initial fetch +fetchServers(); - // Fetch servers every 60 seconds - setInterval(fetchServers, 60000); \ No newline at end of file +// Fetch servers every 60 seconds +setInterval(fetchServers, 60000); \ No newline at end of file