diff --git a/mod-list.html b/mod-list.html
index 4242543b..1312c8fc 100644
--- a/mod-list.html
+++ b/mod-list.html
@@ -115,13 +115,13 @@
| Tools & Settings |
| adjustablepixelsize.js | Allows you to set the pixelSize with a URL parameter | Alice |
+| betaworldgen.js | adds a more advanced world generation to the game | Alex |
| betterModManager.js | Improvements to the Mod Manager | ggod |
| betterSettings.js | Adds additional settings and functionality | ggod |
| betterStats.js | Separate “real” and “set” TPS, meaning you can see what the TPS actually is, instead of only seeing what it’s set to | mollthecoder |
| change.js | Adds a tool that only replaces existing pixels | Alice |
| color_tools.js | Adds tools that manipulate colors | Alice |
| controllable_pixel_test.js | Adds a pixel that can be controlled with the keyboard keys. Read the commit description for more info. [PC ONLY] | Alice |
-| customexplosion.js | Added a custom explosion element and interface for it. check out its source code for how modders can use it. | Alex |
| cpt_alt.js | Adds a more destructive variant of the controllable pixel | Alice |
| debugRework.js | Revamps the Debug tool | Fioushemastor |
| delete_all_of_element.js | Adds a tool that deletes every pixel of the element(s) the user clicks on | Alice |
@@ -261,6 +261,7 @@
| changeTempReactionParameter.js | Adds the changeTemp property to modded reactions | Alice |
| code_library.js | Adds functions and variables common to some other mods | Alice |
| CrashTestDummy.js | Originally a test to see if certain code broke the game, but now just adds a tool that turns things into sand | StellarX20 |
+| customexplosion.js | Added a custom explosion element and interface for it. check out its source code for how modders can use it. | Alex |
| date_test.js | K-pop idol birthday testing stuff | Alice |
| drawPixels_change_test.js | A test of altering drawPixels(). Gives burning pixels a red overlay similar to the yellow overlay for charged pixels | Alice |
| example_mod.js | An example mod for new modders | R74n |
diff --git a/mods/betaworldgen.js b/mods/betaworldgen.js
new file mode 100644
index 00000000..9c25dd1f
--- /dev/null
+++ b/mods/betaworldgen.js
@@ -0,0 +1,128 @@
+//This mod was made by Alex the transfem, https://discord.com/users/778753696804765696 on discord and https://www.tiktok.com/@alextheagenenby?_t=8hoCVI3NRhu&_r=1 on tiktok.
+function randomAlter(num, list){
+ let r = Math.floor(Math.random() * list.length);
+ return (num + list[r]);
+}
+let avgheight = 0;
+let seed = "";
+function getSeed(type = "plains", thickness = 15){
+ seed = "";
+ console.log(thickness)
+ if(thickness == 15){
+ avgheight = Math.floor(Math.random() * (18 - 12 + 1)) + 12;
+ } else{
+ avgheight = thickness;
+ }
+ console.log(avgheight)
+
+ if(type == "plains"){
+ let location = Math.floor(Math.random(0, pixelMap.length) * 100);
+ let i = 0;
+ while (i < pixelMap.length){
+ if (i !== location){
+ seed += `${randomAlter(avgheight, [0, 1, 1, 2, 0, 0])}|`;
+ i += 1;
+ } else if (i == location){
+ let height = `${Math.floor(Math.random(40, pixelMap[i].length) * 10)}`;
+ let prevH = randomAlter(avgheight, [1, 1, 1, 2, 0, 0]);
+ while (height > prevH){
+ prevH = randomAlter(prevH, [0, 1, 1, 2, 0, 0, 0, 1]);
+ seed += `${prevH}|`;
+ }
+
+ i += 1;
+
+ }
+ }
+ return seed;
+ }
+ if(type == "desert"){
+ let i = 0;
+ while (i < pixelMap.length){
+ seed += `${randomAlter(avgheight, [0, 1, 1, 2, 0, 0])}|`;
+ i += 1;
+
+ }
+ }
+ return seed;
+ }
+function spawnElements(seed, list, height2 = 1, condition = [1, 1, 0]){
+ console.log(list);
+ let width = pixelMap.length - 1;
+ let element;
+ let height = pixelMap[1].length - 1;
+ console.log(seed);
+ let seedArray = seed.split("|");
+ console.log(seedArray);
+ seedArray.splice(seedArray.indexOf(""), 1);
+ seedArray.splice(pixelMap.length);
+ console.log(seedArray);
+ let i = 0;
+ while (i < seedArray.length - 1){
+
+ let ii = 0;
+ while (ii < seedArray[i]){
+ if((Math.floor(Math.random() * (condition[0] - condition[1] + 1))) == condition[2]){
+ if (height2 != 1){
+ element = list[Math.floor(Math.random() * list.length)];
+ createPixel(element, (width - 1) - i, (height - (height2 + 1)) - ii);
+ } else{
+ element = list[Math.floor(Math.random() * list.length)];
+ createPixel(element, (width - 1) - i, (height - 1) - ii);
+ }
+ }
+ ii += 1;
+ }
+
+ i += 1;
+ }
+}
+
+function flat(){
+ let iii = 0;
+ let flat = "";
+ while (iii < pixelMap.length){
+ flat += "1|";
+ iii += 1;
+ }
+ return flat;
+}
+function processSeed(seed, type = "plains"){
+
+ console.log(flat());
+ let seedsArray = seed.split(":");
+ console.log(seedsArray);
+ if(type == "plains"){
+ spawnElements(seedsArray[0],["rock","rock","rock","rock","rock","rock","metal_scrap","metal_scrap","metal_scrap","gold_coin","uranium","uranium","diamond","rock","iron","iron","iron","aluminum","aluminum","aluminum","aluminum","copper","copper","copper","zinc","zinc","rock","rock","rock","rock","rock","rock","rock","rock","rock","rock","rock","rock","rock","rock","rock"].sort(() => Math.random() - 0.5));
+ setTimeout(function(){ spawnElements(seedsArray[1], ["dirt"], 24); }, 200);
+ setTimeout(function(){ spawnElements(flat(),["grass","grass","grass","sapling","flower_seed","grass","grass","pinecone","grass","grass","grass","grass","grass","grass","grass","grass","grass","grass"], 40); }, 300);
+ } else if(type == "desert"){
+ spawnElements(seed, ["sand"]);
+ setTimeout(function(){ spawnElements(flat(), ["cactus"], 40, [6, 0, 3]); }, 100);
+ }
+}
+elements.worldGen = {
+ color: "#FFFFFF",
+ behavior: elements.erase.behavior,
+ temp: 2,
+ category: "tools",
+ insulate:true,
+ canPlace: false,
+ desc: "Generate worlds with random seeds or your own seeds.",
+ onSelect: function() {
+ let Seed = prompt("Enter desert or plains random generation! automatically set to plains.");
+ let regex = /[a-z]/;
+ if (regex.test(Seed)){
+ if(Seed.toLowerCase() == "desert"){
+ processSeed(getSeed("desert", 30), "desert");
+ }
+ } else {
+ if (Seed == ""){
+ seed = `${getSeed("plains", 20)}:${getSeed("plains", 8)}`
+ processSeed(seed);
+ } else{
+ processSeed(Seed);
+ }
+ }
+ }
+}