diff --git a/mod-list.html b/mod-list.html
index a2ae31fe..a6235e3f 100644
--- a/mod-list.html
+++ b/mod-list.html
@@ -378,6 +378,7 @@
| Shroomboxels.js | A variant of acid_and_shapes.js that uses a different trigonometric function | Alice |
| singleColor.js | Makes all elements pick one color each time they're drawn | stefanblox |
| sky.js | Adds a day-night cycle | RedBirdly |
+| solidcolor.js | Makes all placed pixels have a solid color (clone of onecolor.js) | SquareScreamYT |
| texture_pack_by_jayd.js | Adds a cool background | Jayd |
| UwUify.js | Adds an "UwU" background | Jayd |
diff --git a/mods/solidcolor.js b/mods/solidcolor.js
new file mode 100644
index 00000000..75cbe2dc
--- /dev/null
+++ b/mods/solidcolor.js
@@ -0,0 +1,146 @@
+// all credits to nousernamefound for onecolor.js
+
+window.addEventListener('load', function() {
+ console.log("attempted override");
+
+ pixelColorPick = function(pixel, customColor = null) {
+ var element = pixel.element;
+ var elementInfo = elements[element];
+
+ if (pixel.charge && elementInfo.colorOn) {
+ customColor = elementInfo.colorOn;
+ }
+
+ if (customColor != null) {
+ if (Array.isArray(customColor)) {
+ customColor = customColor[Math.floor(Math.random() * customColor.length)];
+ }
+ if (customColor.startsWith("#")) {
+ customColor = hexToRGB(customColor);
+ }
+ var rgb = customColor;
+ } else {
+ var rgb = elements[element].colorObject;
+ if (Array.isArray(rgb)) {
+ rgb = rgb[Math.floor(Math.random() * rgb.length)];
+ }
+ }
+
+ var coloroffset = Math.floor(Math.random() * (Math.random() > 0.5 ? -1 : 1) * Math.random() * 15);
+ var r = rgb.r + 0;
+ var g = rgb.g + 0;
+ var b = rgb.b + 0;
+
+ r = Math.max(0, Math.min(255, r));
+ g = Math.max(0, Math.min(255, g));
+ b = Math.max(0, Math.min(255, b));
+
+ var color = "rgb(" + r + "," + g + "," + b + ")";
+ return color;
+ }
+
+ pixelTempCheck = function(pixel) {
+ if (pixel.del) { return }
+ var elementInfo = elements[pixel.element];
+ if (pixel.temp < absoluteZero) {
+ pixel.temp = absoluteZero;
+ }
+
+ if (pixel.temp >= elementInfo.tempHigh) {
+ var result = elementInfo.stateHigh;
+ if (elementInfo.extraTempHigh) {
+ for (var extraTemp in elementInfo.extraTempHigh) {
+ if (pixel.temp >= extraTemp) {
+ result = elementInfo.extraTempHigh[extraTemp];
+ }
+ }
+ }
+
+ if (Array.isArray(result)) {
+ result = result[Math.floor(Math.random() * result.length)];
+ }
+ if (result === null) {
+ deletePixel(pixel.x, pixel.y);
+ return false;
+ } else {
+ if (elements[result].customColor) {
+ changePixel(pixel, result, false);
+ pixel.color = color;
+ } else if (elementInfo.stateHighColor) {
+ changePixel(pixel, result, false);
+ pixel.color = pixelColorPick(pixel, elementInfo.stateHighColor);
+ } else if (elementInfo.stateHighColorMultiplier) {
+ var color = pixel.color;
+ changePixel(pixel, result, false);
+ var rgb = color.match(/\d+/g);
+ var m = elementInfo.stateHighColorMultiplier;
+ if (Array.isArray(m)) {
+ m = m[0];
+ }
+ var r = Math.floor(rgb[0] * m);
+ var g = Math.floor(rgb[1] * m);
+ var b = Math.floor(rgb[2] * m);
+
+ r = Math.max(0, Math.min(255, r));
+ g = Math.max(0, Math.min(255, g));
+ b = Math.max(0, Math.min(255, b));
+
+ pixel.color = "rgb(" + r + "," + g + "," + b + ")";
+ } else {
+ changePixel(pixel, result, false);
+ }
+
+ if (elementInfo.fireColor && result === "fire") {
+ pixel.color = pixelColorPick(pixel, elementInfo.fireColor);
+ }
+ }
+ }
+
+ else if (pixel.temp <= elementInfo.tempLow) {
+ var result = elementInfo.stateLow;
+ if (elementInfo.extraTempLow) {
+ for (var extraTemp in elementInfo.extraTempLow) {
+ if (pixel.temp <= extraTemp) {
+ result = elementInfo.extraTempLow[extraTemp];
+ }
+ }
+ }
+
+ if (Array.isArray(result)) {
+ result = result[Math.floor(Math.random() * result.length)];
+ }
+ if (result === null) {
+ deletePixel(pixel.x, pixel.y);
+ return false;
+ } else {
+ if (elements[result].customColor) {
+ changePixel(pixel, result, false);
+ pixel.color = color;
+ } else if (elementInfo.stateLowColor) {
+ changePixel(pixel, result, false);
+ pixel.color = pixelColorPick(pixel, elementInfo.stateLowColor);
+ } else if (elementInfo.stateLowColorMultiplier) {
+ var color = pixel.color;
+ changePixel(pixel, result, false);
+ var rgb = color.match(/\d+/g);
+ var m = elementInfo.stateLowColorMultiplier;
+ if (Array.isArray(m)) {
+ m = m[0];
+ }
+ var r = Math.floor(rgb[0] * m);
+ var g = Math.floor(rgb[1] * m);
+ var b = Math.floor(rgb[2] * m);
+
+ r = Math.max(0, Math.min(255, r));
+ g = Math.max(0, Math.min(255, g));
+ b = Math.max(0, Math.min(255, b));
+
+ pixel.color = "rgb(" + r + "," + g + "," + b + ")";
+ } else {
+ changePixel(pixel, result, false);
+ }
+ }
+ }
+ return true;
+ }
+});