diff --git a/mod-list.html b/mod-list.html
index 5f844ebe..d9a16647 100644
--- a/mod-list.html
+++ b/mod-list.html
@@ -196,9 +196,10 @@
| stripe_paint.js | Tool to paint with stripes | Alice |
| text.js | Tools to write text | RedBirdly |
| texturepack.js | Tools that let you create and share custom texture packs | nousernamefound |
- | the_ground.js | Several rock types, worldgen settings, and gemstones | Alice |
+ | the_ground_og.js | Several rock types and gemstones | Alice |
| worldEdit.js | Selection and editing tools | RedBirdly |
| worldgenlibrary.js | World generation library | Orchid |
+ | zoom.js | Buttons to zoom into and move the canvas | mnem |
| Science & Chemistry |
| alcohol.js | Methanol, (iso-)propanol, and butanol | Alice |
@@ -225,7 +226,7 @@
| glenn_gases.js | Most gases from the Glenn's Gases mod into Sandboxels | Alice |
| grav_mudstones.js | Various forms of mudstone with different gravities | Alice |
| halogen.js | The missing halogens | nousernamefound |
- | hidden_ground.js | Hides most rock variants from the_ground.js excluding the base rocks and walls | Melecie |
+ | hidden_ground.js | Hides most rock variants from the_ground_og.js excluding the base rocks and walls | Melecie |
| iocalfaeus_clones.js | Iorefrius, Iolucius, and Ioradius gas | Alice |
| jaydstuff.js | Various chemicals and compounds | Jayd |
| laetium.js | Several fictional elements | Alice |
@@ -245,10 +246,10 @@
| radioactive.js | Radioactive elements on the periodic table [WIP] | kaeud |
| random_rocks.js | Randomly generates rocks on game load | Alice |
| roseyiede.js | Several variants of a substance called roseyiede | Alice |
- | solubility.js | Adds solubility and a simple-to-use format for other mods to use with it | Orchid |
+ | solubility.js | Solubility and a simple-to-use format for other mods to use with it | Orchid |
| some_tf_liquids.js | Various liquids from the Thermal Foundation Minecraft mod | Alice |
| stickystuff.js | Slime, Honey, and others can stick to other elements | Suss |
- | the_ground.js | Several rocks, worldgen types, and gemstones | Alice |
+ | the_ground_og.js | Several rock types and gemstones | Alice |
| Machines & Technology |
| circuitcore.js | Extension for logicgates.js that adds advanced circuits [More Info] | RedBirdly |
@@ -256,7 +257,7 @@
| colored_lightbulbs.js | Light bulb that can be painted | guzzo86, ggod |
| combustion.js | Components necessary for combustion engines | uptzik |
| conveyance.js | Conveyors, operated with and without electricity | Melecie |
- | coresbyp.js | Adds several cores to fuel your reactors and a reactor fluid | suspasha111 |
+ | coresbyp.js | Several cores to fuel your reactors and a reactor fluid | suspasha111 |
| datawire.js | Wire that transfers data and other operators and machines for it | Orchid |
| drill.js | Drills made out of several materials | Suss |
| ExtraMachines.js | Sensors, energy resources, materials, and more | Mecoolnotcool |
@@ -364,13 +365,12 @@
| primordial_birthpool.js | Cross between Primordial Soup and Birthpool. Requires fey_and_more.js | Alice |
| scp.js | Creatures and items from the SCP Wiki | Nekonico |
| spring.js | Many nature elements, like sakura trees, butterflies, beehives, and more | R74n |
- | the_ground_og.js | Simplified and more stable version of the_ground.js | Alice |
- | the_ground.js | Several rock types, worldgen settings, and gemstones | Alice |
+ | the_ground_og.js | Several rock types and gemstones | Alice |
| toothpaste.js | Teeth and paste | Alice |
| volcanic_expansion.js | Obsidian, Pumice, and Andesite rocks | Jayd |
| Fun & Games |
- | 3pms_mod.js | Adds random stuff and tools | 3pm |
+ | 3pms_mod.js | Random stuff and tools | 3pm |
| 10kelements.js | Customizable amount of randomly generated elements | nousernamefound |
| all_around_fillers.js | Directional Filler variants | idk73248 |
| allliquids.js | Made all elements liquids | Orchid |
@@ -484,18 +484,19 @@
| Broken or Deprecated |
| a_mod_by_alice.js | Combination of most of Alice's mods, and some other things | Alice |
- | haseulite.js | Loona-related materials with various properties | Alice |
| adjustablepixelsize.js | Set the pixelSize with a URL parameter | Alice |
| advanced_colonies.js | Davlers, creatures with complex colonies | DaviStudios |
| background_changer.js | Press 'B' to change canvas background to a URL | R74n |
| borders.js | Black borders around pixels (Use bright background) | R74n |
| fast_lightmap.js | Light sources glow, but faster | RedBirdly |
+ | haseulite.js | Loona-related materials with various properties | Alice |
| humans.js | Humans. Now part of the base game | R74n |
| invertscroll.js | Inverts the scroll wheel for adjusting brush size (now a setting) | SquareScreamYT |
| mobile_shift.js | Button for shift on mobile (Now in the base game) | SquareScreamYT |
| nicer_flame.js | Fire is visually pleasing | RedBirdly |
| nopixellimit.js | Removes the pixel limit. (now a setting) | Jayd |
| pizzasstuff.js | New animals, foods, and plants | _ilikepizza_ |
+ | the_ground.js | Several rock types, worldgen settings, and gemstones | Alice |
| unhide.js | Unhides all elements except molten ones. (This functionality now exists as a vanilla setting) | R74n |
| wheel_fix.js | Attempts to fix the brush scaling too much with the mouse wheel for some people. Deprecated | Nubo318 |
diff --git a/mods/PRNGworldgenlib.js b/mods/PRNGworldgenlib.js
index 0fcad410..48d5d0e8 100644
--- a/mods/PRNGworldgenlib.js
+++ b/mods/PRNGworldgenlib.js
@@ -1,4 +1,4 @@
-/*Version 1.2.0 Pseudorandom world generator*/
+/*Version 1.2.1 Pseudorandom world generator*/
function pseudorandom(key, num, max = 1){
return (Math.log(key)*(num*Math.log(1625.4986772154357))) % max;
};
diff --git a/mods/hidden_ground.js b/mods/hidden_ground.js
index 0eb59ac1..5922b252 100644
--- a/mods/hidden_ground.js
+++ b/mods/hidden_ground.js
@@ -2,7 +2,7 @@
// Author: Melecie
runAfterLoad(function() {
- if (enabledMods.includes("mods/the_ground.js")) {
+ if (enabledModNames.includes("mods/the_ground_og.js")) {
let regexRocks = /(granite)|(rhyolite)|(pumice)|(obsidian)|(dacite)|(dacidian)|(andesite)|(diorite)|(scoria)|(andesidian)|(gabbro)|(basalt)|(basalidian)|(peridotite)|(komatiite)|(komatidian)/
let regexType = /(_gravel)|(_sand)|(_sandstone)|(_dust)|(_shard)|(hot_)/
let toHide = ["dry_permafrost", "hot_sand", "hot_dirt", "hot_rock", "hot_rock_wall", "hot_gravel", "hot_limestone", "hot_calcium_carbonate_dust", "sandy_water", "clay_water", "dry_clay_loam"]
@@ -33,10 +33,10 @@ runAfterLoad(function() {
//elements.sandstone.color = "#dbbe80";
}
- else {
- enabledMods.splice(enabledMods.indexOf("mods/hidden_ground.js"), 1);
- localStorage.setItem("enabledMods", JSON.stringify(enabledMods));
- alert("Hidden Ground: This mod requires The Ground mod. Removing mod and reloading.");
- window.location.reload();
- }
+ // else {
+ // enabledMods.splice(enabledMods.indexOf("mods/hidden_ground.js"), 1);
+ // localStorage.setItem("enabledMods", JSON.stringify(enabledMods));
+ // alert("Hidden Ground: This mod requires The Ground mod. Removing mod and reloading.");
+ // window.location.reload();
+ // }
})
\ No newline at end of file
diff --git a/mods/junction.js b/mods/junction.js
new file mode 100644
index 00000000..35cf40a7
--- /dev/null
+++ b/mods/junction.js
@@ -0,0 +1,50 @@
+// Junction.js
+
+const connectedPairs = [
+ [[-1, 0], [1, 0]], // Horizontal
+ [[0, -1], [0, 1]] // Vertical
+];
+
+let isRisingEdge = (current, prev) => current === 2 && prev !== 2;
+let isFallingEdge = (current, prev) => current !== 2 && prev === 2;
+
+elements.junction = {
+ color: "#9db8b5",
+ category: "logic",
+ state: "solid",
+ behavior: behaviors.WALL,
+ tick: function (pixel) {
+ if (pixel.start === pixelTicks)
+ pixel.prevStateMap = {};
+
+ for (const pair of connectedPairs) {
+ let pixelA = pixelMap[pixel.x + pair[0][0]]?.[pixel.y + pair[0][1]];
+ let pixelB = pixelMap[pixel.x + pair[1][0]]?.[pixel.y + pair[1][1]];
+
+ if (!pixelA) continue;
+ if (!pixelB) continue;
+ if (pixelA.element !== "logic_wire") continue;
+ if (pixelB.element !== "logic_wire") continue;
+
+ let stateA = pixelA.lstate;
+ let stateB = pixelB.lstate;
+ let prevStateA = pixel.prevStateMap[[pixelA.x, pixelA.y]];
+ let prevStateB = pixel.prevStateMap[[pixelB.x, pixelB.y]];
+
+ // console.log("A:", stateA, "->", prevStateA);
+ // console.log("B:", stateB, "->", prevStateB);
+
+ // Set previous lstate to current lstate
+ pixel.prevStateMap[[pixelA.x, pixelA.y]] = pixelA.lstate;
+ pixel.prevStateMap[[pixelB.x, pixelB.y]] = pixelB.lstate;
+
+ // Rising edge
+ if (isRisingEdge(stateA, prevStateA)) pixelB.lstate = 2;
+ if (isRisingEdge(stateB, prevStateB)) pixelA.lstate = 2;
+
+ // Falling edge
+ if (isFallingEdge(stateA, prevStateA)) pixelB.lstate = -2;
+ if (isFallingEdge(stateB, prevStateB)) pixelA.lstate = -2;
+ }
+ }
+};