// ==UserScript== // @name Darkmode // @namespace http://tampermonkey.net/ // @version prerelease-3.0 // @description Adds a button to enable/disable darkmode // @author guildedbird // @match https://pixelplace.io/* // @grant GM_addStyle // @license MIT // @downloadURL https://update.greasyfork.cloud/scripts/530651/Darkmode.user.js // @updateURL https://update.greasyfork.cloud/scripts/530651/Darkmode.meta.js // ==/UserScript== (function() { 'use strict'; const disableOceanColor = false; const darkOceanColor = "rgba(20, 20, 20, 1)"; const defaultOceanColor = "rgba(204, 204, 204, 0)"; const style = "cover"; function updateDarkMode() { const isDarkModeEnabled = localStorage.getItem('darkModeEnabled') === 'true' ? true : false; if (isDarkModeEnabled) { darkModeElement.classList.add('selected'); document.body.classList.add('darkmode'); if (!disableOceanColor) { changeOceanColor(darkOceanColor); } } else { darkModeElement.classList.remove('selected'); document.body.classList.remove('darkmode'); if (!disableOceanColor) { changeOceanColor(defaultOceanColor); } } } function changeOceanColor(color) { if (disableOceanColor) return; const painting = document.querySelector('#painting'); if (painting) { painting.style.backgroundColor = color; } } function darkModeOcean() { const canvas = document.getElementById("canvas"); if (!canvas) return; const ctx = canvas.getContext("2d"); const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height); const data = imageData.data; for (let i = 0; i < data.length; i += 4) { if (data[i] === 204 && data[i + 1] === 204 && data[i + 2] === 204) { data[i + 3] = 0; } } ctx.putImageData(imageData, 0, 0); } function canvasWait() { if (!document.getElementById("canvas")) { setTimeout(canvasWait, 100); } else { darkModeOcean(); } } canvasWait(); const css = ` #painting { position: absolute; display: flex; align-items: center; justify-content: center; top: 0; left: 0; cursor: move; background-size: ${style}; background-position: center; background-repeat: no-repeat; margin: 0; height: 100vh; overflow: hidden; } .darkmode #chat .messages .row a:hover[style="color:#000000"] { text-shadow: 1px 1px 1px #00000025; filter: brightness(0) saturate(100%) invert(97%) sepia(85%) saturate(12%) hue-rotate(184deg) brightness(103%) contrast(103%); } .darkmode #chat .messages .row a:hover[style="color:#222222"] { text-shadow: 1px 1px 1px #00000025; filter: brightness(0) saturate(100%) invert(97%) sepia(85%) saturate(12%) hue-rotate(184deg) brightness(103%) contrast(103%);`; const styleElement = document.createElement("style"); styleElement.type = "text/css"; styleElement.appendChild(document.createTextNode(css)); document.head.appendChild(styleElement); const modalContent = document.querySelector('#modals .box[data-id="main"] .box-content[data-id="tools"] div form'); const darkModeElement = document.createElement('a'); darkModeElement.href = '#'; darkModeElement.classList.add('input-checkbox'); darkModeElement.setAttribute('data-name', 'tools-enable-darkmode'); darkModeElement.innerHTML = `