diff --git a/dist/BlueMarble.user.js b/dist/BlueMarble.user.js
index 6e494c0..cf775a2 100644
--- a/dist/BlueMarble.user.js
+++ b/dist/BlueMarble.user.js
@@ -1,7 +1,7 @@
// ==UserScript==
// @name Blue Marble
// @namespace https://github.com/SwingTheVine/
-// @version 0.23.0
+// @version 0.23.14
// @description A userscript to automate and/or enhance the user experience on Wplace.live. Make sure to comply with the site's Terms of Service, and rules! This script is not affiliated with Wplace.live in any way, use at your own risk. This script is not affiliated with TamperMonkey. The author of this userscript is not responsible for any damages, issues, loss of data, or punishment that may occur as a result of using this script. This script is provided "as is" under the MPL-2.0 license. The "Blue Marble" icon is licensed under CC0 1.0 Universal (CC0 1.0) Public Domain Dedication. The image is owned by NASA.
// @author SwingTheVine
// @license MPL-2.0
@@ -20,4 +20,4 @@
// Wplace --> https://wplace.live
// License --> https://www.mozilla.org/en-US/MPL/2.0/
-(()=>{var d=class{constructor(){}create(){let e=document.createElement("div");e.id="bm-overlay",e.style.top="10px",e.style.right="75px";let o=document.createElement("div");o.id="bm-contain-header";let t=document.createElement("div");t.id="bm-bar-drag",o.appendChild(t);let c=document.createElement("img");c.src="https://raw.githubusercontent.com/SwingTheVine/Wplace-BlueMarble/main/src/assets/Favicon.png",c.alt="Blue Marble Icon",o.appendChild(c);let s=document.createElement("h1");s.textContent="Blue Marble",o.appendChild(s);let n=document.createElement("div");n.id="bm-contain-userinfo";let l=document.createElement("p");l.id="bm-user-name",l.textContent="Username:",n.appendChild(l);let u=document.createElement("p");u.id="bm-user-droplets",u.textContent="Droplets:",n.appendChild(u);let m=document.createElement("p");m.id="bm-user-nextlevel",m.textContent="Next level in...",n.appendChild(m),e.appendChild(o),e.appendChild(document.createElement("hr")),e.appendChild(n),document.body.appendChild(e),this.handleDrag(e,t)}handleDrag(e,o){let t=!1,c,s=0;o.addEventListener("mousedown",function(n){t=!0,c=n.clientX-e.getBoundingClientRect().left,s=n.clientY-e.getBoundingClientRect().top,document.body.style.userSelect="none",e.style.right="",o.classList.add("dragging")}),o.addEventListener("touchstart",function(n){t=!0;let l=n?.touches?.[0];l&&(c=l.clientX-e.getBoundingClientRect().left,s=l.clientY-e.getBoundingClientRect().top,document.body.style.userSelect="none",e.style.right="",o.classList.add("dragging"))},{passive:!1}),document.addEventListener("mousemove",function(n){t&&(e.style.left=n.clientX-c+"px",e.style.top=n.clientY-s+"px")}),document.addEventListener("touchmove",function(n){if(t){let l=n?.touches?.[0];if(!l)return;e.style.left=l.clientX-c+"px",e.style.top=l.clientY-s+"px",n.preventDefault()}},{passive:!1}),document.addEventListener("mouseup",function(){t=!1,document.body.style.userSelect="",o.classList.remove("dragging")}),document.addEventListener("touchend",function(){t=!1,document.body.style.userSelect="",o.classList.remove("dragging")}),document.addEventListener("touchcancel",function(){t=!1,document.body.style.userSelect="",o.classList.remove("dragging")})}};var r=class{constructor(){this.disableAll=!1}spontaneousResponseListener(e){window.addEventListener("message",o=>{let t=o.data;if(t&&t.source==="blue-marble")switch(t.endpoint){case"me":let c=document.getElementById("bm-user-name"),s=document.getElementById("bm-user-droplets"),n=document.getElementById("bm-user-nextlevel");if(c&&(c.textContent=`Username: ${t.jsonData?.name}`),s&&(s.textContent=`Droplets: ${new Intl.NumberFormat().format(t.jsonData?.droplets)}`),n){let l=Math.ceil(Math.pow(Math.floor(t.jsonData?.level)*Math.pow(30,.65),1.5384615384615383)-t.jsonData?.pixelsPainted);n.textContent=`Next level in ~${new Intl.NumberFormat().format(l)} pixel${l==1?"":"s"}`}break;case"robots":this.disableAll=t.jsonData?.userscript?.toString().toLowerCase()=="false"}})}};function h(a){let e=document.createElement("script");e.textContent=`(${a})();`,document.documentElement.appendChild(e),e.remove()}h(()=>{let a=window.fetch;window.fetch=async function(...e){let o=await a.apply(this,e),t=o.clone();if((t.headers.get("content-type")||"").includes("application/json")){let s=(e[0]instanceof Request?e[0]?.url:e[0])||"ignore";s=s.split("/").filter(Boolean).pop()||"ignore",console.log(`Sending JSON message about endpoint "${s}"`),t.json().then(n=>{window.postMessage({source:"blue-marble",endpoint:s,jsonData:n},"*")}).catch(n=>{console.error("BM - Failed to parse JSON:",n)})}return o}});var f=GM_getResourceText("CSS-Overlay");GM_addStyle(f);var i=document.createElement("link");i.href="https://fonts.googleapis.com/css2?family=Roboto+Mono:ital,wght@0,100..700;1,100..700&display=swap";i.rel="preload";i.as="style";i.onload="this.onload=null;this.rel='stylesheet'";document.head.appendChild(i);var p=new d;p.create();var g=new r;g.spontaneousResponseListener(p);console.log("Blue Marble userscript has loaded!");})();
+(()=>{var d=class{constructor(e,o){this.name=e,this.version=o}create(){let e=document.createElement("div");e.id="bm-overlay",e.style.top="10px",e.style.right="75px";let o=document.createElement("div");o.id="bm-contain-header";let t=document.createElement("div");t.id="bm-bar-drag",o.appendChild(t);let i=document.createElement("img");i.src="https://raw.githubusercontent.com/SwingTheVine/Wplace-BlueMarble/main/src/assets/Favicon.png",i.alt="Blue Marble Icon",o.appendChild(i);let s=document.createElement("h1");s.textContent=this.name,o.appendChild(s);let n=document.createElement("div");n.id="bm-contain-userinfo";let c=document.createElement("p");c.id="bm-user-name",c.textContent="Username:",n.appendChild(c);let u=document.createElement("p");u.id="bm-user-droplets",u.textContent="Droplets:",n.appendChild(u);let m=document.createElement("p");m.id="bm-user-nextlevel",m.textContent="Next level in...",n.appendChild(m),e.appendChild(o),e.appendChild(document.createElement("hr")),e.appendChild(n),document.body.appendChild(e),this.handleDrag(e,t)}handleDrag(e,o){let t=!1,i,s=0;o.addEventListener("mousedown",function(n){t=!0,i=n.clientX-e.getBoundingClientRect().left,s=n.clientY-e.getBoundingClientRect().top,document.body.style.userSelect="none",e.style.right="",o.classList.add("dragging")}),o.addEventListener("touchstart",function(n){t=!0;let c=n?.touches?.[0];c&&(i=c.clientX-e.getBoundingClientRect().left,s=c.clientY-e.getBoundingClientRect().top,document.body.style.userSelect="none",e.style.right="",o.classList.add("dragging"))},{passive:!1}),document.addEventListener("mousemove",function(n){t&&(e.style.left=n.clientX-i+"px",e.style.top=n.clientY-s+"px")}),document.addEventListener("touchmove",function(n){if(t){let c=n?.touches?.[0];if(!c)return;e.style.left=c.clientX-i+"px",e.style.top=c.clientY-s+"px",n.preventDefault()}},{passive:!1}),document.addEventListener("mouseup",function(){t=!1,document.body.style.userSelect="",o.classList.remove("dragging")}),document.addEventListener("touchend",function(){t=!1,document.body.style.userSelect="",o.classList.remove("dragging")}),document.addEventListener("touchcancel",function(){t=!1,document.body.style.userSelect="",o.classList.remove("dragging")})}};var r=class{constructor(){this.disableAll=!1}spontaneousResponseListener(e){window.addEventListener("message",o=>{let t=o.data;if(t&&t.source==="blue-marble")switch(t.endpoint){case"me":let i=document.getElementById("bm-user-name"),s=document.getElementById("bm-user-droplets"),n=document.getElementById("bm-user-nextlevel");if(i&&(i.textContent=`Username: ${t.jsonData?.name}`),s&&(s.textContent=`Droplets: ${new Intl.NumberFormat().format(t.jsonData?.droplets)}`),n){let c=Math.ceil(Math.pow(Math.floor(t.jsonData?.level)*Math.pow(30,.65),1.5384615384615383)-t.jsonData?.pixelsPainted);n.textContent=`Next level in ~${new Intl.NumberFormat().format(c)} pixel${c==1?"":"s"}`}break;case"robots":this.disableAll=t.jsonData?.userscript?.toString().toLowerCase()=="false"}})}};var p=GM_info.script.name.toString(),h=GM_info.script.version.toString();function g(l){let e=document.createElement("script");e.textContent=`(${l})();`,document.documentElement.appendChild(e),e.remove()}g(()=>{let l=window.fetch;window.fetch=async function(...e){let o=await l.apply(this,e),t=o.clone();if((t.headers.get("content-type")||"").includes("application/json")){let s=(e[0]instanceof Request?e[0]?.url:e[0])||"ignore";s=s.split("/").filter(Boolean).pop()||"ignore",console.log(`Sending JSON message about endpoint "${s}"`),t.json().then(n=>{window.postMessage({source:"blue-marble",endpoint:s,jsonData:n},"*")}).catch(n=>{console.error("BM - Failed to parse JSON:",n)})}return o}});var y=GM_getResourceText("CSS-Overlay");GM_addStyle(y);var a=document.createElement("link");a.href="https://fonts.googleapis.com/css2?family=Roboto+Mono:ital,wght@0,100..700;1,100..700&display=swap";a.rel="preload";a.as="style";a.onload="this.onload=null;this.rel='stylesheet'";document.head.appendChild(a);var f=new d(p,h);f.create();var b=new r;b.spontaneousResponseListener(f);console.log(`${p} (${h}) userscript has loaded!`);})();
diff --git a/docs/README.md b/docs/README.md
index 28f5c43..8113bde 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -23,7 +23,7 @@
-
+
diff --git a/package-lock.json b/package-lock.json
index 75d64aa..3f1ccc0 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -7,7 +7,7 @@
"devDependencies": {
"esbuild": "^0.25.0"
},
- "version": "0.20.5"
+ "version": "0.23.14"
},
"node_modules/@esbuild/aix-ppc64": {
"version": "0.25.8",
@@ -467,5 +467,5 @@
}
}
},
- "version": "0.20.5"
+ "version": "0.23.14"
}
diff --git a/package.json b/package.json
index 14e0614..022e6fa 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "wplace-bluemarble",
- "version": "0.23.0",
+ "version": "0.23.14",
"type": "module",
"scripts": {
"build": "node build/build.js",
diff --git a/src/BlueMarble.meta.js b/src/BlueMarble.meta.js
index 9f22494..f1bcb4e 100644
--- a/src/BlueMarble.meta.js
+++ b/src/BlueMarble.meta.js
@@ -1,7 +1,7 @@
// ==UserScript==
// @name Blue Marble
// @namespace https://github.com/SwingTheVine/
-// @version 0.23.0
+// @version 0.23.14
// @description A userscript to automate and/or enhance the user experience on Wplace.live. Make sure to comply with the site's Terms of Service, and rules! This script is not affiliated with Wplace.live in any way, use at your own risk. This script is not affiliated with TamperMonkey. The author of this userscript is not responsible for any damages, issues, loss of data, or punishment that may occur as a result of using this script. This script is provided "as is" under the MPL-2.0 license. The "Blue Marble" icon is licensed under CC0 1.0 Universal (CC0 1.0) Public Domain Dedication. The image is owned by NASA.
// @author SwingTheVine
// @license MPL-2.0
diff --git a/src/main.js b/src/main.js
index 91a49b7..fcc7413 100644
--- a/src/main.js
+++ b/src/main.js
@@ -1,6 +1,9 @@
import { Overlay } from './overlay.js';
import { ApiHandler } from './apiHandler.js';
+const name = GM_info.script.name.toString();
+const version = GM_info.script.version.toString();
+
/** Injects code into the client
* This code will execute outside of TamperMonkey's sandbox
* @param {*} fn - The code to execute
@@ -68,10 +71,10 @@ stylesheetLink.as = 'style';
stylesheetLink.onload = "this.onload=null;this.rel='stylesheet'";
document.head.appendChild(stylesheetLink);
-const overlay = new Overlay(); // Constructs a new Overlay object
+const overlay = new Overlay(name, version); // Constructs a new Overlay object
overlay.create(); // Deploys the overlay to the page
const apiHandler = new ApiHandler(); // Constructs a new ApiHandler object
apiHandler.spontaneousResponseListener(overlay); // Reads spontaneous fetch responces
-console.log("Blue Marble userscript has loaded!");
\ No newline at end of file
+console.log(`${name} (${version}) userscript has loaded!`);
\ No newline at end of file
diff --git a/src/overlay.js b/src/overlay.js
index 121141b..e162675 100644
--- a/src/overlay.js
+++ b/src/overlay.js
@@ -5,10 +5,14 @@
export class Overlay {
/** Constructor for the Overlay class.
+ * @param {string} name - The name of the userscript
+ * @param {string} version - The version of the userscript
* @since 0.0.2
* @see {@link Overlay}
*/
- constructor() {
+ constructor(name, version) {
+ this.name = name;
+ this.version = version;
}
/** Creates and deploys the overlay element
@@ -34,7 +38,7 @@ export class Overlay {
containerOverlayHeader.appendChild(barHeaderImage); // Adds the header image to the overlay header container
const barHeader = document.createElement('h1'); // Header bar for the overlay
- barHeader.textContent = 'Blue Marble';
+ barHeader.textContent = this.name;
containerOverlayHeader.appendChild(barHeader); // Adds the header to the overlay header container
const containerUserInfo = document.createElement('div'); // User info container