diff --git a/docs/chat.php b/docs/chat.php deleted file mode 100644 index ab79bfd..0000000 --- a/docs/chat.php +++ /dev/null @@ -1,32 +0,0 @@ -<?php -require(__DIR__ . "/../libs/header.php"); - -page_header(); -$msgs = json_decode(file_get_contents('https://mcp.dervland.net/messages'), true); -?> -<h2>Scraftia (<a href='/' class='link'>Home</a>)</h2> -<?php -foreach ($msgs as $msg) { - $sys = ($msg['username'] == ':system'); - $classes = ''; - if ($sys && str_contains($msg['content'],'joined ')) $classes = 'joiner'; - if ($sys && str_contains($msg['content'],'left ')) $classes = 'leaver'; - ?> - <div class="comment <?php echo $classes ?>"> - <div class="avatar"> - <div> - <div><b> - <?php echo htmlspecialchars($sys ? 'System User' : $msg['username']); ?> - </b></div> - <div><b class='date'> - <?php echo date(DATE_RFC2822, $msg['date'] * 0.001); ?> - </b></div> - </div> - </div> - <?php echo htmlspecialchars($msg['content']); ?> - </div> -<?php -} - -page_footer(); -?> diff --git a/docs/css/main.css b/docs/css/main.css deleted file mode 100644 index 3d21e41..0000000 --- a/docs/css/main.css +++ /dev/null @@ -1,244 +0,0 @@ -:root { - --black: rgb(16, 16, 16); - --gray: rgb(38, 38, 38); - --white: rgb(240, 240, 240); - --primary-dark: rgb(230, 128, 78); - --primary-light: rgb(255, 230, 200); - --elem-width: min(800px, 90vw); - --elem-height: 300px; - --border-radius: 8px; - --font: system-ui, sans-serif; - color: var(--white); - background: var(--black); - font-family: var(--font) !important; -} - -.comment.joiner { - background: rgb(78,180,78); -} - -.comment.leaver { - background: rgb(180,78,78); -} - -.img { - max-width: 500px; - max-height: 500px; -} - -.banner, -body { - display: flex; - flex-direction: column; - align-items: center; - overflow-x: hidden; - margin-top: 0 -} - -pre { - white-space: pre-wrap; - font-family: var(--font); -} - -.banner { - justify-content: center; - margin-bottom: calc(-1*var(--elem-height)) -} - -.banner-background, -.banner-content { - height: var(--elem-height); - overflow-y: auto -} - -.banner-background { - border-radius: var(--border-radius); - background-color: var(--gray); - opacity: 30%; - object-fit: cover -} - -.banner-content { - margin-left: 10px; - margin-right: 10px; - position: relative; - top: calc(-1*var(--elem-height)) -} - -.banner pre { - width: calc(var(--elem-width) - 40px); - margin: 5px; -} - -.banner, -.banner-background, -.content, -.comment { - width: var(--elem-width) -} - -.avatar { - display: flex; - align-items: center; - margin-bottom: 5px; -} - -.avatar b { - margin-right: 5px; -} - -.avatar-img { - width: 50px; - height: 50px; - margin-right: 15px; - border-radius: var(--border-radius); -} - -.form { - width: calc(var(--elem-width) - 1rem); - grid-template-columns: .51fr 1fr; - display: grid -} - -.form-key { - margin-right: 10px -} - -.form-button, -.form-input, -.form, -.comment { - border: solid var(--gray) 3px; - background: var(--black); - border-radius: var(--border-radius); - color: var(--white); - padding: .5rem; - margin-bottom: .1rem; - margin-top: .1rem; - text-decoration: none -} - -.form-button, -.form-heading, -.form-message { - grid-column: span 2; -} - -.form-button { - font-weight: 700; - display: inline-block; - background: var(--primary-dark); - border-color: var(--primary-light); - margin: .5rem; -} - -.header { - z-index: 5; - position: sticky; - top: 0; - display: flex; - background: var(--gray); - color: var(--white); - padding: 10px; - margin-bottom: 10px; - align-items: center; - flex-wrap: wrap; - width: var(--elem-width); - border-radius: var(--border-radius); -} - -.header-link, -.link { - font-weight: 700; - color: var(--white) -} - -.header-link { - text-decoration: none; - padding-left: .5em; - margin-left: .5em; - border-left: solid var(--white) 2px; - - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - height: 1.5em; -} - -.header-img { - border-left: none; - margin: 0; - padding-left: 0; - height: 2.5em; - object-fit: cover; -} - -@media (max-width: 800px) { - .form { - grid-template-columns: 1fr; - } - .form-button, .form-heading, .form-message { - grid-column: span 1; - } -} - -pre { - width: var(--elem-width); - white-space: pre-wrap; - overflow-wrap: break-word; -} - -iframe { - width: 480px; - height: 360px; - border: none; -} - -.header a { - width: 60px; -} - -.header a, .clickie { - text-decoration: none; - color: inherit; - font-weight: bold; - margin: 5px; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; -} - -.header a.leave { - margin-left: auto; -} - -.clickie { - width: min-content; - margin-top: 40px; -} - -.map { - width: var(--elem-width); - background: var(--gray); - image-rendering: pixelated; - image-rendering: crisp-edges; -} - -.coords { - position: relative; - top: calc(var(--elem-width) / -3); - left: calc(var(--elem-width) / 6); - font-size: 16px; - background: rgba(0,0,0,0.5); - padding: 10px; - width: 250px; - margin: 0; - margin-bottom: -50px; -} - - -.date { - font-size: 0.8em; -} diff --git a/docs/index.php b/docs/index.php index 27f8b60..e69de29 100644 --- a/docs/index.php +++ b/docs/index.php @@ -1,46 +0,0 @@ -<?php -require(__DIR__ . "/../libs/header.php"); - -page_header(); -{ ?> - <div class="banner"><img class="banner-background" src="/thingie.png"> - <div class="banner-content"> - <h1>Scraftia</h1> - <p><b class='important'>Scraftia</b> is a civilization roleplay. Lead your nation's destiny throughout the - Minecraft world.</p> - <p> - Unlike similar servers, the server doesn't use traditional claim plugins, and is not a short-term challenge. - Everything is crafted by the players and their interactions, under the <a class='link' href='#rules'>rules</a>. - </p> - <p> - International affairs are handled via the BiglyChat community website. - </p> - <a class="form-button" href="https://nbg.dervland.net/comment.php?id=f2a20f194dafffe83812c2482df8afda">BiglyChat</a> - <a class="form-button" href="/chat.php">Minecraft Feed</a> - <a class="form-button" onclick="copy()" href="#">Server Address</a> - </div> - </div> - <h1>Nations</h1> - <p><b>Pan camera:</b> [WASD/Mouse], <b>Fast motion:</b> [Q], <b>Zoom:</b> [Mouse wheel]</p> - <canvas class='map' width='1200' height='800'></canvas> - <pre class='coords'></pre> - <div class='comment'> - <h1 id='rules'>Rules</h1> - <ol> - <li>Don't harrass others.</li> - <li>Don't glitch.</li> - <li>Don't hack, excluding shaders, minimaps without caves, and ViaVersion.</li> - <li>Don't loot, grief, or build on foreign land that isn't empty - or inactive for 5+ days (squatting).</li> - <li>Huge claims won't get mapped.</li> - <li>The first claimer of land via BiglyChat and its squatters owns it.</li> - <li>Wars are declared on BiglyChat.</li> - <li>Nations in war have 3 points per citizen or town. Dying deducts this.</li> - <li>A nation having 0 points or being removed, ends a war.</li> - <li>Nations can be partially annexed with only some points deducted.</li> - </ol> - </div> - <?php -} -page_footer(); -?> diff --git a/docs/map.js b/docs/map.js deleted file mode 100644 index 6bbe31a..0000000 --- a/docs/map.js +++ /dev/null @@ -1,142 +0,0 @@ -const mapWidth = 14000; -const mapHeight = 14000; - -let assets = [ - '../thingie.png', - '../thingie.svg' // i swear this is temporary -] - -let imgA = []; - -let map = document.querySelector('.map'); -let ctx = map.getContext('2d'); - -let coords = document.querySelector('.coords'); - -let pos = []; -let mpos = [0, 0]; -let keys = []; -let vel = [0, 0]; -let center = [0, 0]; -let lastPos = [0, 0]; -let isMouse = false; -let zoom = 5; -let timer = 0; - -let id = ''; - -ctx.imageSmoothingEnabled = false; - -function fixEvent(e) { - let r = map.getBoundingClientRect(); - e = { clientX: e.clientX, clientY: e.clientY }; - - e.clientX -= r.x; - e.clientY -= r.y; - - e.clientX /= r.width / map.width; - e.clientY /= r.height / map.height; - - return e; -} - -function down(e) { - keys[e.key.toLowerCase()] = true; -}; - -function up(e) { - keys[e.key.toLowerCase()] = false; -}; - -function mouseMove(e) { - e = fixEvent(e); - - lastPos = [e.clientX, e.clientY]; - if (!isMouse) return; - mpos[0] += e.clientX - center[0]; - mpos[1] += e.clientY - center[1]; - center = lastPos; -} - -function mouseUp(e) { - isMouse = false; -} - -function mouseDown(e) { - e = fixEvent(e); - if (e.button == '2') return; - isMouse = true; - center = [e.clientX, e.clientY]; -} - -function wheel(e) { - document.body.style.overflow = 'hidden'; - - if (timer != 0) clearTimeout(timer); - - timer = setTimeout(function() { - document.body.style.overflow = ''; - },400) - - mpos[0] -= lastPos[0]; - mpos[1] -= lastPos[1]; - - let f = (2 ** -(e.deltaY/256)); - - mpos[0] *= f; - mpos[1] *= f; - - mpos[0] += lastPos[0]; - mpos[1] += lastPos[1]; - - zoom *= f; -} - -function move() { - var isShift = keys['q']; - vel[0] += ((keys['a'] ? 1 : 0) - (keys['d'] ? 1 : 0)) * (isShift ? 5 : 1); - vel[1] += ((keys['w'] ? 1 : 0) - (keys['s'] ? 1 : 0)) * (isShift ? 5 : 1); - - vel[0] *= 0.9; - vel[1] *= 0.9; - - mpos[0] += vel[0]; - mpos[1] += vel[1]; - - ctx.clearRect(0, 0, map.width, map.height); - - for (let img of imgA) { - let w = imgA[0].width * zoom; - let h = imgA[0].height * zoom; - ctx.drawImage(img, mpos[0], mpos[1], w, h) - } - - off = [-(imgA[0].width * zoom - map.width) / 2, -(imgA[0].height * zoom - map.height) / 2]; - coords.textContent = `X: ${(mpos[0] - off[0]) * mapWidth / imgA[0].width / -zoom}\nZ: ${(mpos[1] - off[1]) * mapHeight / imgA[0].height / -zoom}`; -} - -for (let asset of assets) { - let img = new Image(); - img.src = `./${asset}`; - imgA.push(img); -} - -let off = [-(imgA[0].width * zoom - map.width) / 2, -(imgA[0].height * zoom - map.height) / 2]; -setTimeout(function() { - mpos = [off[0], off[1]]; -},300) - -setInterval(move, 10); - -window.addEventListener('keydown', down); -window.addEventListener('keyup', up); -map.addEventListener('wheel', wheel); -window.addEventListener('mousemove', mouseMove); -window.addEventListener('mousedown', mouseDown); -window.addEventListener('mouseup', mouseUp); - -function copy() { - let addr = 'play.dervland.net'; - navigator.clipboard.writeText(addr); - alert(addr); -} diff --git a/docs/thingie.png b/docs/thingie.png deleted file mode 100644 index 3f0627a..0000000 Binary files a/docs/thingie.png and /dev/null differ diff --git a/docs/thingie.svg b/docs/thingie.svg deleted file mode 100644 index 50c4ed4..0000000 --- a/docs/thingie.svg +++ /dev/null @@ -1,81 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - version="1.1" - id="svg99" - width="832.63367" - height="832.63367" - viewBox="0 0 832.63367 832.63368" - sodipodi:docname="thingie.svg" - inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" - xml:space="preserve" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns="http://www.w3.org/2000/svg" - xmlns:svg="http://www.w3.org/2000/svg"><defs - id="defs103" /><sodipodi:namedview - id="namedview101" - pagecolor="#ffffff" - bordercolor="#000000" - borderopacity="0.25" - inkscape:showpageshadow="2" - inkscape:pageopacity="0.0" - inkscape:pagecheckerboard="0" - inkscape:deskcolor="#d1d1d1" - showgrid="false" - inkscape:zoom="11.264335" - inkscape:cx="476.01569" - inkscape:cy="437.97527" - inkscape:window-width="1920" - inkscape:window-height="1007" - inkscape:window-x="0" - inkscape:window-y="0" - inkscape:window-maximized="1" - inkscape:current-layer="g105" /><g - inkscape:groupmode="layer" - inkscape:label="Image" - id="g105"><image - width="832.63367" - height="832.63367" - preserveAspectRatio="none" - style="image-rendering:optimizeSpeed;stroke-linecap:round;stroke-linejoin:round" - xlink:href="thingie.png" - id="image594" - x="0" - y="0" /><rect - style="fill:#000000;fill-opacity:0.64363295;stroke-linecap:round;stroke-linejoin:round" - id="rect603" - width="832.63367" - height="832.63367" - x="0" - y="0" /><path - style="opacity:1;fill:#eb4040;fill-opacity:0.45482;stroke:#ffffff;stroke-opacity:1;paint-order:normal;stroke-linecap:round;stroke-linejoin:round" - d="m 406.87337,470.92616 3.84833,4.77535 -0.73844,8.5449 6.33357,5.03866 v 12.64969 l 5.17658,6.91783 3.11524,5.98823 h 23.24665 l -4.41575,-9.60002 3.62355,0.0775 1.43855,-1.00649 -2.35777,-5.22148 0.78173,-6.29329 -2.22737,-4.00891 -0.92847,-3.57631 1.00304,-5.13311 6.36496,-10.19613 1.96389,-7.9673 4.11108,-0.60192 8.46536,-2.4512 3.2914,5.43871 1.96194,3.39496 4.05832,-0.3551 -0.21479,-8.79115 -11.03323,-9.49656 -7.85756,4.24824 -8.74651,1.57696 -5.95119,-0.59937 -2.13513,-6.13499 -3.22439,-6.71636 -1.87863,-4.94731 -0.22609,-5.97784 4.15629,-5.24223 1.47202,0.17755 0.11706,-1.2888 -10.53279,-2.77204 -9.54181,2.04358 -3.07618,12.04642 1.90806,3.42516 -1.90806,4.02648 5.75708,15.97913 -5.75708,8.54608 -8.01082,0.95158 -1.29893,5.63623 z" - id="path2127" /><text - xml:space="preserve" - style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:9.71354px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';opacity:1;fill:#ffffff;fill-opacity:0.991232;stroke:none;stroke-width:0.80946;stroke-opacity:1;paint-order:normal;stroke-linecap:round;stroke-linejoin:round" - x="288.06116" - y="565.2309" - id="text2300" - transform="rotate(-13.963974)"><tspan - sodipodi:role="line" - id="tspan2298" - x="288.06116" - y="565.2309" - style="stroke-width:0.80946;stroke-linecap:round;stroke-linejoin:round">Akoria</tspan></text><path - style="fill:#407ceb;fill-opacity:0.45490196;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;paint-order:normal;stroke:#ffffff;stroke-opacity:1;stroke-dasharray:none" - d="m 472.80183,439.69519 -1.9312,-3.50756 -0.52953,-4.90597 -1.60279,-4.74297 2.05962,-4.06559 2.74884,0.0835 c 0,0 2.99937,1.22194 2.78174,1.75255 -0.21763,0.53062 -1.10759,2.75358 -1.10759,2.75358 l 3.18598,1.03519 2.70871,0.20551 0.41645,-1.02866 3.23833,1.56761 -1.02188,1.96737 c 0,0 -0.52626,1.89464 -0.61504,2.77645 -0.0888,0.8818 0.87706,2.38767 0.87706,2.38767 l 2.88011,1.77401 c 0,0 -1.45491,4.31835 -2.05899,4.22957 -0.60408,-0.0888 -6.10295,-2.63911 -6.10295,-2.63911 z" - id="path292" /><text - xml:space="preserve" - style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:9.71354px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';opacity:1;fill:#ffffff;fill-opacity:0.991232;stroke:none;stroke-width:0.80946;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;paint-order:normal" - x="563.94672" - y="274.48572" - id="text2208" - transform="rotate(15.884476)"><tspan - sodipodi:role="line" - id="tspan2206" - x="563.94672" - y="274.48572" - style="stroke-width:0.80946;stroke-linecap:round;stroke-linejoin:round">Islandia</tspan></text></g></svg> diff --git a/libs/header.php b/libs/header.php deleted file mode 100644 index dc4516a..0000000 --- a/libs/header.php +++ /dev/null @@ -1,19 +0,0 @@ -<?php -function page_header() -{ - ?> - <!DOCTYPE html> - <html> - <head> - <title>Scraftia</title> - <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1"> - <link rel="stylesheet" href="/css/main.css"> - </head> - <body> - <?php } -function page_footer() -{ ?> - <script src='/map.js'></script> - </body> - </html> - <?php } ?>