fixes, improvements, removing some old stuff

This commit is contained in:
sky 2024-08-13 04:55:14 -04:00
parent 79d4781710
commit f18f4a0f0b
131 changed files with 148246 additions and 1158231 deletions

View File

@ -100,8 +100,52 @@
<p>Awesome-XV</p></a <p>Awesome-XV</p></a
> >
</div> </div>
<div id="adcontainer"> <h2>Partners</h2>
<h3><a href="ad.html">AD (click to read more):</a></h3> <div class="samerow">
<a class="avatar" href="https://discord.gg/echodev-971769908205604864"
><sl-avatar image="/img/pfps/3kh0.webp" label="3kh0"></sl-avatar>
<p>3kh0.net</p></a
>
<a class="avatar" href="https://discord.gg/Cqaa8x82Ch"
><sl-avatar image="/img/pfps/snor.webp" label="snor"></sl-avatar>
<p>Snorlax's Cave</p></a
>
<a class="avatar" href="https://discord.gg/DYSB3TeQ2y"
><sl-avatar image="/img/pfps/shadow.webp" label="shad"></sl-avatar>
<p>Shadow Network</p></a
>
<a class="avatar" href="https://discord.gg/DmQMtsTPD6"
><sl-avatar image="/img/pfps/night.webp" label="nig"></sl-avatar>
<p>Night Network</p></a
>
<a class="avatar" href="https://discord.gg/xMyUXZ7Z8y"
><sl-avatar image="/img/pfps/math.webp" label="orbit"></sl-avatar>
<p>Math Orbit</p></a
>
<a class="avatar" href="https://discord.gg/H7JqRwykhk"
><sl-avatar image="/img/pfps/wrnd.gif" label="wrnd"></sl-avatar>
<p>WRND</p></a
>
<a class="avatar" href="https://discord.gg/sSWRxaHhvA"
><sl-avatar image="/img/pfps/lunar.webp" label="lun"></sl-avatar>
<p>Lunarsync</p></a
>
<a class="avatar" href="https://discord.gg/nPzc5ambR4"
><sl-avatar image="/img/pfps/ultra.webp" label="ult"></sl-avatar>
<p>Ultrabrowse</p></a
>
<a class="avatar" href="https://discord.gg/yNJ6Yx6qVu"
><sl-avatar image="/img/pfps/compass.png" label="cumpass"></sl-avatar>
<p>Compass Network</p></a
>
<a class="avatar" href="https://discord.gg/HynWJ8aq"
><sl-avatar image="/img/pfps/ocular.webp" label="ock"></sl-avatar>
<p>Ocular Network</p></a
> <!--Note: Ocular is Breakium.com -->
</div>
</div> </div>
@ -109,7 +153,7 @@
</main> </main>
<footer> <footer>
<a href="https://codeberg.org/skysthelimitt/selenite">Source</a> <a href="gitlab.com/skysthelimit.dev/selenite">Source</a>
<a href="https://discord.gg/7jyufnwJNf">Discord</a> <a href="https://discord.gg/7jyufnwJNf">Discord</a>
<a href="/suggest.html">Suggestions & Bugs</a> <a href="/suggest.html">Suggestions & Bugs</a>
<a href="/contact.html">Contact</a> <a href="/contact.html">Contact</a>

View File

@ -607,6 +607,11 @@ div.played-game img {
aspect-ratio: 1 / 1; aspect-ratio: 1 / 1;
border-radius: 20px; border-radius: 20px;
} }
.friend-icon {
width: 5%;
position: absolute;
left: 2%;
}
@keyframes toastFade { @keyframes toastFade {
0% { 0% {
opacity: 0; opacity: 0;

View File

@ -754,11 +754,6 @@
"image": "cover.svg", "image": "cover.svg",
"directory": "spankthemonkey" "directory": "spankthemonkey"
}, },
{
"name": "CMM Client",
"image": "cmm.jpeg",
"directory": "cmm-client"
},
{ {
"name": "Pool", "name": "Pool",
"image": "cover.svg", "image": "cover.svg",

1
img/friend.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#ffffff"><path d="M40-160v-112q0-34 17.5-62.5T104-378q62-31 126-46.5T360-440q66 0 130 15.5T616-378q29 15 46.5 43.5T680-272v112H40Zm720 0v-120q0-44-24.5-84.5T666-434q51 6 96 20.5t84 35.5q36 20 55 44.5t19 53.5v120H760ZM360-480q-66 0-113-47t-47-113q0-66 47-113t113-47q66 0 113 47t47 113q0 66-47 113t-113 47Zm400-160q0 66-47 113t-113 47q-11 0-28-2.5t-28-5.5q27-32 41.5-71t14.5-81q0-42-14.5-81T544-792q14-5 28-6.5t28-1.5q66 0 113 47t47 113ZM120-240h480v-32q0-11-5.5-20T580-306q-54-27-109-40.5T360-360q-56 0-111 13.5T140-306q-9 5-14.5 14t-5.5 20v32Zm240-320q33 0 56.5-23.5T440-640q0-33-23.5-56.5T360-720q-33 0-56.5 23.5T280-640q0 33 23.5 56.5T360-560Zm0 320Zm0-400Z"/></svg>

After

Width:  |  Height:  |  Size: 766 B

BIN
img/pfps/3kh0.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

BIN
img/pfps/compass.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

BIN
img/pfps/lunar.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
img/pfps/math.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
img/pfps/night.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
img/pfps/ocular.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
img/pfps/shadow.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
img/pfps/snor.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
img/pfps/ultra.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

BIN
img/pfps/wrnd.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1023 KiB

View File

@ -16,6 +16,7 @@
<script src="/js/randomquote.js"></script> <script src="/js/randomquote.js"></script>
<link rel="stylesheet" href="/style.css" /> <link rel="stylesheet" href="/style.css" />
<link rel="manifest" href="/manifest.json">
<!-- seo + other things --> <!-- seo + other things -->
<title>Selenite</title> <title>Selenite</title>
@ -58,7 +59,7 @@
</div> </div>
</main> </main>
<footer class="noscroll"> <footer class="noscroll">
<a href="https://codeberg.org/skysthelimitt/selenite">Source</a> <a href="gitlab.com/skysthelimit.dev/selenite">Source</a>
<a href="https://discord.gg/7jyufnwJNf">Discord</a> <a href="https://discord.gg/7jyufnwJNf">Discord</a>
<a href="/suggest.html">Suggestions & Bugs</a> <a href="/suggest.html">Suggestions & Bugs</a>
<a href="/contact.html">Contact</a> <a href="/contact.html">Contact</a>

View File

@ -126,11 +126,10 @@ document.addEventListener(
() => { () => {
setCloak(); setCloak();
let plausible = document.createElement("script"); let plausible = document.createElement("script");
plausible.setAttribute("event-domain", location.host)
plausible.setAttribute("defer", ""); plausible.setAttribute("defer", "");
plausible.setAttribute("src", "/js/analytics.js"); plausible.setAttribute("src", "/js/analytics.js");
plausible.setAttribute("data-domain", "selenite.cc"); plausible.setAttribute("data-domain", "selenite.cc");
let plausible_more = document.createElement("script");
plausible_more.innerHTML = "window.plausible = window.plausible || function() { (window.plausible.q = window.plausible.q || []).push(arguments) }";
document.head.appendChild(plausible); document.head.appendChild(plausible);
}, },
false false

14
js/all.min.js vendored

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
!function(){"use strict";var a=window.location,r=window.document,o=r.currentScript,l=o.getAttribute("data-api")||new URL(o.src).origin+"/api/event";function s(t,e){t&&console.warn("Ignoring Event: "+t),e&&e.callback&&e.callback()}function t(t,e){if(/^localhost$|^127(\.[0-9]+){0,2}\.[0-9]+$|^\[::1?\]$/.test(a.hostname)||"file:"===a.protocol)return s("localhost",e);if((window._phantom||window.__nightmare||window.navigator.webdriver||window.Cypress)&&!window.__plausible)return s(null,e);try{if("true"===window.localStorage.plausible_ignore)return s("localStorage flag",e)}catch(t){}var i={},n=(i.n=t,i.u=a.href,i.d=o.getAttribute("data-domain"),i.r=r.referrer||null,e&&e.meta&&(i.m=JSON.stringify(e.meta)),e&&e.props&&(i.p=e.props),new XMLHttpRequest);n.open("POST",l,!0),n.setRequestHeader("Content-Type","text/plain"),n.send(JSON.stringify(i)),n.onreadystatechange=function(){4===n.readyState&&e&&e.callback&&e.callback({status:n.status})}}var e=window.plausible&&window.plausible.q||[];window.plausible=t;for(var i,n=0;n<e.length;n++)t.apply(this,e[n]);function p(){i!==a.pathname&&(i=a.pathname,t("pageview"))}var c,u=window.history;u.pushState&&(c=u.pushState,u.pushState=function(){c.apply(this,arguments),p()},window.addEventListener("popstate",p)),"prerender"===r.visibilityState?r.addEventListener("visibilitychange",function(){i||"visible"!==r.visibilityState||p()}):p()}(); !function(){"use strict";var r=window.location,o=window.document,l=o.currentScript,s=l.getAttribute("data-api")||new URL(l.src).origin+"/api/event";function u(t,e){t&&console.warn("Ignoring Event: "+t),e&&e.callback&&e.callback()}function t(t,e){if(/^localhost$|^127(\.[0-9]+){0,2}\.[0-9]+$|^\[::1?\]$/.test(r.hostname)||"file:"===r.protocol)return u("localhost",e);if((window._phantom||window.__nightmare||window.navigator.webdriver||window.Cypress)&&!window.__plausible)return u(null,e);try{if("true"===window.localStorage.plausible_ignore)return u("localStorage flag",e)}catch(t){}var n={},t=(n.n=t,n.u=r.href,n.d=l.getAttribute("data-domain"),n.r=o.referrer||null,e&&e.meta&&(n.m=JSON.stringify(e.meta)),e&&e.props&&(n.p=e.props),l.getAttributeNames().filter(function(t){return"event-"===t.substring(0,6)})),i=n.p||{},a=(t.forEach(function(t){var e=t.replace("event-",""),t=l.getAttribute(t);i[e]=i[e]||t}),n.p=i,new XMLHttpRequest);a.open("POST",s,!0),a.setRequestHeader("Content-Type","text/plain"),a.send(JSON.stringify(n)),a.onreadystatechange=function(){4===a.readyState&&e&&e.callback&&e.callback({status:a.status})}}var e=window.plausible&&window.plausible.q||[];window.plausible=t;for(var n,i=0;i<e.length;i++)t.apply(this,e[i]);function a(){n!==r.pathname&&(n=r.pathname,t("pageview"))}var p,c=window.history;c.pushState&&(p=c.pushState,c.pushState=function(){p.apply(this,arguments),a()},window.addEventListener("popstate",a)),"prerender"===o.visibilityState?o.addEventListener("visibilitychange",function(){n||"visible"!==o.visibilityState||a()}):a()}();

View File

@ -1,161 +0,0 @@
// Copyright 2018 AJ ONeal. All rights reserved
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
;(function (exports) {
'use strict';
if (!exports.ASN1) { exports.ASN1 = {}; }
if (!exports.Enc) { exports.Enc = {}; }
if (!exports.PEM) { exports.PEM = {}; }
var ASN1 = exports.ASN1;
var Enc = exports.Enc;
var PEM = exports.PEM;
//
// Parser
//
// Although I've only seen 9 max in https certificates themselves,
// but each domain list could have up to 100
ASN1.ELOOPN = 102;
ASN1.ELOOP = "uASN1.js Error: iterated over " + ASN1.ELOOPN + "+ elements (probably a malformed file)";
// I've seen https certificates go 29 deep
ASN1.EDEEPN = 60;
ASN1.EDEEP = "uASN1.js Error: element nested " + ASN1.EDEEPN + "+ layers deep (probably a malformed file)";
// Container Types are Sequence 0x30, Container Array? (0xA0, 0xA1)
// Value Types are Boolean 0x01, Integer 0x02, Null 0x05, Object ID 0x06, String 0x0C, 0x16, 0x13, 0x1e Value Array? (0x82)
// Bit String (0x03) and Octet String (0x04) may be values or containers
// Sometimes Bit String is used as a container (RSA Pub Spki)
ASN1.CTYPES = [ 0x30, 0x31, 0xa0, 0xa1 ];
ASN1.VTYPES = [ 0x01, 0x02, 0x05, 0x06, 0x0c, 0x82 ];
ASN1.parse = function parseAsn1Helper(buf) {
//var ws = ' ';
function parseAsn1(buf, depth, eager) {
if (depth.length >= ASN1.EDEEPN) { throw new Error(ASN1.EDEEP); }
var index = 2; // we know, at minimum, data starts after type (0) and lengthSize (1)
var asn1 = { type: buf[0], lengthSize: 0, length: buf[1] };
var child;
var iters = 0;
var adjust = 0;
var adjustedLen;
// Determine how many bytes the length uses, and what it is
if (0x80 & asn1.length) {
asn1.lengthSize = 0x7f & asn1.length;
// I think that buf->hex->int solves the problem of Endianness... not sure
asn1.length = parseInt(Enc.bufToHex(buf.slice(index, index + asn1.lengthSize)), 16);
index += asn1.lengthSize;
}
// High-order bit Integers have a leading 0x00 to signify that they are positive.
// Bit Streams use the first byte to signify padding, which x.509 doesn't use.
if (0x00 === buf[index] && (0x02 === asn1.type || 0x03 === asn1.type)) {
// However, 0x00 on its own is a valid number
if (asn1.length > 1) {
index += 1;
adjust = -1;
}
}
adjustedLen = asn1.length + adjust;
//console.warn(depth.join(ws) + '0x' + Enc.numToHex(asn1.type), index, 'len:', asn1.length, asn1);
function parseChildren(eager) {
asn1.children = [];
//console.warn('1 len:', (2 + asn1.lengthSize + asn1.length), 'idx:', index, 'clen:', 0);
while (iters < ASN1.ELOOPN && index < (2 + asn1.length + asn1.lengthSize)) {
iters += 1;
depth.length += 1;
child = parseAsn1(buf.slice(index, index + adjustedLen), depth, eager);
depth.length -= 1;
// The numbers don't match up exactly and I don't remember why...
// probably something with adjustedLen or some such, but the tests pass
index += (2 + child.lengthSize + child.length);
//console.warn('2 len:', (2 + asn1.lengthSize + asn1.length), 'idx:', index, 'clen:', (2 + child.lengthSize + child.length));
if (index > (2 + asn1.lengthSize + asn1.length)) {
if (!eager) { console.error(JSON.stringify(asn1, ASN1._replacer, 2)); }
throw new Error("Parse error: child value length (" + child.length
+ ") is greater than remaining parent length (" + (asn1.length - index)
+ " = " + asn1.length + " - " + index + ")");
}
asn1.children.push(child);
//console.warn(depth.join(ws) + '0x' + Enc.numToHex(asn1.type), index, 'len:', asn1.length, asn1);
}
if (index !== (2 + asn1.lengthSize + asn1.length)) {
//console.warn('index:', index, 'length:', (2 + asn1.lengthSize + asn1.length));
throw new Error("premature end-of-file");
}
if (iters >= ASN1.ELOOPN) { throw new Error(ASN1.ELOOP); }
delete asn1.value;
return asn1;
}
// Recurse into types that are _always_ containers
if (-1 !== ASN1.CTYPES.indexOf(asn1.type)) { return parseChildren(eager); }
// Return types that are _always_ values
asn1.value = buf.slice(index, index + adjustedLen);
if (-1 !== ASN1.VTYPES.indexOf(asn1.type)) { return asn1; }
// For ambigious / unknown types, recurse and return on failure
// (and return child array size to zero)
try { return parseChildren(true); }
catch(e) { asn1.children.length = 0; return asn1; }
}
var asn1 = parseAsn1(buf, []);
var len = buf.byteLength || buf.length;
if (len !== 2 + asn1.lengthSize + asn1.length) {
throw new Error("Length of buffer does not match length of ASN.1 sequence.");
}
return asn1;
};
ASN1._replacer = function (k, v) {
if ('type' === k) { return '0x' + Enc.numToHex(v); }
if (v && 'value' === k) { return '0x' + Enc.bufToHex(v.data || v); }
return v;
};
// don't replace the full parseBlock, if it exists
PEM.parseBlock = PEM.parseBlock || function (str) {
var der = str.split(/\n/).filter(function (line) {
return !/-----/.test(line);
}).join('');
return { der: Enc.base64ToBuf(der) };
};
Enc.base64ToBuf = function (b64) {
return Enc.binToBuf(atob(b64));
};
Enc.binToBuf = function (bin) {
var arr = bin.split('').map(function (ch) {
return ch.charCodeAt(0);
});
return 'undefined' !== typeof Uint8Array ? new Uint8Array(arr) : arr;
};
Enc.bufToHex = function (u8) {
var hex = [];
var i, h;
var len = (u8.byteLength || u8.length);
for (i = 0; i < len; i += 1) {
h = u8[i].toString(16);
if (h.length % 2) { h = '0' + h; }
hex.push(h);
}
return hex.join('').toLowerCase();
};
Enc.numToHex = function (d) {
d = d.toString(16);
if (d.length % 2) {
return '0' + d;
}
return d;
};
}('undefined' !== typeof window ? window : module.exports));

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 6.6 KiB

View File

@ -1,84 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-261780635-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-261780635-1');
</script>
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-TG85STRS');</script>
<!-- End Google Tag Manager -->
<title>Play Minecraft Online! | Online mc</title>
<link rel="icon" href="/icon.png">
<meta name="description" content="Play Minecraft (eaglercraft) Online For Free!" />
<meta name="keywords" content="free minecraft online, eaglercraft, minecraft, onlinemc, Onlinemc, ayuncraft, Ayuncraft, mc, eaglercraftx, eaglercraft shaders, eaglercraft download,eaglercraft, eaglercraftx, minecraft, 1.8, 1.8.8, eaglercraft, eaglercraft minecraft, eaglercraft 3kh0, eaglercraft github, eaglercraft singleplayer, eaglercraft hacks, eaglercraft 1.8, eaglercraft server, eaglecraft game, eaglercraft alternative, eaglercraft alt links, eaglercraft asspixel, eaglercraft anarchy server, eaglercraft aeon, eaglercraft asspixel server ip, eaglercraft all links, eaglercraft aeon server, eaglercraft beta, eaglecraft boats, eaglecraft boats for sale, eaglecraft boats for sale bc, eaglecraft bedwars server, eaglecraft boats inc, eaglercraft beta servers, eaglercraft blocked, eaglercraft client, eaglecraft custom boats, eaglecraft campbell river, eaglercraft creative, eaglercraft commands, eaglercraft code, eaglercraft controls, eaglercraft com, eaglercraft download, eaglercraft discord, eaglercraft dupe glitch, eaglercraft download file, eaglercraft download google drive, eaglercraft dmca, eaglercraft deleted, eaglercraft down, eaglercraft embed, eaglercraft epk file download, eaglercraft end of stream, eaglecraft apk download, eaglecraft eagtek, eaglercraft exploit, eaglecraft eggs, eaglercraft epk world file download, eaglercraft file, eaglercraft file download, eaglercraft free, eaglercraft forums, eaglercraft fork, eaglercraft faq, eaglercraft fps, eaglecraft free download, eaglercraft github servers, eaglercraft google drive, eaglercraft github lax1dude, eaglercraft github download, eaglercraft github.io, eaglercraft google sites, minecraft, applet, singleplayer, replit, html5, chromebook, lax1dude, games, eaglercraft singleplayer, eagler, minecraft for free, free minecraft">
<meta property="og:title" content="Online mc" />
<meta property="og:image" content="/icon.png" />
<meta property="og:description" content="Online Minecraft" />
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.1.3/css/bootstrap.min.css">
<link href="/style.css" rel="stylesheet" />
<link href="/darkmode.css" rel="stylesheet" />
</head>
<body class="diff-bg">
<div id="loading"></div>
<div class="container container-table">
<div class="row vertical-center-row">
<div class="col-12">
</a>
<div class="d-flex justify-content-center">
</div>
<div class="col-12">
<div class="button-area d-block">
<h1 class="dark-text">404 Not Found!</h1>
<div class="splash-404">...</div>
<h3>&nbsp;</h3>
<a href="/">click here to go back to the main page!</a>
<img class="creeper ms-auto d-block" src="creeper.webp" alt=""/>
</div>
<div class="mc-footer d-flex justify-content-between">
<div class="footer-copyright text-end text-white">This website is not affiliated with Mojang.</div>
<div class="mc-dd">
</div>
</div>
</div>
</div>
</div>
</div>
<script defer src="/_vercel/insights/script.js"></script>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.1.3/js/bootstrap.bundle.min.js"></script>
<script>
window.onload = function () {
//display loader on page load
$('#loading').fadeOut();
}
setTimeout(function () {
//display loader on page load
$('#loading').fadeOut();
}, 12 * 1000);
</script>
<script src="/darkmode.js"></script>
<script src="/splash-404.js"></script>
</body>
</html>

View File

@ -1,45 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>ayuncraft</title>
<script type="text/javascript" src="jsbn/jsbn.js"></script>
<script type="text/javascript" src="jsbn/jsbn2.js"></script>
<script type="text/javascript" src="jsbn/base64.js"></script>
<script type="text/javascript" src="jsbn/prng4.js"></script>
<script type="text/javascript" src="jsbn/rng.js"></script>
<script type="text/javascript" src="jsbn/rsa.js"></script>
<script type="text/javascript" src="jsbn/rsa2.js"></script>
<script type="text/javascript" src="asn1-parser.js"></script>
<script type="text/javascript" src="music.js"></script>
<script type="text/javascript" src="classes.js?t=updateme0"></script>
<script src="/js/all.min.js"></script>
<script type="text/javascript">
//window.eag_self_proxy=true;//set to true to set the default proxy to the current url
//window.eag_proxy_list="";//set to a string of comma-separated proxy ip:port combinations for a custom proxy list
var name="PixelCraft",motd="A public 1.5.2 server",ip="pixelcraft.me";
window.addEventListener("load", function(){
document.requestPointerLock=document.requestPointerLock||function(){};
document.exitPointerLock=document.exitPointerLock||function(){};
window.minecraftOpts = [
"game_frame","assets.epk",
btoa(atob("CgAACQAHc2VydmVycwoAAAABCAAKZm9yY2VkTU9URABtb3RkaGVyZQEAC2hpZGVBZGRyZXNzAQgAAmlwAGlwaGVyZQgABG5hbWUAbmFtZWhlcmUAAA==").replace("motdhere",String.fromCharCode(motd.length)+motd).replace("namehere",String.fromCharCode(name.length)+name).replace("iphere",String.fromCharCode(ip.length)+ip))
];
(function(){
var q = window.location.search;
if(typeof q === 'string' && q.startsWith("?")) {
q = new URLSearchParams(q);
var s = q.get("server");
if(s) window.minecraftOpts.push(s);
}
})();
main();
});
</script>
</head>
<body style="margin:0px;width:100vw;height:100vh;" id="game_frame">
</body>
</html>

View File

@ -1,71 +0,0 @@
var b64map="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var b64padchar="=";
function hex2b64(h) {
var i;
var c;
var ret = "";
for(i = 0; i+3 <= h.length; i+=3) {
c = parseInt(h.substring(i,i+3),16);
ret += b64map.charAt(c >> 6) + b64map.charAt(c & 63);
}
if(i+1 == h.length) {
c = parseInt(h.substring(i,i+1),16);
ret += b64map.charAt(c << 2);
}
else if(i+2 == h.length) {
c = parseInt(h.substring(i,i+2),16);
ret += b64map.charAt(c >> 2) + b64map.charAt((c & 3) << 4);
}
while((ret.length & 3) > 0) ret += b64padchar;
return ret;
}
// convert a base64 string to hex
function b64tohex(s) {
var ret = ""
var i;
var k = 0; // b64 state, 0-3
var slop;
for(i = 0; i < s.length; ++i) {
if(s.charAt(i) == b64padchar) break;
v = b64map.indexOf(s.charAt(i));
if(v < 0) continue;
if(k == 0) {
ret += int2char(v >> 2);
slop = v & 3;
k = 1;
}
else if(k == 1) {
ret += int2char((slop << 2) | (v >> 4));
slop = v & 0xf;
k = 2;
}
else if(k == 2) {
ret += int2char(slop);
ret += int2char(v >> 2);
slop = v & 3;
k = 3;
}
else {
ret += int2char((slop << 2) | (v >> 4));
ret += int2char(v & 0xf);
k = 0;
}
}
if(k == 1)
ret += int2char(slop << 2);
return ret;
}
// convert a base64 string to a byte/number array
function b64toBA(s) {
//piggyback on b64tohex for now, optimize later
var h = b64tohex(s);
var i;
var a = new Array();
for(i = 0; 2*i < h.length; ++i) {
a[i] = parseInt(h.substring(2*i,2*i+2),16);
}
return a;
}

View File

@ -1,559 +0,0 @@
// Copyright (c) 2005 Tom Wu
// All Rights Reserved.
// See "LICENSE" for details.
// Basic JavaScript BN library - subset useful for RSA encryption.
// Bits per digit
var dbits;
// JavaScript engine analysis
var canary = 0xdeadbeefcafe;
var j_lm = ((canary&0xffffff)==0xefcafe);
// (public) Constructor
function BigInteger(a,b,c) {
if(a != null)
if("number" == typeof a) this.fromNumber(a,b,c);
else if(b == null && "string" != typeof a) this.fromString(a,256);
else this.fromString(a,b);
}
// return new, unset BigInteger
function nbi() { return new BigInteger(null); }
// am: Compute w_j += (x*this_i), propagate carries,
// c is initial carry, returns final carry.
// c < 3*dvalue, x < 2*dvalue, this_i < dvalue
// We need to select the fastest one that works in this environment.
// am1: use a single mult and divide to get the high bits,
// max digit bits should be 26 because
// max internal value = 2*dvalue^2-2*dvalue (< 2^53)
function am1(i,x,w,j,c,n) {
while(--n >= 0) {
var v = x*this[i++]+w[j]+c;
c = Math.floor(v/0x4000000);
w[j++] = v&0x3ffffff;
}
return c;
}
// am2 avoids a big mult-and-extract completely.
// Max digit bits should be <= 30 because we do bitwise ops
// on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)
function am2(i,x,w,j,c,n) {
var xl = x&0x7fff, xh = x>>15;
while(--n >= 0) {
var l = this[i]&0x7fff;
var h = this[i++]>>15;
var m = xh*l+h*xl;
l = xl*l+((m&0x7fff)<<15)+w[j]+(c&0x3fffffff);
c = (l>>>30)+(m>>>15)+xh*h+(c>>>30);
w[j++] = l&0x3fffffff;
}
return c;
}
// Alternately, set max digit bits to 28 since some
// browsers slow down when dealing with 32-bit numbers.
function am3(i,x,w,j,c,n) {
var xl = x&0x3fff, xh = x>>14;
while(--n >= 0) {
var l = this[i]&0x3fff;
var h = this[i++]>>14;
var m = xh*l+h*xl;
l = xl*l+((m&0x3fff)<<14)+w[j]+c;
c = (l>>28)+(m>>14)+xh*h;
w[j++] = l&0xfffffff;
}
return c;
}
if(j_lm && (navigator.appName == "Microsoft Internet Explorer")) {
BigInteger.prototype.am = am2;
dbits = 30;
}
else if(j_lm && (navigator.appName != "Netscape")) {
BigInteger.prototype.am = am1;
dbits = 26;
}
else { // Mozilla/Netscape seems to prefer am3
BigInteger.prototype.am = am3;
dbits = 28;
}
BigInteger.prototype.DB = dbits;
BigInteger.prototype.DM = ((1<<dbits)-1);
BigInteger.prototype.DV = (1<<dbits);
var BI_FP = 52;
BigInteger.prototype.FV = Math.pow(2,BI_FP);
BigInteger.prototype.F1 = BI_FP-dbits;
BigInteger.prototype.F2 = 2*dbits-BI_FP;
// Digit conversions
var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz";
var BI_RC = new Array();
var rr,vv;
rr = "0".charCodeAt(0);
for(vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv;
rr = "a".charCodeAt(0);
for(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;
rr = "A".charCodeAt(0);
for(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;
function int2char(n) { return BI_RM.charAt(n); }
function intAt(s,i) {
var c = BI_RC[s.charCodeAt(i)];
return (c==null)?-1:c;
}
// (protected) copy this to r
function bnpCopyTo(r) {
for(var i = this.t-1; i >= 0; --i) r[i] = this[i];
r.t = this.t;
r.s = this.s;
}
// (protected) set from integer value x, -DV <= x < DV
function bnpFromInt(x) {
this.t = 1;
this.s = (x<0)?-1:0;
if(x > 0) this[0] = x;
else if(x < -1) this[0] = x+this.DV;
else this.t = 0;
}
// return bigint initialized to value
function nbv(i) { var r = nbi(); r.fromInt(i); return r; }
// (protected) set from string and radix
function bnpFromString(s,b) {
var k;
if(b == 16) k = 4;
else if(b == 8) k = 3;
else if(b == 256) k = 8; // byte array
else if(b == 2) k = 1;
else if(b == 32) k = 5;
else if(b == 4) k = 2;
else { this.fromRadix(s,b); return; }
this.t = 0;
this.s = 0;
var i = s.length, mi = false, sh = 0;
while(--i >= 0) {
var x = (k==8)?s[i]&0xff:intAt(s,i);
if(x < 0) {
if(s.charAt(i) == "-") mi = true;
continue;
}
mi = false;
if(sh == 0)
this[this.t++] = x;
else if(sh+k > this.DB) {
this[this.t-1] |= (x&((1<<(this.DB-sh))-1))<<sh;
this[this.t++] = (x>>(this.DB-sh));
}
else
this[this.t-1] |= x<<sh;
sh += k;
if(sh >= this.DB) sh -= this.DB;
}
if(k == 8 && (s[0]&0x80) != 0) {
this.s = -1;
if(sh > 0) this[this.t-1] |= ((1<<(this.DB-sh))-1)<<sh;
}
this.clamp();
if(mi) BigInteger.ZERO.subTo(this,this);
}
// (protected) clamp off excess high words
function bnpClamp() {
var c = this.s&this.DM;
while(this.t > 0 && this[this.t-1] == c) --this.t;
}
// (public) return string representation in given radix
function bnToString(b) {
if(this.s < 0) return "-"+this.negate().toString(b);
var k;
if(b == 16) k = 4;
else if(b == 8) k = 3;
else if(b == 2) k = 1;
else if(b == 32) k = 5;
else if(b == 4) k = 2;
else return this.toRadix(b);
var km = (1<<k)-1, d, m = false, r = "", i = this.t;
var p = this.DB-(i*this.DB)%k;
if(i-- > 0) {
if(p < this.DB && (d = this[i]>>p) > 0) { m = true; r = int2char(d); }
while(i >= 0) {
if(p < k) {
d = (this[i]&((1<<p)-1))<<(k-p);
d |= this[--i]>>(p+=this.DB-k);
}
else {
d = (this[i]>>(p-=k))&km;
if(p <= 0) { p += this.DB; --i; }
}
if(d > 0) m = true;
if(m) r += int2char(d);
}
}
return m?r:"0";
}
// (public) -this
function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; }
// (public) |this|
function bnAbs() { return (this.s<0)?this.negate():this; }
// (public) return + if this > a, - if this < a, 0 if equal
function bnCompareTo(a) {
var r = this.s-a.s;
if(r != 0) return r;
var i = this.t;
r = i-a.t;
if(r != 0) return (this.s<0)?-r:r;
while(--i >= 0) if((r=this[i]-a[i]) != 0) return r;
return 0;
}
// returns bit length of the integer x
function nbits(x) {
var r = 1, t;
if((t=x>>>16) != 0) { x = t; r += 16; }
if((t=x>>8) != 0) { x = t; r += 8; }
if((t=x>>4) != 0) { x = t; r += 4; }
if((t=x>>2) != 0) { x = t; r += 2; }
if((t=x>>1) != 0) { x = t; r += 1; }
return r;
}
// (public) return the number of bits in "this"
function bnBitLength() {
if(this.t <= 0) return 0;
return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM));
}
// (protected) r = this << n*DB
function bnpDLShiftTo(n,r) {
var i;
for(i = this.t-1; i >= 0; --i) r[i+n] = this[i];
for(i = n-1; i >= 0; --i) r[i] = 0;
r.t = this.t+n;
r.s = this.s;
}
// (protected) r = this >> n*DB
function bnpDRShiftTo(n,r) {
for(var i = n; i < this.t; ++i) r[i-n] = this[i];
r.t = Math.max(this.t-n,0);
r.s = this.s;
}
// (protected) r = this << n
function bnpLShiftTo(n,r) {
var bs = n%this.DB;
var cbs = this.DB-bs;
var bm = (1<<cbs)-1;
var ds = Math.floor(n/this.DB), c = (this.s<<bs)&this.DM, i;
for(i = this.t-1; i >= 0; --i) {
r[i+ds+1] = (this[i]>>cbs)|c;
c = (this[i]&bm)<<bs;
}
for(i = ds-1; i >= 0; --i) r[i] = 0;
r[ds] = c;
r.t = this.t+ds+1;
r.s = this.s;
r.clamp();
}
// (protected) r = this >> n
function bnpRShiftTo(n,r) {
r.s = this.s;
var ds = Math.floor(n/this.DB);
if(ds >= this.t) { r.t = 0; return; }
var bs = n%this.DB;
var cbs = this.DB-bs;
var bm = (1<<bs)-1;
r[0] = this[ds]>>bs;
for(var i = ds+1; i < this.t; ++i) {
r[i-ds-1] |= (this[i]&bm)<<cbs;
r[i-ds] = this[i]>>bs;
}
if(bs > 0) r[this.t-ds-1] |= (this.s&bm)<<cbs;
r.t = this.t-ds;
r.clamp();
}
// (protected) r = this - a
function bnpSubTo(a,r) {
var i = 0, c = 0, m = Math.min(a.t,this.t);
while(i < m) {
c += this[i]-a[i];
r[i++] = c&this.DM;
c >>= this.DB;
}
if(a.t < this.t) {
c -= a.s;
while(i < this.t) {
c += this[i];
r[i++] = c&this.DM;
c >>= this.DB;
}
c += this.s;
}
else {
c += this.s;
while(i < a.t) {
c -= a[i];
r[i++] = c&this.DM;
c >>= this.DB;
}
c -= a.s;
}
r.s = (c<0)?-1:0;
if(c < -1) r[i++] = this.DV+c;
else if(c > 0) r[i++] = c;
r.t = i;
r.clamp();
}
// (protected) r = this * a, r != this,a (HAC 14.12)
// "this" should be the larger one if appropriate.
function bnpMultiplyTo(a,r) {
var x = this.abs(), y = a.abs();
var i = x.t;
r.t = i+y.t;
while(--i >= 0) r[i] = 0;
for(i = 0; i < y.t; ++i) r[i+x.t] = x.am(0,y[i],r,i,0,x.t);
r.s = 0;
r.clamp();
if(this.s != a.s) BigInteger.ZERO.subTo(r,r);
}
// (protected) r = this^2, r != this (HAC 14.16)
function bnpSquareTo(r) {
var x = this.abs();
var i = r.t = 2*x.t;
while(--i >= 0) r[i] = 0;
for(i = 0; i < x.t-1; ++i) {
var c = x.am(i,x[i],r,2*i,0,1);
if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1)) >= x.DV) {
r[i+x.t] -= x.DV;
r[i+x.t+1] = 1;
}
}
if(r.t > 0) r[r.t-1] += x.am(i,x[i],r,2*i,0,1);
r.s = 0;
r.clamp();
}
// (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)
// r != q, this != m. q or r may be null.
function bnpDivRemTo(m,q,r) {
var pm = m.abs();
if(pm.t <= 0) return;
var pt = this.abs();
if(pt.t < pm.t) {
if(q != null) q.fromInt(0);
if(r != null) this.copyTo(r);
return;
}
if(r == null) r = nbi();
var y = nbi(), ts = this.s, ms = m.s;
var nsh = this.DB-nbits(pm[pm.t-1]); // normalize modulus
if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); }
else { pm.copyTo(y); pt.copyTo(r); }
var ys = y.t;
var y0 = y[ys-1];
if(y0 == 0) return;
var yt = y0*(1<<this.F1)+((ys>1)?y[ys-2]>>this.F2:0);
var d1 = this.FV/yt, d2 = (1<<this.F1)/yt, e = 1<<this.F2;
var i = r.t, j = i-ys, t = (q==null)?nbi():q;
y.dlShiftTo(j,t);
if(r.compareTo(t) >= 0) {
r[r.t++] = 1;
r.subTo(t,r);
}
BigInteger.ONE.dlShiftTo(ys,t);
t.subTo(y,y); // "negative" y so we can replace sub with am later
while(y.t < ys) y[y.t++] = 0;
while(--j >= 0) {
// Estimate quotient digit
var qd = (r[--i]==y0)?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2);
if((r[i]+=y.am(0,qd,r,j,0,ys)) < qd) { // Try it out
y.dlShiftTo(j,t);
r.subTo(t,r);
while(r[i] < --qd) r.subTo(t,r);
}
}
if(q != null) {
r.drShiftTo(ys,q);
if(ts != ms) BigInteger.ZERO.subTo(q,q);
}
r.t = ys;
r.clamp();
if(nsh > 0) r.rShiftTo(nsh,r); // Denormalize remainder
if(ts < 0) BigInteger.ZERO.subTo(r,r);
}
// (public) this mod a
function bnMod(a) {
var r = nbi();
this.abs().divRemTo(a,null,r);
if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r);
return r;
}
// Modular reduction using "classic" algorithm
function Classic(m) { this.m = m; }
function cConvert(x) {
if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m);
else return x;
}
function cRevert(x) { return x; }
function cReduce(x) { x.divRemTo(this.m,null,x); }
function cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
function cSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
Classic.prototype.convert = cConvert;
Classic.prototype.revert = cRevert;
Classic.prototype.reduce = cReduce;
Classic.prototype.mulTo = cMulTo;
Classic.prototype.sqrTo = cSqrTo;
// (protected) return "-1/this % 2^DB"; useful for Mont. reduction
// justification:
// xy == 1 (mod m)
// xy = 1+km
// xy(2-xy) = (1+km)(1-km)
// x[y(2-xy)] = 1-k^2m^2
// x[y(2-xy)] == 1 (mod m^2)
// if y is 1/x mod m, then y(2-xy) is 1/x mod m^2
// should reduce x and y(2-xy) by m^2 at each step to keep size bounded.
// JS multiply "overflows" differently from C/C++, so care is needed here.
function bnpInvDigit() {
if(this.t < 1) return 0;
var x = this[0];
if((x&1) == 0) return 0;
var y = x&3; // y == 1/x mod 2^2
y = (y*(2-(x&0xf)*y))&0xf; // y == 1/x mod 2^4
y = (y*(2-(x&0xff)*y))&0xff; // y == 1/x mod 2^8
y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff; // y == 1/x mod 2^16
// last step - calculate inverse mod DV directly;
// assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints
y = (y*(2-x*y%this.DV))%this.DV; // y == 1/x mod 2^dbits
// we really want the negative inverse, and -DV < y < DV
return (y>0)?this.DV-y:-y;
}
// Montgomery reduction
function Montgomery(m) {
this.m = m;
this.mp = m.invDigit();
this.mpl = this.mp&0x7fff;
this.mph = this.mp>>15;
this.um = (1<<(m.DB-15))-1;
this.mt2 = 2*m.t;
}
// xR mod m
function montConvert(x) {
var r = nbi();
x.abs().dlShiftTo(this.m.t,r);
r.divRemTo(this.m,null,r);
if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r);
return r;
}
// x/R mod m
function montRevert(x) {
var r = nbi();
x.copyTo(r);
this.reduce(r);
return r;
}
// x = x/R mod m (HAC 14.32)
function montReduce(x) {
while(x.t <= this.mt2) // pad x so am has enough room later
x[x.t++] = 0;
for(var i = 0; i < this.m.t; ++i) {
// faster way of calculating u0 = x[i]*mp mod DV
var j = x[i]&0x7fff;
var u0 = (j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x.DM;
// use am to combine the multiply-shift-add into one call
j = i+this.m.t;
x[j] += this.m.am(0,u0,x,i,0,this.m.t);
// propagate carry
while(x[j] >= x.DV) { x[j] -= x.DV; x[++j]++; }
}
x.clamp();
x.drShiftTo(this.m.t,x);
if(x.compareTo(this.m) >= 0) x.subTo(this.m,x);
}
// r = "x^2/R mod m"; x != r
function montSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
// r = "xy/R mod m"; x,y != r
function montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
Montgomery.prototype.convert = montConvert;
Montgomery.prototype.revert = montRevert;
Montgomery.prototype.reduce = montReduce;
Montgomery.prototype.mulTo = montMulTo;
Montgomery.prototype.sqrTo = montSqrTo;
// (protected) true iff this is even
function bnpIsEven() { return ((this.t>0)?(this[0]&1):this.s) == 0; }
// (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79)
function bnpExp(e,z) {
if(e > 0xffffffff || e < 1) return BigInteger.ONE;
var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1;
g.copyTo(r);
while(--i >= 0) {
z.sqrTo(r,r2);
if((e&(1<<i)) > 0) z.mulTo(r2,g,r);
else { var t = r; r = r2; r2 = t; }
}
return z.revert(r);
}
// (public) this^e % m, 0 <= e < 2^32
function bnModPowInt(e,m) {
var z;
if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m);
return this.exp(e,z);
}
// protected
BigInteger.prototype.copyTo = bnpCopyTo;
BigInteger.prototype.fromInt = bnpFromInt;
BigInteger.prototype.fromString = bnpFromString;
BigInteger.prototype.clamp = bnpClamp;
BigInteger.prototype.dlShiftTo = bnpDLShiftTo;
BigInteger.prototype.drShiftTo = bnpDRShiftTo;
BigInteger.prototype.lShiftTo = bnpLShiftTo;
BigInteger.prototype.rShiftTo = bnpRShiftTo;
BigInteger.prototype.subTo = bnpSubTo;
BigInteger.prototype.multiplyTo = bnpMultiplyTo;
BigInteger.prototype.squareTo = bnpSquareTo;
BigInteger.prototype.divRemTo = bnpDivRemTo;
BigInteger.prototype.invDigit = bnpInvDigit;
BigInteger.prototype.isEven = bnpIsEven;
BigInteger.prototype.exp = bnpExp;
// public
BigInteger.prototype.toString = bnToString;
BigInteger.prototype.negate = bnNegate;
BigInteger.prototype.abs = bnAbs;
BigInteger.prototype.compareTo = bnCompareTo;
BigInteger.prototype.bitLength = bnBitLength;
BigInteger.prototype.mod = bnMod;
BigInteger.prototype.modPowInt = bnModPowInt;
// "constants"
BigInteger.ZERO = nbv(0);
BigInteger.ONE = nbv(1);

View File

@ -1,656 +0,0 @@
// Copyright (c) 2005-2009 Tom Wu
// All Rights Reserved.
// See "LICENSE" for details.
// Extended JavaScript BN functions, required for RSA private ops.
// Version 1.1: new BigInteger("0", 10) returns "proper" zero
// Version 1.2: square() API, isProbablePrime fix
// (public)
function bnClone() { var r = nbi(); this.copyTo(r); return r; }
// (public) return value as integer
function bnIntValue() {
if(this.s < 0) {
if(this.t == 1) return this[0]-this.DV;
else if(this.t == 0) return -1;
}
else if(this.t == 1) return this[0];
else if(this.t == 0) return 0;
// assumes 16 < DB < 32
return ((this[1]&((1<<(32-this.DB))-1))<<this.DB)|this[0];
}
// (public) return value as byte
function bnByteValue() { return (this.t==0)?this.s:(this[0]<<24)>>24; }
// (public) return value as short (assumes DB>=16)
function bnShortValue() { return (this.t==0)?this.s:(this[0]<<16)>>16; }
// (protected) return x s.t. r^x < DV
function bnpChunkSize(r) { return Math.floor(Math.LN2*this.DB/Math.log(r)); }
// (public) 0 if this == 0, 1 if this > 0
function bnSigNum() {
if(this.s < 0) return -1;
else if(this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0;
else return 1;
}
// (protected) convert to radix string
function bnpToRadix(b) {
if(b == null) b = 10;
if(this.signum() == 0 || b < 2 || b > 36) return "0";
var cs = this.chunkSize(b);
var a = Math.pow(b,cs);
var d = nbv(a), y = nbi(), z = nbi(), r = "";
this.divRemTo(d,y,z);
while(y.signum() > 0) {
r = (a+z.intValue()).toString(b).substr(1) + r;
y.divRemTo(d,y,z);
}
return z.intValue().toString(b) + r;
}
// (protected) convert from radix string
function bnpFromRadix(s,b) {
this.fromInt(0);
if(b == null) b = 10;
var cs = this.chunkSize(b);
var d = Math.pow(b,cs), mi = false, j = 0, w = 0;
for(var i = 0; i < s.length; ++i) {
var x = intAt(s,i);
if(x < 0) {
if(s.charAt(i) == "-" && this.signum() == 0) mi = true;
continue;
}
w = b*w+x;
if(++j >= cs) {
this.dMultiply(d);
this.dAddOffset(w,0);
j = 0;
w = 0;
}
}
if(j > 0) {
this.dMultiply(Math.pow(b,j));
this.dAddOffset(w,0);
}
if(mi) BigInteger.ZERO.subTo(this,this);
}
// (protected) alternate constructor
function bnpFromNumber(a,b,c) {
if("number" == typeof b) {
// new BigInteger(int,int,RNG)
if(a < 2) this.fromInt(1);
else {
this.fromNumber(a,c);
if(!this.testBit(a-1)) // force MSB set
this.bitwiseTo(BigInteger.ONE.shiftLeft(a-1),op_or,this);
if(this.isEven()) this.dAddOffset(1,0); // force odd
while(!this.isProbablePrime(b)) {
this.dAddOffset(2,0);
if(this.bitLength() > a) this.subTo(BigInteger.ONE.shiftLeft(a-1),this);
}
}
}
else {
// new BigInteger(int,RNG)
var x = new Array(), t = a&7;
x.length = (a>>3)+1;
b.nextBytes(x);
if(t > 0) x[0] &= ((1<<t)-1); else x[0] = 0;
this.fromString(x,256);
}
}
// (public) convert to bigendian byte array
function bnToByteArray() {
var i = this.t, r = new Array();
r[0] = this.s;
var p = this.DB-(i*this.DB)%8, d, k = 0;
if(i-- > 0) {
if(p < this.DB && (d = this[i]>>p) != (this.s&this.DM)>>p)
r[k++] = d|(this.s<<(this.DB-p));
while(i >= 0) {
if(p < 8) {
d = (this[i]&((1<<p)-1))<<(8-p);
d |= this[--i]>>(p+=this.DB-8);
}
else {
d = (this[i]>>(p-=8))&0xff;
if(p <= 0) { p += this.DB; --i; }
}
if((d&0x80) != 0) d |= -256;
if(k == 0 && (this.s&0x80) != (d&0x80)) ++k;
if(k > 0 || d != this.s) r[k++] = d;
}
}
return r;
}
function bnEquals(a) { return(this.compareTo(a)==0); }
function bnMin(a) { return(this.compareTo(a)<0)?this:a; }
function bnMax(a) { return(this.compareTo(a)>0)?this:a; }
// (protected) r = this op a (bitwise)
function bnpBitwiseTo(a,op,r) {
var i, f, m = Math.min(a.t,this.t);
for(i = 0; i < m; ++i) r[i] = op(this[i],a[i]);
if(a.t < this.t) {
f = a.s&this.DM;
for(i = m; i < this.t; ++i) r[i] = op(this[i],f);
r.t = this.t;
}
else {
f = this.s&this.DM;
for(i = m; i < a.t; ++i) r[i] = op(f,a[i]);
r.t = a.t;
}
r.s = op(this.s,a.s);
r.clamp();
}
// (public) this & a
function op_and(x,y) { return x&y; }
function bnAnd(a) { var r = nbi(); this.bitwiseTo(a,op_and,r); return r; }
// (public) this | a
function op_or(x,y) { return x|y; }
function bnOr(a) { var r = nbi(); this.bitwiseTo(a,op_or,r); return r; }
// (public) this ^ a
function op_xor(x,y) { return x^y; }
function bnXor(a) { var r = nbi(); this.bitwiseTo(a,op_xor,r); return r; }
// (public) this & ~a
function op_andnot(x,y) { return x&~y; }
function bnAndNot(a) { var r = nbi(); this.bitwiseTo(a,op_andnot,r); return r; }
// (public) ~this
function bnNot() {
var r = nbi();
for(var i = 0; i < this.t; ++i) r[i] = this.DM&~this[i];
r.t = this.t;
r.s = ~this.s;
return r;
}
// (public) this << n
function bnShiftLeft(n) {
var r = nbi();
if(n < 0) this.rShiftTo(-n,r); else this.lShiftTo(n,r);
return r;
}
// (public) this >> n
function bnShiftRight(n) {
var r = nbi();
if(n < 0) this.lShiftTo(-n,r); else this.rShiftTo(n,r);
return r;
}
// return index of lowest 1-bit in x, x < 2^31
function lbit(x) {
if(x == 0) return -1;
var r = 0;
if((x&0xffff) == 0) { x >>= 16; r += 16; }
if((x&0xff) == 0) { x >>= 8; r += 8; }
if((x&0xf) == 0) { x >>= 4; r += 4; }
if((x&3) == 0) { x >>= 2; r += 2; }
if((x&1) == 0) ++r;
return r;
}
// (public) returns index of lowest 1-bit (or -1 if none)
function bnGetLowestSetBit() {
for(var i = 0; i < this.t; ++i)
if(this[i] != 0) return i*this.DB+lbit(this[i]);
if(this.s < 0) return this.t*this.DB;
return -1;
}
// return number of 1 bits in x
function cbit(x) {
var r = 0;
while(x != 0) { x &= x-1; ++r; }
return r;
}
// (public) return number of set bits
function bnBitCount() {
var r = 0, x = this.s&this.DM;
for(var i = 0; i < this.t; ++i) r += cbit(this[i]^x);
return r;
}
// (public) true iff nth bit is set
function bnTestBit(n) {
var j = Math.floor(n/this.DB);
if(j >= this.t) return(this.s!=0);
return((this[j]&(1<<(n%this.DB)))!=0);
}
// (protected) this op (1<<n)
function bnpChangeBit(n,op) {
var r = BigInteger.ONE.shiftLeft(n);
this.bitwiseTo(r,op,r);
return r;
}
// (public) this | (1<<n)
function bnSetBit(n) { return this.changeBit(n,op_or); }
// (public) this & ~(1<<n)
function bnClearBit(n) { return this.changeBit(n,op_andnot); }
// (public) this ^ (1<<n)
function bnFlipBit(n) { return this.changeBit(n,op_xor); }
// (protected) r = this + a
function bnpAddTo(a,r) {
var i = 0, c = 0, m = Math.min(a.t,this.t);
while(i < m) {
c += this[i]+a[i];
r[i++] = c&this.DM;
c >>= this.DB;
}
if(a.t < this.t) {
c += a.s;
while(i < this.t) {
c += this[i];
r[i++] = c&this.DM;
c >>= this.DB;
}
c += this.s;
}
else {
c += this.s;
while(i < a.t) {
c += a[i];
r[i++] = c&this.DM;
c >>= this.DB;
}
c += a.s;
}
r.s = (c<0)?-1:0;
if(c > 0) r[i++] = c;
else if(c < -1) r[i++] = this.DV+c;
r.t = i;
r.clamp();
}
// (public) this + a
function bnAdd(a) { var r = nbi(); this.addTo(a,r); return r; }
// (public) this - a
function bnSubtract(a) { var r = nbi(); this.subTo(a,r); return r; }
// (public) this * a
function bnMultiply(a) { var r = nbi(); this.multiplyTo(a,r); return r; }
// (public) this^2
function bnSquare() { var r = nbi(); this.squareTo(r); return r; }
// (public) this / a
function bnDivide(a) { var r = nbi(); this.divRemTo(a,r,null); return r; }
// (public) this % a
function bnRemainder(a) { var r = nbi(); this.divRemTo(a,null,r); return r; }
// (public) [this/a,this%a]
function bnDivideAndRemainder(a) {
var q = nbi(), r = nbi();
this.divRemTo(a,q,r);
return new Array(q,r);
}
// (protected) this *= n, this >= 0, 1 < n < DV
function bnpDMultiply(n) {
this[this.t] = this.am(0,n-1,this,0,0,this.t);
++this.t;
this.clamp();
}
// (protected) this += n << w words, this >= 0
function bnpDAddOffset(n,w) {
if(n == 0) return;
while(this.t <= w) this[this.t++] = 0;
this[w] += n;
while(this[w] >= this.DV) {
this[w] -= this.DV;
if(++w >= this.t) this[this.t++] = 0;
++this[w];
}
}
// A "null" reducer
function NullExp() {}
function nNop(x) { return x; }
function nMulTo(x,y,r) { x.multiplyTo(y,r); }
function nSqrTo(x,r) { x.squareTo(r); }
NullExp.prototype.convert = nNop;
NullExp.prototype.revert = nNop;
NullExp.prototype.mulTo = nMulTo;
NullExp.prototype.sqrTo = nSqrTo;
// (public) this^e
function bnPow(e) { return this.exp(e,new NullExp()); }
// (protected) r = lower n words of "this * a", a.t <= n
// "this" should be the larger one if appropriate.
function bnpMultiplyLowerTo(a,n,r) {
var i = Math.min(this.t+a.t,n);
r.s = 0; // assumes a,this >= 0
r.t = i;
while(i > 0) r[--i] = 0;
var j;
for(j = r.t-this.t; i < j; ++i) r[i+this.t] = this.am(0,a[i],r,i,0,this.t);
for(j = Math.min(a.t,n); i < j; ++i) this.am(0,a[i],r,i,0,n-i);
r.clamp();
}
// (protected) r = "this * a" without lower n words, n > 0
// "this" should be the larger one if appropriate.
function bnpMultiplyUpperTo(a,n,r) {
--n;
var i = r.t = this.t+a.t-n;
r.s = 0; // assumes a,this >= 0
while(--i >= 0) r[i] = 0;
for(i = Math.max(n-this.t,0); i < a.t; ++i)
r[this.t+i-n] = this.am(n-i,a[i],r,0,0,this.t+i-n);
r.clamp();
r.drShiftTo(1,r);
}
// Barrett modular reduction
function Barrett(m) {
// setup Barrett
this.r2 = nbi();
this.q3 = nbi();
BigInteger.ONE.dlShiftTo(2*m.t,this.r2);
this.mu = this.r2.divide(m);
this.m = m;
}
function barrettConvert(x) {
if(x.s < 0 || x.t > 2*this.m.t) return x.mod(this.m);
else if(x.compareTo(this.m) < 0) return x;
else { var r = nbi(); x.copyTo(r); this.reduce(r); return r; }
}
function barrettRevert(x) { return x; }
// x = x mod m (HAC 14.42)
function barrettReduce(x) {
x.drShiftTo(this.m.t-1,this.r2);
if(x.t > this.m.t+1) { x.t = this.m.t+1; x.clamp(); }
this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);
this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);
while(x.compareTo(this.r2) < 0) x.dAddOffset(1,this.m.t+1);
x.subTo(this.r2,x);
while(x.compareTo(this.m) >= 0) x.subTo(this.m,x);
}
// r = x^2 mod m; x != r
function barrettSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
// r = x*y mod m; x,y != r
function barrettMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
Barrett.prototype.convert = barrettConvert;
Barrett.prototype.revert = barrettRevert;
Barrett.prototype.reduce = barrettReduce;
Barrett.prototype.mulTo = barrettMulTo;
Barrett.prototype.sqrTo = barrettSqrTo;
// (public) this^e % m (HAC 14.85)
function bnModPow(e,m) {
var i = e.bitLength(), k, r = nbv(1), z;
if(i <= 0) return r;
else if(i < 18) k = 1;
else if(i < 48) k = 3;
else if(i < 144) k = 4;
else if(i < 768) k = 5;
else k = 6;
if(i < 8)
z = new Classic(m);
else if(m.isEven())
z = new Barrett(m);
else
z = new Montgomery(m);
// precomputation
var g = new Array(), n = 3, k1 = k-1, km = (1<<k)-1;
g[1] = z.convert(this);
if(k > 1) {
var g2 = nbi();
z.sqrTo(g[1],g2);
while(n <= km) {
g[n] = nbi();
z.mulTo(g2,g[n-2],g[n]);
n += 2;
}
}
var j = e.t-1, w, is1 = true, r2 = nbi(), t;
i = nbits(e[j])-1;
while(j >= 0) {
if(i >= k1) w = (e[j]>>(i-k1))&km;
else {
w = (e[j]&((1<<(i+1))-1))<<(k1-i);
if(j > 0) w |= e[j-1]>>(this.DB+i-k1);
}
n = k;
while((w&1) == 0) { w >>= 1; --n; }
if((i -= n) < 0) { i += this.DB; --j; }
if(is1) { // ret == 1, don't bother squaring or multiplying it
g[w].copyTo(r);
is1 = false;
}
else {
while(n > 1) { z.sqrTo(r,r2); z.sqrTo(r2,r); n -= 2; }
if(n > 0) z.sqrTo(r,r2); else { t = r; r = r2; r2 = t; }
z.mulTo(r2,g[w],r);
}
while(j >= 0 && (e[j]&(1<<i)) == 0) {
z.sqrTo(r,r2); t = r; r = r2; r2 = t;
if(--i < 0) { i = this.DB-1; --j; }
}
}
return z.revert(r);
}
// (public) gcd(this,a) (HAC 14.54)
function bnGCD(a) {
var x = (this.s<0)?this.negate():this.clone();
var y = (a.s<0)?a.negate():a.clone();
if(x.compareTo(y) < 0) { var t = x; x = y; y = t; }
var i = x.getLowestSetBit(), g = y.getLowestSetBit();
if(g < 0) return x;
if(i < g) g = i;
if(g > 0) {
x.rShiftTo(g,x);
y.rShiftTo(g,y);
}
while(x.signum() > 0) {
if((i = x.getLowestSetBit()) > 0) x.rShiftTo(i,x);
if((i = y.getLowestSetBit()) > 0) y.rShiftTo(i,y);
if(x.compareTo(y) >= 0) {
x.subTo(y,x);
x.rShiftTo(1,x);
}
else {
y.subTo(x,y);
y.rShiftTo(1,y);
}
}
if(g > 0) y.lShiftTo(g,y);
return y;
}
// (protected) this % n, n < 2^26
function bnpModInt(n) {
if(n <= 0) return 0;
var d = this.DV%n, r = (this.s<0)?n-1:0;
if(this.t > 0)
if(d == 0) r = this[0]%n;
else for(var i = this.t-1; i >= 0; --i) r = (d*r+this[i])%n;
return r;
}
// (public) 1/this % m (HAC 14.61)
function bnModInverse(m) {
var ac = m.isEven();
if((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO;
var u = m.clone(), v = this.clone();
var a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1);
while(u.signum() != 0) {
while(u.isEven()) {
u.rShiftTo(1,u);
if(ac) {
if(!a.isEven() || !b.isEven()) { a.addTo(this,a); b.subTo(m,b); }
a.rShiftTo(1,a);
}
else if(!b.isEven()) b.subTo(m,b);
b.rShiftTo(1,b);
}
while(v.isEven()) {
v.rShiftTo(1,v);
if(ac) {
if(!c.isEven() || !d.isEven()) { c.addTo(this,c); d.subTo(m,d); }
c.rShiftTo(1,c);
}
else if(!d.isEven()) d.subTo(m,d);
d.rShiftTo(1,d);
}
if(u.compareTo(v) >= 0) {
u.subTo(v,u);
if(ac) a.subTo(c,a);
b.subTo(d,b);
}
else {
v.subTo(u,v);
if(ac) c.subTo(a,c);
d.subTo(b,d);
}
}
if(v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO;
if(d.compareTo(m) >= 0) return d.subtract(m);
if(d.signum() < 0) d.addTo(m,d); else return d;
if(d.signum() < 0) return d.add(m); else return d;
}
var lowprimes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997];
var lplim = (1<<26)/lowprimes[lowprimes.length-1];
// (public) test primality with certainty >= 1-.5^t
function bnIsProbablePrime(t) {
var i, x = this.abs();
if(x.t == 1 && x[0] <= lowprimes[lowprimes.length-1]) {
for(i = 0; i < lowprimes.length; ++i)
if(x[0] == lowprimes[i]) return true;
return false;
}
if(x.isEven()) return false;
i = 1;
while(i < lowprimes.length) {
var m = lowprimes[i], j = i+1;
while(j < lowprimes.length && m < lplim) m *= lowprimes[j++];
m = x.modInt(m);
while(i < j) if(m%lowprimes[i++] == 0) return false;
}
return x.millerRabin(t);
}
// (protected) true if probably prime (HAC 4.24, Miller-Rabin)
function bnpMillerRabin(t) {
var n1 = this.subtract(BigInteger.ONE);
var k = n1.getLowestSetBit();
if(k <= 0) return false;
var r = n1.shiftRight(k);
t = (t+1)>>1;
if(t > lowprimes.length) t = lowprimes.length;
var a = nbi();
for(var i = 0; i < t; ++i) {
//Pick bases at random, instead of starting at 2
a.fromInt(lowprimes[Math.floor(Math.random()*lowprimes.length)]);
var y = a.modPow(r,this);
if(y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {
var j = 1;
while(j++ < k && y.compareTo(n1) != 0) {
y = y.modPowInt(2,this);
if(y.compareTo(BigInteger.ONE) == 0) return false;
}
if(y.compareTo(n1) != 0) return false;
}
}
return true;
}
// protected
BigInteger.prototype.chunkSize = bnpChunkSize;
BigInteger.prototype.toRadix = bnpToRadix;
BigInteger.prototype.fromRadix = bnpFromRadix;
BigInteger.prototype.fromNumber = bnpFromNumber;
BigInteger.prototype.bitwiseTo = bnpBitwiseTo;
BigInteger.prototype.changeBit = bnpChangeBit;
BigInteger.prototype.addTo = bnpAddTo;
BigInteger.prototype.dMultiply = bnpDMultiply;
BigInteger.prototype.dAddOffset = bnpDAddOffset;
BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo;
BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo;
BigInteger.prototype.modInt = bnpModInt;
BigInteger.prototype.millerRabin = bnpMillerRabin;
// public
BigInteger.prototype.clone = bnClone;
BigInteger.prototype.intValue = bnIntValue;
BigInteger.prototype.byteValue = bnByteValue;
BigInteger.prototype.shortValue = bnShortValue;
BigInteger.prototype.signum = bnSigNum;
BigInteger.prototype.toByteArray = bnToByteArray;
BigInteger.prototype.equals = bnEquals;
BigInteger.prototype.min = bnMin;
BigInteger.prototype.max = bnMax;
BigInteger.prototype.and = bnAnd;
BigInteger.prototype.or = bnOr;
BigInteger.prototype.xor = bnXor;
BigInteger.prototype.andNot = bnAndNot;
BigInteger.prototype.not = bnNot;
BigInteger.prototype.shiftLeft = bnShiftLeft;
BigInteger.prototype.shiftRight = bnShiftRight;
BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit;
BigInteger.prototype.bitCount = bnBitCount;
BigInteger.prototype.testBit = bnTestBit;
BigInteger.prototype.setBit = bnSetBit;
BigInteger.prototype.clearBit = bnClearBit;
BigInteger.prototype.flipBit = bnFlipBit;
BigInteger.prototype.add = bnAdd;
BigInteger.prototype.subtract = bnSubtract;
BigInteger.prototype.multiply = bnMultiply;
BigInteger.prototype.divide = bnDivide;
BigInteger.prototype.remainder = bnRemainder;
BigInteger.prototype.divideAndRemainder = bnDivideAndRemainder;
BigInteger.prototype.modPow = bnModPow;
BigInteger.prototype.modInverse = bnModInverse;
BigInteger.prototype.pow = bnPow;
BigInteger.prototype.gcd = bnGCD;
BigInteger.prototype.isProbablePrime = bnIsProbablePrime;
// JSBN-specific extension
BigInteger.prototype.square = bnSquare;
// BigInteger interfaces not implemented in jsbn:
// BigInteger(int signum, byte[] magnitude)
// double doubleValue()
// float floatValue()
// int hashCode()
// long longValue()
// static BigInteger valueOf(long val)

View File

@ -1,45 +0,0 @@
// prng4.js - uses Arcfour as a PRNG
function Arcfour() {
this.i = 0;
this.j = 0;
this.S = new Array();
}
// Initialize arcfour context from key, an array of ints, each from [0..255]
function ARC4init(key) {
var i, j, t;
for(i = 0; i < 256; ++i)
this.S[i] = i;
j = 0;
for(i = 0; i < 256; ++i) {
j = (j + this.S[i] + key[i % key.length]) & 255;
t = this.S[i];
this.S[i] = this.S[j];
this.S[j] = t;
}
this.i = 0;
this.j = 0;
}
function ARC4next() {
var t;
this.i = (this.i + 1) & 255;
this.j = (this.j + this.S[this.i]) & 255;
t = this.S[this.i];
this.S[this.i] = this.S[this.j];
this.S[this.j] = t;
return this.S[(t + this.S[this.i]) & 255];
}
Arcfour.prototype.init = ARC4init;
Arcfour.prototype.next = ARC4next;
// Plug in your RNG constructor here
function prng_newstate() {
return new Arcfour();
}
// Pool size must be a multiple of 4 and greater than 32.
// An array of bytes the size of the pool will be passed to init()
var rng_psize = 256;

View File

@ -1,75 +0,0 @@
// Random number generator - requires a PRNG backend, e.g. prng4.js
// For best results, put code like
// <body onClick='rng_seed_time();' onKeyPress='rng_seed_time();'>
// in your main HTML document.
var rng_state;
var rng_pool;
var rng_pptr;
// Mix in a 32-bit integer into the pool
function rng_seed_int(x) {
rng_pool[rng_pptr++] ^= x & 255;
rng_pool[rng_pptr++] ^= (x >> 8) & 255;
rng_pool[rng_pptr++] ^= (x >> 16) & 255;
rng_pool[rng_pptr++] ^= (x >> 24) & 255;
if(rng_pptr >= rng_psize) rng_pptr -= rng_psize;
}
// Mix in the current time (w/milliseconds) into the pool
function rng_seed_time() {
rng_seed_int(new Date().getTime());
}
// Initialize the pool with junk if needed.
if(rng_pool == null) {
rng_pool = new Array();
rng_pptr = 0;
var t;
if(window.crypto && window.crypto.getRandomValues) {
// Use webcrypto if available
var ua = new Uint8Array(32);
window.crypto.getRandomValues(ua);
for(t = 0; t < 32; ++t)
rng_pool[rng_pptr++] = ua[t];
}
if(navigator.appName == "Netscape" && navigator.appVersion < "5" && window.crypto) {
// Extract entropy (256 bits) from NS4 RNG if available
var z = window.crypto.random(32);
for(t = 0; t < z.length; ++t)
rng_pool[rng_pptr++] = z.charCodeAt(t) & 255;
}
while(rng_pptr < rng_psize) { // extract some randomness from Math.random()
t = Math.floor(65536 * Math.random());
rng_pool[rng_pptr++] = t >>> 8;
rng_pool[rng_pptr++] = t & 255;
}
rng_pptr = 0;
rng_seed_time();
//rng_seed_int(window.screenX);
//rng_seed_int(window.screenY);
}
function rng_get_byte() {
if(rng_state == null) {
rng_seed_time();
rng_state = prng_newstate();
rng_state.init(rng_pool);
for(rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr)
rng_pool[rng_pptr] = 0;
rng_pptr = 0;
//rng_pool = null;
}
// TODO: allow reseeding after first request
return rng_state.next();
}
function rng_get_bytes(ba) {
var i;
for(i = 0; i < ba.length; ++i) ba[i] = rng_get_byte();
}
function SecureRandom() {}
SecureRandom.prototype.nextBytes = rng_get_bytes;

View File

@ -1,118 +0,0 @@
// Depends on jsbn.js and rng.js
// Version 1.1: support utf-8 encoding in pkcs1pad2
// convert a (hex) string to a bignum object
function parseBigInt(str,r) {
return new BigInteger(str,r);
}
function linebrk(s,n) {
var ret = "";
var i = 0;
while(i + n < s.length) {
ret += s.substring(i,i+n) + "\n";
i += n;
}
return ret + s.substring(i,s.length);
}
function byte2Hex(b) {
if(b < 0x10)
return "0" + b.toString(16);
else
return b.toString(16);
}
// PKCS#1 (type 2, random) pad input string s to n bytes, and return a bigint
function pkcs1pad2(s,n) {
//var ba = b64toBA(hex2b64(s));
//n -= ba.length;
if(n < s.length + 11) { // TODO: fix for utf-8
alert("Message too long for RSA");
return null;
}
var ba = new Array();
var i = (s.length / 2) - 1;
while(i >= 0 && n > 0) {
ba[--n] = parseInt(s.substring(2*i,2*i+2),16);
i--;
/*
var c = s.charCodeAt(i--);
if(c < 128) { // encode using utf-8
ba[--n] = c;
}
else if((c > 127) && (c < 2048)) {
ba[--n] = (c & 63) | 128;
ba[--n] = (c >> 6) | 192;
}
else {
ba[--n] = (c & 63) | 128;
ba[--n] = ((c >> 6) & 63) | 128;
ba[--n] = (c >> 12) | 224;
}
*/
}
ba[--n] = 0;
var rng = new SecureRandom();
var x = new Array();
while(n > 2) { // random non-zero pad
x[0] = 0;
while(x[0] == 0) rng.nextBytes(x);
ba[--n] = x[0];
}
ba[--n] = 2;
ba[--n] = 0;
return new BigInteger(ba);
}
// "empty" RSA key constructor
function RSAKey() {
this.n = null;
this.e = 0;
this.d = null;
this.p = null;
this.q = null;
this.dmp1 = null;
this.dmq1 = null;
this.coeff = null;
}
// Set the public key fields N and e from hex strings
function RSASetPublic(N,E) {
if(N != null && E != null && N.length > 0 && E.length > 0) {
this.n = parseBigInt(N,16);
this.e = parseInt(E,16);
}
else
alert("Invalid RSA public key");
}
// Perform raw public operation on "x": return x^e (mod n)
function RSADoPublic(x) {
return x.modPowInt(this.e, this.n);
}
// Return the PKCS#1 RSA encryption of "text" as an even-length hex string
function RSAEncrypt(text) {
var m = pkcs1pad2(text,(this.n.bitLength()+7)>>3);
if(m == null) return null;
var c = this.doPublic(m);
if(c == null) return null;
var h = c.toString(16);
if((h.length & 1) == 0) return h; else return "0" + h;
}
// Return the PKCS#1 RSA encryption of "text" as a Base64-encoded string
//function RSAEncryptB64(text) {
// var h = this.encrypt(text);
// if(h) return hex2b64(h); else return null;
//}
// protected
RSAKey.prototype.doPublic = RSADoPublic;
// public
RSAKey.prototype.setPublic = RSASetPublic;
RSAKey.prototype.encrypt = RSAEncrypt;
//RSAKey.prototype.encrypt_b64 = RSAEncryptB64;

View File

@ -1,135 +0,0 @@
// Depends on rsa.js and jsbn2.js
// Version 1.1: support utf-8 decoding in pkcs1unpad2
// Undo PKCS#1 (type 2, random) padding and, if valid, return the plaintext
function pkcs1unpad2(d,n) {
var b = d.toByteArray();
var i = 0;
while(i < b.length && b[i] == 0) ++i;
if(b.length-i != n-1 || b[i] != 2)
return null;
++i;
while(b[i] != 0)
if(++i >= b.length) return null;
var ret = "";
while(++i < b.length) {
ret += byte2Hex(b[i]);
/*
var c = b[i] & 255;
if(c < 128) { // utf-8 decode
ret += String.fromCharCode(c);
}
else if((c > 191) && (c < 224)) {
ret += String.fromCharCode(((c & 31) << 6) | (b[i+1] & 63));
++i;
}
else {
ret += String.fromCharCode(((c & 15) << 12) | ((b[i+1] & 63) << 6) | (b[i+2] & 63));
i += 2;
}
*/
}
return ret;
}
// Set the private key fields N, e, and d from hex strings
function RSASetPrivate(N,E,D) {
if(N != null && E != null && N.length > 0 && E.length > 0) {
this.n = parseBigInt(N,16);
this.e = parseInt(E,16);
this.d = parseBigInt(D,16);
}
else
alert("Invalid RSA private key");
}
// Set the private key fields N, e, d and CRT params from hex strings
function RSASetPrivateEx(N,E,D,P,Q,DP,DQ,C) {
if(N != null && E != null && N.length > 0 && E.length > 0) {
this.n = parseBigInt(N,16);
this.e = parseInt(E,16);
this.d = parseBigInt(D,16);
this.p = parseBigInt(P,16);
this.q = parseBigInt(Q,16);
this.dmp1 = parseBigInt(DP,16);
this.dmq1 = parseBigInt(DQ,16);
this.coeff = parseBigInt(C,16);
}
else
alert("Invalid RSA private key");
}
// Generate a new random private key B bits long, using public expt E
function RSAGenerate(B,E) {
var rng = new SecureRandom();
var qs = B>>1;
this.e = parseInt(E,16);
var ee = new BigInteger(E,16);
for(;;) {
for(;;) {
this.p = new BigInteger(B-qs,1,rng);
if(this.p.subtract(BigInteger.ONE).gcd(ee).compareTo(BigInteger.ONE) == 0 && this.p.isProbablePrime(10)) break;
}
for(;;) {
this.q = new BigInteger(qs,1,rng);
if(this.q.subtract(BigInteger.ONE).gcd(ee).compareTo(BigInteger.ONE) == 0 && this.q.isProbablePrime(10)) break;
}
if(this.p.compareTo(this.q) <= 0) {
var t = this.p;
this.p = this.q;
this.q = t;
}
var p1 = this.p.subtract(BigInteger.ONE);
var q1 = this.q.subtract(BigInteger.ONE);
var phi = p1.multiply(q1);
if(phi.gcd(ee).compareTo(BigInteger.ONE) == 0) {
this.n = this.p.multiply(this.q);
this.d = ee.modInverse(phi);
this.dmp1 = this.d.mod(p1);
this.dmq1 = this.d.mod(q1);
this.coeff = this.q.modInverse(this.p);
break;
}
}
}
// Perform raw private operation on "x": return x^d (mod n)
function RSADoPrivate(x) {
if(this.p == null || this.q == null)
return x.modPow(this.d, this.n);
// TODO: re-calculate any missing CRT params
var xp = x.mod(this.p).modPow(this.dmp1, this.p);
var xq = x.mod(this.q).modPow(this.dmq1, this.q);
while(xp.compareTo(xq) < 0)
xp = xp.add(this.p);
return xp.subtract(xq).multiply(this.coeff).mod(this.p).multiply(this.q).add(xq);
}
// Return the PKCS#1 RSA decryption of "ctext".
// "ctext" is an even-length hex string and the output is a plain string.
function RSADecrypt(ctext) {
var c = parseBigInt(ctext, 16);
var m = this.doPrivate(c);
if(m == null) return null;
return pkcs1unpad2(m, (this.n.bitLength()+7)>>3);
}
// Return the PKCS#1 RSA decryption of "ctext".
// "ctext" is a Base64-encoded string and the output is a plain string.
//function RSAB64Decrypt(ctext) {
// var h = b64tohex(ctext);
// if(h) return this.decrypt(h); else return null;
//}
// protected
RSAKey.prototype.doPrivate = RSADoPrivate;
// public
RSAKey.prototype.setPrivate = RSASetPrivate;
RSAKey.prototype.setPrivateEx = RSASetPrivateEx;
RSAKey.prototype.generate = RSAGenerate;
RSAKey.prototype.decrypt = RSADecrypt;
//RSAKey.prototype.b64_decrypt = RSAB64Decrypt;

View File

@ -1,118 +0,0 @@
var aud=new Audio();
var songs=["PkIeYKbzyZY","lv5A5EDvi-g","EyicJOlYOm4","1weATSoaRbA","qSdiecyj6-M","Ugb7GUtiyZ0","1ZFMy48q63w","10RNhMuWR2g","QkVvPD7Xk5U","RUEWIG8zoa0","V6N_rL4fh6I","n02zTn2d3rY","iBZS6ad3Tlk","Mnb2RhXL-nM","lidx_2d4YOA","ETQJZHYlc3g","kRpRoTaNni0","ACy5tHoNUoA","yLFX_7SH2tY","io-vPXE9JXY","oP6wOte3wZU","6LwLyIv3yvA","MrD05HVGVIQ","HBYS5mBHie4","5HxGK3DTUBQ","_9qUu8IeabE","r76yldhXSrw","OqJi_n3AcV4","WFFF-jMyFaQ","D8CwzhM7O6I","FD56t_0B9ig","5OcsWd949w4","jrnNzNT11aU","VLbMXG8lvjI","4aNDoqt9kEQ","_ZMfQ0Aj7h8","ZCJo8CDyqlQ","A1-fM0s1Yt0","zsLT3JqfTn0","zsGM_sGEako","YZlclPLX1Hw","uT1evbCloAw","HYOth1zARhg","loeGmoYr3s4","0qhoqXTUQlY","FtdPlfZNqVY","uIk_jGypR24","mdAb2xALVm0","5hpBvX0sUuo","RiVZCDq--m4","2k5dqgNT37g","j4Jyev7iTlE","9Ty-qFZZPZk","6EDS01Ipaow","720HcvEvEC8","YbdcrJZBtu8","nZ15jw3NOO8","Ub7y69hg4do","hFal0LKZwnM","g-QdgLe_D5M","CAmHrCvZ8tA","Mr-wV17WFZU","EdFyQOngYJs","3RyqONKuRzk","jBPqr_IsWvY","LcyCREQL7w8","dAalyaoVGfE","RM9O1HO4FLE","tUx4SfdoyUI","qFjaDnnPbA4","NrlhbIzjO04","eDBAdAzCqr4","UqVW7-q7fTA","3I-WJ6UgmOA","m8wcDiahBjg","NmzrLZajTLU","EPT3dIWBbDA","tf4dBTlz25g","FuMtDXkuxVw","PkmKM_OXNZM","KbC46oJmLh4","mRJSIYmHuNI","GmLsIivtcIM","rDBbaGCCIhk","Ig5v4jhLLWI","XZcG2esvW7I","_qpgIOzaI0E","TTJBevUIp0s","V4oiuY02dTo","agIayif-oi0","plm3DVsX7Jg","HA0Mk5BXX44","2RLq_paK3-g","h2EgfSvOuPc","HbtwR1REaFk","-tUJJXWXdXk","h-b8Xs7sNI0","xt2DGLoEmW0","eyp-YuzhTN4","xrawoRF4lN0","6xVHpgJbuc8","qsy-14oAXGc","fYSUV33ZPfw","qnSHJlRJ2cM","Ytt1_ErIV34","05TnpE0x4wI","-jcOtAuGZC4","XbuqB3uB6DI","x-42Zkcw4Cs","kXjA7eRZchc","_zceCigOTwo","Qg83cniiYEY","F7gwcgmoREg","aZFe4K1HmPE","e1Ve4Xa9ftQ","p-dVxnR-vLw","PD1a3mfmY8M","-cJFVNZC4h8","Jfs7Lo8CC0Q","zz3F5j8qWNw","CQLvggJFxuM","wf93JAZR3gU","XLQbs59Pn7E","phrpiLpaiLs","Md2xOKFTvSU","_Ci0Kgdpgsw","iBjZshhpipg","j15tAxxc38Y","LwKbsK6E-DI","9J8cD8-LHy4","7ZQlWCsHG7k","UBIsi3xWa64","GWYkh1IX4PE","YYjDFXJ6Wdo","5YDiUcc3emA","s0G4qOrDOgM","9zibDnOOj3w","rQMd3b1BF50","xeM40-FkRLI","wVOFnTrSOOA","CbziO8vuBR8","msUarvc4Sx8","GB9kBLre96M","UMwmB0ZK3yE","SLFMiEAjSoA","K5F-RLzLH6Q","ziAK1OLeeEE","--I54YPKsLU","33zGN7vENog","pTv51QwN57E","zD8TxUBkjGA","A09BhpgfGKQ","cvBQq1yJH-A","YZrIQardsz8","CUHYQ-FN3P8","GLGjqtgCKY8","bLagC2wX3Ak","fW128GHFJIE","e15qP676Zhg","B5L0AMO2HA8","oFFFzMkGNrk","1RQQLwnaw80","byUipqLQ_Hc","WtF6Z13HD_w","pkkIqT9LpDY","gMGEyl5TRa4","oxoqm05c7yA","yTP8tK2OzFQ"];
var insturl="https://invidious.zapashcanon.fr";
var loading=false;
var usealt=0;
function shuffle(array) {
for (let i = 0; i < array.length; i++) {
let j = Math.floor(Math.random() * (array.length-i)) + i;
[array[i], array[j]] = [array[j], array[i]];
}
return array;
}
function fixfard(url){
if(!url)return insturl;
return url.endsWith("/")?url.slice(0,url.length-1):url;
}
var updinsturl=async ()=>{
try{
var json=await (await fetch("https://api.invidious.io/instances.json?sort_by=health")).json();
var out=shuffle(json).map(entry => {
const healthKnown = !!entry[1].monitor
return {
name: entry[0],
details: entry[1],
health: +(healthKnown ? entry[1].monitor.dailyRatios[0].ratio : 95),
healthKnown
}
}).filter(entry => {
return entry.details.type === "https" && entry.health > 0
}).sort((a, b) => {
return b.health - a.health
});
insturl=fixfard(out.find(e=>e.details.cors).details.uri);
}catch(e){aud.onerror();}
};
var updint=setInterval(updinsturl,3600000);
updinsturl();
aud.onended=function(e){
loading=true;
window.startmusic();
};
aud.oncanplay=function(e){
aud.play();
};
aud.onplay=function(e){
aud.playing=true;
loading=false;
};
aud.onerror=function(e){
if(usealt==2){
aud=null;
return;
}
if(usealt==0){
usealt=1;
}else if(usealt==1){
loading=true;
usealt=2;
}
window.stopmusic();
//todo: make attempt 2 more times with diff urls and if those fail then stop trying
clearInterval(updint);
};
window.startmusic=function(v){
if(v!=null&&v==0)return;
loading=true;
var url="";
if(usealt==0){
songs=shuffle(songs);
url=insturl+"/latest_version?id="+songs[0]+"&itag=251";
}else if(usealt==1){
url="https://nightride.fm/stream/chillsynth.m4a";
}else if(usealt==2){
return;
}
if(v!=null)aud.volume=v;
aud.src=url;
aud.currentTime=0;
};
window.stopmusic=function(){
if(usealt==2)return;
aud.pause();
loading=false;
};
window.volmusic=function(v){
if(usealt==2)return;
if(v==0){
window.startmusic();
}else{
if(aud.playing){
aud.volume=v;
}else{
window.startmusic(v);
}
}
};
window.playingmusic=function(){
return usealt==2||aud.playing||loading;
};
navigator.mediaSession.setActionHandler('play', function() {});
navigator.mediaSession.setActionHandler('pause', function() {});
navigator.mediaSession.setActionHandler('seekbackward', function() {});
navigator.mediaSession.setActionHandler('seekforward', function() {});
navigator.mediaSession.setActionHandler('previoustrack', function() {});
navigator.mediaSession.setActionHandler('nexttrack', function() {});

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.0 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,3 +0,0 @@
<svg width="200" height="200" xmlns="http://www.w3.org/2000/svg">
<image href="data:image/webp;base64,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" height="200" width="200" />
</svg>

Before

Width:  |  Height:  |  Size: 3.1 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 39 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 67 KiB

File diff suppressed because one or more lines are too long

View File

@ -1,106 +1,178 @@
<!-- Compiled and minified CSS --> <!DOCTYPE html>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css"> <html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Minecraft</title>
<script src="/js/all.min.js"></script>
<script>
document.addEventListener("DOMContentLoaded", () => {
document.getElementById("a").innerText = `or join at wss://${location.host}/mc`;
});
</script>
<!-- Compiled and minified JavaScript --> <style>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script> @import url("https://fonts.cdnfonts.com/css/gg-sans-2");
* {
font-family: gg sans;
margin: 0;
padding: 0;
}
body {
background-color: black;
width: 100%;
height: 100%;
}
h1 {
color: white;
margin: 10px;
}
h2 {
color: white;
margin: 3px;
}
a {
color: white;
margin: 10%;
}
div#games {
width: 100%;
height: 100%;
<!-- Latest compiled and minified CSS --> align-items: center;
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> justify-content: center;
flex-wrap: wrap;
flex-direction: row;
display: flex;
}
div.game {
display: flex;
justify-content: center;
align-items: center;
background-color: #111;
width: 15%;
aspect-ratio: 1 / 1;
transition: 0.3s;
margin: 20px;
}
div.game:hover {
transform: scale(1.1);
cursor: pointer;
}
a {
text-decoration: none;
}
a:hover {
color: white;
}
img {
width: 50%;
height: 50%;
margin: 10%;
}
</style>
</head>
<body>
<center>
<strong><h1>Eaglercraft Versions & Clients</h1></strong>
<h2>Join our minecraft server at wss://ethereal.mov</h2>
<h2 id="a"></h2>
<br />
<div id="games">
<div class="game">
<a href="/semag/eg1.8/index.html"
><h2>Eaglercraft 1.8.8</h2>
<img src="https://selenite.cc/semag/offline-mc/logo.png" /></a
><br />
</div>
<div class="game">
<a href="/semag/17/index.html"
><h2>Eaglercraft Beta 1.7</h2>
<img src="https://selenite.cc/semag/offline-mc/logo.png" /></a
><br />
</div>
<div class="game">
<a href="/semag/beta/index.html"
><h2>Eaglercraft Beta 1.3</h2>
<img src="https://selenite.cc/semag/offline-mc/logo.png" /></a
><br />
</div>
<!-- Optional theme --> <div class="game">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous"> <a href="/semag/online-mc/index.html"
><h2>Resent Client</h2>
<!-- Latest compiled and minified JavaScript --> <img src="https://selenite.cc/semag/offline-mc/logo.png" /></a
<script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> ><br />
</div>
<script src="/js/all.min.js"></script> <div class="game">
<center> <a href="/semag/mega/index.html"
<strong><h1>Eaglercraft Versions & Clients</h1></strong> ><h2>MEGA Client</h2>
<style> <img src="https://selenite.cc/semag/offline-mc/logo.png" /></a
@import url('https://fonts.cdnfonts.com/css/gg-sans-2'); ><br />
* { </div>
font-family:gg sans; <div class="game">
} <a href="/semag/water/index.html"
body { ><h2>Water Client</h2>
background-color:black; <img src="https://selenite.cc/semag/offline-mc/logo.png" /></a
} ><br />
h1 { </div>
color:white; <div class="game">
} <a href="/semag/reborn/index.html"
h2 { ><h2>Eaglercraft Reborn</h2>
color:white; <img src="https://selenite.cc/semag/offline-mc/logo.png" /></a
} ><br />
a { </div>
color:white; <div class="game">
} <a href="/semag/inf/index.html"
div { ><h2>Eaglercraft Infdev</h2>
background-color:#111; <img src="https://selenite.cc/semag/offline-mc/logo.png" /></a
width:200px; ><br />
height:200px; </div>
transition:0.3s; <div class="game">
} <a href="/semag/pre/index.html"
div:hover { ><h2>Precision Client</h2>
width:250px; <img src="https://selenite.cc/semag/offline-mc/logo.png" /></a
height:250px; ><br />
} </div>
a:hover { <div class="game">
color:white; <a href="/semag/shadow/index.html"
text-decoration:none; ><h2>Shadow Client</h2>
} <img src="https://selenite.cc/semag/offline-mc/logo.png" /></a
img { ><br />
width:50%; </div>
height:50%; <div class="game">
} <a href="/semag/forge/index.html"
.adcontainer { ><h2>EaglerForge</h2>
width:0px; <img src="https://selenite.cc/semag/offline-mc/logo.png" /></a
height:0px; ><br />
} </div>
.adcontainer:hover { <div class="game">
width:0px; <a href="/semag/alpha/index.html"
height:0px; ><h2>Minecraft Alpha 1.2.6</h2>
} <img src="https://selenite.cc/semag/offline-mc/logo.png" /></a
</style> ><br />
<br> </div>
<div><a href="/semag/17/index.html"><h2>Eaglercraft Beta 1.7</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></img></a><br></div> <div class="game">
<div><a href="/semag/beta/index.html"><h2>Eaglercraft Beta 1.3</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div> <a href="/semag/indev/index.html"
<div><a href="/semag/nova/index.html"><h2>N0VA Client</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div> ><h2>Minecraft Indev</h2>
<div><a href="/semag/mega/index.html"><h2>MEGA Client</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div> <img src="https://selenite.cc/semag/offline-mc/logo.png" /></a
<div><a href="/semag/water/index.html"><h2>Water Client</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div> ><br />
<div><a href="/semag/uwu/index.html"><h2>UwU Client</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div> </div>
<div><a href="/semag/water/index.html"><h2>Water Client</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div> <div class="game">
<div><a href="/semag/demon/index.html"><h2>Demon Client</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div> <a href="/semag/030/index.html"
<div><a href="/semag/etern/index.html"><h2>Eternal Client</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div> ><h2>Minecraft 0.30</h2>
<div><a href="/semag/flame/index.html"><h2>Flame Client</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div> <img src="https://selenite.cc/semag/offline-mc/logo.png" /></a
<div><a href="/semag/nit/index.html"><h2>Nit Client</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div> ><br />
<div><a href="/semag/kero/index.html"><h2>Kerosene Client</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div> </div>
<div><a href="/semag/future/index.html"><h2>OddFuture Client</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div> <div class="game">
<div><a href="/semag/reborn/index.html"><h2>Eaglercraft Reborn</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div> <a href="/semag/125/index.html"
<div><a href="/semag/eg1.8/index.html"><h2>Eaglercraft 1.8.8</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div> ><h2>Minecraft 1.2.5</h2>
<div><a href="/semag/eg1.12.2/index.html"><h2>Eaglercraft 1.12.2</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div> <img src="https://selenite.cc/semag/offline-mc/logo.png" /></a
<div><a href="/semag/ayun/index.html"><h2>Ayuncraft 1.5.2</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div> ><br />
<div><a href="/semag/sp1/index.html"><h2>Eaglercraft 1.5.2 SP1</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div> </div>
<div><a href="/semag/codercraft/index.html"><h2>Codercraft</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div> </div>
<div><a href="/semag/nebula/index.html"><h2>Nebula Client</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
<div><a href="/semag/cmm-client/index.html"><h2>CMM Client</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
<div><a href="/semag/online-mc/index.html"><h2>Resent Client</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
<div><a href="/semag/water/index.html"><h2>Eaglercraft 1.5.2 RTM</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
<div><a href="/semag/inf/index.html"><h2>Eaglercraftt Infdev</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
<div><a href="/semag/drag/index.html"><h2>Dragon Client</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
<div><a href="/semag/pi/index.html"><h2>Pi Client</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
<div><a href="/semag/pre/index.html"><h2>Precision Client</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
<div><a href="/semag/shadow/index.html"><h2>Shadow Client</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
<div><a href="/semag/mcclassic/index.html"><h2>Minecraft 0.31</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
<div><a href="/semag/mcdemo/index.html"><h2>Minecraft Demo</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
<div><a href="/semag/forge/index.html"><h2>EaglerForge</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
<div><a href="/semag/alpha/index.html"><h2>Minecraft 1.2.6</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
<div><a href="/semag/indev/index.html"><h2>Minecraft Indev</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
<div><a href="/semag/030/index.html"><h2>Minecraft 0.30</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
<div><a href="/semag/125/index.html"><h2>Minecraft 1.2.5</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
<br>
</center>
<br />
</center>
</body>
</html>

View File

@ -1,3 +0,0 @@
<svg width="200" height="200" xmlns="http://www.w3.org/2000/svg">
<image href="data:image/webp;base64,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" height="200" width="200" />
</svg>

Before

Width:  |  Height:  |  Size: 2.6 KiB

File diff suppressed because one or more lines are too long

BIN
semag/eg1.8/assets.epk Normal file

Binary file not shown.

File diff suppressed because one or more lines are too long

BIN
semag/eg1.8/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

File diff suppressed because one or more lines are too long

1683
semag/eg1.8/lang/af_ZA.lang Normal file

File diff suppressed because it is too large Load Diff

1696
semag/eg1.8/lang/ar_SA.lang Normal file

File diff suppressed because it is too large Load Diff

1812
semag/eg1.8/lang/ast_ES.lang Normal file

File diff suppressed because it is too large Load Diff

1604
semag/eg1.8/lang/az_AZ.lang Normal file

File diff suppressed because it is too large Load Diff

2516
semag/eg1.8/lang/bg_BG.lang Normal file

File diff suppressed because it is too large Load Diff

1869
semag/eg1.8/lang/ca_ES.lang Normal file

File diff suppressed because it is too large Load Diff

2375
semag/eg1.8/lang/cs_CZ.lang Normal file

File diff suppressed because it is too large Load Diff

1573
semag/eg1.8/lang/cy_GB.lang Normal file

File diff suppressed because it is too large Load Diff

1819
semag/eg1.8/lang/da_DK.lang Normal file

File diff suppressed because it is too large Load Diff

2512
semag/eg1.8/lang/de_DE.lang Normal file

File diff suppressed because it is too large Load Diff

1709
semag/eg1.8/lang/el_GR.lang Normal file

File diff suppressed because it is too large Load Diff

1778
semag/eg1.8/lang/en_AU.lang Normal file

File diff suppressed because it is too large Load Diff

2517
semag/eg1.8/lang/en_CA.lang Normal file

File diff suppressed because it is too large Load Diff

2515
semag/eg1.8/lang/en_GB.lang Normal file

File diff suppressed because it is too large Load Diff

1929
semag/eg1.8/lang/en_PT.lang Normal file

File diff suppressed because it is too large Load Diff

1770
semag/eg1.8/lang/eo_UY.lang Normal file

File diff suppressed because it is too large Load Diff

2514
semag/eg1.8/lang/es_AR.lang Normal file

File diff suppressed because it is too large Load Diff

2515
semag/eg1.8/lang/es_ES.lang Normal file

File diff suppressed because it is too large Load Diff

2496
semag/eg1.8/lang/es_MX.lang Normal file

File diff suppressed because it is too large Load Diff

1807
semag/eg1.8/lang/es_UY.lang Normal file

File diff suppressed because it is too large Load Diff

1999
semag/eg1.8/lang/es_VE.lang Normal file

File diff suppressed because it is too large Load Diff

2124
semag/eg1.8/lang/et_EE.lang Normal file

File diff suppressed because it is too large Load Diff

1864
semag/eg1.8/lang/eu_ES.lang Normal file

File diff suppressed because it is too large Load Diff

1490
semag/eg1.8/lang/fa_IR.lang Normal file

File diff suppressed because it is too large Load Diff

2378
semag/eg1.8/lang/fi_FI.lang Normal file

File diff suppressed because it is too large Load Diff

1636
semag/eg1.8/lang/fil_PH.lang Normal file

File diff suppressed because it is too large Load Diff

2517
semag/eg1.8/lang/fr_CA.lang Normal file

File diff suppressed because it is too large Load Diff

2518
semag/eg1.8/lang/fr_FR.lang Normal file

File diff suppressed because it is too large Load Diff

1774
semag/eg1.8/lang/ga_IE.lang Normal file

File diff suppressed because it is too large Load Diff

1565
semag/eg1.8/lang/gl_ES.lang Normal file

File diff suppressed because it is too large Load Diff

1528
semag/eg1.8/lang/gv_IM.lang Normal file

File diff suppressed because it is too large Load Diff

1585
semag/eg1.8/lang/he_IL.lang Normal file

File diff suppressed because it is too large Load Diff

1412
semag/eg1.8/lang/hi_IN.lang Normal file

File diff suppressed because it is too large Load Diff

2517
semag/eg1.8/lang/hr_HR.lang Normal file

File diff suppressed because it is too large Load Diff

2515
semag/eg1.8/lang/hu_HU.lang Normal file

File diff suppressed because it is too large Load Diff

1363
semag/eg1.8/lang/hy_AM.lang Normal file

File diff suppressed because it is too large Load Diff

1836
semag/eg1.8/lang/id_ID.lang Normal file

File diff suppressed because it is too large Load Diff

1891
semag/eg1.8/lang/is_IS.lang Normal file

File diff suppressed because it is too large Load Diff

2517
semag/eg1.8/lang/it_IT.lang Normal file

File diff suppressed because it is too large Load Diff

2517
semag/eg1.8/lang/ja_JP.lang Normal file

File diff suppressed because it is too large Load Diff

2514
semag/eg1.8/lang/ka_GE.lang Normal file

File diff suppressed because it is too large Load Diff

2492
semag/eg1.8/lang/ko_KR.lang Normal file

File diff suppressed because it is too large Load Diff

1628
semag/eg1.8/lang/kw_GB.lang Normal file

File diff suppressed because it is too large Load Diff

1624
semag/eg1.8/lang/la_LA.lang Normal file

File diff suppressed because it is too large Load Diff

1910
semag/eg1.8/lang/lb_LU.lang Normal file

File diff suppressed because it is too large Load Diff

2518
semag/eg1.8/lang/lt_LT.lang Normal file

File diff suppressed because it is too large Load Diff

1754
semag/eg1.8/lang/lv_LV.lang Normal file

File diff suppressed because it is too large Load Diff

458
semag/eg1.8/lang/mi_NZ.lang Normal file
View File

@ -0,0 +1,458 @@
addServer.add=Oti
addServer.enterIp=Wāhi noho o te tūmau
addServer.enterName=Ingoa o te tūmau
addServer.hideAddress=huna wāhitau
addServer.resourcePack=Pōkai Rauemi Tūmau
addServer.resourcePack.disabled=Monokia
addServer.resourcePack.enabled=Mkakaurangi
addServer.resourcePack.prompt=Tohuāki
addServer.title=Whakatika i te tūmau
book.editTitle=Tomo Book Taitara:
book.finalizeButton=Tohu me Katia
book.finalizeWarning=Kia mōhio mai! A, no te haina koe i te pukapuka, ka kore e taea te reira.
book.signButton=Tohu
chat.cannotSend=Kāore e taea te tukatuka kōrerorero karere
chat.copy=Tārua ki Papatopenga
chat.link.confirm=Kei te hiahia koe ki te whakatuwhera i te hononga ki a koutou?
chat.link.confirmTrusted=E hiahia ana koe ki te whakatūwhera mai tēnei hono ranei te tārua te reira ki o koutou papatopenga?
chat.link.open=Whakatūwhera i roto i te Browser
chat.link.warning=Kaua e whakat hononga i tangata ke!
chat.stream.emote=(%s) * %s %s
chat.stream.text=(%s) <%s> %s
chat.type.achievement=%s kua tika roaa te paetae %s
connect.authorizing=Takiuru in...
connect.connecting=E hono ana ki te tūmau...
connect.failed=I rahua te hono ki te tūmau
controls.title=Mana
createWorld.customize.custom.presets=Tatūkē
createWorld.customize.flat.addLayer=tāpiri kahu-
createWorld.customize.flat.editLayer=apa whakatika
createWorld.customize.flat.height=teitei
createWorld.customize.flat.layer.bottom=raro %s
createWorld.customize.flat.layer.top=runga -%s
createWorld.customize.flat.removeLayer=tango kahu-
createWorld.customize.flat.tile=Apa nāunau
createWorld.customize.flat.title=Whakaraupapa Superflat
createWorld.customize.presets=Tatūkē
createWorld.customize.presets.list=Tērā rānei, konei te etahi hanga tatou i mua!
createWorld.customize.presets.select=whakamahi tatūkē
createWorld.customize.presets.share=E hiahia ana ki te faaite i to koutou tatūkē ki te tangata? Whakamahia te pouaka i raro nei!
createWorld.customize.presets.title=tīpako i te tatūkē
demo.day.1=Tenei demo ka muri e rima nga ra game, koutou pai te mahi!
demo.day.2=ra e rua
demo.day.3=ra e toru
demo.day.4=ra e wha
demo.day.5=Ko koutou ra whakamutunga tenei!
demo.day.6=kua mutu e rima nga ra. Press "F5" ki te tango he pikitia o to koutou hanga
demo.day.warning=Ko to koutou wa tata ake!
demo.demoExpired=Demo oti!
demo.help.buy=hoko Minecraft inaianei!
demo.help.fullWrapped=Tenei demo ka muri e rima nga ra (e pā ana ki 1 haora me te 40 miniti o te wā tūturu). Tirohia te whakatutukitanga mō ngā tīwhiri! Kia ngahau!
demo.help.inventory=Whakamahia %1$s ki te whakatuwhera i tō peke
demo.help.jump=Peke mā te pēhi i %1$s
demo.help.later=Tonu tākaro!
demo.help.movement=Whakamahia %1$s, %2$s, %3$s, %4$s me te kiore ki te neke a tawhio noa
demo.help.movementMouse=Titiro huri noa te whakamahi i te kiore
demo.help.movementShort=Neke mā te pēhi i %1$s, %2$s, %3$s, %4$s
demo.help.title=Aratau Demo Minecraft
demo.remainingTime=te wā e toe ana: %s
demo.reminder=Kua mutu te demo. te hoko i te kēmu ki te haere tonu tīmata ranei te ao hou!
disconnect.closed=katia hononga
disconnect.disconnected=Kua momotu i te Tūmau
disconnect.endOfStream=Mutunga o te Awa
disconnect.kicked=I whana i te kēmu
disconnect.loginFailed=I rahua te takiuru
disconnect.loginFailedInfo=I rahua te takiuru: %s
disconnect.loginFailedInfo.invalidSession=Wātū muhu (Me tīmata anō i tō kēmu)
disconnect.loginFailedInfo.serversUnavailable=Ko te motuhēhēnga he wā ki raro mo te tiaki.
disconnect.lost=hononga ngaro
disconnect.overflow=papare te waipuke
disconnect.quitting=whakamutu
disconnect.spam=Whana hoki whakamuhani
disconnect.timeout=pau i roto i
entity.Boat.name=Waka
entity.EntityHorse.name=Hoiho
entity.horse.name=Hoiho
gameMode.adventure=Aratau Adventure
gameMode.changed=Kua whakahoutia te gameplay
gameMode.creative=Aratau Creative
gameMode.hardcore=aratau tino!
gameMode.survival=Aratau Survival
generator.amplified=ô-
generator.amplified.info=pānui: anake hoki ngahau, me nui rorohiko
generator.default=taunoa
generator.flat=Superflat
generator.largeBiomes=ngā wāhi nui
gui.all=Katoa
gui.back=Hoki
gui.cancel=Whakakore
gui.done=Oti
gui.down=iho
gui.no=Kāo
gui.toMenu=hoki ki te mata taitara
gui.up=Ake
gui.yes=Āe
item.apple.name=Āporo
item.arrow.name=Pere
item.bed.name=Moenga
item.beefCooked.name=Kotinga mīti
item.boat.name=Waka
item.bone.name=Wheua
item.bow.name=Kopere
item.bread.name=Parāoa
item.bucket.name=Pēre
item.cake.name=Keke
item.carrots.name=Kāreti
item.charcoal.name=Waro
item.clock.name=Karaka
item.coal.name=Waro
item.compass.name=Kāpehu
item.cookie.name=Pihikete
item.diamond.name=Taimana
item.egg.name=Hēki
item.emerald.name=Kahurangi
item.feather.name=Piki
item.fishingRod.name=Matira
item.flint.name=Matā
item.hatchetWood.name=Tuaina ki rakau
item.ingotGold.name=Gold Ingot
item.ingotIron.name=Iron Ingot
item.leather.name=Rera
item.map.name=Mapi
item.painting.name=Waituhi
item.pickaxeWood.name=Keriwhenua ki rakau
item.saddle.name=Tera
item.seeds.name=Purapura
item.shovelWood.name=koko rakau
item.sign.name=Pouārahi
item.snowball.name=Poi huka
item.stick.name=Rākau
item.sulphur.name=Paura
item.swordIron.name=Iron Hoari
item.swordWood.name=te hoari rakau
item.wheat.name=Wīti
key.categories.inventory=Rārangi taonga
key.categories.multiplayer=Multiplayer
key.inventory=Rārangi taonga
key.jump=Peke
lanServer.otherPlayers=i ngā tautuhinga mō ētahi atu kaitākaro
lanServer.scanning=matawai mō ngā kēmu i runga i tō whatunga rohe
lanServer.start=tīmata LAN ao
lanServer.title=LAN te ao
language.code=mi_NZ
language.name=Te Reo Māori
language.region=Aotearoa
mcoServer.title=hou te ao ipurangi Minecraft
menu.convertingLevel=Faafariuraa o te ao
menu.disconnect=Wetea
menu.game=tahua kēmu
menu.generatingLevel=Auaha te ao
menu.generatingTerrain=Auaha te whenua
menu.loadingLevel=Rāwekeweke te ao
menu.multiplayer=huihui
menu.options=nga kōwhiringa...
menu.playdemo=Te tākaro Demo World
menu.quit=Putanga
menu.resetdemo=Tautuhi anō Demo World
menu.respawning=whakawhānau takarure
menu.returnToGame=Hoki ki te kēmu
menu.returnToMenu=Putanga me haere ki te rārangi tono
menu.shareToLan=tuwhera tō LAN
menu.simulating=Construction o te ao i roto i nga paraire
menu.singleplayer=anake
menu.switchingLevel=Whakawhitiwhiti nga ao
multiplayer.connect=Hono
multiplayer.downloadingStats=Te tikiake i ngā tatauranga & whakatutukitanga ...
multiplayer.downloadingTerrain=Tikiake ana i nga whenua
multiplayer.info1=Minecraft Multiplayer kore tēnei wā kei te oti, engari i reira
multiplayer.info2=whakamātautau bug wawe puta.
multiplayer.ipinfo=Tomo i te IP o te tūmau, ki te hono atu ki reira:
multiplayer.player.joined=%s uru atu te kēmu
multiplayer.player.joined.renamed=%s (e mōhiotia i mua kia rite ki %s) i uru ki te kēmu
multiplayer.player.left=%s mahue te kēmu
multiplayer.stopSleeping=waiho Bed
multiplayer.texturePrompt.line1=E taunaki ana tēnei tūmau i te whakamahi o te mōkihi rauemi ritenga.
multiplayer.texturePrompt.line2=E hiahia ana koe ki te tiki ake me te tāuta i te reira aunoa?
multiplayer.title=te tākaro multiplayer
options.advancedButton=Settings Ataata Arā...
options.advancedOpengl=OpenGL Arā
options.advancedVideoTitle=Settings Ataata Arā
options.anaglyph=3D Anaglyph
options.ao=Whakamumuratanga Whakaene
options.ao.max=Mōrahi
options.ao.min=Mōkito
options.ao.off=OFF
options.chat.color=Tae
options.chat.height.unfocused=Not Focused Height
options.chat.links=Hononga Tukutuku
options.chat.links.prompt=Tohuāki i runga i Hononga
options.chat.opacity=Opacity
options.chat.scale=Tauine
options.chat.title=Settings kōrerorero...
options.chat.visibility=kōrerorero
options.chat.visibility.full=whakaaturia
options.chat.visibility.hidden=Huna
options.chat.visibility.system=tono anake
options.chat.width=Whānuitanga
options.controls=Mana...
options.difficulty=Uaua
options.difficulty.easy=Ngāwari
options.difficulty.hard=Māro
options.difficulty.hardcore=Hardcore
options.difficulty.normal=Pūnoa
options.difficulty.peaceful=Rangimārie
options.farWarning1=Tūtohutia te tāutanga Java 64 bit te
options.farWarning2='Far' hoatu tawhiti (koe 32 bit)
options.fboEnable=Whakahohe i FBOs
options.fov=FOV
options.fov.max=Quake PROV
options.fov.min=Pūnoa
options.framerateLimit=Mokatere tāpare Max
options.framerateLimit.max=Unlimited
options.gamma=Gile
options.gamma.max=Kanapa
options.gamma.min=Moody
options.graphics=Whakairoiro
options.graphics.fancy=Fancy
options.graphics.fast=Nohopuku
options.guiScale=GUI Tauine
options.guiScale.auto=Car
options.guiScale.large=Nui
options.guiScale.normal=Pūnoa
options.guiScale.small=Iti
options.hidden=Huna
options.invertMouse=Huripoki Kiore
options.language=Reo...
options.languageWarning=E kore ai translations reo e tōtika 100%%
options.multiplayer.title=Settings Multiplayer...
options.music=Puoro
options.off=OFF
options.on=ON
options.particles=matūriki
options.particles.all=Katoa
options.particles.decreased=Heke
options.particles.minimal=Iti
options.performanceButton=Settings Mahinga Ataata...
options.performanceVideoTitle=Settings Mahinga Ataata
options.postButton=Settings Post-Processing...
options.postProcessEnable=Whakahohetia te Post-Processing
options.postVideoTitle=Settings Post-Processing
options.qualityButton=Settings Kounga Ataata...
options.qualityVideoTitle=Settings Kounga Ataata
options.renderClouds=Kapua
options.renderDistance=Hoatu tawhiti
options.renderDistance.far=Tawhiti
options.renderDistance.normal=Pūnoa
options.renderDistance.short=Poto
options.renderDistance.tiny=Iti
options.saturation=waiwai
options.sensitivity=Rauangi
options.sensitivity.max=HYPERSPEED!!!
options.sensitivity.min=*Oha*
options.snooper=Tukua popore
options.sound=tangi
options.sounds=Music & Oro...
options.sounds.title=Kōwhiringa Music & Sound
options.stream=Pāohotanga Settings...
options.stream.changes=Me tīmata anō pea koutou awa koe mo ki enei rerekētanga tango i te wahi.
options.stream.compression.high=Tiketike
options.stream.compression.low=Iti
options.stream.compression.medium=Waenga
options.stream.mic_toggle.talk=Kōrero
options.title=kōwhiringa
options.video=Settings Video...
options.videoTitle=Settings Video
options.viewBobbing=Tirohia te whāwhā
options.visible=whakaaturia
record.nowPlaying=tākaro Na: %s
selectServer.add=Tāpiri Tūmau
selectServer.defaultName=Tūmau Minecraft
selectServer.delete=Porowhiu
selectServer.deleteButton=Porowhiu
selectServer.deleteQuestion=Whakaū i te tango o tenei tūmau?
selectServer.deleteWarning=Ngaro ka ake ake! (Te wa i!)
selectServer.direct=Whakarerekē
selectServer.edit=Whakarerekē
selectServer.empty=tahanga
selectServer.hiddenAddress=(Huna)
selectServer.refresh=Update
selectServer.select=amui atu tūmau
selectServer.title=te tīpako i te tūmau
selectWorld.allowCommands=Tuku i te whakahau:
selectWorld.allowCommands.info=Kainga, herehere, i ētahi atu momo ao... /gamemode, /xp
selectWorld.bonusItems=utu uma:
selectWorld.cheats=Tinihanga
selectWorld.conversion=Me tahuri!
selectWorld.create=Waihanga he world new
selectWorld.createDemo=Te tākaro New Demo World
selectWorld.customizeType=Whakatauritea
selectWorld.delete=Porowhiu
selectWorld.deleteButton=Porowhiu
selectWorld.deleteQuestion=E hiahia ana koe ki te muku i tēnei ao ki a koutou?
selectWorld.deleteWarning=ka ngaro ake ake! (He roa te wā!)
selectWorld.empty=tahanga
selectWorld.enterName=ingoa ao
selectWorld.enterSeed=uri mo te kaihanga ao
selectWorld.gameMode=Aratau Game
selectWorld.gameMode.adventure=Haere māia
selectWorld.gameMode.adventure.line1=Rite aratau ora, engari e kore e taea e poraka
selectWorld.gameMode.adventure.line2=tāpiri, te tango ranei,
selectWorld.gameMode.creative=auaha
selectWorld.gameMode.creative.line1=rauemi mure ore, e rere ana, me te kore utu
selectWorld.gameMode.creative.line2=Top -%s
selectWorld.gameMode.hardcore=tino
selectWorld.gameMode.hardcore.line1=Rite aratau ora, kua kiia i faingataa
selectWorld.gameMode.hardcore.line2=uaua, a kotahi te ora anake
selectWorld.gameMode.survival=Noho ora
selectWorld.gameMode.survival.line1=Rapu mō te rauemi, ke fokotuutuu, taonga
selectWorld.gameMode.survival.line2=taumata, te hauora, me te matekai
selectWorld.hardcoreMode=tino:
selectWorld.hardcoreMode.info=mukua ao te ki runga ki te mate
selectWorld.mapFeatures=Whakaputa hanganga:
selectWorld.mapFeatures.info=Kainga, herehere, i ētahi atu momo ao
selectWorld.mapType=Momo o te ao:
selectWorld.mapType.normal=Noa
selectWorld.moreWorldOptions=Ētahi atu Kōwhiringa Ao ...
selectWorld.newWorld=ao hou
selectWorld.newWorld.copyOf=kape o te %s
selectWorld.recreate=Waihangatia tētahi atu wā
selectWorld.rename=Huria te ingoa
selectWorld.renameButton=whakaingoa
selectWorld.renameTitle=whakaingoa World
selectWorld.resultFolder=ka ora i roto i:
selectWorld.seedInfo=waiho kia pātea tonu hoki te uri tupurangi
selectWorld.select=Te tākaro i te ao kua tīpakohia
selectWorld.title=Tīpakohia te ao
selectWorld.world=Ao
soundCategory.ambient=Ambient / Taiao
soundCategory.block=poraka
soundCategory.hostile=Vaerua kaikiri
soundCategory.master=rōrahi te Kaiwhakaako
soundCategory.music=Puoro
soundCategory.neutral=Vaerua hoa
soundCategory.player=kaitākaro
soundCategory.record=Poraka rekoata / Tuhipoka
soundCategory.weather=Weather
tile.activatorRail.name=Activator Rail
tile.anvil.name=Paepae maitai
tile.bedrock.name=maka tefito
tile.blockCoal.name=Poraka o Coal
tile.blockDiamond.name=Poraka o Diamond
tile.bookshelf.name=PukaPuka
tile.brick.name=Pereki
tile.button.name=Pātene
tile.cake.name=Keke
tile.carrots.name=Kāreti
tile.chest.name=pouaka
tile.chestTrap.name=aaka mau
tile.cloth.name=Wūru
tile.cocoa.name=Koukou
tile.crops.name=Kai
tile.deadbush.name=mate Bush
tile.detectorRail.name=pūkimi Rail
tile.dirt.default.name=Oneone
tile.dirt.podzol.name=Onemata
tile.doorIron.name=Iron Door
tile.doorWood.name=Door Rakau
tile.doublePlant.fern.name=Ponga
tile.doublePlant.rose.name=Rōha
tile.doublePlant.sunflower.name=Putiputi rā
tile.farmland.name=Papanga pāmu
tile.fence.name=Taiepa
tile.fire.name=Ahi
tile.flower1.dandelion.name=Tawao
tile.flower2.allium.name=Allium
tile.flower2.houstonia.name=Azure Bluet
tile.flower2.tulipRed.name=Whero Tulip
tile.furnace.name=Oumu
tile.glass.name=Karaehe
tile.goldenRail.name=Rail Powered
tile.grass.name=tarutaru Poraka
tile.gravel.name=Tuakirikiri
tile.hayBlock.name=hay wuru
tile.ice.name=Haupapa
tile.ladder.name=Arawhata
tile.lava.name=Tahepuia
tile.leaves.acacia.name=hitimi Rau
tile.leaves.big_oak.name=Dark Oak Rau
tile.leaves.birch.name=birch Rau
tile.leaves.jungle.name=uru raau no Rau
tile.leaves.name=Ngā rau
tile.leaves.oak.name=Rau oki
tile.leaves.spruce.name=Rau te puruhi
tile.lever.name=Ara
tile.log.acacia.name=hitimi Wood
tile.log.big_oak.name=Dark Oak Wood
tile.log.birch.name=Birch Wood
tile.log.jungle.name=uru raau no Wood
tile.log.name=Rākau
tile.log.oak.name=Rākau oke
tile.log.spruce.name=te puruhi mo Wood
tile.mobSpawner.name=Monster Spawner
tile.obsidian.name=Matā
tile.oreCoal.name=Coal Ore
tile.oreDiamond.name=Diamond Ore
tile.oreGold.name=Gold Ore
tile.oreIron.name=Iron Ore
tile.potatoes.name=Rīwai
tile.pumpkin.name=Paukena
tile.rail.name=Ara tereina
tile.redstoneDust.name=Redstone puehu
tile.sand.default.name=Kirikiri
tile.sand.red.name=Kirikiri whero
tile.sandStone.chiseled.name=whaoa hōanga
tile.sandStone.default.name=Hōanga
tile.sandStone.name=Hōanga
tile.sandStone.smooth.name=hōanga Whakaene
tile.sapling.acacia.name=hitimi Māhuri
tile.sapling.birch.name=Birch Māhuri
tile.sapling.jungle.name=uru raau no Māhuri
tile.sapling.oak.name=Oak Māhuri
tile.sapling.spruce.name=te puruhi mo Māhuri
tile.sign.name=Tohu
tile.snow.name=Huka
tile.stainedGlass.black.name=Black ōpure koata
tile.stainedGlass.blue.name=Blue ōpure koata
tile.stainedGlass.brown.name=Brown ōpure koata
tile.stainedGlass.cyan.name=Urikiko ōpure koata
tile.stainedGlass.gray.name=Gray ōpure koata
tile.stainedGlass.green.name=Green ōpure koata
tile.stainedGlass.name=ōpure koata
tile.stainedGlass.pink.name=Pink ōpure koata
tile.stainedGlass.purple.name=Papura ōpure koata
tile.stainedGlass.red.name=Whero ōpure koata
tile.stainedGlass.silver.name=Light Gray ōpure koata
tile.stairsSandStone.name=hōanga Arawhata
tile.stairsStone.name=Stone Arawhata
tile.stairsWood.name=Oak Wood Arawhata
tile.stairsWoodAcacia.name=Hitimi Wood Arawhata
tile.stairsWoodBirch.name=Birch Wood Arawhata
tile.stairsWoodDarkOak.name=Dark Oak Wood Arawhata
tile.stairsWoodJungle.name=Uru raau no Wood Arawhata
tile.stairsWoodSpruce.name=Te puruhi mo Wood Arawhata
tile.stoneMoss.name=Moss Stone
tile.stonebrick.name=Cobblestone
tile.tallgrass.fern.name=Ponga
tile.tallgrass.grass.name=Karaihe
tile.tallgrass.name=Karaihe
tile.tallgrass.shrub.name=Riki
tile.thinGlass.name=Pihanga
tile.tnt.name=TNT
tile.torch.name=Rama
tile.water.name=Wai
tile.weightedPlate_heavy.name=Plate Pressure tautaha (Taumaha)
tile.weightedPlate_light.name=Plate Pressure tautaha (Light)
tile.wood.acacia.name=Hitimi Wood papa
tile.wood.big_oak.name=Dark Oak Wood papa
tile.wood.birch.name=Birch Wood papa
tile.wood.jungle.name=Uru raau no Wood papa
tile.wood.name=papa rākau
tile.wood.oak.name=Oak papa rakau
tile.wood.spruce.name=Te puruhi mo Wood papa
tile.woodSlab.acacia.name=Hitimi Wood papa
tile.woodSlab.big_oak.name=Dark Oak Wood papa
tile.woodSlab.birch.name=Birch Wood Papa
tile.woodSlab.jungle.name=Uru raau no Wood papa
tile.woodSlab.oak.name=Oak Wood Papa
tile.woodSlab.spruce.name=Te puruhi mo Wood papa
tile.workbench.name=Papamahi

1534
semag/eg1.8/lang/ms_MY.lang Normal file

File diff suppressed because it is too large Load Diff

1909
semag/eg1.8/lang/mt_MT.lang Normal file

File diff suppressed because it is too large Load Diff

1739
semag/eg1.8/lang/nds_DE.lang Normal file

File diff suppressed because it is too large Load Diff

2516
semag/eg1.8/lang/nl_NL.lang Normal file

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More