This commit is contained in:
JustAGenericUsername 2025-05-13 18:59:46 -04:00
commit 511ddb9855
41 changed files with 2659 additions and 19681 deletions

View File

@ -1,11 +1,11 @@
# Sandboxels # Sandboxels
A falling sand simulation game. A falling sand simulation game with hundreds of elements, heat simulation, chemical reactions, fire, density, electricity, and more.
Play at [Sandboxels.R74n.com](https://sandboxels.r74n.com/). Play for free at [Sandboxels.R74n.com](https://sandboxels.r74n.com/).
Join the [Discord server](https://discord.com/invite/ejUc6YPQuS). Join the [Discord server](https://discord.com/invite/ejUc6YPQuS).
![Landscape made in Sandboxels](https://raw.githubusercontent.com/R74nCom/sandboxels/main/icons/wallpaper.png) ![Landscape made in Sandboxels](https://raw.githubusercontent.com/R74nCom/sandboxels/main/icons/cover-3840x1240px-text.png)
# Controls # Controls
* Left Click = Draw pixels * Left Click = Draw pixels
@ -29,7 +29,7 @@ Join the [Discord server](https://discord.com/invite/ejUc6YPQuS).
# Button Info # Button Info
* Pause = Pause/play the simulation * Pause = Pause/play the simulation
* Step = Run a single frame * Step (>) = Run a single frame
* Minus (-) = Decrease the cursor size * Minus (-) = Decrease the cursor size
* Plus (+) = Increase the cursor size * Plus (+) = Increase the cursor size
* Reset = Clears the entire simulation * Reset = Clears the entire simulation
@ -37,5 +37,6 @@ Join the [Discord server](https://discord.com/invite/ejUc6YPQuS).
* E = Select any element by name * E = Select any element by name
* TPS = Change how fast the simulation runs * TPS = Change how fast the simulation runs
* Info = Open the element info screen * Info = Open the element info screen
* Saves = Open the Save & Load menu
* Mods = Open the Mod Manager * Mods = Open the Mod Manager
* Settings = Open the settings menu * Settings = Open the settings menu

410
ads.txt
View File

@ -1,410 +0,0 @@
ownerdomain=r74n.com
managerdomain=venatus.com
#V 07.02.2025 VH
#P
#----------------------------------------------------------------------------#
# . #
# .o8 #
# oooo ooo .ooooo. ooo. .oo. .oooo. .o888oo oooo oooo .oooo.o #
# `88. .8' d88' `88b `888P"Y88b `P )88b 888 `888 `888 d88( "8 #
# `88..8' 888ooo888 888 888 .oP"888 888 888 888 `"Y88b. #
# `888' 888 . 888 888 d8( 888 888 . 888 888 o. )88b #
# `8' `Y8bod8P' o888o o888o `Y888""8o "888" `V88V"V8P' 8""888P' #
# #
# The leading advertising solution for gaming and entertainment #
# #
# To become a publisher or advertise please contact info@venatus.com #
# #
#----------------------------------------------------------------------------#
adagio.io, 1090, DIRECT # Adagio_0_6
rubiconproject.com, 19116, RESELLER, 0bfd66d529a55807 # Adagio_0_6
pubmatic.com, 159110, RESELLER, 5d62403b186f2ace # Adagio_0_6
rubiconproject.com, 16414, RESELLER, 0bfd66d529a55807 # Adagio_0_6
lijit.com, 367236, RESELLER, fafdf38b16bf6b2b # Adagio_0_6
improvedigital.com, 1790, RESELLER # Adagio_0_6
triplelift.com, 13482, RESELLER, 6c33edb13117fd86 # Adagio_0_6
rubiconproject.com, 12186, RESELLER, 0bfd66d529a55807 # Adagio_0_6
video.unrulymedia.com, 5672421953199218469, RESELLER # Adagio_0_6
amxrtb.com, 105199358, DIRECT # AdaptMX_1_6&7
amxrtb.com, 105199778, DIRECT # AdaptMX_Ozone
indexexchange.com, 191503, RESELLER # AdaptMX_1_6&7
appnexus.com, 12290, RESELLER # AdaptMX_1_6&7
pubmatic.com, 158355, RESELLER, 5d62403b186f2ace # AdaptMX_1_6&7
rubiconproject.com, 23844, RESELLER, 0bfd66d529a55807 # AdaptMX_1_6&7
openx.com, 559680764, RESELLER, 6a698e2ec38604c6 # AdaptMX_1_6&7
adform.com, 2767, RESELLER # Adform_0_6&7
adyoulike.com, c1314a52de718f3c214c00173d2994f9, DIRECT # AdYouLike_0_6
pubmatic.com, 160925, RESELLER, 5d62403b186f2ace # AdYouLike_0_6
rubiconproject.com, 20736, RESELLER, 0bfd66d529a55807 # AdYouLike_0_6
appnexus.com, 7664, RESELLER # AdYouLike_0_6
alkimiexchange.com , 4245 , Direct # Alkimi
aps.amazon.com,70247b00-ff8f-4016-b3ab-8344daf96e09,DIRECT # Amazon_3_6&7
aniview.com, 5f2063121d82c82557194737, RESELLER, 78b21b97965ec3f8 # Aniview
aniview.com, 643f8e74688b10f72307cc24, DIRECT, 78b21b97965ec3f8 # Aniview
google.com, pub-6346866704322274, RESELLER, f08c47fec0942fa0 # Aniview
pubmatic.com, 160993, RESELLER, 5d62403b186f2ace # Aniview
rubiconproject.com, 13918, RESELLER, 0bfd66d529a55807 # Aniview
google.com, pub-5717092533913515, RESELLER, f08c47fec0942fa0 # Aniview
gannett.com, 22652678936, RESELLER # Aniview
richaudience.com, 1ru8dKmJJV, RESELLER # Aniview
sharethrough.com, zLsEa05k, RESELLER, d53b998a7bd4ecd2 # Aniview
aps.amazon.com, 1ad7261b-91ea-4b6f-b9e9-b83522205b75, RESELLER # Aniview
pubmatic.com, 161335, RESELLER, 5d62403b186f2ace # Aniview
openx.com, 556532676, RESELLER, 6a698e2ec38604c6 # Aniview
mediago.io, 045ac24b888bcf59a09731e7f0f2084f, RESELLER # Baidu
blockthrough.com, 5643766199222272, DIRECT # Blockthrough
indexexchange.com, 194341, RESELLER, 50b1c356f2c5c8fc # Blockthrough
pubmatic.com, 160377, RESELLER, 5d62403b186f2ace # Blockthrough
onetag.com, 75804861b76a852, DIRECT # Blockthrough
amxrtb.com, 105199664, DIRECT # Blockthrough
criteo.com, B-062405, DIRECT, 9fac4a4a87c2a44f # Criteo_0_6&7
themediagrid.com, CVQXOH, DIRECT, 35d5010d7789b49d # Criteo_0_6&7
dxkulture.com, 1359, DIRECT, 259726033fc4df0c # DxKulture
zetaglobal.net,790,DIRECT # DxKulture
rubiconproject.com,26094,DIRECT,0bfd66d529a55807 # DxKulture
ssp.disqus.com,790,DIRECT # DxKulture
adswizz.com,dxkulture,DIRECT # DxKulture
adswizz.com,651,DIRECT # DxKulture
appnexus.com, 11716, RESELLER, f5ab79cb980f11d1 # Execute Media
freewheel.tv, 211121, DIRECT # Freewheel_0_7
freewheel.tv, 211129-524565, DIRECT # Freewheel_OPG
freewheel.tv, 211129-169843, DIRECT # Freewheel_OPG
google.com, pub-5781531207509232, DIRECT, f08c47fec0942fa0 # Google_AdX_6&7
google.com, pub-5781531207509232, RESELLER, f08c47fec0942fa0 # Google_AdX_6&7
google.com, pub-2553634189837243, RESELLER, f08c47fec0942fa0 # Google_AdX_6&7
gumgum.com, 13385, RESELLER, ffdef49475d318a9 # GumGum
gumgum.com, 14302, RESELLER, ffdef49475d318a9 # GumGum
rubiconproject.com, 23434, RESELLER, 0bfd66d529a55807 # GumGum
pubmatic.com, 157897, RESELLER, 5d62403b186f2ace # GumGum
indexexchange.com, 183921, DIRECT, 50b1c356f2c5c8fc # Index Exchange_0_6&7
indexexchange.com, 193067, DIRECT, 50b1c356f2c5c8fc # Index Exchange_2_6&7
indexexchange.com, 194127, DIRECT, 50b1c356f2c5c8fc # Index Exchange_7&4_6&7
indexexchange.com, 205972, RESELLER, 50b1c356f2c5c8fc # Index Exchange_Oz
insticator.com,843c9a44-60ea-4342-8ad4-68f894283b3e,DIRECT,b3511ffcafb23a32 # Insticator
rubiconproject.com,17062,RESELLER,0bfd66d529a55807 # Insticator
video.unrulymedia.com,136898039,RESELLER # Insticator
pubmatic.com,95054,DIRECT,5d62403b186f2ace # Insticator
lijit.com,257618,RESELLER,fafdf38b16bf6b2b # Insticator
sharethrough.com,Q9IzHdvp,DIRECT,d53b998a7bd4ecd2 # Insticator
openx.com,558230700,RESELLER,6a698e2ec38604c6 # Insticator
kargo.com, 8688, DIRECT # Kargo_0_6
rubiconproject.com, 13762, RESELLER, 0bfd66d529a55807 # Magnite_0&2_6&7
media.net, 8CU8ARTF8, DIRECT # Media.net
Media.net, 8CU198XI2, DIRECT # Media.net
themediagrid.com, LTW57M, DIRECT, 35d5010d7789b49d # MediaGrid_2_6&7
ogury.com, 086233d2-e8a8-44fc-907b-f0752e1c85de, DIRECT # Ogury_0_6
appnexus.com, 11470, RESELLER # Ogury_0_6
openx.com, 537144009, RESELLER, 6a698e2ec38604c6 # OpenX_0_6
openx.com, 540134228, RESELLER, 6a698e2ec38604c6 # OpenX_0_7
openx.com, 542378302, RESELLER, 6a698e2ec38604c6 # OpenX_2_6&7
outbrain.com, 00cad1edda50a62c096c310d54360dfcdb, DIRECT # Outbrain
rubiconproject.com, 19668, RESELLER, 0bfd66d529a55807 # Outbrain
openx.com, 540393169, RESELLER, 6a698e2ec38604c6 # Outbrain
smaato.com, 1100048704, RESELLER, 07bcf65f187117b4 # Outbrain
the-ozone-project.com, ozoneven0005, DIRECT # Ozone_0_6
openx.com, 540731760, RESELLER, 6a698e2ec38604c6 # Ozone_0_6
pubmatic.com, 160557, RESELLER, 5d62403b186f2ace # Ozone_0_6
themediagrid.com, WF71T3, DIRECT, 35d5010d7789b49d # Ozone_0_6
Yahoo.com, 60170, DIRECT, e1a5b5b6e3255540 # Ozone_0_6
primis.tech, 31136, DIRECT, b6b21d256ef43532 # Primis
pubmatic.com, 156595, RESELLER, 5d62403b186f2ace # Primis
google.com, pub-1320774679920841, RESELLER, f08c47fec0942fa0 # Primis
openx.com, 540258065, RESELLER, 6a698e2ec38604c6 # Primis
rubiconproject.com, 20130, RESELLER, 0bfd66d529a55807 # Primis
smartadserver.com, 3436, RESELLER, 060d053dcf45cbf3 # Primis
indexexchange.com, 191923, RESELLER, 50b1c356f2c5c8fc # Primis
Media.net, 8CU695QH7, RESELLER # Primis
triplelift.com, 8210, RESELLER, 6c33edb13117fd86 # Primis
appnexus.com,16007, RESELLER, f5ab79cb980f11d1 # Primis
pmc.com, 1240739, DIRECT, 8dd52f825890bb44 # Primis
rubiconproject.com, 10278, RESELLER, 0bfd66d529a55807 # Primis
video.unrulymedia.com, 776418614052335749, RESELLER # Primis
pubmatic.com, 159234, RESELLER, 5d62403b186f2ace # PubMatic_0_6&7
pubmatic.com, 160552, RESELLER, 5d62403b186f2ace # PubMatic_4_7
pubmatic.com, 159401, RESELLER, 5d62403b186f2ace # PubMatic_2_6&7
pubmatic.com, 163598, RESELLER, 5d62403b186f2ace # Pubmatic_OW
pubmatic.com, 165533, RESELLER, 5d62403b186f2ace # Pubmatic_KR
richaudience.com, 1XvIoD5o0S, DIRECT # Rich Audience_0_6&7
pubmatic.com, 81564, DIRECT, 5d62403b186f2ace # Rich Audience_0_6&7
pubmatic.com, 156538, DIRECT, 5d62403b186f2ace # Rich Audience_0_6&7
appnexus.com, 8233, DIRECT # Rich Audience_0_6&7
rubiconproject.com, 13510, DIRECT # Rich Audience_0_6&7
risecodes.com, 5fa94677b2db6a00015b22a9, DIRECT # Rise
pubmatic.com, 160295, RESELLER, 5d62403b186f2ace # Rise
xandr.com, 14082, RESELLER # Rise
rubiconproject.com, 23876, RESELLER, 0bfd66d529a55807 # Rise
sharethrough.com, 5926d422, RESELLER, d53b998a7bd4ecd2 # Rise
yieldmo.com, 2754490424016969782, RESELLER # Rise
media.net, 8CUQ6928Q, RESELLER # Rise
onetag.com, 69f48c2160c8113, RESELLER # Rise
amxrtb.com, 105199691, RESELLER # Rise
33across.com, 0010b00002Xbn7QAAR, RESELLER, bbea06d9c4d2853c # Rise
video.unrulymedia.com, 335119963, RESELLER # Rise
seedtag.com, 5aa6c80640c9e209009721e0, DIRECT # Seedtag
xandr.com, 4009, DIRECT, f5ab79cb980f11d1 # Seedtag
rubiconproject.com, 17280, DIRECT, 0bfd66d529a55807 # Seedtag
sharethrough.com, 31c129df, DIRECT, d53b998a7bd4ecd2 # Sharethrough_0_6&7
sharethrough.com, awx1H4AI, RESELLER, d53b998a7bd4ecd2 # Sharethrough
pmc.com, 1242472, DIRECT, 8dd52f825890bb44 # She_Media
rubiconproject.com, 10278, RESELLER, 0bfd66d529a55807 # She_Media
smartadserver.com, 2161, RESELLER # Showheroes_7_8
smartadserver.com, 3668, RESELLER # Showheroes_7_8
showheroes.com, 6829, RESELLER # Showheroes_7_8
smartadserver.com, 3490, DIRECT # Smart AdServer_0&1&2_6&7
smartadserver.com, 4016, DIRECT # Smart AdServer_0&1&2_6&7
smartadserver.com, 4074, DIRECT # Smart AdServer_0&1&2_6&7
sonobi.com, 116da9d98c, DIRECT, d1a215d9eb5aee9e # Sonobi_0_6&7
sonobi.com, e017850301, DIRECT, d1a215d9eb5aee9e # Sonobi_4_7
sonobi.com, dc5f975b54, RESELLER, d1a215d9eb5aee9e # Sonobi_TAM
sonobi.com, 168faa72a7, RESELLER, d1a215d9eb5aee9e # Sonobi_Oz
sovrn.com, 237754, DIRECT, fafdf38b16bf6b2b # Sovrn_0&1&2_6&7
lijit.com, 237754, DIRECT, fafdf38b16bf6b2b # Sovrn_0&1&2_6&7
lijit.com, 506352, DIRECT, fafdf38b16bf6b2b # Sovrn_Ozone
tappx.com, 42745, DIRECT, 9f375a07da0318ec # Tappx
pubmatic.com, 158111, RESELLER, 5d62403b186f2ace # Tappx
sharethrough.com, 49574e61,RESELLER, d53b998a7bd4ecd2 # Tappx
smartadserver.com,1692, RESELLER,060d053dcf45cbf3 # Tappx
rubiconproject.com,13856,RESELLER,0bfd66d529a55807 # Tappx
video.unrulymedia.com,3341072718,RESELLER # Tappx
33across.com,0010b00001siQHqAAM,RESELLER,bbea06d9c4d2853c # Tappx
themediagrid.com,4FDQYH,RESELLER,35d5010d7789b49d # Tappx
triplelift.com, 6059, RESELLER, 6c33edb13117fd86 # Triplelift_0&2_6&7
video.unrulymedia.com, 985572675, DIRECT # Unruly_0&2_7
video.unrulymedia.com, 985572675, RESELLER # Unruly_0&2_7
sharethrough.com, 6qlnf8SY, RESELLER, d53b998a7bd4ecd2 # Unruly
pubmatic.com, 156512, DIRECT # Wunderkind
indexexchange.com, 183753, DIRECT # Wunderkind
wunderkind.co, 6438, DIRECT # Wunderkind
wunderkind.co, 6449, DIRECT # Wunderkind
criteo.com, B-068503, DIRECT # Wunderkind
appnexus.com, 806, DIRECT, f5ab79cb980f11d1 # Xandr_0&2_6&7
appnexus.com,1908,RESELLER,f5ab79cb980f11d1 # Xandr_0&2_6&7
google.com, pub-3282547114800347, RESELLER, f08c47fec0942fa0
adinplay.com, FTB, DIRECT
# Kueez
kueez.com,e5b6208bc94ed2d5788e1e4c1cf5452e, DIRECT
rubiconproject.com, 16920, RESELLER, 0bfd66d529a55807
openx.com, 557564833, RESELLER, 6a698e2ec38604c6
Pubmatic.com, 162110, RESELLER, 5d62403b186f2ace
lijit.com, 407406, RESELLER, fafdf38b16bf6b2b #SOVRN
sharethrough.com, n98xDzeL, RESELLER, d53b998a7bd4ecd2
sonobi.com, 4c4fba1717, RESELLER, d1a215d9eb5aee9e
appnexus.com, 8826,RESELLER, f5ab79cb980f11d1
33across.com, 0010b00002ODU4HAAX, RESELLER, bbea06d9c4d2853c
Media.net,8CU4JTRF9, RESELLER
# PGAM
pgamssp.com, 634dc90283fff00f005151f2, DIRECT
amxrtb.com, 105199776, RESELLER
pubmatic.com, 162623, RESELLER, 5d62403b186f2ace
rubiconproject.com, 24852, RESELLER, 0bfd66d529a55807
onetag.com, 87f80e5d9d55274, RESELLER
freewheel.tv, 1489202, RESELLER
#Yieldmo
yieldmo.com, 2440034636282143652, DIRECT
rubiconproject.com, 17070, RESELLER, 0bfd66d529a55807
pubmatic.com, 160648, RESELLER, 5d62403b186f2ace
contextweb.com, 561118, RESELLER, 89ff185a4c4e857c
conversantmedia.com, 100270, RESELLER, 03113cd04947736d
appnexus.com, 7911, RESELLER
# OptiDigital
optidigital.com,p230,DIRECT
pubmatic.com,158939,RESELLER,5d62403b186f2ace
rubiconproject.com,20336,RESELLER,0bfd66d529a55807
smartadserver.com,3379,RESELLER,060d053dcf45cbf3
criteo.com,B-060926,RESELLER,9fac4a4a87c2a44f
appnexus.com,12190,RESELLER,f5ab79cb980f11d1
triplelift.com,8183,RESELLER,6c33edb13117fd86
# NHace
acexchange.co.kr, 1908143852, RESELLER
loopme.com, 11544, RESELLER, 6c8d5f95897a5a3b
smartyads.com, 300036, RESELLER, fd2bde0ff2e62c5d
yeahmobi.com, 5135284, Reseller
# Smaato
smaato.com, 1100055690, DIRECT, 07bcf65f187117b4
smaato.com, 1100049216, DIRECT, 07bcf65f187117b5
rubiconproject.com, 24600, RESELLER, 0bfd66d529a55807
sharethrough.com, iBAzay96, RESELLER, d53b998a7bd4ecd2
pubmatic.com, 156177, RESELLER, 5d62403b186f2ace
# OMS Test
onlinemediasolutions.com, 21009, DIRECT
pubmatic.com, 161332, RESELLER, 5d62403b186f2ace
amxrtb.com, 105199514, RESELLER
yieldmo.com, 2757543169808605705, RESELLER
audienciad.com, 210092, DIRECT
rubiconproject.com, 20416, RESELLER, 0bfd66d529a55807
onomagic.com, 210091, DIRECT
lijit.com, 374814, RESELLER, fafdf38b16bf6b2b
onetag.com, 75753f1ebcc343c, RESELLER
openx.com, 537153209, RESELLER, 6a698e2ec38604c6
video.unrulymedia.com, 6694405583287859332, RESELLER
appnexus.com, 11801, RESELLER
onetag.com, 7b561459c997848, RESELLER
appnexus.com, 15629, RESELLER, f5ab79cb980f11d1
aps.amazon.com, 48266a61-b3d9-4cb7-b172-553abc6a42a4, DIRECT
indexexchange.com, 197494, RESELLER, 50b1c356f2c5c8fc
pubmatic.com, 163517, RESELLER, 5d62403b186f2ace
advibe.media, 821009, DIRECT
loopme.com, 12733, RESELLER, 6c8d5f95897a5a3b
rubiconproject.com, 24364, RESELLER, 0bfd66d529a55807
getmediamx.com, 1221009, DIRECT
smartadserver.com, 4483, RESELLER
limpid.tv, 921009, DIRECT
rubiconproject.com, 25722, RESELLER, 0bfd66d529a55807
sonobi.com, 3aed893727, RESELLER, d1a215d9eb5aee9e
Media.net, 8CUB46Z7R, RESELLER
themediagrid.com, IRK975, RESELLER, 35d5010d7789b49d
sharethrough.com, UxId3u8j, RESELLER, d53b998a7bd4ecd2
pmc.com, 1242344, DIRECT, 8dd52f825890bb44
rubiconproject.com, 10278, RESELLER, 0bfd66d529a55807
adyoulike.com, e9a771d72c076dbe3cafc2c6477f9238, RESELLER
# Adsolut Test
Adsolut.in, 17582, DIRECT
Playstream.media, 2713, DIRECT
Pubmatic.com, 164692, RESELLER, 5d62403b186f2ace
pubmatic.com, 162175, RESELLER, 5d62403b186f2ace
openx.com, 560878260, RESELLER, 6a698e2ec38604c6
openx.com, 557904194, RESELLER, 6a698e2ec38604c6
rubiconproject.com, 24872, RESELLER, 0bfd66d529a55807
rubiconproject.com, 24874, RESELLER, 0bfd66d529a55807
rubiconproject.com, 26768, RESELLER, 0bfd66d529a55807
pubmatic.com, 159727, RESELLER, 5d62403b186f2ace
pubmatic.com, 157742, RESELLER, 5d62403b186f2ace
pubmatic.com, 157569, RESELLER, 5d62403b186f2ace
pubmatic.com, 159941, RESELLER, 5d62403b186f2ace
xandr.com, 9988, RESELLER
appnexus.com, 9988, RESELLER
teads.tv, 25843, DIRECT, 15a9c44f6d26cbe1
vdopia.com, 15364, DIRECT, 49a66ce31a704197 #video
chocolateplatform.com, 15364, DIRECT, 49a66ce31a704197 #video
vdopia.com, 15364, DIRECT, 49a66ce31a704197 #banner
chocolateplatform.com, 15364, DIRECT, 49a66ce31a704197 #banner
smartadserver.com, 4164, DIRECT, 060d053dcf45cbf3
smartadserver.com, 4164, RESELLER, 060d053dcf45cbf3
smartadserver.com, 4164-OB, RESELLER, 060d053dcf45cbf3
contextweb.com, 560288, RESELLER, 89ff185a4c4e857c
pubmatic.com, 156439, RESELLER, 5d62403b186f2ace
pubmatic.com, 154037, RESELLER, 5d62403b186f2ace
rubiconproject.com, 16114, RESELLER, 0bfd66d529a55807
openx.com, 537149888, RESELLER, 6a698e2ec38604c6
appnexus.com, 3703, RESELLER, f5ab79cb980f11d1
loopme.com, 5679, RESELLER, 6c8d5f95897a5a3b
xad.com, 958, RESELLER, 81cbf0a75a5e0e9a
rhythmone.com, 2564526802, RESELLER, a670c89d4a324e47
smaato.com, 1100044045, RESELLER, 07bcf65f187117b4
pubnative.net, 1006576, RESELLER, d641df8625486a7b
verve.com, 15503, RESELLER, 0c8f5958fc2d6270
adyoulike.com, b4bf4fdd9b0b915f746f6747ff432bde, RESELLER
axonix.com, 57264, RESELLER
admanmedia.com, 43, RESELLER
smartadserver.com, 4012, RESELLER
smartadserver.com, 4016, RESELLER
smartadserver.com, 4071, RESELLER
smartadserver.com, 4073, RESELLER
smartadserver.com, 4074, RESELLER
criteo.com, B-068838, DIRECT, 9fac4a4a87c2a44f
themediagrid.com, Q6VXLE, DIRECT, 35d5010d7789b49d
aps.amazon.com,5d8ed25e-57cc-441a-b62a-127b34faae4e, DIRECT
telaria.com,4pco5-ef5so,RESELLER,1a4e959a1b50034a
tremorhub.com,4pco5-ef5so,RESELLER,1a4e959a1b50034a
springserve.com, 2112, RESELLER, a24eb641fc82e93d
# Nobid Test
nobid.io, 22629800915, DIRECT
zetaglobal.net, 693, DIRECT
sharethrough.com, aRE1degH, RESELLER, d53b998a7bd4ecd2
rubiconproject.com, 18694, RESELLER, 0bfd66d529a55807
pubmatic.com, 156557, RESELLER
lijit.com, 273657, RESELLER, fafdf38b16bf6b2b
rubiconproject.com, 24434, RESELLER, 0bfd66d529a55807
amxrtb.com, 105199579, RESELLER
appnexus.com, 12290, RESELLER
lijit.com, 260380, RESELLER
xandr.com, 11429, RESELLER, f5ab79cb980f11d1
onetag.com, 694e68b73971b58, RESELLER
# Onetag Test
onetag.com, 59c7d7f65f9d658, DIRECT
appnexus.com, 13099, RESELLER
pubmatic.com, 161593, RESELLER, 5d62403b186f2ace
rubiconproject.com, 11006, RESELLER, 0bfd66d529a55807
# Pulsepoint Test
Contextweb.com,563522,DIRECT,89ff185a4c4e857c
rubiconproject.com, 26184, RESELLER, 0bfd66d529a55807
iqzone.com,IQ272,RESELLER
mediafuse.com, 720, RESELLER
appnexus.com, 9538, RESELLER, f5ab79cb980f11d1
sovrn.com, 253233, RESELLER, fafdf38b16bf6b2b
lijit.com, 253233, RESELLER, fafdf38b16bf6b2b
loopme.com, 11436, RESELLER, 6c8d5f95897a5a3b
# NextMillennium Test
nextmillennium.io, 16749, DIRECT, 65bd090fa4a1e3d6
admagnetix.io, 201898, DIRECT
appnexus.com, 9284, DIRECT, f5ab79cb980f11d1
appnexus.com, 15799, DIRECT, f5ab79cb980f11d1
rubiconproject.com, 17888, RESELLER, 0bfd66d529a55807
rubiconproject.com, 26296, RESELLER, 0bfd66d529a55807
pubmatic.com, 157577, DIRECT, 5d62403b186f2ace
pubmatic.com, 164400, RESELLER, 5d62403b186f2ace
indexexchange.com, 194648, RESELLER, 50b1c356f2c5c8fc
indexexchange.com, 207985, RESELLER, 50b1c356f2c5c8fc
openx.com, 540224251, DIRECT, 6a698e2ec38604c6
openx.com, 540225743, DIRECT, 6a698e2ec38604c6
33across.com, 0010b00002e4MRRAA2, DIRECT, bbea06d9c4d2853c
33across.com, 001Pg000007PnplIAC, DIRECT, bbea06d9c4d2853c #33Across #hb #tag
yieldmo.com, 2230523609997805235, DIRECT
yieldmo.com, 3483642730188317326, DIRECT
# Nativo Test
nativo.com, 5712, DIRECT, 59521ca7cc5e9fee
openx.com, 540709535, RESELLER, 6a698e2ec38604c6
pubmatic.com, 156500, RESELLER, 5d62403b186f2ace
smartadserver.com, 4878, RESELLER, 060d053dcf45cbf3
zetaglobal.net, 989, RESELLER
# 33across Test
33across.com, 0010b00001rrIFkAAM, DIRECT, bbea06d9c4d2853c
appnexus.com, 10239, RESELLER, f5ab79cb980f11d1
video.unrulymedia.com, 2439829435, DIRECT
conversantmedia.com, 100141, DIRECT, 03113cd04947736d
pubmatic.com, 156423, RESELLER, 5d62403b186f2ace
rubiconproject.com, 16414, RESELLER, 0bfd66d529a55807
rubiconproject.com, 21642, RESELLER, 0bfd66d529a55807
loopme.com,11575,RESELLER,6c8d5f95897a5a3b
openx.com, 537120563, RESELLER, 6a698e2ec38604c6
contextweb.com, 561516, RESELLER, 89ff185a4c4e857c
adyoulike.com, 1f301d3bcd723f5c372070bdfd142940, RESELLER
# Weborama Test
appnexus.com, 12986, RESELLER, f5ab79cb980f11d1
improvedigital.com, 1069, RESELLER
pubmatic.com, 158056, RESELLER
Weborama.nl, 10714, DIRECT
# Inmobi Test
inmobi.com, cdfd74ce1cdd4a67b1c4794c072324ff, DIRECT, 83e75a7ae333ca9d
rubiconproject.com,11726,RESELLER,0bfd66d529a55807
rubiconproject.com,12266,RESELLER,0bfd66d529a55807
Blis.com,33,RESELLER,61453ae19a4b73f4
loopme.com,9724,RESELLER,6c8d5f95897a5a3b
pubmatic.com,157097,RESELLER,5d62403b186f2ace
conversantmedia.com,40881,RESELLER,03113cd04947736d
pubmatic.com,156931,RESELLER,5d62403b186f2ace
pubmatic.com,159035,RESELLER,5d62403b186f2ace
outbrain.com,00bba279fec6daa01a0cb6fdccb023f0d5,RESELLER
venatus.com, 67a9ed9754327b1c4246265f, DIRECT

18793
adtest.html

File diff suppressed because it is too large Load Diff

View File

@ -128,6 +128,7 @@
<tr><td>E</td> <td>Select any element by name</tr> <tr><td>E</td> <td>Select any element by name</tr>
<tr><td>TPS</td> <td>Change how fast the simulation runs (Default 30tps)</tr> <tr><td>TPS</td> <td>Change how fast the simulation runs (Default 30tps)</tr>
<tr><td>Info</td> <td>Open the element info screen</tr> <tr><td>Info</td> <td>Open the element info screen</tr>
<tr><td>Saves</td> <td>Open the Save & Load menu</tr>
<tr><td>Mods</td> <td>Open the Mod Manager</tr> <tr><td>Mods</td> <td>Open the Mod Manager</tr>
<tr><td>Settings</td> <td>Open the Settings Menu</tr> <tr><td>Settings</td> <td>Open the Settings Menu</tr>
</table> </table>

View File

@ -56,5 +56,6 @@ Replace = Override existing pixels when placing
E = Select any element by name E = Select any element by name
TPS = Change how fast the simulation runs TPS = Change how fast the simulation runs
Info = Open the element info screen Info = Open the element info screen
Saves = Open the Save & Load menu
Mods = Open the Mod Manager Mods = Open the Mod Manager
Settings = Open the Settings Menu Settings = Open the Settings Menu

View File

@ -52,7 +52,6 @@
<body> <body>
<h1><a href="https://sandboxels.R74n.com" class="backbutton">&lt;</a> Sandboxels in Education</h1> <h1><a href="https://sandboxels.R74n.com" class="backbutton">&lt;</a> Sandboxels in Education</h1>
</ul>
<div id="content"> <div id="content">
<p>Sandboxels is a free experimentation simulator that can be played in any web browser. It features heat simulation, electricity, density, chemical reactions, cooking, and fire spread.</p> <p>Sandboxels is a free experimentation simulator that can be played in any web browser. It features heat simulation, electricity, density, chemical reactions, cooking, and fire spread.</p>

View File

@ -52,7 +52,6 @@
<body> <body>
<h1><a href="https://sandboxels.R74n.com" class="backbutton">&lt;</a> Sandboxels Feedback</h1> <h1><a href="https://sandboxels.R74n.com" class="backbutton">&lt;</a> Sandboxels Feedback</h1>
</ul>
<div id="content"> <div id="content">
<p>We accept any suggestions, feedback, or kind words you'd like to send us! We usually can't provide support for mod issues.</p> <p>We accept any suggestions, feedback, or kind words you'd like to send us! We usually can't provide support for mod issues.</p>

View File

@ -52,7 +52,6 @@
<body> <body>
<h1><a href="https://sandboxels.R74n.com" class="backbutton">&lt;</a> Troubleshooting Sandboxels</h1> <h1><a href="https://sandboxels.R74n.com" class="backbutton">&lt;</a> Troubleshooting Sandboxels</h1>
</ul>
<div id="content"> <div id="content">
<p>This page will walk you through fixing the most common issues that users have playing Sandboxels.</p> <p>This page will walk you through fixing the most common issues that users have playing Sandboxels.</p>

Binary file not shown.

After

Width:  |  Height:  |  Size: 705 KiB

BIN
icons/promo1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

BIN
icons/promo2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 KiB

BIN
icons/promo3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
icons/promo4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

View File

@ -52,6 +52,7 @@
currentversion = "1.11.1"; currentversion = "1.11.1";
saveVersion = 4; saveVersion = 4;
standalone = false; standalone = false;
standaloneType = null;
</script> </script>
<style> <style>
.setting-span { .setting-span {
@ -12963,23 +12964,39 @@ SEEDRISE: function(pixel) {
"infection_ice": { color: "#ff7090" }, "infection_ice": { color: "#ff7090" },
}; };
// detect if discord activity
if (location.hostname.match(/discordsays/i)) {
standalone = true;
standaloneType = "discord";
}
// standalone glow.js
if (standalone) {
var script = document.createElement('script');
script.src = "mods/glow.js";
document.head.appendChild(script);
}
var currentMonth = new Date().getMonth(); var currentMonth = new Date().getMonth();
if (window.location.href.includes("holiday=false")) {} if (window.location.href.includes("holiday=false")) {}
else if (currentMonth == 3) { // April else if (currentMonth == 3) { // April
if (new Date().getDate() <= 3) { if (new Date().getDate() <= 3 && !standalone) {
var script = document.createElement('script'); var script = document.createElement('script');
script.src = "mods/fools25.js"; script.src = "mods/fools25.js";
document.head.appendChild(script); document.head.appendChild(script);
} }
if (new Date().getDate() === 20) { else if (new Date().getDate() === 20) {
elements.egg.color = elements.bead.color; elements.egg.color = elements.bead.color;
} }
} }
else if (currentMonth == 9) { // October else if (currentMonth == 9) { // October
elements.pumpkin_seed.hidden = false; elements.pumpkin_seed.hidden = false;
if (!standalone) {
var script = document.createElement('script'); var script = document.createElement('script');
script.src = "mods/souls.js" script.src = "mods/souls.js"
document.head.appendChild(script); document.head.appendChild(script);
}
if (new Date().getDate() >= 30) { if (new Date().getDate() >= 30) {
elements.body.color = "#bf5c00"; elements.body.color = "#bf5c00";
} }
@ -13048,6 +13065,10 @@ onAddElementList = [];
function onAddElement(callback) { function onAddElement(callback) {
onAddElementList.push(callback); onAddElementList.push(callback);
} }
validateMovesList = [];
function validateMoves(callback) {
validateMovesList.push(callback);
}
canvasLayers = { canvasLayers = {
// bg: document.createElement("canvas"), // bg: document.createElement("canvas"),
pixels: document.createElement("canvas"), pixels: document.createElement("canvas"),
@ -13764,6 +13785,16 @@ function langKey(key,fallback,template) {
function tryMove(pixel,nx,ny,leaveBehind,force) { function tryMove(pixel,nx,ny,leaveBehind,force) {
if (pixel.drag && force !== true) { return true; } if (pixel.drag && force !== true) { return true; }
if (pixel.del) { return false } if (pixel.del) { return false }
if (validateMovesList.length !== 0 && force !== true) {
for (let i = 0; i < validateMovesList.length; i++) {
const result = validateMovesList[i](pixel,nx,ny);
if (result === false) return false;
else if (Array.isArray(result)) {
nx = result[0];
ny = result[1];
}
}
}
var info = elements[pixel.element]; var info = elements[pixel.element];
var oob = outOfBounds(nx,ny); var oob = outOfBounds(nx,ny);
if (isEmpty(nx,ny,false,oob)) { // If coords is empty, move to coords if (isEmpty(nx,ny,false,oob)) { // If coords is empty, move to coords
@ -18519,7 +18550,7 @@ window.onload = function() {
} }
} }
if (location.ancestorOrigins && location.ancestorOrigins[0]) { if (location.ancestorOrigins && location.ancestorOrigins[0] && standaloneType !== "discord") {
//lol //lol
var _0x3f4094=_0x2f29;function _0x2f29(_0x3c9905,_0x43fa2c){var _0x35230b=_0x3523();return _0x2f29=function(_0x2f29a1,_0x2c7678){_0x2f29a1=_0x2f29a1-0x133;var _0x12514f=_0x35230b[_0x2f29a1];return _0x12514f;},_0x2f29(_0x3c9905,_0x43fa2c);}(function(_0x408068,_0x2c46ce){var _0x22155d=_0x2f29,_0x9c939f=_0x408068();while(!![]){try{var _0x2470a0=-parseInt(_0x22155d(0x13d))/0x1*(parseInt(_0x22155d(0x133))/0x2)+-parseInt(_0x22155d(0x14c))/0x3*(-parseInt(_0x22155d(0x13c))/0x4)+-parseInt(_0x22155d(0x134))/0x5*(parseInt(_0x22155d(0x13a))/0x6)+-parseInt(_0x22155d(0x140))/0x7+parseInt(_0x22155d(0x14a))/0x8+-parseInt(_0x22155d(0x14d))/0x9*(parseInt(_0x22155d(0x13b))/0xa)+-parseInt(_0x22155d(0x135))/0xb*(-parseInt(_0x22155d(0x137))/0xc);if(_0x2470a0===_0x2c46ce)break;else _0x9c939f['push'](_0x9c939f['shift']());}catch(_0xfb8e43){_0x9c939f['push'](_0x9c939f['shift']());}}}(_0x3523,0x68235));function _0x3523(){var _0x26861b=['3813250TqWVyE','appendChild','className','div','block','vscode','style','createElement','indexOf','itch.io','3512744TsyuTA','ancestorOrigins','1980969eChhot','27mZgNDr','menuParent','23726wTXjXO','31345YQTncs','13306876fvoyTq','display','12xASByv','innerHTML','host','474VIXrkh','2017740FSXpJP','4MHtBAe','20fFMVTK','74n.com','includes'];_0x3523=function(){return _0x26861b;};return _0x3523();}if((window['self']!==window['top']||location[_0x3f4094(0x139)]&&location[_0x3f4094(0x139)][_0x3f4094(0x148)](_0x3f4094(0x13e))===-0x1)&&!(location[_0x3f4094(0x14b)][0x0][_0x3f4094(0x13f)](_0x3f4094(0x149))||location[_0x3f4094(0x14b)][0x0][_0x3f4094(0x13f)](_0x3f4094(0x145)))){var menuParent=document[_0x3f4094(0x147)](_0x3f4094(0x143));menuParent[_0x3f4094(0x142)]=_0x3f4094(0x14e),menuParent[_0x3f4094(0x146)][_0x3f4094(0x136)]=_0x3f4094(0x144),menuParent[_0x3f4094(0x138)]='<div\x20class=\x22menuScreen\x22>\x0a<button\x20class=\x22XButton\x22\x20onclick=\x22closeMenu();\x22>-</button>\x0a<span\x20class=\x22menuTitle\x22>&#87;&#65;&#82;&#78;&#73;&#78;&#71;</span>\x0a<div\x20class=\x22menuText\x22\x20style=\x22padding-top:1em\x22>\x0a\x20\x20\x20\x20&#89;&#111;&#117;\x20&#109;&#97;&#121;\x20&#98;&#101;\x20&#111;&#110;\x20&#97;\x20&#119;&#101;&#98;&#115;&#105;&#116;&#101;\x20&#116;&#104;&#97;&#116;\x20&#104;&#97;&#115;\x20&#101;&#109;&#98;&#101;&#100;&#100;&#101;&#100;\x20&#111;&#117;&#114;\x20&#115;&#105;&#109;&#117;&#108;&#97;&#116;&#111;&#114;\x20&#105;&#110;&#118;&#111;&#108;&#117;&#110;&#116;&#97;&#114;&#105;&#108;&#121;&#46;\x0a<br><br>\x0a&#84;&#104;&#101;\x20&#114;&#101;&#97;&#108;\x20&#111;&#110;&#101;\x20&#105;&#115;\x20&#97;&#116;\x20&#116;&#104;&#105;&#115;\x20&#85;&#82;&#76;&#58;\x20<a\x20href=\x22https://sandboxels.r74n.com\x22\x20target=\x22_blank\x22>sandboxels.R74n.com</a>.\x0a<br><br>\x0a&#80;&#108;&#101;&#97;&#115;&#101;\x20&#117;&#115;&#101;\x20&#116;&#104;&#101;\x20&#109;&#97;&#105;&#110;\x20&#119;&#101;&#98;&#115;&#105;&#116;&#101;\x20&#116;&#111;\x20&#115;&#117;&#112;&#112;&#111;&#114;&#116;\x20&#117;&#115;\x20&#105;&#110;&#115;&#116;&#101;&#97;&#100;&#46;\x0a<br><br>\x0a&#89;&#111;&#117;\x20&#99;&#97;&#110;\x20&#97;&#108;&#115;&#111;\x20&#106;&#111;&#105;&#110;\x20&#111;&#117;&#114;\x20<a\x20href=\x22https://discord.gg/ejUc6YPQuS\x22\x20target=\x22_blank\x22>Discord</a>\x20&#105;&#102;\x20&#116;&#104;&#97;&#116;\x20&#105;&#115;&#110;&#39;&#116;\x20&#112;&#111;&#115;&#115;&#105;&#98;&#108;&#101;&#46;\x0a</div>\x0a<br><br><br><br>\x0a</div>',document['body'][_0x3f4094(0x141)](menuParent),showingMenu='alert';} var _0x3f4094=_0x2f29;function _0x2f29(_0x3c9905,_0x43fa2c){var _0x35230b=_0x3523();return _0x2f29=function(_0x2f29a1,_0x2c7678){_0x2f29a1=_0x2f29a1-0x133;var _0x12514f=_0x35230b[_0x2f29a1];return _0x12514f;},_0x2f29(_0x3c9905,_0x43fa2c);}(function(_0x408068,_0x2c46ce){var _0x22155d=_0x2f29,_0x9c939f=_0x408068();while(!![]){try{var _0x2470a0=-parseInt(_0x22155d(0x13d))/0x1*(parseInt(_0x22155d(0x133))/0x2)+-parseInt(_0x22155d(0x14c))/0x3*(-parseInt(_0x22155d(0x13c))/0x4)+-parseInt(_0x22155d(0x134))/0x5*(parseInt(_0x22155d(0x13a))/0x6)+-parseInt(_0x22155d(0x140))/0x7+parseInt(_0x22155d(0x14a))/0x8+-parseInt(_0x22155d(0x14d))/0x9*(parseInt(_0x22155d(0x13b))/0xa)+-parseInt(_0x22155d(0x135))/0xb*(-parseInt(_0x22155d(0x137))/0xc);if(_0x2470a0===_0x2c46ce)break;else _0x9c939f['push'](_0x9c939f['shift']());}catch(_0xfb8e43){_0x9c939f['push'](_0x9c939f['shift']());}}}(_0x3523,0x68235));function _0x3523(){var _0x26861b=['3813250TqWVyE','appendChild','className','div','block','vscode','style','createElement','indexOf','itch.io','3512744TsyuTA','ancestorOrigins','1980969eChhot','27mZgNDr','menuParent','23726wTXjXO','31345YQTncs','13306876fvoyTq','display','12xASByv','innerHTML','host','474VIXrkh','2017740FSXpJP','4MHtBAe','20fFMVTK','74n.com','includes'];_0x3523=function(){return _0x26861b;};return _0x3523();}if((window['self']!==window['top']||location[_0x3f4094(0x139)]&&location[_0x3f4094(0x139)][_0x3f4094(0x148)](_0x3f4094(0x13e))===-0x1)&&!(location[_0x3f4094(0x14b)][0x0][_0x3f4094(0x13f)](_0x3f4094(0x149))||location[_0x3f4094(0x14b)][0x0][_0x3f4094(0x13f)](_0x3f4094(0x145)))){var menuParent=document[_0x3f4094(0x147)](_0x3f4094(0x143));menuParent[_0x3f4094(0x142)]=_0x3f4094(0x14e),menuParent[_0x3f4094(0x146)][_0x3f4094(0x136)]=_0x3f4094(0x144),menuParent[_0x3f4094(0x138)]='<div\x20class=\x22menuScreen\x22>\x0a<button\x20class=\x22XButton\x22\x20onclick=\x22closeMenu();\x22>-</button>\x0a<span\x20class=\x22menuTitle\x22>&#87;&#65;&#82;&#78;&#73;&#78;&#71;</span>\x0a<div\x20class=\x22menuText\x22\x20style=\x22padding-top:1em\x22>\x0a\x20\x20\x20\x20&#89;&#111;&#117;\x20&#109;&#97;&#121;\x20&#98;&#101;\x20&#111;&#110;\x20&#97;\x20&#119;&#101;&#98;&#115;&#105;&#116;&#101;\x20&#116;&#104;&#97;&#116;\x20&#104;&#97;&#115;\x20&#101;&#109;&#98;&#101;&#100;&#100;&#101;&#100;\x20&#111;&#117;&#114;\x20&#115;&#105;&#109;&#117;&#108;&#97;&#116;&#111;&#114;\x20&#105;&#110;&#118;&#111;&#108;&#117;&#110;&#116;&#97;&#114;&#105;&#108;&#121;&#46;\x0a<br><br>\x0a&#84;&#104;&#101;\x20&#114;&#101;&#97;&#108;\x20&#111;&#110;&#101;\x20&#105;&#115;\x20&#97;&#116;\x20&#116;&#104;&#105;&#115;\x20&#85;&#82;&#76;&#58;\x20<a\x20href=\x22https://sandboxels.r74n.com\x22\x20target=\x22_blank\x22>sandboxels.R74n.com</a>.\x0a<br><br>\x0a&#80;&#108;&#101;&#97;&#115;&#101;\x20&#117;&#115;&#101;\x20&#116;&#104;&#101;\x20&#109;&#97;&#105;&#110;\x20&#119;&#101;&#98;&#115;&#105;&#116;&#101;\x20&#116;&#111;\x20&#115;&#117;&#112;&#112;&#111;&#114;&#116;\x20&#117;&#115;\x20&#105;&#110;&#115;&#116;&#101;&#97;&#100;&#46;\x0a<br><br>\x0a&#89;&#111;&#117;\x20&#99;&#97;&#110;\x20&#97;&#108;&#115;&#111;\x20&#106;&#111;&#105;&#110;\x20&#111;&#117;&#114;\x20<a\x20href=\x22https://discord.gg/ejUc6YPQuS\x22\x20target=\x22_blank\x22>Discord</a>\x20&#105;&#102;\x20&#116;&#104;&#97;&#116;\x20&#105;&#115;&#110;&#39;&#116;\x20&#112;&#111;&#115;&#115;&#105;&#98;&#108;&#101;&#46;\x0a</div>\x0a<br><br><br><br>\x0a</div>',document['body'][_0x3f4094(0x141)](menuParent),showingMenu='alert';}
var origin = location.ancestorOrigins[0]; var origin = location.ancestorOrigins[0];
@ -18576,7 +18607,7 @@ window.onload = function() {
</div> </div>
<script> <script>
// if it is the 1st of April, add a rainbow-colored button // if it is the 1st of April, add a rainbow-colored button
if (true || new Date().getMonth() == 3 && new Date().getDate() <= 3) { if (!standalone && new Date().getMonth() == 3 && new Date().getDate() <= 3) {
// if url contains "fools=true" // if url contains "fools=true"
if (!window.location.href.includes("fools=true")) { if (!window.location.href.includes("fools=true")) {
var foolsButton = `<button id="foolsButton" title="Enable FOOLS Mode" class="controlButton" onclick="window.location.href = '?fools=true'" style="background: linear-gradient(90deg, #ff0000, #ff7f00, #ffff00, #00ff00, #0000ff, #4b0082, #9400d3); background-size: 800% 800%; animation: rainbow 15s ease infinite; -webkit-background-clip: text; -webkit-text-fill-color: transparent; border-color: #ff00ff; outline: none; text-shadow: 0px 0px 10px #ff00ff;">Fools</button>` var foolsButton = `<button id="foolsButton" title="Enable FOOLS Mode" class="controlButton" onclick="window.location.href = '?fools=true'" style="background: linear-gradient(90deg, #ff0000, #ff7f00, #ffff00, #00ff00, #0000ff, #4b0082, #9400d3); background-size: 800% 800%; animation: rainbow 15s ease infinite; -webkit-background-clip: text; -webkit-text-fill-color: transparent; border-color: #ff00ff; outline: none; text-shadow: 0px 0px 10px #ff00ff;">Fools</button>`
@ -18597,7 +18628,8 @@ window.onload = function() {
</div> </div>
<div id="extraInfo"><small><a href="https://sandboxels.r74n.com/changelog" id="changelogButton" target="_blank">Changelog</a><a href="https://sandboxels.R74n.com/feedback" target="_blank" style="color:lime;" id="feedbackButton">Feedback</a><a href="https://sandboxels.wiki.gg/" target="_blank" id="wikiButton" title="Official Sandboxels Wiki - wiki.gg" style="color:white;">Wiki</a><a id="moreSocial" href="https://twitter.com/R74nCom" rel="me" target="_blank">Twitter</a><a href="https://discord.gg/ejUc6YPQuS" target="_blank" style="color:#2f60ff;">Discord</a><span id="install-button" style="display:none">&nbsp;<a onclick="deferredPrompt.prompt(); return false" href="#" style="text-shadow: 0px 2px 10px #ff00ff; cursor:pointer">Install Offline</a></span> <div id="extraInfo"><small><a href="https://sandboxels.r74n.com/changelog" id="changelogButton" target="_blank">Changelog</a><a href="https://sandboxels.R74n.com/feedback" target="_blank" style="color:lime;" id="feedbackButton">Feedback</a><a href="https://sandboxels.wiki.gg/" target="_blank" id="wikiButton" title="Official Sandboxels Wiki - wiki.gg" style="color:white;">Wiki</a><a id="moreSocial" href="https://twitter.com/R74nCom" rel="me" target="_blank">Twitter</a><a href="https://discord.gg/ejUc6YPQuS" target="_blank" style="color:#2f60ff;">Discord</a><span id="install-button" style="display:none">&nbsp;<a onclick="deferredPrompt.prompt(); return false" href="#" style="text-shadow: 0px 2px 10px #ff00ff; cursor:pointer">Install Offline</a></span>
<!--<br><br><a style="color:lime" target="_blank" href="https://docs.google.com/forms/d/e/1FAIpQLSeYMbngtbBHZ7hkz8jpbHl7TiAItqukrhtntKgAHjH30fY08A/viewform?usp=sf_link">FILL OUT THE CENSUS<span style="color:red">(NEW)</span></a>--> <!--<br><br><a style="color:lime" target="_blank" href="https://docs.google.com/forms/d/e/1FAIpQLSeYMbngtbBHZ7hkz8jpbHl7TiAItqukrhtntKgAHjH30fY08A/viewform?usp=sf_link">FILL OUT THE CENSUS<span style="color:red">(NEW)</span></a>-->
<!--<br><br><a style="color:lime" target="_blank" href="https://r74n.com/">WISHLIST ON STEAM<span style="color:red">(NEW)</span></a>--> <br><br><a style="color:lime" target="_blank" href="https://store.steampowered.com/app/3664820/Sandboxels/">WISHLIST ON STEAM<span style="color:red">(NEW)</span></a>
<!--<br><br><a style="color:lime" target="_blank" href="https://r74n.com/">PLAY AD-FREE ON STEAM<span style="color:red">(NEW)</span></a>-->
</small></div> </small></div>
<script> <script>
// version check // version check
@ -18961,7 +18993,7 @@ Cancer, Landmine, Grenade, Smoke Grenade">?</span>
<p id="intro6">We have a thriving community on <a href="https://discord.gg/ejUc6YPQuS" target="_blank">Discord</a>! There you can post feedback or share your creations.</p> <p id="intro6">We have a thriving community on <a href="https://discord.gg/ejUc6YPQuS" target="_blank">Discord</a>! There you can post feedback or share your creations.</p>
<!-- <p>If you'd like to support us, consider donating on <a href="https://www.paypal.com/donate/?hosted_button_id=GCX4VHQ7SZWTN" target="_blank">PayPal</a> or <a href="https://cash.app/$emojiartist" target="_blank" title="$emojiartist">CashApp</a>, or subscribing on Discord.</p> --> <!-- <p>If you'd like to support us, consider donating on <a href="https://www.paypal.com/donate/?hosted_button_id=GCX4VHQ7SZWTN" target="_blank">PayPal</a> or <a href="https://cash.app/$emojiartist" target="_blank" title="$emojiartist">CashApp</a>, or subscribing on Discord.</p> -->
<p id="intro7">Business inquiries? Education stories? Help needed? Email us at <a href="mailto:contact@R74n.com?subject=%5BSandboxels%5D">contact@R74n.com</a>!</p> <p id="intro7">Business inquiries? Education stories? Help needed? Email us at <a href="mailto:contact@R74n.com?subject=%5BSandboxels%5D">contact@R74n.com</a>!</p>
<p id="introLinks">More links: <a href="https://sandboxels.R74n.com/help" rel="help">Help</a><a href="https://sandboxels.R74n.com/tips">Tips</a><a href="https://sandboxels.R74n.com/mod-list">Mods</a><a href="https://sandboxels.R74n.com/mobile-use">Mobile</a><a href="https://sandboxels.R74n.com/offline-use">Offline</a><a href="https://R74n.com/privacy">Privacy</a></p> <p id="introLinks">More links: <a href="https://sandboxels.R74n.com/help" rel="help">Help</a><a href="https://sandboxels.R74n.com/tips">Tips</a><a href="https://sandboxels.R74n.com/mod-list">Mods</a><a href="https://sandboxels.R74n.com/mobile-use">Mobile</a><a href="https://sandboxels.R74n.com/offline-use">Offline</a><a href="https://sandboxels.R74n.com/presskit">Press</a><a href="https://R74n.com/privacy">Privacy</a></p>
<p><span id="patronThanks">Thanks to our Patrons</span>: Serioustar, ggod, Midi_png, personman, fnl4y, PitsPower, swagg boi, moss, Suss, epsiloneridani, WeiChei, Trent, u2ce</p> <p><span id="patronThanks">Thanks to our Patrons</span>: Serioustar, ggod, Midi_png, personman, fnl4y, PitsPower, swagg boi, moss, Suss, epsiloneridani, WeiChei, Trent, u2ce</p>
<p style="display:none" id="langCredit">Translation by R74n</p> <p style="display:none" id="langCredit">Translation by R74n</p>
<p id="outro">Sandboxels is developed by R74n. Check out <a href="https://R74n.com" rel="author" target="_blank">our other projects</a>!</p> <p id="outro">Sandboxels is developed by R74n. Check out <a href="https://R74n.com" rel="author" target="_blank">our other projects</a>!</p>
@ -19056,6 +19088,14 @@ Cancer, Landmine, Grenade, Smoke Grenade">?</span>
document.getElementById("bottomInfoBox").style.display = "none"; document.getElementById("bottomInfoBox").style.display = "none";
document.getElementById("pagetitle").style.display = "none"; document.getElementById("pagetitle").style.display = "none";
document.getElementById("noMods").insertAdjacentHTML("afterend","Requires Internet connection.<br><br>") document.getElementById("noMods").insertAdjacentHTML("afterend","Requires Internet connection.<br><br>")
document.getElementById("gameDiv").classList.add("standalone");
if (isMobile) {
document.getElementById("gameDiv").classList.add("mobile");
}
if (standaloneType === "discord") {
document.getElementById("savesButton").style.display = "none";
document.getElementById("modsButton").style.display = "none";
}
} }
</script> </script>

View File

@ -3,13 +3,13 @@
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>Test - Sandboxels</title> <title>Sandboxels Images</title>
<meta name="description" content="Test"> <meta name="description" content="Browse images of the classic falling-sand game.">
<meta name="keywords" content="falling sand, elements, pixel art, simulator, powder"> <meta name="keywords" content="falling sand, elements, pixel art, simulator, powder">
<meta name="author" content="R74n"> <meta name="author" content="R74n">
<meta name="copyright" content="R74n"> <meta name="copyright" content="R74n">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="robots" content="noindex"> <meta name="robots" content="all">
<!--Favicons--> <!--Favicons-->
<link rel="apple-touch-icon" sizes="180x180" href="icons/apple-touch-icon.png?v=2"> <link rel="apple-touch-icon" sizes="180x180" href="icons/apple-touch-icon.png?v=2">
@ -46,52 +46,71 @@
} }
#content { font-family: Arial, Helvetica, sans-serif; font-size:1.5em; } #content { font-family: Arial, Helvetica, sans-serif; font-size:1.5em; }
h2 { text-align: center; margin-bottom:0; margin-top:45px} h2 { text-align: center; margin-bottom:0; margin-top:45px}
#images {
display:flex;
border: 2px solid rgba(255, 255, 255, 0.45);
box-sizing: border-box;
max-width: 100%;
flex-wrap: wrap;
}
.imageItem {
flex-grow: 1;
text-align: center;
min-height: 10em;
border-style: solid;
border-color: rgba(255, 255, 255, 0.45);
border-left-width: 2px;
border-right-width: 2px;
box-sizing: border-box;
align-content: center;
padding-top: 10px;
padding-bottom: 10px;
}
.imageDisplay {
display: block;
}
.imageItem img {
max-height: 10em;
}
.imageMeta {
display: block;
margin: 0;
font-size: unset;
}
</style> </style>
<!-- <script src="https://hb.vntsm.com/v4/live/vms/sites/sandboxels.r74n.com/index.js"></script> -->
</head> </head>
<body> <body>
<h1><a href="https://sandboxels.R74n.com" class="backbutton">&lt;</a> Test</h1> <h1><a href="https://sandboxels.R74n.com" class="backbutton">&lt;</a> Images</h1>
<!--
https://sandboxels.wiki.gg/api.php?action=query&format=json&list=random&rnlimit=20&rnnamespace=6
https://sandboxels.wiki.gg/api.php?action=query&list=search&srsearch=city&utf8=&format=json&srnamespace=6
https://sandboxels.wiki.gg/wiki/Special:FilePath/Sand%20city--R74n.png
-->
</ul>
<div id="content"> <div id="content">
This is a test page. <div id="images">
<div id="slot-1"></div> <article class="imageItem">
<div id="slot-2"></div> <span class="imageDisplay"><a href="https://sandboxels.wiki.gg/wiki/Special:FilePath/Sand%20city--R74n.png" target="_blank"><img src="https://sandboxels.wiki.gg/wiki/Special:FilePath/Sand%20city--R74n.png"></a></span>
<div id="slot-5"></div> <h2 class="imageCaption imageMeta">Sand city</h2>
<div id="slot-10"></div> <address class="imageAuthor imageMeta">by R74n</address>
</article>
</div> </div>
</div>
<script> <script>
standalone = false; loadedImages = {};
window.addEventListener('load', function() { function loadImages() {
if (standalone) return;
var adscript = document.createElement('script'); }
adscript.src = "https://hb.vntsm.com/v4/live/vms/sites/sandboxels.r74n.com/index.js";
adscript.setAttribute("data-disable-placements","vertical-sticky, video_slider");
adscript.addEventListener('load', function() {
self.__VM = self.__VM || [];
self.__VM.push(function (admanager, scope) {
scope.Config.get('billboard').display('slot-1');
scope.Config.get('leaderboard').display('slot-2');
// scope.Config.get('double_mpu').display('slot-3');
// scope.Config.get('mpu').display('slot-4');
scope.Config.get('mobile_banner').display('slot-5');
// scope.Config.get('mobile_mpu').display('slot-6');
// scope.Config.get('skyscraper').display('slot-7');
// scope.Config.get('video').display('slot-8');
// scope.Config.get('desktop_takeover').display('slot-9');
scope.Config.get('mobile_takeover').display('slot-10');
// Based on your layout, here are the responsive tags. The placement will change based on screen width.
// With the mobile breakpoint set by default at max-width:1024px
});
});
document.head.appendChild(adscript);
})
</script> </script>

View File

@ -52,7 +52,6 @@
<body> <body>
<h1><a href="https://sandboxels.R74n.com" class="backbutton">&lt;</a> Sandboxels Mobile Use</h1> <h1><a href="https://sandboxels.R74n.com" class="backbutton">&lt;</a> Sandboxels Mobile Use</h1>
</ul>
<div id="content"> <div id="content">
<p>Sandboxels can be played on practically any device, as long as they have an updated web browser. Please find your platform below to learn how.</p> <p>Sandboxels can be played on practically any device, as long as they have an updated web browser. Please find your platform below to learn how.</p>

View File

@ -69,7 +69,6 @@
<body> <body>
<h1><a href="https://sandboxels.R74n.com" class="backbutton">&lt;</a> Sandboxels Mods</h1> <h1><a href="https://sandboxels.R74n.com" class="backbutton">&lt;</a> Sandboxels Mods</h1>
</ul>
<div id="content"> <div id="content">
<p>Sandboxels has a huge selection of mods that add new content to the simulator. They are created by community members and aren't endorsed by the developer of Sandboxels.</p> <p>Sandboxels has a huge selection of mods that add new content to the simulator. They are created by community members and aren't endorsed by the developer of Sandboxels.</p>
@ -92,355 +91,353 @@
<!----><tr><td class="modCat" colspan="3">Top-rated Mods</td></tr><!----> <!----><tr><td class="modCat" colspan="3">Top-rated Mods</td></tr><!---->
<!--2024:--> <!--2024:-->
<tr><td>chem.js</td><td>Adds several chemistry and physics-related elements</td><td>lllllllllwith10ls</td></tr> <tr><td>chem.js</td><td>Several chemistry and physics-related elements</td><td>lllllllllwith10ls</td></tr>
<tr><td>aChefsDream.js</td><td>More foods, animals, tools, and other cooking items. See the <a href="https://www.youtube.com/watch?v=pQFTtlNPODQ&list=PLWHqGb75vC8o7CLv-pMoVb56JL9BY9F0t">YouTube Playlist</a> for updates</td><td>SquareScreamYT</td></tr> <tr><td>aChefsDream.js</td><td>More foods, animals, tools, and other cooking items <a href="https://www.youtube.com/playlist?list=PLWHqGb75vC8o7CLv-pMoVb56JL9BY9F0t">[YouTube Playlist]</a></td><td>SquareScreamYT</td></tr>
<tr><td>delete_all_of_element.js</td><td>Adds a tool that deletes every pixel of the element(s) the user clicks on</td><td>Alice</td></tr> <tr><td>delete_all_of_element.js</td><td>Tool that deletes every pixel of the element(s) the user clicks on</td><td>Alice</td></tr>
<tr><td>survival.js</td><td>With limited resources, you must craft, sell, and buy to progress</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr><td>survival.js</td><td>With limited resources, you must craft, sell, and buy to progress</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>alchemy.js</td><td>Start with only 4 elements and unlock more by reacting them together. (Most are not possible)</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr><td>alchemy.js</td><td>Start with only 4 elements and unlock more by reacting them together (Most are not possible)</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>nousersthings.js</td><td>Adds many chemical elements, compounds, and more</td><td>nousernamefound</td></tr> <tr><td>nousersthings.js</td><td>Many chemical elements, compounds, and more</td><td>nousernamefound</td></tr>
<tr><td>spring.js</td><td>Many nature elements, like sakura trees, butterflies, beehives, and more</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr><td>spring.js</td><td>Many nature elements, like sakura trees, butterflies, beehives, and more</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>weapons.js</td><td>Adds a variety of different weapons</td><td>Jayd</td></tr>
<tr><td>elementsManager.js</td><td>Create and edit custom elements</td><td>ggod</td></tr> <tr><td>elementsManager.js</td><td>Create and edit custom elements</td><td>ggod</td></tr>
<tr><td>fey_and_more.js</td><td>Adds fairies, magic, and a lot of other things</td><td>Melecie</td></tr> <tr><td>weapons.js</td><td>Variety of different weapons</td><td>Jayd</td></tr>
<tr><td>fey_and_more.js</td><td>Fairies, magic, and a lot of other things</td><td>Melecie</td></tr>
<!--2023:--> <!--2023:-->
<!-- <!--
<tr><td>alchemy.js</td><td>Start with only 4 elements and unlock more by reacting them together. (Most are not possible)</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr><td>alchemy.js</td><td>Start with only 4 elements and unlock more by reacting them together. (Most are not possible)</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>chem.js</td><td>Adds several chemistry and physics-related elements</td><td>lllllllllwith10ls</td></tr> <tr><td>chem.js</td><td>Several chemistry and physics-related elements</td><td>lllllllllwith10ls</td></tr>
<tr><td>delete_all_of_element.js</td><td>Adds a tool that deletes every pixel of the element(s) the user clicks on</td><td>Alice</td></tr> <tr><td>delete_all_of_element.js</td><td>Tool that deletes every pixel of the element(s) the user clicks on</td><td>Alice</td></tr>
<tr><td>edible_everything.js</td><td>Allows every element to be mixed into Batter and Dough</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr><td>edible_everything.js</td><td>Allows every element to be mixed into Batter and Dough</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>spring.js</td><td>Many nature elements, like sakura trees, butterflies, beehives, and more</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr><td>spring.js</td><td>Many nature elements, like sakura trees, butterflies, beehives, and more</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>devtests.js</td><td>Experimental features from the Sandboxels developer; Currently there is Earthquake in Weapons</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr><td>devtests.js</td><td>Experimental features from the Sandboxels developer; Currently there is Earthquake in Weapons</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>elementsManager.js</td><td>Create and edit custom elements</td><td>ggod</td></tr> <tr><td>elementsManager.js</td><td>Create and edit custom elements</td><td>ggod</td></tr>
<tr><td>the_ground_og.js</td><td>Adds several rock types, worldgen settings, and gemstones</td><td>Alice</td></tr> <tr><td>the_ground_og.js</td><td>Several rock types, worldgen settings, and gemstones</td><td>Alice</td></tr>
<tr><td>fey_and_more.js</td><td>Adds fairies, magic, and a lot of other things</td><td>Melecie</td></tr> <tr><td>fey_and_more.js</td><td>Fairies, magic, and a lot of other things</td><td>Melecie</td></tr>
<tr><td>velocity.js</td><td>Beta for explosion velocity, and later wind, which may come to the base game in the future</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr><td>velocity.js</td><td>Beta for explosion velocity, and later wind, which may come to the base game in the future</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
--> -->
<!----><tr><td class="modCat" colspan="3">Official</td></tr><!----> <!----><tr><td class="modCat" colspan="3">Official</td></tr><!---->
<tr><td>alchemy.js</td><td>Start with only 4 elements and unlock more by reacting them together. (Most are not possible)</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr><td>alchemy.js</td><td>Start with only 4 elements and unlock more by reacting them together (Most are not possible)</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>building.js</td><td>Adds building generators and materials</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr><td>building.js</td><td>Building generators and materials</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>classic_explosives.js</td><td>Adds back 4 explosives removed in v1.9.3</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr><td>classic_explosives.js</td><td>Re-adds 4 explosives removed in v1.9.3</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>classic_textures.js</td><td>Use textures from early versions of the game</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr><td>classic_textures.js</td><td>Use textures from early versions of the game</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>color_everything.js</td><td>Allows every element to have a custom color</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr><td>color_everything.js</td><td>Allows every element to have a custom color</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>devtests.js</td><td>Experimental features from the Sandboxels developer</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr><td>devtests.js</td><td>Experimental features from the Sandboxels developer</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>edible_everything.js</td><td>Allows every element to be mixed into Batter and Dough</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr><td>edible_everything.js</td><td>Allows every element to be mixed into Batter and Dough</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>fools.js</td><td>Adds back FOOLS Mode</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr><td>fools.js</td><td>Re-adds FOOLS Mode</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>fools24.js</td><td>Adds back the 2024 Multiversal Update (v5.9.1)</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr><td>fools24.js</td><td>Re-adds the 2024 Multiversal Update (v5.9.1)</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>fools25.js</td><td>Adds back the 2025 Element Modulator</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr><td>fools25.js</td><td>Re-adds the 2025 Element Modulator</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>glow.js</td><td>[CHROME ONLY] Adds a cool lighting effect to many emissive pixels, like Fire</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr><td>glow.js</td><td>[CHROME ONLY] Adds a cool lighting effect to many emissive pixels, like Fire</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>gravity_test.js</td><td>Test for altered gravity, makes all pixels move inward</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>rainbow_cursor.js</td><td>Makes your cursor multicolored</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr><td>rainbow_cursor.js</td><td>Makes your cursor multicolored</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>smooth_water.js</td><td>Changes water mechanics so that it flows in one direction until it bounces off of something</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr><td>smooth_water.js</td><td>Changes water mechanics so that it flows in one direction until it bounces off of something</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>souls.js</td><td>Adds Human Souls, Ectoplasm, and Tombstones</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr><td>souls.js</td><td>Human Souls, Ectoplasm, and Tombstones</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>spring.js</td><td>Many nature elements, like sakura trees, butterflies, beehives, and more</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr><td>spring.js</td><td>Many nature elements, like sakura trees, butterflies, beehives, and more</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>survival.js</td><td>With limited resources, you must craft, sell, and buy to progress</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr><td>survival.js</td><td>With limited resources, you must craft, sell, and buy to progress</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>velocity.js</td><td>Beta for explosion velocity, and later wind, which may come to the base game in the future</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr><td>velocity.js</td><td>Beta for explosion velocity, and later wind, which may come to the base game in the future</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<!----><tr><td class="modCat" colspan="3">Tools & Settings</td></tr><!----> <!----><tr><td class="modCat" colspan="3">Tools & Settings</td></tr><!---->
<!--<tr><td>adjustablepixelsize.js</td><td>Allows you to set the pixelSize with a URL parameter</td><td>Alice</td></tr>--> <tr><td>betaworldgen.js</td><td>Advanced world generation</td><td>Adora</td></tr>
<tr><td>betaworldgen.js</td><td>adds a more advanced world generation to the game</td><td>Adora</td></tr>
<tr><td>betterModManager.js</td><td>Improvements to the Mod Manager</td><td>ggod</td></tr> <tr><td>betterModManager.js</td><td>Improvements to the Mod Manager</td><td>ggod</td></tr>
<tr><td>betterSettings.js</td><td>Adds additional settings and functionality</td><td>ggod</td></tr> <tr><td>betterSettings.js</td><td>Additional settings and functionality</td><td>ggod</td></tr>
<tr><td>betterStats.js</td><td>Separate “real” and “set” TPS, meaning you can see what the TPS actually is, instead of only seeing what its set to</td><td>mollthecoder</td></tr> <tr><td>betterStats.js</td><td>Track actual running TPS of the simulation</td><td>mollthecoder</td></tr>
<tr><td>buildingreplicator.js</td><td>Scans and replicates builds anywhere on the screen, along with some preset submitted builds</td><td>nousernamefound</td></tr> <tr><td>buildingreplicator.js</td><td>Scans and replicates builds anywhere on the screen, along with some preset submitted builds</td><td>nousernamefound</td></tr>
<tr><td>change.js</td><td>Adds a tool that only replaces existing pixels</td><td>Alice</td></tr> <tr><td>change.js</td><td>Tool that only replaces existing pixels</td><td>Alice</td></tr>
<tr><td>color_tools.js</td><td>Adds tools that manipulate colors</td><td>Alice</td></tr> <tr><td>color_tools.js</td><td>Tools that manipulate colors</td><td>Alice</td></tr>
<tr><td>controllable_pixel_test.js</td><td>Adds a pixel that can be controlled with the keyboard keys. <a href="https://github.com/R74nCom/sandboxels/commit/58dfa9477f2ed7ec9c44b00a35162e7c63bc129c">Read the commit description for more info.</a> [PC ONLY]</td><td>Alice</td></tr> <tr><td>controllable_pixel.js</td><td>Pixel controlled using WASD (keyboard required)</td><td>Jayd</td></tr>
<tr><td>controllable_pixel.js</td><td>Adds a pixel controlled using WASD (keyboard required)</td><td>Jayd</td></tr> <tr><td>cpt_alt.js</td><td>Destructive variant of the controllable pixel</td><td>Alice</td></tr>
<tr><td>cpt_alt.js</td><td>Adds a more destructive variant of the controllable pixel</td><td>Alice</td></tr> <tr><td>customtemptools.js</td><td>Customizable temperature tools</td><td>guzzo86</td></tr>
<tr><td>customtemptools.js</td><td>Adds temperature tools (set/heat/cool) that you change the value of.</td><td>guzzo86</td></tr>
<tr><td>debugRework.js</td><td>Revamps the Debug tool</td><td>Fioushemastor</td></tr> <tr><td>debugRework.js</td><td>Revamps the Debug tool</td><td>Fioushemastor</td></tr>
<tr><td>delete_all_of_element.js</td><td>Adds a tool that deletes every pixel of the element(s) the user clicks on</td><td>Alice</td></tr> <tr><td>delete_all_of_element.js</td><td>Tool that deletes every pixel of the element(s) the user clicks on</td><td>Alice</td></tr>
<tr><td>descriptions.js</td><td>Adds descriptions to the info page and tooltips of elements</td><td>mollthecoder</td></tr> <tr><td>descriptions.js</td><td>Descriptions to the info page and tooltips of elements</td><td>mollthecoder</td></tr>
<tr><td>editTools.js</td><td>Selections, Copying, Pasting, Cutting, Shapes, and more!</td><td>ggod</td></tr> <tr><td>editTools.js</td><td>Selections, Copying, Pasting, Cutting, Shapes, and more</td><td>ggod</td></tr>
<tr><td>elementEraser.js</td><td>Adds a tool that deletes only desired element</td><td>SquareScreamYT</td></tr> <tr><td>elementEraser.js</td><td>Tool that deletes only desired element</td><td>SquareScreamYT</td></tr>
<tr><td>elementreplacer.js</td><td>Adds a tool that replaces elements with other elements while keeping their color</td><td>Suss</td></tr> <tr><td>elementreplacer.js</td><td>Tool that replaces elements with other elements while keeping their color</td><td>Suss</td></tr>
<tr><td>elementsManager.js</td><td>Create and edit custom elements</td><td>ggod</td></tr> <tr><td>elementsManager.js</td><td>Create and edit custom elements</td><td>ggod</td></tr>
<tr><td>evenmoretemptools.js</td><td>Adds different temperature-modifying tools (±350/tick, NaN, and Infinity)</td><td>Alice</td></tr> <tr><td>evenmoretemptools.js</td><td>Temperature-modifying tools (±350/tick, NaN, and Infinity)</td><td>Alice</td></tr>
<tr><td>extra_element_info.js</td><td>Adds descriptions to various vanilla elements. Used to provide the functionality that desc now does before it was added to vanilla</td><td>Melecie</td></tr> <tr><td>extra_element_info.js</td><td>Descriptions to various vanilla elements. Used to provide the functionality that desc now does before it was added to vanilla</td><td>Melecie</td></tr>
<tr><td>extrasaveslots.js</td><td>Adds extra saves slots !SAVE IMPORTANT SAVES AS FILES!</td><td>Jayd</td></tr> <tr><td>extrasaveslots.js</td><td>Extra saves slots [KEEP IMPORTANT SAVES AS FILES!!]</td><td>Jayd</td></tr>
<tr><td>find.js</td><td>Adds a find mode that highlights a chosen element as pulsating red and yellow <a href="https://github.com/R74nCom/sandboxels/commit/de0dc088ab4d928c77587b9d0e3a7d7663e3f94a">(read commit description)</a></td><td>Alice</td></tr> <tr><td>find.js</td><td>Find mode that highlights a chosen element as pulsating red and yellow <a href="https://github.com/R74nCom/sandboxels/commit/de0dc088ab4d928c77587b9d0e3a7d7663e3f94a">[More Info]</a></td><td>Alice</td></tr>
<tr><td>hideandshowtools.js</td><td>Adds two tools, one that hides elements, and one that shows hidden elements</td><td>MicaelNotUsed</td><tr> <tr><td>hideandshowtools.js</td><td>Tools to hide elements and show hidden elements</td><td>MicaelNotUsed</td><tr>
<tr><td>human_friendly_design.js</td><td>Makes the drag and mix tools not kill humans.</td><td>Nekonico</td></tr> <tr><td>human_friendly_design.js</td><td>Drag and Mix tools don't kill humans</td><td>Nekonico</td></tr>
<tr><td>insane_random_events.js</td><td>Massively buffs random events</td><td>Alice</td></tr> <tr><td>insane_random_events.js</td><td>Massively buffs random events</td><td>Alice</td></tr>
<tr><td>jaydsfunctions.js</td><td>Adds extra tools</td><td>Jayd</td></tr> <tr><td>jaydsfunctions.js</td><td>Extra tools</td><td>Jayd</td></tr>
<tr><td>moretools.js</td><td>Adds more temperature-modifying tools (±10/tick, ±50/tick, and absolute zero tools)</td><td>Sightnado</td></tr> <tr><td>move_tools.js</td><td>Tools that move pixels</td><td>Alice</td></tr>
<tr><td>move_tools.js</td><td>Adds tools that move pixels</td><td>Alice</td></tr> <tr><td>no_scroll.js</td><td>Disables canvas scrolling, useful for Apple Magic Mouse users</td><td>Crimera Games</td></tr>
<tr><td>no_scroll.js</td><td>Disables scrolling, useful for Apple Magic Mouse users</td><td>Crimera Games</td></tr> <tr><td>noconfirm.js</td><td>Removes all confirmation popups</td><td>mollthecoder</td></tr>
<tr><td>noconfirm.js</td><td>Removes all confirmation pop ups</td><td>mollthecoder</td></tr> <tr><td>page_color.js</td><td>Change the page color with the "pageColor" query parameter</td><td>Alice</td></tr>
<tr><td>page_color.js</td><td>Allows changing the background color outside of the canvas with the “pageColor” query parameter</td><td>Alice</td></tr> <tr><td>pixelResizeTool.js</td><td>Button to change pixel scale</td><td>feeshmaster</td></tr>
<tr><td>pixelResizeTool.js</td><td>Adds a button to change pixel scale</td><td>feeshmaster</td></tr> <tr><td>prompt.js</td><td>Primitive command console</td><td>Alice</td></tr>
<tr><td>prompt.js</td><td>Adds a primitive command console</td><td>Alice</td></tr> <tr><td>prop.js</td><td>Tool to edit the attributes of pixels</td><td>Alice</td></tr>
<tr><td>prop.js</td><td>Adds tool to edit the attributes of pixels</td><td>Alice</td></tr> <tr><td>replace_all.js</td><td>Way to replace every pixel of an element with another element <a href="https://github.com/R74nCom/sandboxels/commit/0066cea82345a5bc3a990df858239104e8ca9d44">[More Info]</a></td><td>Alice</td></tr>
<tr><td>replace_all.js</td><td>Adds a way to replace every pixel of an element with another element<br><a href="https://github.com/R74nCom/sandboxels/commit/0066cea82345a5bc3a990df858239104e8ca9d44">Read the commit description for usage</a></td><td>Alice</td></tr> <tr><td>replace.js</td><td>Tool that replaces every pixel of a specified element with another specified element [" to open]</td><td>Alice</td></tr>
<tr><td>replace.js</td><td>Adds a tool that replaces every pixel of a specified element with another specified element. (The prompt to specify these is toggled by pressing " or by the button in the element description)</td><td>Alice</td></tr> <tr><td>save_loading.js</td><td>The ability to save and load scenes from files [See the info page of the element]</td><td>Alice</td></tr>
<tr><td>save_loading.js</td><td>Adds the ability to save and load scenes from files (See the info page of the element)</td><td>Alice</td></tr> <tr><td>selective_paint.js</td><td>Tool to paint only selected elements</td><td>SquareScreamYT</td></tr>
<tr><td>selective_paint.js</td><td>Adds a tool to paint only selected elements</td><td>SquareScreamYT</td></tr> <tr><td>stripe_paint.js</td><td>Tool to paint with stripes</td><td>Alice</td></tr>
<tr><td>stripe_paint.js</td><td>Adds a tool to paint with stripes</td><td>Alice</td></tr> <tr><td>text.js</td><td>Tools to write text</td><td>RedBirdly</td></tr>
<tr><td>texturepack.js</td><td>Adds tools that let you create and share custom texture packs</td><td>nousernamefound</td></tr> <tr><td>texturepack.js</td><td>Tools that let you create and share custom texture packs</td><td>nousernamefound</td></tr>
<tr><td>text.js</td><td>Adds tools to write text</td><td>RedBirdly</td></tr> <tr><td>the_ground.js</td><td>Several rock types, worldgen settings, and gemstones</td><td>Alice</td></tr>
<tr><td>the_ground.js</td><td>Adds several rock types, worldgen settings, and gemstones</td><td>Alice</td></tr>
<!----><tr><td class="modCat" colspan="3">Science & Chemistry</td></tr><!----> <!----><tr><td class="modCat" colspan="3">Science & Chemistry</td></tr><!---->
<tr><td>alcohol.js</td><td>Adds methanol, (iso-)propanol, and butanol</td><td>Alice</td></tr> <tr><td>alcohol.js</td><td>Methanol, (iso-)propanol, and butanol</td><td>Alice</td></tr>
<tr><td>alkahest.js</td><td>Adds the alkahest, a liquid which dissolves anything</td><td>Alice</td></tr> <tr><td>alkahest.js</td><td>The alkahest, a liquid which dissolves anything</td><td>Alice</td></tr>
<tr><td>aScientistsWish.js</td><td>Adds several things that related to science and physics </td><td>Carbon Monoxide, salmonfishy</td></tr> <tr><td>aScientistsWish.js</td><td>Several things related to science and physics</td><td>Carbon Monoxide, salmonfishy</td></tr>
<tr><td>bettermetalscrap.js</td><td>Allows metal scrap to be melted back into its original material</td><td>nousernamefound</td></tr> <tr><td>bettermetalscrap.js</td><td>Metal scrap can be melted back into its original material</td><td>nousernamefound</td></tr>
<tr><td>bigger_star_spawners.js</td><td>Adds spawners for larger stars</td><td>Alice</td></tr> <tr><td>bigger_star_spawners.js</td><td>Spawners for larger stars</td><td>Alice</td></tr>
<tr><td>biology.js</td><td>Adds various elements and functions that let you build your own organism.</td><td>Nekonico</td></tr> <tr><td>biology.js</td><td>Various elements and features that let you build your own organism</td><td>Nekonico</td></tr>
<tr><td>bioooze_and_pyrogens.js</td><td>Adds Bio-Ooze from <a herf="https://frackinuniverse.miraheze.org/wiki/Main_Page">Frackin Universe</a> and several heat-producing materials from various games mods</td><td>Alice</td></tr> <tr><td>bioooze_and_pyrogens.js</td><td>Bio-Ooze from <a herf="https://frackinuniverse.miraheze.org/wiki/Main_Page">Frackin' Universe</a> and several heat-producing materials from various games' mods</td><td>Alice</td></tr>
<tr><td>boiling_things.js</td><td>Allows for various elements to be vaporized</td><td>Alice</td></tr> <tr><td>boiling_things.js</td><td>Various elements can be vaporized</td><td>Alice</td></tr>
<tr><td>bouncing_balls.js</td><td>Adds new types of balls that bounce accurately and roll.</td><td>Nekonico</td></tr> <tr><td>bouncing_balls.js</td><td>New types of balls that bounce accurately and roll</td><td>Nekonico</td></tr>
<tr><td>chalcopyrite.js</td><td>Adds the chalcopyrite ore</td><td>Sophie</td></tr> <tr><td>chalcopyrite.js</td><td>The chalcopyrite ore</td><td>Sophie</td></tr>
<tr><td>charsonsmoduno.js</td><td>Adds Arsenic, Beryllium, Silicon, compounds, and some non-realistic stuff, such as Aresium and Nahnium</td><td>CharsonBurensen</td></tr> <tr><td>charsonsmoduno.js</td><td>Arsenic, Beryllium, Silicon, compounds, and some fake elements</td><td>CharsonBurensen</td></tr>
<tr><td>chem.js</td><td>Adds several chemistry and physics-related elements</td><td>lllllllllwith10ls</td></tr> <tr><td>chem.js</td><td>Several chemistry and physics-related elements</td><td>lllllllllwith10ls</td></tr>
<tr><td>clf3.js</td><td>Adds Chlorine Trifluoride</td><td>Alice</td></tr> <tr><td>clf3.js</td><td>Chlorine Trifluoride</td><td>Alice</td></tr>
<tr><td>debrisable.js</td><td>Expands the number of breakable elements, changes erosion, and adds way to craft certain elements from breaking other elements. </td><td>Nekonico</td></tr> <tr><td>debrisable.js</td><td>Expands the number of breakable elements, changes erosion, and adds way to craft certain elements from breaking other elements</td><td>Nekonico</td></tr>
<tr><td>fire_extinguisher.js</td><td>Adds fire extinguisher blocks and realistic firefighting foam to put out nearly anything</td><td>Dr_Lego</td></tr> <tr><td>fire_extinguisher.js</td><td>Fire extinguisher blocks and realistic firefighting foam to put out nearly anything</td><td>Dr_Lego</td></tr>
<tr><td>fire_mod.js</td><td>Adds various properties to change fire behavior, & a radioactive version of fire</td><td>Alice</td></tr> <tr><td>fire_mod.js</td><td>Various properties to change fire behavior and radioactive fire</td><td>Alice</td></tr>
<tr><td>fire_slime.js</td><td>Adds a pyrogenic version of slime</td><td>Alice</td></tr> <tr><td>fire_slime.js</td><td>Pyrogenic version of slime</td><td>Alice</td></tr>
<tr><td>Gemstones.js</td><td>Adds more gemstones</td><td>Schweeny</td></tr> <tr><td>Gemstones.js</td><td>Gemstones</td><td>Schweeny</td></tr>
<tr><td>glenn_gases.js</td><td>Adds most gases from the <a href="https://www.jamieswhiteshirt.com/minecraft/mods/gases/">Glenn's Gases</a> mod into Sandboxels</td><td>Alice</td></tr> <tr><td>glenn_gases.js</td><td>Most gases from the <a href="https://www.jamieswhiteshirt.com/minecraft/mods/gases/">Glenn's Gases</a> mod into Sandboxels</td><td>Alice</td></tr>
<tr><td>grav_mudstones.js</td><td>Adds various forms of mudstone with different gravities</td><td>Alice</td></tr> <tr><td>grav_mudstones.js</td><td>Various forms of mudstone with different gravities</td><td>Alice</td></tr>
<tr><td>halogen.js</td><td>Adds the missing halogens</td><td>nousernamefound</td></tr> <tr><td>halogen.js</td><td>The missing halogens</td><td>nousernamefound</td></tr>
<tr><td>hidden_ground.js</td><td>Hides most rock variants from the_ground.js excluding the base rocks and walls</td><td>Melecie</td></tr> <tr><td>hidden_ground.js</td><td>Hides most rock variants from the_ground.js excluding the base rocks and walls</td><td>Melecie</td></tr>
<tr><td>iocalfaeus_clones.js</td><td>Adds Iorefrius, Iolucius, and Ioradius gas</td><td>Alice</td></tr> <tr><td>iocalfaeus_clones.js</td><td>Iorefrius, Iolucius, and Ioradius gas</td><td>Alice</td></tr>
<tr><td>jaydstuff.js</td><td>Adds various chemicals and compounds</td><td>Jayd</td></tr> <tr><td>jaydstuff.js</td><td>Various chemicals and compounds</td><td>Jayd</td></tr>
<tr><td>laetium.js</td><td>Adds several fictional elements</td><td>Alice</td></tr> <tr><td>laetium.js</td><td>Several fictional elements</td><td>Alice</td></tr>
<tr><td>liquid_energy.js</td><td>Adds liquid versions of the elements in the Energy category</td><td>Alice</td></tr> <tr><td>liquid_energy.js</td><td>Liquid versions of the elements in the Energy category</td><td>Alice</td></tr>
<tr><td>liquid_mixing.js</td><td>Allows liquids to mix colors dynamically</td><td>Nekonico</td></tr> <tr><td>liquid_mixing.js</td><td>Liquids can mix colors dynamically</td><td>Nekonico</td></tr>
<tr><td>lye.js</td><td>Adds lye</td><td>BatteRaquette58</td></tr> <tr><td>lye.js</td><td>Lye</td><td>BatteRaquette58</td></tr>
<tr><td>mars.js</td><td>Adds some things from Mars with 2 minerals to smelt.</td><td>charcoal_afterlife</td></tr> <tr><td>mars.js</td><td>Martian materials</td><td>charcoal_afterlife</td></tr>
<tr><td>metals.js</td><td>Adds several metals</td><td>Alice</td></tr> <tr><td>metals.js</td><td>Several metals</td><td>Alice</td></tr>
<tr><td>mixture.js</td><td>Allows many chemicals to be mixed</td><td>lllllllllwith10ls</td></tr> <tr><td>mixture.js</td><td>Many chemicals can be mixed</td><td>lllllllllwith10ls</td></tr>
<tr><td>more_gold.js</td><td>Adds Green Gold</td><td>pixelegend4</td></tr> <tr><td>more_gold.js</td><td>Green Gold</td><td>pixelegend4</td></tr>
<tr><td>morechemistry.js</td><td>Adds many new chemicals and compounds as well as some new machines</td><td>Adora</td></tr> <tr><td>morechemistry.js</td><td>New chemicals, compounds, and machines</td><td>Adora</td></tr>
<tr><td>moreliquids.js</td><td>Adds various liquids</td><td>te-agma-at</td></tr> <tr><td>moreliquids.js</td><td>Various liquids</td><td>te-agma-at</td></tr>
<tr><td>nellfire.js</td><td>Adds a weird transforming flame and several rock types</td><td>Alice</td></tr> <tr><td>neutronium_compressor.js</td><td>Compressor from Minecraft's Avaritia mod that compresses 10,000 pixels of an element into a singularity</td><td>Alice</td></tr>
<tr><td>Neutronium Mod.js</td><td>Variety of scientific elements<br>Explosions</td><td>StellarX20</td></tr> <tr><td>noblegas.js</td><td>The missing noble gases</td><td>nousernamefound</td></tr>
<tr><td>neutronium_compressor.js</td><td>Adds a compressor (in reference to Minecrafts Avaritia mod) that compresses 10,000 pixels of an element into a “singularity”</td><td>Alice</td></tr> <tr><td>nousersthings.js</td><td>Many chemical elements, compounds, and more</td><td>nousernamefound</td></tr>
<tr><td>noblegas.js</td><td>Adds the missing noble gases</td><td>nousernamefound</td></tr> <tr><td>radioactive.js</td><td>Radioactive elements on the periodic table [WIP]</td><td>kaeud</td></tr>
<tr><td>nousersthings.js</td><td>Adds many chemical elements, compounds, and more</td><td>nousernamefound</td></tr>
<tr><td>radioactive.js</td><td>Adds every radioactive elements on the periodic table (WIP)</td><td>kaeud</td></tr>
<tr><td>random_rocks.js</td><td>Randomly generates rocks on game load</td><td>Alice</td></tr> <tr><td>random_rocks.js</td><td>Randomly generates rocks on game load</td><td>Alice</td></tr>
<tr><td>roseyiede.js</td><td>Adds several variants of a substance called roseyiede</td><td>Alice</td></tr> <tr><td>roseyiede.js</td><td>Several variants of a substance called roseyiede</td><td>Alice</td></tr>
<tr><td>some_tf_liquids.js</td><td>Adds various liquids from the Thermal Foundation Minecraft mod</td><td>Alice</td></tr> <tr><td>some_tf_liquids.js</td><td>Various liquids from the Thermal Foundation Minecraft mod</td><td>Alice</td></tr>
<tr><td>stickystuff.js</td><td>Allows slime, honey and all things normally sticky to stick to other elements</td><td>Suss</td></tr> <tr><td>stickystuff.js</td><td>Slime, Honey, and others can stick to other elements</td><td>Suss</td></tr>
<tr><td>the_ground.js</td><td>Adds several rock types, worldgen settings, and gemstones</td><td>Alice</td></tr> <tr><td>the_ground.js</td><td>Several rocks, worldgen types, and gemstones</td><td>Alice</td></tr>
<!----><tr><td class="modCat" colspan="3">Machines & Technology</td></tr><!----> <!----><tr><td class="modCat" colspan="3">Machines & Technology</td></tr><!---->
<tr><td>circuitcore.js</td><td>An extension to logicgates.js that adds advanced circuits. <a href="https://redbirdly.github.io/circuitcore_tutorial.html" target="_blank">Documentation</a>.</td><td>RedBirdly</td></tr> <tr><td>circuitcore.js</td><td>Extension for logicgates.js that adds advanced circuits <a href="https://redbirdly.github.io/circuitcore_tutorial.html" target="_blank">[More Info]</a></td><td>RedBirdly</td></tr>
<tr><td>clone_liquid.js</td><td>Adds a liquid form of cloner</td><td>Alice</td></tr> <tr><td>clone_liquid.js</td><td>Liquid form of cloner</td><td>Alice</td></tr>
<tr><td>colored_lightbulbs.js</td><td>Adds a light bulb that can be painted.</td><td>guzzo86, ggod</td></tr> <tr><td>colored_lightbulbs.js</td><td>Light bulb that can be painted</td><td>guzzo86, ggod</td></tr>
<tr><td>combustion.js</td><td>Adds components necessary for combustion engines</td><td>uptzik</td></tr> <tr><td>combustion.js</td><td>Components necessary for combustion engines</td><td>uptzik</td></tr>
<tr><td>conveyance.js</td><td>Conveyors, operated with and without electricity</td><td>Melecie</td></tr> <tr><td>conveyance.js</td><td>Conveyors, operated with and without electricity</td><td>Melecie</td></tr>
<tr><td>drill.js</td><td>Adds drills made out of several materials</td><td>Suss</td></tr> <tr><td>drill.js</td><td>Drills made out of several materials</td><td>Suss</td></tr>
<tr><td>ExtraMachines.js</td><td>Adds sensors, energy resources, materials, and more</td><td>Mecoolnotcool</td></tr> <tr><td>ExtraMachines.js</td><td>Sensors, energy resources, materials, and more</td><td>Mecoolnotcool</td></tr>
<tr><td>fine_tuned_cloner.js</td><td>Adds a cloner that can spawn at different rates and prevent unwated cloning</td><td>BatteRaquette58</td></tr> <tr><td>fine_tuned_cloner.js</td><td>Cloner that can spawn at different rates and prevent unwanted cloning</td><td>BatteRaquette58</td></tr>
<tr><td>flipflop.js</td><td>Toggleable switches; <a href="https://github.com/R74nCom/sandboxels/pull/134">Explanation</a></td><td>Flix</td></tr> <tr><td>flipflop.js</td><td>Toggleable switches <a href="https://github.com/R74nCom/sandboxels/pull/134">[More Info]</a></td><td>Flix</td></tr>
<tr><td>fueled_generators.js</td><td>Fuel powered generators.</td></tr> <tr><td>fueled_generators.js</td><td>Fuel powered generators</td><td>guzzo86</td></tr>
<tr><td>gameOfLife.js</td><td>Conway's Game of Life on a screen</td><td>ggod</td></tr> <tr><td>gameOfLife.js</td><td>Conway's Game of Life on a screen</td><td>ggod</td></tr>
<tr><td>heatshield.js</td><td>adds heatshields, makes plasma cooler</td></td><td>Taterbob</td></tr> <tr><td>heatshield.js</td><td>Heatshields, makes Plasma cooler</td></td><td>Taterbob</td></tr>
<tr><td>human_friendly_design.js</td><td>Makes pipes and portals not kill humans, as well as making drag and mix not kill humans.</td><td>Nekonico</td></tr> <tr><td>human_friendly_design.js</td><td>Pipes, Portals, Drag, and Mix don't kill humans</td><td>Nekonico</td></tr>
<tr><td>logicgates.js</td><td>Adds predictable electricity and logic gates</td><td>nousernamefound</td></tr> <tr><td>logicgates.js</td><td>Predictable electricity and logic gates</td><td>nousernamefound</td></tr>
<tr><td>note_block.js</td><td>Adds musical Note Blocks</td><td>Alice</td></tr> <tr><td>note_block_advanced.js</td><td>Edit of Alice's note_block.js, adds different blocks with different frequencies</td><td>CharsonBurensen</td></tr>
<tr><td>note_block.js</td><td>Musical Note Blocks</td><td>Alice</td></tr>
<tr><td>nousersthings.js</td><td>Destroyable machines, pipe variants, filters, and more</td><td>nousernamefound</td></tr> <tr><td>nousersthings.js</td><td>Destroyable machines, pipe variants, filters, and more</td><td>nousernamefound</td></tr>
<tr><td>portal.js</td><td>Adds portals that can teleport pixels</td><td>Alice</td></tr> <tr><td>portal.js</td><td>Portals that can teleport pixels</td><td>Alice</td></tr>
<tr><td>pullers.js</td><td>Adds pixels that pull pixels towards them</td><td>voidapex11</td></tr> <tr><td>pullers.js</td><td>Pixels that pull pixels towards them</td><td>voidapex11</td></tr>
<tr><td>pushers.js</td><td>Adds pixels that push elements away from them</td><td>Alice</td></tr> <tr><td>pushers.js</td><td>Pixels that push elements away from them</td><td>Alice</td></tr>
<tr><td>sandboxels.js</td><td>Adds a digital screen to play a mini version of Sandboxels</td><td>Nekonico</td></tr> <tr><td>sandboxels.js</td><td>Digital screen to play a mini version of Sandboxels</td><td>Nekonico</td></tr>
<tr><td>spouts.js</td><td>Adds spouts for all liquids</td><td>kaeud</td></tr> <tr><td>spouts.js</td><td>Spouts for all liquids</td><td>kaeud</td></tr>
<tr><td>state_voids.js</td><td>Adds several elements that each delete a specific state of matter (and combinations thereof)</td><td>Alice</td></tr> <tr><td>state_voids.js</td><td>Several elements that delete specific states of matter</td><td>Alice</td></tr>
<tr><td>switches.js</td><td>Adds electrical switches that can be toggled</td><td>Alice</td></tr> <tr><td>switches.js</td><td>Electrical switches that can be toggled</td><td>Alice</td></tr>
<tr><td>ticking_temp_stuff.js</td><td>Adds more heaters and coolers</td><td>Alice</td></tr> <tr><td>ticking_temp_stuff.js</td><td>Heater and Cooler variants</td><td>Alice</td></tr>
<tr><td>video.js</td><td>Adds a video player</td><td>ggod</td></tr> <tr><td>video.js</td><td>Video player</td><td>ggod</td></tr>
<tr><td>waterspout.js</td><td>Adds back the old Water Spout</td><td>mollthecoder</td></tr> <tr><td>waterspout.js</td><td>Re-adds the old Water Spout</td><td>mollthecoder</td></tr>
<tr><td>WhisperingTheory.js</td><td>Adds many more variants of heater and cooler</td><td>kaeud</td></tr> <tr><td>WhisperingTheory.js</td><td>Many more variants of heater and cooler</td><td>kaeud</td></tr>
<tr><td>wifi_draw.js</td><td>Draws connections between WiFi in wifi.js and logicgates.js</td><td>RedBirdly</td></tr> <tr><td>wifi_draw.js</td><td>Draws connections between WiFi in wifi.js and logicgates.js</td><td>RedBirdly</td></tr>
<!----><tr><td class="modCat" colspan="3">Weapons</td></tr><!----> <!----><tr><td class="modCat" colspan="3">Weapons</td></tr><!---->
<tr><td>aircrafts.js</td><td>Adds aircraft and aircraft part pixels</td><td>Jayd</td></tr> <tr><td>aircrafts.js</td><td>Aircrafts and aircraft parts</td><td>Jayd</td></tr>
<tr><td>c_fighter_jet.js</td><td>Adds a controllable fighter jet, wasd to move, q+wasd to shoot, gvbn for missiles.</td><td>Jayd</td></tr> <tr><td>c_fighter_jet.js</td><td>Controllable fighter jet [WASD to move, Q+WASD to shoot, GVBN for missiles]</td><td>Jayd</td></tr>
<tr><td>guided_rocket.js</td><td>Adds a homing misile.</td><td>voidapex11</td></tr> <tr><td>guided_rocket.js</td><td>Homing misile</td><td>voidapex11</td></tr>
<tr><td>icb.js</td><td>Adds various levels of nested cluster bombs</td><td>Alice</td></tr> <tr><td>icb.js</td><td>Various levels of nested cluster bombs</td><td>Alice</td></tr>
<tr><td>life_eater.js</td><td>Adds Warhammer 40,000s Life-Eater Virus and Virus Bombs</td><td>Alice</td></tr> <tr><td>life_eater.js</td><td>Warhammer 40,000's Life-Eater Virus and Virus Bombs</td><td>Alice</td></tr>
<tr><td>liquid_void.js</td><td>Adds a liquid variant of Void</td><td>Alice</td></tr> <tr><td>liquid_void.js</td><td>Liquid variant of Void</td><td>Alice</td></tr>
<tr><td>meat_rockets.js</td><td>Adds rockets that create meat when exploding</td><td>Melecie</td></tr> <tr><td>meat_rockets.js</td><td>Rockets that create meat when exploding</td><td>Melecie</td></tr>
<tr><td>more_breaking.js</td><td>Allows for breaking more elements in explosions</td><td>Alice</td></tr> <tr><td>more_breaking.js</td><td>More elements can be broken</td><td>Alice</td></tr>
<tr><td>rays.js</td><td>Adds more Ray types</td><td>Alice</td></tr> <tr><td>rays.js</td><td>More Ray types</td><td>Alice</td></tr>
<tr><td>rays++.js</td><td>Adds a couple more rays</td><td>uptzik</td></tr> <tr><td>rays++.js</td><td>Couple more rays</td><td>uptzik</td></tr>
<tr><td>subspace.js</td><td>Adds the Subspace Tripmine from Roblox</td><td>nousernamefound</td></tr> <tr><td>subspace.js</td><td>The Subspace Tripmine from Roblox</td><td>nousernamefound</td></tr>
<tr><td>war_crimes.js</td><td>Adds tear gas & more</td><td>voidapex11</td></tr> <tr><td>war_crimes.js</td><td>Tear gas and more</td><td>voidapex11</td></tr>
<tr><td>weapons.js</td><td>Adds a variety of different weapons</td><td>Jayd</td></tr> <tr><td>weapons.js</td><td>Variety of different weapons</td><td>Jayd</td></tr>
<!----><tr><td class="modCat" colspan="3">Food & Cooking</td></tr><!----> <!----><tr><td class="modCat" colspan="3">Food & Cooking</td></tr><!---->
<tr><td>aChefsDream_beta.js</td><td>Beta testing for aChefsDream. The code can be found <a href="https://www.github.com/SquareScreamYT/aChefsDream.js">on GitHub</a></td><td>SquareScreamYT</td></tr> <tr><td>aChefsDream_beta.js</td><td>Beta testing for aChefsDream.js</td><td>SquareScreamYT</td></tr>
<tr><td>aChefsDream.js</td><td>More foods, animals, tools, and other cooking items <a href="https://www.youtube.com/playlist?list=PLWHqGb75vC8o7CLv-pMoVb56JL9BY9F0t">[YouTube Playlist]</a></td><td>SquareScreamYT</td></tr>
<tr><td>aChefsDream2.js</td><td>The sequel to aChefsDream.js, with brand new elements and tools</a></td><td>SquareScreamYT</td></tr> <tr><td>aChefsDream2.js</td><td>The sequel to aChefsDream.js, with brand new elements and tools</a></td><td>SquareScreamYT</td></tr>
<tr><td>aChefsDream.js</td><td>More foods, animals, tools, and other cooking items. See the <a href="https://www.youtube.com/watch?v=pQFTtlNPODQ&list=PLWHqGb75vC8o7CLv-pMoVb56JL9BY9F0t">YouTube Playlist</a> for updates</td><td>SquareScreamYT</td></tr> <tr><td>bananas.js</td><td>Bananas and banana plants</td><td>Alice</td></tr>
<tr><td>bananas.js</td><td>Adds bananas and banana plants</td><td>Alice</td></tr> <tr><td>CherrySoda.js</td><td>Materials to make cherry soda</td><td>guzzo86</td></tr>
<tr><td>CherrySoda.js</td><td>Adds materials to make Cherry soda. Benzaldehyde + seltzer = Cherrysoda.</td><td>guzzo86</td></tr> <tr><td>community_desserts.js</td><td>Various desserts from community suggestions</td><td>Tisquares</td></tr>
<tr><td>community_desserts.js</td><td>Adds various desserts from community suggestions</td><td>Tisquares</td></tr> <tr><td>GrapeSoda.js</td><td>Materials to make grape soda</td><td>guzzo86</td></tr>
<tr><td>GrapeSoda.js</td><td>Adds materials to make Grape soda. Methylanthranilic acid + seltzer = Cherrysoda.</td><td>guzzo86</td></tr> <tr><td>greenitemsandmore.js</td><td>Various green things, including apples and more food</td><td>zonneschijn7</td>
<tr><td>greenitemsandmore.js</td><td>Adds various green things, including apples and more food</td><td>zonneschijn7</td> <tr><td>ketchup_mod.js</td><td>Many ketchup related elements, plus a few other condiments</td><td>Nubo318, Devi, Alice</td></tr>
<tr><td>ketchup_mod.js</td><td>Adds a bunch of ketchup related stuff, plus a few other condiments</td><td>Nubo318 (main dev), Devi, Alice (contributors)</td></tr> <tr><td>lemonade.js</td><td>Lemons and lemonade</td><td>personman, baconthemyth</td></tr>
<tr><td>lemonade.js</td><td>Adds lemons and lemonade</td><td>personman / baconthemyth</td></tr> <tr><td>morefoodsmod.js</td><td>More foods</td><td>Clide4</td></tr>
<tr><td>morefoodsmod.js</td><td>Adds more foods</td><td>Clide4</td></tr>
<tr><td>pizzasstuff.js</td><td>New animals, foods, and plants</td><td>_ilikepizza_</td></tr> <tr><td>pizzasstuff.js</td><td>New animals, foods, and plants</td><td>_ilikepizza_</td></tr>
<tr><td>potato_chips.js</td><td>Potato chips.</td><td>guzzo86</td></tr> <tr><td>potato_chips.js</td><td>Potato chips and sunflower oil</td><td>guzzo86</td></tr>
<tr><td>sbstuff.js</td><td>Adds many foods</td><td>stefanblox</td></tr> <tr><td>sbstuff.js</td><td>Many foods</td><td>stefanblox</td></tr>
<tr><td>soups.js</td><td>Adds seasoning and soup</td><td>pixelegend4</td></tr> <tr><td>soups.js</td><td>Seasoning and soup</td><td>pixelegend4</td></tr>
<tr><td>weAllScreamFor.js</td><td>Adds ice cream toppings</td><td>rottenEgghead</td></tr> <tr><td>weAllScreamFor.js</td><td>Ice cream toppings</td><td>rottenEgghead</td></tr>
<!----><tr><td class="modCat" colspan="3">Life & Nature</td></tr><!----> <!----><tr><td class="modCat" colspan="3">Life & Nature</td></tr><!---->
<tr><td>apioforms_pre.js</td><td>An incomplete implementation of elements from the <a href="https://osmarks.net/apioform/">Apioform Game</a></td><td>Alice</td></tr> <tr><td>apioforms_pre.js</td><td>Incomplete implementation of elements from the <a href="https://osmarks.net/apioform/">Apioform Game</a></td><td>Alice</td></tr>
<tr><td>baby.js</td><td>Adds various babies</td><td>Suss</td></tr> <tr><td>baby.js</td><td>Various babies</td><td>Suss</td></tr>
<tr><td>bacteria_mod.js</td><td>Adds content from the <a href="https://www.curseforge.com/minecraft/mc-mods/bacterium">Bacterium Mod</a>: (Bacteria, Replacer B., Jammer Block)</td><td>Alice</td></tr> <tr><td>bacteria_mod.js</td><td>Content from Minecraft's <a href="https://www.curseforge.com/minecraft/mc-mods/bacterium">Bacterium Mod</a></td><td>Alice</td></tr>
<tr><td>bananas.js</td><td>Adds bananas and banana plants</td><td>Alice</td></tr> <tr><td>bananas.js</td><td>Bananas and banana plants</td><td>Alice</td></tr>
<tr><td>biology.js</td><td>Adds various elements and functions that let you build your own organism.</td><td>Nekonico</td></tr> <tr><td>biology.js</td><td>Various elements and features that let you build your own organism</td><td>Nekonico</td></tr>
<tr><td>cat.js</td><td>Adds cats and cat food</td><td>SquareScreamYT</td></tr> <tr><td>cat.js</td><td>Cats and cat food</td><td>SquareScreamYT</td></tr>
<tr><td>cells.js</td><td>Adds several experimental edits of the Cell element</td><td>Alice</td></tr> <tr><td>cells.js</td><td>Several experimental edits of the Cell element</td><td>Alice</td></tr>
<tr><td>children.js</td><td>Adds pesky little gremlins</td><td>Taterbob</td></tr> <tr><td>children.js</td><td>Pesky little gremlins</td><td>Taterbob</td></tr>
<tr><td>colonies.js</td><td>Adds rockets that contain settlers to terraform a planet.</td><td>Nekonico</td></tr> <tr><td>colonies.js</td><td>Rockets that contain settlers to terraform a planet</td><td>Nekonico</td></tr>
<tr><td>crimson.js</td><td>Adds elements relating to the Crimson from Terraria</td><td>Alice</td></tr> <tr><td>crimson.js</td><td>Elements relating to the Crimson from Terraria</td><td>Alice</td></tr>
<tr><td>dogs.js</td><td>Adds a simple dog and dog food</td><td>hedera-ivy</td></tr> <tr><td>dogs.js</td><td>Simple dog and dog food</td><td>hedera-ivy</td></tr>
<tr><td>fairy_chain.js</td><td>Adds way too many fairies to fey_and_more.js</td><td>Alice</td></tr> <tr><td>fairy_chain.js</td><td>Way too many fairies to fey_and_more.js</td><td>Alice</td></tr>
<tr><td>fantastic_creatures.js</td><td>Adds various animals</td><td>Melecie</td></tr> <tr><td>fantastic_creatures.js</td><td>Various animals</td><td>Melecie</td></tr>
<tr><td>fantasy_elements.js</td><td>Fantasy creatures and substances</td><td>pixelegend4</td></tr> <tr><td>fantasy_elements.js</td><td>Fantasy creatures and substances</td><td>pixelegend4</td></tr>
<tr><td>fey_and_more.js</td><td>Adds fairies, magic, and a lot of other things</td><td>Melecie</td></tr> <tr><td>fey_and_more.js</td><td>Fairies, magic, and a lot of other things</td><td>Melecie</td></tr>
<tr><td>fishin.js</td><td>Adds a fishing rod and more fish with scientific names, press B to open bank account, A, S or D to cast your line and Q to reel it back in.</td><td>Nekonico</td></tr> <tr><td>fishin.js</td><td>Fishing rod and more fish with scientific names <a href="https://r74n.com/textviewer/?fishin.js%0A%0APress%20B%20to%20open%20bank%20account%2C%20A%2C%20S%20or%20D%20to%20cast%20your%20line%20and%20Q%20to%20reel%20it%20back%20in.">[More Info]</a></td><td>Nekonico</td></tr>
<tr><td>flowers_and_forests.js</td><td>adds trees and flowers and things to do with nature</td><td>pixelegend4 and SquareScreamYT</td></tr> <tr><td>flowers_and_forests.js</td><td>Trees and flowers</td><td>pixelegend4, SquareScreamYT</td></tr>
<tr><td>fwibblen.js</td><td>Adds a flying creature that turns nickel into itself, and a second creature that does the same to the first one</td><td>Alice</td></tr> <tr><td>fwibblen.js</td><td>Flying creature that turns nickel into itself, and another that does the same to the first one</td><td>Alice</td></tr>
<tr><td>genetics.js</td><td>Adds an organism that evolves and changes as it creates more of itself by eating, and adapts to environment.</td><td>Nekonico</td></tr> <tr><td>genetics.js</td><td>Organism that evolves and changes as it creates more of itself by eating</td><td>Nekonico</td></tr>
<tr><td>human_edit.js</td><td>Improvements to humans</td><td>Alice</td></tr> <tr><td>human_edit.js</td><td>Improvements to humans</td><td>Alice</td></tr>
<tr><td>Humanitize.js</td><td>Makes humans cultured and able to craft, mine, build houses, trade, and much more.</td><td>Nekonico</td></tr> <tr><td>Humanitize.js</td><td>Humans are cultured and able to craft, mine, build houses, trade, and more</td><td>Nekonico</td></tr>
<tr><td>kopalstuff.js</td><td>Adds creatures, spirits, DNA, foods, and more</td><td>DaviStudios</td></tr> <tr><td>kopalstuff.js</td><td>Creatures, spirits, DNA, foods, and more</td><td>DaviStudios</td></tr>
<tr><td>lizard_mod.js</td><td>Adds lizards to sandboxels.</td><td>RedBirdly</td></tr> <tr><td>lizard_mod.js</td><td>Lizards</td><td>RedBirdly</td></tr>
<tr><td>lost_souls.js</td><td>Adds souls and related elements, the mod can also be found <a href="https://github.com/HACKERPRO908/lost_souls.js">on Github</a></td><td>pixelegend4, SquareScreamYT, salmonfishy</td></tr> <tr><td>lost_souls.js</td><td>Souls and related elements</td><td>pixelegend4, SquareScreamYT, salmonfishy</td></tr>
<tr><td>miscible_psoup_and_birthpool.js</td><td>Makes Primordial Soup and Birthpool mix instead of the birthpool settling to the bottom. Will be deprecated upon the release of Magical Menagerie</td><td>Alice</td></tr> <tr><td>miscible_psoup_and_birthpool.js</td><td>Primordial Soup and Birthpool can mix (fey_and_more.js)</td><td>Alice</td></tr>
<tr><td>mobs.js</td><td>Adds Creepers, Zombies, and Skeletons</td><td>Alice</td></tr> <tr><td>mobs.js</td><td>Creepers, Zombies, and Skeletons</td><td>Alice</td></tr>
<tr><td>moretrees.js</td><td>Adds 25 more tree & wood types.</td><td>guzzo86</td></tr> <tr><td>moretrees.js</td><td>25 more tree and wood types</td><td>guzzo86</td></tr>
<tr><td>nocancer.js</td><td>Removes cancer from the game one tick after it is created</td><td>mollthecoder</td></tr> <tr><td>nocancer.js</td><td>Removes cancer one tick after it is created</td><td>mollthecoder</td></tr>
<tr><td>nocancer2.js</td><td>Removes cancer from the game altogether. May be incompatible with other mods that spawn cancer</td><td>mollthecoder</td></tr> <tr><td>nocancer2.js</td><td>Removes cancer from the game altogether; May be incompatible with other mods that spawn cancer</td><td>mollthecoder</td></tr>
<tr><td>nograssgrow.js</td><td>Prevents Grass from growing</td><td>mollthecoder</td></tr> <tr><td>nograssgrow.js</td><td>Prevents Grass from growing</td><td>mollthecoder</td></tr>
<tr><td>ocean.js</td><td>Adds many Marine life</td><td>SquareScreamYT</td></tr> <tr><td>ocean.js</td><td>Marine life</td><td>SquareScreamYT</td></tr>
<tr><td>ores.js</td><td>Adds ore generation along with tools to mine them</td><td>nousernamefound</td></tr> <tr><td>ores.js</td><td>Ore generation along with tools to mine them</td><td>nousernamefound</td></tr>
<tr><td>pizzasstuff.js</td><td>New animals, foods, and plants</td><td>_ilikepizza_</td></tr> <tr><td>pizzasstuff.js</td><td>New animals, foods, and plants</td><td>_ilikepizza_</td></tr>
<tr><td>plants.js</td><td>Adds a wide variety of new plants and fruits</td><td>Adora</td></tr> <tr><td>plants.js</td><td>Wide variety of new plants and fruits</td><td>Adora</td></tr>
<tr><td>primordial_birthpool.js</td><td>A cross between Primordial Soup and Birthpool. Requires F&M</td><td>Alice</td></tr> <tr><td>primordial_birthpool.js</td><td>Cross between Primordial Soup and Birthpool. Requires fey_and_more.js</td><td>Alice</td></tr>
<tr><td>spring.js</td><td>Many nature elements, like sakura trees, butterflies, beehives, and more</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr><td>spring.js</td><td>Many nature elements, like sakura trees, butterflies, beehives, and more</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>the_ground_og.js</td><td>Simplified and more stable version of the_ground.js</td><td>Alice</td></tr> <tr><td>the_ground_og.js</td><td>Simplified and more stable version of the_ground.js</td><td>Alice</td></tr>
<tr><td>the_ground.js</td><td>Adds several rock types, worldgen settings, and gemstones</td><td>Alice</td></tr> <tr><td>the_ground.js</td><td>Several rock types, worldgen settings, and gemstones</td><td>Alice</td></tr>
<tr><td>toothpaste.js</td><td>Teeth and paste</td><td>Alice</td></tr> <tr><td>toothpaste.js</td><td>Teeth and paste</td><td>Alice</td></tr>
<tr><td>volcanic_expansion.js</td><td>Adds Obsidian, Pumice, and Andesite rocks</td><td>Jayd</td></tr> <tr><td>volcanic_expansion.js</td><td>Obsidian, Pumice, and Andesite rocks</td><td>Jayd</td></tr>
<!----><tr><td class="modCat" colspan="3">Fun & Games</td></tr><!----> <!----><tr><td class="modCat" colspan="3">Fun & Games</td></tr><!---->
<tr><td>10kelements.js</td><td>Inserts a customizable amount of randomly generated elements into the game</td><td>nousernamefound</td></tr> <tr><td>10kelements.js</td><td>Customizable amount of randomly generated elements</td><td>nousernamefound</td></tr>
<tr><td>all_around_fillers.js</td><td>Adds directional Filler variants</td><td>idk73248</td></tr> <tr><td>all_around_fillers.js</td><td>Directional Filler variants</td><td>idk73248</td></tr>
<tr><td>allliquids.js</td><td>Made all elements liquids</td><td>Adora</td></tr> <tr><td>allliquids.js</td><td>Made all elements liquids</td><td>Adora</td></tr>
<tr><td>amogus.js</td><td>Adds a small amogus structure</td><td>Alice</td></tr> <tr><td>amogus.js</td><td>Small Among Us structure</td><td>Alice</td></tr>
<tr><td>bfdi.js</td><td>Adds several references to bfdi</td><td>Taterbob</td></tr> <tr><td>bfdi.js</td><td>Several references to Battle for Dream Island</td><td>Taterbob</td></tr>
<tr><td>citybuilding.js</td><td>Adds seeds that create miniature buildings and other city-related items</td><td>SquareScreamYT</td></tr> <tr><td>citybuilding.js</td><td>Seeds that create miniature buildings and other city-related items</td><td>SquareScreamYT</td></tr>
<tr><td>collab_mod.js</td><td>Created by multiple people, adds random things</td><td>mrapple, ilikepizza, stefanblox</td></tr> <tr><td>collab_mod.js</td><td>Created by multiple people, adds random things</td><td>mrapple, ilikepizza, stefanblox</td></tr>
<tr><td>doom.js</td><td>As seen on TikTok - Select the Doom element to start, WASD</td><td>ggod</td></tr> <tr><td>doom.js</td><td>As seen on TikTok - Select the Doom element to start [WASD to move]</td><td>ggod</td></tr>
<tr><td>elem3.js</td><td>Adds all elements and combinations from Elemental 3 [Very Large]</td><td>Sophie</td></tr> <tr><td>elem3.js</td><td>All elements and combinations from Elemental 3 [Very Large]</td><td>Sophie</td></tr>
<tr><td>fishin.js</td><td>Adds a fishing rod and more fish with scientific names, press B to open bank account, A, S or D to cast your line and Q to reel it back in.</td><td>Nekonico</td></tr> <tr><td>fishin.js</td><td>Fishing rod and more fish with scientific names <a href="https://r74n.com/textviewer/?fishin.js%0A%0APress%20B%20to%20open%20bank%20account%2C%20A%2C%20S%20or%20D%20to%20cast%20your%20line%20and%20Q%20to%20reel%20it%20back%20in.">[More Info]</a></td><td>Nekonico</td></tr>
<tr><td>fools+.js</td><td>improves and makes fools.js EXTREMELY annoying.</td><td>SquareScreamYT</td></tr> <tr><td>fools+.js</td><td>Improves and makes fools.js extremely annoying</td><td>SquareScreamYT</td></tr>
<tr><td>funny elements 2022-11-15.js</td><td>Adds a few curated randomly-generated elements</td><td>Alice</td></tr> <tr><td>funny elements 2022-11-15.js</td><td>Few curated randomly-generated elements</td><td>Alice</td></tr>
<tr><td>funny_solid.js</td><td>Adds feces</td><td>Alice</td></tr> <tr><td>funny_solid.js</td><td>Feces</td><td>Alice</td></tr>
<tr><td>funnynames.js</td><td>Adds various ways to mess with the names of elements</td><td>nousernamefound</td></tr> <tr><td>funnynames.js</td><td>Various ways to mess with the names of elements</td><td>nousernamefound</td></tr>
<tr><td>haseulite.js</td><td>Adds Loona-related materials with various properties</td><td>Alice</td></tr> <tr><td>haseulite.js</td><td>Loona-related materials with various properties</td><td>Alice</td></tr>
<tr><td>lactose_intolerance_and_celiac.js</td><td>Makes humans explode on contact with milk, wheat, bread, or toast</td><td>Nubo318</td></tr> <tr><td>lactose_intolerance_and_celiac.js</td><td>Humans explode on contact with milk, wheat, bread, or toast</td><td>Nubo318</td></tr>
<tr><td>lattice_filler.js</td><td>Adds a combination of lattice and filler and a destructive variant</td><td>Suss</td></tr> <tr><td>lattice_filler.js</td><td>Combination of lattice and filler and a destructive variant</td><td>Suss</td></tr>
<tr><td>liquid_mixing.js</td><td>Allows liquids to mix colors dynamically</td><td>Nekonico</td></tr> <tr><td>liquid_mixing.js</td><td>Liquids can mix colors dynamically</td><td>Nekonico</td></tr>
<tr><td>lone_urea.js</td><td>Adds urea without the rest of the piss mod</td><td>Alice</td></tr> <tr><td>lone_urea.js</td><td>Urea</td><td>Alice</td></tr>
<tr><td>maze.js</td><td>Adds a solvable maze generator</td><td>ggod</td></tr> <tr><td>maze.js</td><td>Solvable maze generator</td><td>ggod</td></tr>
<tr><td>memelists.js</td><td>Makes it so you must select elements through a list at the bottom of the page.<br>We like lists</td><td>mollthecoder</td></tr> <tr><td>memelists.js</td><td>You must select elements through a list at the bottom of the page</td><td>mollthecoder</td></tr>
<tr><td>minecraft.js</td><td>Adds several things from Minecraft</td><td>StellarX20, nousernamefound</td></tr> <tr><td>minecraft.js</td><td>Several things from Minecraft</td><td>nousernamefound</td></tr>
<tr><td>minesweeper.js</td><td>A subpar implementation of Minesweeper</td><td>Alice</td></tr> <tr><td>minesweeper.js</td><td>Implementation of Minesweeper</td><td>Alice</td></tr>
<tr><td>musicalfruit.js</td><td>Humans get gas from eating Beans</td><td>mollthecoder</td></tr> <tr><td>musicalfruit.js</td><td>Humans get gas from eating Beans</td><td>mollthecoder</td></tr>
<tr><td>nekonicos_stuff.js</td><td>Random stuff like graphite, oobleck, and red ice, as well as many machines.</td><td>Nekonico</td></tr> <tr><td>nekonicos_stuff.js</td><td>Random stuff like graphite, oobleck, and red ice, as well as many machines</td><td>Nekonico</td></tr>
<tr><td>prideflags.js</td><td>Adds some pride flags to the game</td><td>Adora</td></tr> <tr><td>prideflags.js</td><td>Some pride flags to the game</td><td>Adora</td></tr>
<tr><td>random_elems.js</td><td>Curated randomly generated elements</td><td>Alice</td></tr> <tr><td>random_elems.js</td><td>Curated randomly generated elements</td><td>Alice</td></tr>
<tr><td>random_liquids.js</td><td>Randomly generates liquids on game load</td><td>Alice</td></tr> <tr><td>random_liquids.js</td><td>Randomly generates liquids on game load</td><td>Alice</td></tr>
<tr><td>sbmixup.js</td><td>Adds silly elements from a <a href="https://R74n.com/mix/" target="_blank">Mix-Up!</a> game</td><td>stefanblox</td> <tr><td>sbmixup.js</td><td>Silly elements from a <a href="https://R74n.com/mix/" target="_blank">Mix-Up!</a> game</td><td>stefanblox</td>
<tr><td>sports_beta.js</td><td>Adds several sports items</td><td>BluBun5193</td></tr> <tr><td>sports_beta.js</td><td>Several sports items</td><td>BluBun5193</td></tr>
<tr><td>star_wars.js</td><td>Adds various items from Star Wars by Disney</td><td>SeaPickle754</td> <tr><td>star_wars.js</td><td>Various items from Star Wars by Disney</td><td>SeaPickle754</td>
<tr><td>sus.js</td><td>Adds an Among Us crewmate</td><td>Nv7</td></tr> <tr><td>sus.js</td><td>Among Us crewmate</td><td>Nv7</td></tr>
<tr><td>triggerable_random_powders.js</td><td>Adds powders with different abilities, such as heating and cooling</td><td>Alice</td></tr> <tr><td>triggerable_random_powders.js</td><td>Powders with different abilities, such as heating and cooling</td><td>Alice</td></tr>
<tr><td>troll.js</td><td>Adds various dumb elements that iterate randomly on the entire screen</td><td>Alice</td></tr> <tr><td>troll.js</td><td>Various dumb elements that iterate randomly on the entire screen</td><td>Alice</td></tr>
<tr><td>WhisperingTheory.js</td><td>Adds powder and gas variant of heater and cooler</td><td>kaeud</td></tr> <tr><td>WhisperingTheory.js</td><td>Powder and gas variant of heater and cooler</td><td>kaeud</td></tr>
<!----><tr><td class="modCat" colspan="3">Visual Effects</td></tr><!----> <!----><tr><td class="modCat" colspan="3">Visual Effects</td></tr><!---->
<tr><td>acid_and_shapes.js</td><td>Weird visual effects. Enable in Settings</td><td>Alice</td></tr> <tr><td>acid_and_shapes.js</td><td>Weird visual effects enabled in settings</td><td>Alice</td></tr>
<tr><td>clouds.js</td><td>Adds moving clouds, recommended to include sky.js too</td><td>RedBirdly</td></tr> <tr><td>clouds.js</td><td>Moving clouds, sky.js recommended</td><td>RedBirdly</td></tr>
<tr><td>customBackground.js</td><td>Set your background to an image link</td><td>Jayd</td></tr> <tr><td>customBackground.js</td><td>Set your background to an image link</td><td>Jayd</td></tr>
<tr><td>fast_lightmap.js</td><td>Makes light sources glow, but the fast version</td><td>RedBirdly</td></tr> <tr><td>fast_lightmap.js</td><td>Light sources glow, but faster</td><td>RedBirdly</td></tr>
<tr><td>fractals.js</td><td>Adds an element and tools to render fractals in game</td><td>nousernamefound</td></tr> <tr><td>fractals.js</td><td>Element and tools to render fractals in game</td><td>nousernamefound</td></tr>
<tr><td>hexagon_test.js</td><td>Makes pixels look like hexagons</td><td>RedBirdly</td></tr>
<tr><td>heatglow.js</td><td>Red glowing effect for hot metals</td><td>nousernamefound</td></tr> <tr><td>heatglow.js</td><td>Red glowing effect for hot metals</td><td>nousernamefound</td></tr>
<tr><td>invisible_dye.js</td><td>Adds elements like Dye and Spray Paint that take the color of the background</td><td>Alice</td></tr> <tr><td>hexagon_test.js</td><td>Pixels look like hexagons</td><td>RedBirdly</td></tr>
<tr><td>invisible_wall.js</td><td>Adds an element like Wall that takes the color of the background</td><td>Alice</td></tr> <tr><td>invisible_dye.js</td><td>Elements like Dye and Spray Paint that take the color of the background</td><td>Alice</td></tr>
<tr><td>lightmap.js</td><td>Makes light sources glow</td><td>RedBirdly</td></tr> <tr><td>invisible_wall.js</td><td>Element like Wall that takes the color of the background</td><td>Alice</td></tr>
<tr><td>liquid_mixing.js</td><td>Allows liquids to mix colors dynamically</td><td>Nekonico</td></tr> <tr><td>lightmap.js</td><td>Light sources glow</td><td>RedBirdly</td></tr>
<tr><td>liquid_mixing.js</td><td>Liquids can mix colors dynamically</td><td>Nekonico</td></tr>
<tr><td>moreViews.js</td><td>Many new rendering modes</td><td>ggod</td></tr> <tr><td>moreViews.js</td><td>Many new rendering modes</td><td>ggod</td></tr>
<tr><td>nicer_flame.js</td><td>Makes fire visually pleasing</td><td>RedBirdly</td></tr> <tr><td>nicer_flame.js</td><td>Fire is visually pleasing</td><td>RedBirdly</td></tr>
<tr><td>occlusion.js</td><td>Adds realistic shadows (similar to Terraria's lighting)</td><td>RedBirdly</td></tr> <tr><td>occlusion.js</td><td>Realistic shadows, similar to Terraria's lighting</td><td>RedBirdly</td></tr>
<tr><td>onecolor.js</td><td>Makes all placed pixels single-colored</td><td>nousernamefound</td></tr> <tr><td>onecolor.js</td><td>Placed pixels are single-colored</td><td>nousernamefound</td></tr>
<tr><td>paint_event.js</td><td>Adds a random event that randomly paints a circle</td><td>Alice</td></tr> <tr><td>paint_event.js</td><td>Random event that randomly paints a circle</td><td>Alice</td></tr>
<tr><td>rainbow_tests.js</td><td>Adds variants of the rainbow element with different maths</td><td>Alice</td></tr> <tr><td>rainbow_tests.js</td><td>Variants of the rainbow element with different maths</td><td>Alice</td></tr>
<tr><td>real_light.js</td><td>Changes view code to make everything dark if not hit with a photon or light element, as well as making hot things and glowing things still be visible.</td><td>Nekonico</td></tr> <tr><td>real_light.js</td><td>Everything is dark unless hit with a photon (Light) pixel, hot, or glowing</td><td>Nekonico</td></tr>
<tr><td>shader_by_jayd.js</td><td>Adds a glow around light elements</td><td>Jayd</td></tr> <tr><td>shader_by_jayd.js</td><td>Glow around light elements</td><td>Jayd</td></tr>
<tr><td>Shroomboxels.js</td><td>A variant of acid_and_shapes.js that uses a different trigonometric function</td><td>Alice</td></tr> <tr><td>Shroomboxels.js</td><td>Variant of acid_and_shapes.js that uses a different trigonometric function</td><td>Alice</td></tr>
<tr><td>singleColor.js</td><td>Makes all elements pick one color each time they're drawn</td><td>stefanblox</td></tr> <tr><td>singleColor.js</td><td>Elements pick one color each time they're drawn</td><td>stefanblox</td></tr>
<tr><td>sky.js</td><td>Adds a day-night cycle</td><td>RedBirdly</td></tr> <tr><td>sky.js</td><td>Day-night cycle</td><td>RedBirdly</td></tr>
<tr><td>solidcolor.js</td><td>Makes all placed pixels have a solid color (clone of onecolor.js)</td><td>SquareScreamYT</td></tr> <tr><td>solidcolor.js</td><td>Placed pixels have a solid color</td><td>SquareScreamYT</td></tr>
<tr><td>texture_pack_by_jayd.js</td><td>Adds a cool background</td><td>Jayd</td></tr> <tr><td>texture_pack_by_jayd.js</td><td>Cool background</td><td>Jayd</td></tr>
<tr><td>UwUify.js</td><td>Adds an "UwU" background</td><td>Jayd</td></tr> <tr><td>UwUify.js</td><td>"UwU" background</td><td>Jayd</td></tr>
<!----><tr><td class="modCat" colspan="3">Compilations</td></tr><!----> <!----><tr><td class="modCat" colspan="3">Compilations</td></tr><!---->
<tr><td>food_mods.js</td><td>A mod combining most food mods</td><td>stefanblox, moss, Tisquares, SquareScreamYT, Adora, pixelegend4, Alice, Nubo318, Clide4, rottenEgghead</td></tr> <tr><td>food_mods.js</td><td>Combination of most food mods</td><td>stefanblox, moss, Tisquares, SquareScreamYT, Adora, pixelegend4, Alice, Nubo318, Clide4, rottenEgghead</td></tr>
<!----><tr><td class="modCat" colspan="3">Technical Libraries & Tests</td></tr><!----> <!----><tr><td class="modCat" colspan="3">Technical Libraries & Tests</td></tr><!---->
<tr><td>1.10example.js</td><td>Examples for modern rendering modding and more</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr><td>1.10example.js</td><td>Examples for modern rendering modding and more</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>a_bundle_of_tests.js</td><td>Several test functions</td><td>Alice</td></tr> <tr><td>a_bundle_of_tests.js</td><td>Several test functions</td><td>Alice</td></tr>
<tr><td>all_stain.js</td><td>Makes every element stain solids</td><td>stefanblox</td></tr> <tr><td>all_stain.js</td><td>Every element stains solids</td><td>stefanblox</td></tr>
<tr><td>betterMenuScreens.js</td><td>Library for mods to create their own menus</td><td>ggod</td></tr> <tr><td>betterMenuScreens.js</td><td>Library for mods to create their own menus</td><td>ggod</td></tr>
<tr><td>changePixelDebug.js</td><td>Makes the changePixel() function abort and log to console when it tries to change to a non-existent element</td><td>Alice</td></tr> <tr><td>changePixelDebug.js</td><td>The changePixel() function aborts and logs to console when it tries to change to a non-existent element</td><td>Alice</td></tr>
<tr><td>changeTempReactionParameter.js</td><td>Adds the changeTemp property to modded reactions</td><td>Alice</td></tr> <tr><td>changeTempReactionParameter.js</td><td>The changeTemp property to modded reactions</td><td>Alice</td></tr>
<tr><td>code_library.js</td><td>Adds functions and variables common to some other mods</td><td>Alice</td></tr> <tr><td>code_library.js</td><td>Functions and variables common to some other mods</td><td>Alice</td></tr>
<tr><td>customexplosion.js</td><td>Added a custom explosion element and interface for it. check out its <a href="https://sandboxels-mods.the-enchanteden.repl.co/Mods/customexplosion.js">source code</a> for how modders can use it.</td><td>Alex</td></tr> <tr><td>controllable_pixel_test.js</td><td>Pixel that can be controlled with the keyboard keys <a href="https://github.com/R74nCom/sandboxels/commit/58dfa9477f2ed7ec9c44b00a35162e7c63bc129c">[More Info]</a> [PC ONLY]</td><td>Alice</td></tr>
<tr><td>customexplosion.js</td><td>Added a custom explosion element and interface for it. check out its <a href="https://sandboxels-mods.the-enchanteden.repl.co/Mods/customexplosion.js">source code</a> for how modders can use it</td><td>Alex</td></tr>
<tr><td>date_test.js</td><td>K-pop idol birthday testing stuff</td><td>Alice</td></tr> <tr><td>date_test.js</td><td>K-pop idol birthday testing stuff</td><td>Alice</td></tr>
<tr><td>drawPixels_change_test.js</td><td>A test of altering drawPixels(). Gives burning pixels a red overlay similar to the yellow overlay for charged pixels</td><td>Alice</td></tr> <tr><td>drawPixels_change_test.js</td><td>Test of altering drawPixels(). Gives burning pixels a red overlay similar to the yellow overlay for charged pixels</td><td>Alice</td></tr>
<tr><td>example_mod.js</td><td>An example mod for new modders</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr><td>example_mod.js</td><td>Example mod for new modders</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>explodeAtPlus.js</td><td>Extension of the explodeAt function with more options</td><td>Alice</td></tr> <tr><td>explodeAtPlus.js</td><td>Extension of the explodeAt function with more options</td><td>Alice</td></tr>
<tr><td>fill_script.js</td><td>Script that fills an area</td><td>TealEgg#7646</td></tr> <tr><td>fill_script.js</td><td>Script that fills an area</td><td>TealEgg#7646</td></tr>
<tr><td>generative_mods.js</td><td>Modpack with optional mass element generation</td><td>Alice</td></tr> <tr><td>generative_mods.js</td><td>Modpack with optional mass element generation</td><td>Alice</td></tr>
<tr><td>generator_prompt.js</td><td>Adds a prompt to use generative_mods.jss element generators after the game finishes loading</td><td>Alice</td></tr> <tr><td>generator_prompt.js</td><td>Prompt to use generative_mods.js's element generators after the game finishes loading</td><td>Alice</td></tr>
<tr><td>gradient_background_support.js</td><td>Enables linear gradients for backgrounds as arrays in settings.bg</td><td>Alice</td></tr> <tr><td>gradient_background_support.js</td><td>Enables linear gradients for backgrounds as arrays in settings.bg</td><td>Alice</td></tr>
<tr><td>libpacman-v1.js</td><td>Library for making mods</td><td>mollthecoder</td></tr> <tr><td>libpacman-v1.js</td><td>Library for making mods</td><td>mollthecoder</td></tr>
<tr><td>libpixeltracking.js</td><td>Library for tracking pixels</td><td>mollthecoder</td></tr> <tr><td>libpixeltracking.js</td><td>Library for tracking pixels</td><td>mollthecoder</td></tr>
<tr><td>maxColorOffset.js</td><td>Adds a property to specify how much a pixels color can be randomly offset from the element color</td><td>Alice</td></tr> <tr><td>maxColorOffset.js</td><td>Property to specify how much a pixel's color can be randomly offset from the element color</td><td>Alice</td></tr>
<tr><td>modlangs.js</td><td>Adds a customisable property in an element to allow for translations in mods. See the file for instructions on how to implement.</td><td>SquareScreamYT</td></tr> <tr><td>modlangs.js</td><td>Customisable property in an element to allow for translations in mods. See the file for instructions on how to implement</td><td>SquareScreamYT</td></tr>
<tr><td>nested_for_reaction_example.js</td><td>An example of using a nested for loop to add reactions. It makes various things kill plants</td><td>Alice</td></tr> <tr><td>nested_for_reaction_example.js</td><td>Example of using a nested for loop to add reactions. It makes various things kill plants</td><td>Alice</td></tr>
<tr><td>nv7.js</td><td>Adds a giant Nv7 image [Large]</td><td>Nv7</td></tr> <tr><td>nv7.js</td><td>Giant Nv7 image [Large]</td><td>Nv7</td></tr>
<tr><td>place_all_elements.js</td><td>Experimental function that places every pixel</td><td>Alice</td></tr> <tr><td>place_all_elements.js</td><td>Experimental function that places every pixel</td><td>Alice</td></tr>
<tr><td>randomness_but_tick.js</td><td>Random experimental elements using the tick function feature</td><td>Alice</td></tr> <tr><td>randomness_but_tick.js</td><td>Random experimental elements using the tick function feature</td><td>Alice</td></tr>
<tr><td>randomness_but_tool.js</td><td>Random experimental elements using the tool function feature</td><td>Alice</td></tr> <tr><td>randomness_but_tool.js</td><td>Random experimental elements using the tool function feature</td><td>Alice</td></tr>
<tr><td>randomness.js</td><td>Random experimental elements</td><td>Alice</td></tr> <tr><td>randomness.js</td><td>Random experimental elements</td><td>Alice</td></tr>
<tr><td>scenexe.js</td><td>Work-in-progress mod, allows you to move through and damage a simulated field of polygons</td><td>nousernamefound</td></tr> <tr><td>scenexe.js</td><td>Move through and damage a simulated field of polygons [WIP]</td><td>nousernamefound</td></tr>
<tr><td>structure_test_2.js</td><td>Another test for implementing structures into Sandboxels (requires the previous test)</td><td>Alice</td></tr> <tr><td>structure_test_2.js</td><td>Another test for implementing structures into Sandboxels (requires the previous test)</td><td>Alice</td></tr>
<tr><td>structure_test.js</td><td>A test for implementing structures into Sandboxels</td><td>Alice</td></tr> <tr><td>structure_test.js</td><td>Test for implementing structures into Sandboxels</td><td>Alice</td></tr>
<tr><td>test.js</td><td>A test mod that adds mayo :)</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr><td>test.js</td><td>Test that adds mayo :)</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>tool_pixel_behavior.js</td><td>Gives unique behaviors to tools if placed with cheats</td><td>Alice</td></tr> <tr><td>tool_pixel_behavior.js</td><td>Gives unique behaviors to tools if placed with cheats</td><td>Alice</td></tr>
<tr><td>worldgen_test.js</td><td>Adds an element that generates a save with a grass layer, dirt layer, rock layer, and a pond</td><td>Alice</td></tr> <tr><td>worldgen_test.js</td><td>Element that generates a save with a grass layer, dirt layer, rock layer, and a pond</td><td>Alice</td></tr>
<!----><tr><td class="modCat" colspan="3">Broken or Deprecated</td></tr><!----> <!----><tr><td class="modCat" colspan="3">Broken or Deprecated</td></tr><!---->
<tr class="deprecated"><td>a_mod_by_alice.js</td><td>A mod combining most of Alices mods, and some other things</td><td>Alice</td></tr> <tr class="deprecated"><td>a_mod_by_alice.js</td><td>Combination of most of Alice's mods, and some other things</td><td>Alice</td></tr>
<tr class="deprecated"><td>advanced_colonies.js</td><td>Adds davlers, creatures with complex colonies</td><td>DaviStudios</td></tr> <tr class="deprecated"><td>adjustablepixelsize.js</td><td>Set the pixelSize with a URL parameter</td><td>Alice</td></tr>
<tr class="deprecated"><td>humans.js</td><td>Adds humans. Now part of the base game</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr class="deprecated"><td>advanced_colonies.js</td><td>Davlers, creatures with complex colonies</td><td>DaviStudios</td></tr>
<tr class="deprecated"><td>humans.js</td><td>Humans. Now part of the base game</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr class="deprecated"><td>invertscroll.js</td><td>Inverts the scroll wheel for adjusting brush size (now a setting)</td><td>SquareScreamYT</td></tr> <tr class="deprecated"><td>invertscroll.js</td><td>Inverts the scroll wheel for adjusting brush size (now a setting)</td><td>SquareScreamYT</td></tr>
<tr class="deprecated"><td>mobile_shift.js</td><td>Adds a button for shift on mobile (Now in the base game)</td><td>SquareScreamYT</td></tr> <tr class="deprecated"><td>mobile_shift.js</td><td>Button for shift on mobile (Now in the base game)</td><td>SquareScreamYT</td></tr>
<tr class="deprecated"><td>nopixellimit.js</td><td>Removes the pixel limit. (now a setting)</td><td>Jayd</td></tr> <tr class="deprecated"><td>nopixellimit.js</td><td>Removes the pixel limit. (now a setting)</td><td>Jayd</td></tr>
<tr class="deprecated"><td>unhide.js</td><td>Unhides all elements except molten ones. (This functionality now exists as a vanilla setting)</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr> <tr class="deprecated"><td>unhide.js</td><td>Unhides all elements except molten ones. (This functionality now exists as a vanilla setting)</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr class="deprecated"><td>wheel_fix.js</td><td>Attempts to fix the brush scaling too much with the mouse wheel for some people. Deprecated</td><td>Nubo318</td></tr> <tr class="deprecated"><td>wheel_fix.js</td><td>Attempts to fix the brush scaling too much with the mouse wheel for some people. Deprecated</td><td>Nubo318</td></tr>

View File

@ -1,6 +1,10 @@
document.body.style.backgroundImage = 'url("https://jayd-rubies.github.io/image/uwuify.png")'; document.body.style.backgroundImage = 'url("https://jayd-rubies.github.io/image/uwuify.png")';
document.body.style.backgroundSize = 'cover'; document.body.style.backgroundSize = 'cover';
gameDiv.style.border = "1px solid #ffffff00"; gameDiv.style.border = "1px solid #ffffff00";
var statsbar = document.getElementById("stats");
var stylesheetchangevar = document.querySelector("link[rel=stylesheet]");
stylesheetchangevar.href = "https://jayd-Rubies.github.io/assets/css/UwUstyle.css";
statsbar.style.backgroundColor = 'transparent';
window.addEventListener("load",function(){ window.addEventListener("load",function(){
document.querySelectorAll(".categoryButton").forEach(e => { document.querySelectorAll(".categoryButton").forEach(e => {
e.style.backgroundColor = "#ffc0cb40"; e.style.backgroundColor = "#ffc0cb40";

View File

@ -1,6 +1,6 @@
//Main version //Main version. Still in WIP
//reminder for creator: human code is on index.html line 3242. //reminder for creator: human code is on index.html line 3242.
//Ini adalah aScientistsWish.js, mod dari Sandboxels yang diciptakan oleh Carbon Monoxide dengan bantuan startup oleh Salmonfishy, bertema sains dan semi fiktif dengan adanya zombie, mod ini masih dalam tahap pengembangan.
elements.carbon_monoxide = { elements.carbon_monoxide = {
color: ["#b5b5b5", "#404040", "#2b2b2b",], color: ["#b5b5b5", "#404040", "#2b2b2b",],
behavior: behaviors.GAS, behavior: behaviors.GAS,
@ -929,6 +929,7 @@ elements.liquid_phosgene = {
category: "states", category: "states",
density: 7.50, density: 7.50,
tempLow: -118, tempLow: -118,
hidden: true,
temp: -10, temp: -10,
stateLow: "solid_phosgene", stateLow: "solid_phosgene",
tempHigh: 8, tempHigh: 8,
@ -939,6 +940,7 @@ elements.solid_phosgene = {
behavior: behaviors.WALL, behavior: behaviors.WALL,
state: "solid", state: "solid",
category: "states", category: "states",
hidden: true,
density: 12.45, density: 12.45,
temp: -150, temp: -150,
tempHigh: -117, tempHigh: -117,
@ -962,3 +964,232 @@ elements.chlorophyll = {
"acid": { elem1: ["magnesium"], } "acid": { elem1: ["magnesium"], }
} }
} }
elements.lithium = { //Unsur lithium, buat versi baru, masih WIP.
color: ["#928c96", "#9c9c9c",],
state: "powder",
category: "powders",
behavior: behaviors.POWDER,
density: 0.5,
tempHigh: 180,
stateHigh: "molten_lithium",
conduct: 0.2,
burn: 85,
burnTime: 500,
reactions: {
"water": { elem1: ["pop","explosion","hydrogen","lithium_hydroxide"] },
"salt_water": { elem1: ["pop","explosion","hydrogen","lithium_hydroxide"] },
"pool_water": { elem1: ["pop","explosion","hydrogen","lithium_hydroxide"] },
"dirty_water": { elem1: ["pop","explosion","hydrogen","lithium_hydroxide"] },
"sugar_water": { elem1: ["pop","explosion","hydrogen","lithium_hydroxide"] },
"steam": { elem1: ["pop","explosion","hydrogen","lithium_hydroxide"] },
"oxygen": { elem1: "lithium_oxide" },
"chlorine": { elem1: "lithium_chloride" },
"acid": { elem1: ["lithium_chloride","hydrogen"], chance: 0.2 },
"carbon_dioxide": { elem1: "lithium_carbonate" },
"carbon_monoxide": { elem1: "lithium_carbonate" },
"nitrogen": { elem1: "lithium_nitride", chance: 0.1 }
}
}
elements.molten_lithium = {
color: ["#c0c0c0", "#d0d0d0", "#b0b0b0"],
behavior: behaviors.LIQUID,
temp: 250, // temperatur normal
density: 0.5,
conduct: 0.5,
state: "liquid",
category: "states",
hidden: true,
tempLow: 180,
stateLow: "lithium",
burn: 50,
burnTime: 300,
burnInto: "lithium_oxide",
}
elements.lithium_hydroxide = {
color: "#c8e4d8",
behavior: behaviors.POWDER,
category: "powders",
state: "solid",
density: 1500,
tempHigh: 462, // titik leleh LiOH
stateHigh: "molten_lithium_hydroxide",
reactions: {},
};
// Molten Lithium Hydroxide
elements.molten_lithium_hydroxide = {
color: "#dff7f2",
behavior: behaviors.LIQUID,
category: "states",
state: "liquid",
density: 1400,
hidden: true,
temp: 463,
tempHigh: 924, // perkiraan titik didih
stateHigh: "lithium_hydroxide_gas", // opsional
reactions: {},
};
// Lithium Oxide (hasil reaksi lithium dengan oksigen)
elements.lithium_oxide = {
color: "#d0d0d0",
behavior: behaviors.POWDER,
category: "powders",
state: "solid",
density: 2013,
tempHigh: 1438,
stateHigh: "molten_lithium_oxide",
reactions: {},
};
// Molten Lithium Oxide
elements.molten_lithium_oxide = {
color: "#e8e8e8",
behavior: behaviors.LIQUID,
category: "states",
state: "liquid",
density: 1800,
hidden: true,
temp: 1440,
reactions: {},
};
// Lithium Carbonate (hasil reaksi lithium dengan karbon dioksida)
elements.lithium_carbonate = {
color: "#f0f0f0",
behavior: behaviors.POWDER,
category: "powders",
state: "solid",
density: 2110,
tempHigh: 723,
stateHigh: "molten_lithium_carbonate",
reactions: {},
};
// Molten Lithium Carbonate
elements.molten_lithium_carbonate = {
color: "#fafafa",
behavior: behaviors.LIQUID,
category: "states",
state: "liquid",
density: 1900,
hidden: true,
temp: 725,
reactions: {},
};
// Lithium Chloride (hasil reaksi lithium dengan klorin atau asam)
elements.lithium_chloride = {
color: "#e0e0f8",
behavior: behaviors.POWDER,
category: "powders",
state: "solid",
density: 2068,
tempHigh: 614,
stateHigh: "molten_lithium_chloride",
reactions: {},
};
// Molten Lithium Chloride
elements.molten_lithium_chloride = {
color: "#f0f0ff",
behavior: behaviors.LIQUID,
category: "states",
state: "liquid",
hidden: true,
density: 1900,
temp: 615,
reactions: {},
};
// Lithium Nitride (hasil reaksi lithium dengan nitrogen)
elements.lithium_nitride = {
color: "#b8b8b8",
behavior: behaviors.POWDER,
category: "powders",
state: "solid",
density: 1270,
tempHigh: 813,
stateHigh: "molten_lithium_nitride",
reactions: {},
};
// Molten Lithium Nitride
elements.molten_lithium_nitride = {
color: "#c8c8c8",
behavior: behaviors.LIQUID,
category: "states",
state: "liquid",
hidden: true,
density: 1100,
temp: 815,
reactions: {},
};
elements.phosphorus = {
color: ["#ffffcc", "#ffff99", "#ffff66"],
behavior: behaviors.POWDER,
category: "powders",
state: "solid",
density: 1820,
burn: 100,
burnTime: 100,
burnInto: "fire",
reactions: {
"oxygen": { elem1: "fire", chance: 0.5 },
"water": { elem1: "explosion", },
},
tempHigh: 44,
stateHigh: "molten_phosphorus",
hidden: false,
};
elements.molten_phosphorus = {
color: ["#ffcc00", "#ff9900"],
behavior: behaviors.LIQUID,
category: "states",
state: "liquid",
density: 1600,
hidden: true,
burning: true,
burnTime: 2000,
burnInto: "fire",
reactions: {
"oxygen": { elem1: "fire", chance: 1 },
},
temp: 100,
tempLow: 43,
stateLow: "phosphorus",
viscosity: 20,
};
elements.phosphorus_bomb = {
color: "#ffdd66",
behavior: behaviors.POWDER,
category: "weapons",
state: "solid",
density: 1200,
desc: "Bom fosfor meledak saat menyentuh elemen lain dan menyebarkan molten_phosphorus.",
tick: function(pixel) {
// Periksa apakah ada elemen lain di sekitarnya
for (let dx = -1; dx <= 1; dx++) {
for (let dy = -1; dy <= 1; dy++) {
if (dx === 0 && dy === 0) continue;
let x = pixel.x + dx;
let y = pixel.y + dy;
if (!isEmpty(x, y)) {
// Meledak: ubah area sekitar jadi molten_phosphorus
for (let ex = -3; ex <= 3; ex++) {
for (let ey = -3; ey <= 3; ey++) {
let nx = pixel.x + ex;
let ny = pixel.y + ey;
if (isEmpty(nx, ny) && Math.random() < 0.6) {
createPixel("molten_phosphorus", nx, ny);
}
}
}
deletePixel(pixel.x, pixel.y); // Hancurkan bomb setelah meledak
return;
}
}
}
}
};

209
mods/barista.js Normal file
View File

@ -0,0 +1,209 @@
/*
Barista Mods by Salmonfishyy (eu)
Add many ingredients for drinks
Changelog - Foundation Level (v0.1)
- Matcha Elements
Changelog - Foundation Level (v0.2)
- Oolong tea
- cinnamon tea
*/
elements.tencha = {
behavior: behaviors.POWDER,
category: "food",
state: "solid",
color: ["#25360c","#324a0c"],
density: 500,
breakInto: "matcha_powder",
isFood: true,
desc: "Tea leaves, can break into matcha, look pretty sussy.",
reactions: {
"water": { elem2:"tea", tempMin:80 }
}
};
elements.matcha_powder = {
behavior: behaviors.POWDER,
category: "food",
state: "solid",
color: ["#74A662","#74A12E"],
density: 400,
tempHigh: 80,
stateHigh: "burn_matcha",
isFood: true,
desc: "Fine green powder from tea leaves. Vibrant color, earthy taste, and packed with antioxidants. Used in drinks, desserts, and rituals. Basically, classy leaf dust. Watch out for heat and oxygen!",
reactions: {
"oxygen": { elem2: "broke_matcha", chance: 0.5 },
"dirty_water": { elem2: "null", chance: 0.5 },
"pool_water": { elem2: "null", chance: 0.5 },
"water": { elem2: "matcha_tea", chance: 0.5 },
"seltzer": { elem2: "matcha_soda", chance: 0.5 },
"salt_water": { elem2: "salty_matcha", chance: 0.5 },
"sugar_water": { elem2: "sweet_matcha", chance: 0.5 }
}
};
elements.broke_matcha = {
behavior: behaviors.POWDER,
category: "food",
state: "solid",
color: ["#556B2F","#8B4513"],
density: 400,
desc: "Broke matcha—once a proud green powder, now a sad, terrible mess. Faded, bitter, and questioning its life choices. Now useless."
};
elements.matcha_tea = {
behavior: behaviors.LIQUID,
category: "food",
state: "liquid",
color: ["#5F8A3D"],
density: 1000,
isFood: true,
desc: "Thick green drink, kinda earthy, kinda bitter. Looks like a magic potion, feels like a forest hug. Smooth, strong, and definitely plotting something...",
reactions: {
"milk": { elem2: "matcha_latte", chance: 0.5 },
"cream": { elem2: "matcha_latte", chance: 0.5 },
"salt": { elem2: "salty_matcha", chance: 0.5 },
"sugar": { elem2: "sweet_matcha", chance: 0.5 },
"carbon_dioxide": { elem2: "matcha_soda", chance: 0.5 }
}
};
elements.matcha_latte = {
behavior: behaviors.LIQUID,
category: "food",
state: "liquid",
color: ["#DDEEAF"],
density: 1000,
isFood: true,
desc: "Green tea and milk mixed together. Smooth, slightly sweet, and a bit earthy. Looks fancy, tastes cozy.",
reactions: {
"milk": { elem2:null, chance: 0.5 },
"cream": { elem2:null, chance: 0.5 }
}
};
elements.salty_matcha = {
behavior: behaviors.LIQUID,
category: "food",
state: "liquid",
color: ["#A2B57D"],
density: 1000,
isFood: true,
desc: "Green tea but slightly salty. Confusing, kinda wrong, yet somehow still drinkable. Like matcha decided to rebel.",
reactions: {
"salt": { elem2:null, chance: 0.5 }
}
};
elements.matcha_soda = {
behavior: behaviors.LIQUID,
behavior: [
"XX|CR:foam%3|XX",
"M2|XX|M2",
"M2|M1|M2",
],
tick: function(pixel) {
if (Math.random() < 0.05 && isEmpty(pixel.x,pixel.y-1)) {
let foam = releaseElement(pixel, "foam");
if (foam) foam.color = pixelColorPick(foam,"#7EBF5C");
}
},
onMix: function(pixel) {
releaseElement(pixel, "foam", shiftDown)
},
category: "food",
state: "liquid",
color: ["#7EBF5C"],
density: 1000,
isFood: true,
desc: "Carbonated green tea. Slightly bitter, extra fizzy. Tastes fresh, feels weird...",
reactions: {
"carbon_dioxide": { elem2:null, chance: 0.5 }
}
};
elements.oolong_leaves = {
behavior: behaviors.POWDER,
category: "food",
state: "solid",
color: ["#CDB361","#8F6B3A"],
density: 200,
isFood: true,
tempHigh: 120,
stateHigh: "roasted_oolong",
desc: "Dark, twisty tea leaves that look kinda serious. Smell fancy, taste like tea that went through a phase. Smooth, strong, and slightly dramatic.",
reactions: {
"water": { elem2:"oolong_tea", tempMin:80 },
}
};
elements.roasted_oolong = {
behavior: behaviors.POWDER,
category: "food",
state: "solid",
color: ["#8F6B3A","#654321"],
density: 220,
isFood: true,
desc: "Roasted oolong—deeper flavor, slightly smoky, and probably wiser now.",
reactions: {
"water": { elem2:"oolong_tea", tempMin:80 },
}
};
elements.cinnamon = {
behavior: behaviors.SUPPORTPOWDER,
category: "food",
state: "solid",
color: ["#6a462f","#4a3120"],
density: 500,
breakInto: "cinnamon_powder",
isFood: true,
desc: "Cinnamon, a thingy things with spicy flavour.",
reactions: {
"water": { elem2:"cinnamon_tea", tempMin:80, color2:"#6c3213" },
}
};
elements.cinnamon_powder = {
behavior: behaviors.SUPPORTPOWDER,
category: "food",
state: "solid",
color: ["#986544"],
density: 589,
isFood: true,
desc: "Cinnamon powder, from cinnamon, a thingy things powder with spicy flavour.",
reactions: {
"water": { elem2:"cinnamon_tea", chance: 0.5, color2:"#6c3213" },
}
};
elements.cinnamon_tea = {
behavior: behaviors.LIQUID,
category: "food",
state: "solid",
color: ["#723900"],
density: 1000,
isFood: true,
desc: "Cozy tea with spicy taste.",
reactions: {
"cinnamon_powder": { elem2:"null", chance: 0.5 },
}
};
elements.oolong_tea = {
behavior: behaviors.LIQUID,
category: "food",
state: "solid",
color: ["#ADA07B"],
density: 1000,
isFood: true,
desc: "it's just tea, make from oolong.",
reactions: {
"sugar": { elem2:"null", chance: 0.5 },
}
};

View File

@ -117,3 +117,38 @@ worldgentypes.city = {
], ],
baseHeight: 0.25 baseHeight: 0.25
} }
currentBuildingElement = "wood";
function buildSelectHandler(r) {
if (!r) { return; }
e = r.replace(/ /g, "_");
es = mostSimilarElement(e);
if (es) {
currentBuildingElement = es;
logMessage("Element \"" + e + "\" selected");
}
else {
currentBuildingElement = "wood";
logMessage("Element \"" + e + "\" not found");
selectElement(null);
}
}
elements.slab = {
color: "#888888",
onSelect: () => {
promptInput("Which element should the slab be?", buildSelectHandler, "Select Material")
},
onPlace: (pixel) => {
pixel.mat = currentBuildingElement;
},
renderer: (pixel,ctx) => {
let color = elements[pixel.mat].color;
if (Array.isArray(color)) color = color[0];
if (color) { ctx.fillStyle = color; }
ctx.fillRect(canvasCoord(pixel.x), canvasCoord(pixel.y+0.5), pixelSize, pixelSize/2);
},
category: "solids"
}

1
mods/cookingnstuff.js Normal file
View File

@ -0,0 +1 @@
logMessage("This mod (cookingnstuff.js) has been moved to talismanadditions.js");

View File

@ -193,138 +193,28 @@ elements.clone_fluid = {
// category: "special" // category: "special"
// } // }
addCanvasLayer("devtests"); elements.hue_paint = {
addCanvasLayer("devtests2"); color: elements.paint.color,
canvasLayersPre.unshift(canvasLayers["devtests"]); tool: (pixel) => {
devtestsCtx = canvasLayers["devtests"].getContext("2d"); let hsl;
devtestsCtx2 = canvasLayers["devtests2"].getContext("2d"); if (pixel.color.match(/^rgb/)) {
delete canvasLayers.devtests; hsl = RGBToHSL(pixel.color.match(/\d+/g));
delete canvasLayers.devtests2;
viewInfo[9] = { // Blur
name: "blur",
pixel: viewInfo[1].pixel,
post: function(ctx) {
devtestsCtx.canvas.width = ctx.canvas.width;
devtestsCtx.canvas.height = ctx.canvas.height;
devtestsCtx.filter = "blur(80px)";
// Draw the blurred content on the canvas
devtestsCtx.drawImage(canvasLayers["pixels"], 0, 0);
devtestsCtx.filter = "none";
},
};
elements.fire.emit = true;
elements.lightning.emit = 15;
elements.electric.emit = true;
elements.plasma.emit = true;
elements.uranium.emit = 3;
elements.uranium.emitColor = "#009800";
elements.rainbow.emit = true;
elements.static.emit = true;
elements.flash.emit = true;
elements.cold_fire.emit = true;
elements.blaster.emit = true;
elements.ember.emit = true;
elements.fw_ember.emit = 10;
elements.bless.emit = true;
elements.pop.emit = true;
elements.explosion.emit = true;
elements.n_explosion.emit = 10;
elements.supernova.emit = 20;
elements.midas_touch.emit = true;
elements.fireball.emit = true;
elements.sun.emit = 15;
elements.light.emit = 3;
elements.liquid_light.emit = true;
elements.laser.emit = 3;
elements.neutron.emit = 3;
elements.proton.emit = 3;
elements.radiation.emit = 3;
elements.fallout.emit = 3;
elements.rad_steam.emit = 2;
elements.rad_steam.emitColor = "#6ad48c";
elements.rad_cloud.emit = 2;
elements.rad_cloud.emitColor = "#009800";
elements.rad_glass.emit = 2;
elements.rad_glass.emitColor = "#009800";
elements.rad_shard.emit = 2;
elements.rad_shard.emitColor = "#009800";
elements.malware.emit = 2;
elements.border.emit = 2;
viewInfo[8] = { // Blur Glow (Emissive pixels only)
name: "blurglow",
pixel: viewInfo[1].pixel,
effects: true,
colorEffects: true,
pre: function(ctx) {
devtestsCtx2.canvas.width = ctx.canvas.width;
devtestsCtx2.canvas.height = ctx.canvas.height;
},
pixel: viewInfo[1].pixel,
post: function(ctx) {
devtestsCtx.canvas.width = ctx.canvas.width;
devtestsCtx.canvas.height = ctx.canvas.height;
devtestsCtx.filter = "blur(30px)";
// Draw the blurred content on the canvas
devtestsCtx.drawImage(devtestsCtx2.canvas, 0, 0);
devtestsCtx.filter = "none";
},
};
// viewInfo[7] = { // Pixelized Glow (Emissive pixels only)
// name: "pixelglow",
// pixel: viewInfo[1].pixel,
// effects: true,
// colorEffects: true,
// pre: function(ctx) {
// devtestsCtx2.canvas.width = width;
// devtestsCtx2.canvas.height = height;
// devtestsCtx.canvas.width = ctx.canvas.width;
// devtestsCtx.canvas.height = ctx.canvas.height;
// if (devtestsCtx.msImageSmoothingEnabled !== false) {
// devtestsCtx.msImageSmoothingEnabled = false;
// devtestsCtx.mozImageSmoothingEnabled = false;
// devtestsCtx.webkitImageSmoothingEnabled = false;
// devtestsCtx.imageSmoothingEnabled = false;
// }
// },
// pixel: viewInfo[1].pixel,
// post: function(ctx) {
// // devtestsCtx.canvas.width = ctx.canvas.width;
// // devtestsCtx.canvas.height = ctx.canvas.height;
// // devtestsCtx.filter = "blur(30px)";
// // Draw the blurred content on the canvas
// devtestsCtx.filter = "blur(30px)";
// devtestsCtx.drawImage(devtestsCtx2.canvas, 0, 0, width, height, 0, 0, devtestsCtx.canvas.width, devtestsCtx.canvas.height);
// devtestsCtx.filter = "none";
// devtestsCtx.drawImage(devtestsCtx.canvas, 0, 0, devtestsCtx.canvas.width, devtestsCtx.canvas.height, 0, 0, devtestsCtx.canvas.width, devtestsCtx.canvas.height);
// },
// };
renderEachPixel(function(pixel,ctx) {
if (view === 8) {
if (elements[pixel.element].emit || pixel.emit || (elements[pixel.element].colorOn && pixel.charge)) {
let a = (settings.textures !== 0) ? pixel.alpha : undefined;
let d = elements[pixel.element].emit||true;
if (d === true) d = 5;
let r = Math.floor(d/2);
drawSquare(devtestsCtx2,elements[pixel.element].emitColor||pixel.color,pixel.x-r,pixel.y-r,d,a);
// viewInfo[1].pixel(pixel,devtestsCtx2);
} }
if (pixel.charge && !elements[pixel.element].colorOn) { if (hsl) {
drawSquare(devtestsCtx2,"#ffff00",pixel.x-1,pixel.y-1,3); let newRGB = hexToRGB(currentColorMap.hue_paint);
let newHSL = RGBToHSL([newRGB.r,newRGB.g,newRGB.b]);
hsl[0] = parseFloat(newHSL[0]);
hsl[1] = parseFloat(hsl[1]);
if (hsl[1] < 0.05) hsl[1] = 0.1;
hsl[2] = parseFloat(hsl[2]);
newRGB = HSLtoRGB(hsl);
newRGB[0] = Math.floor(newRGB[0]);
newRGB[1] = Math.floor(newRGB[1]);
newRGB[2] = Math.floor(newRGB[2]);
pixel.color = "rgb("+newRGB.join(",")+")";
delete pixel.origColor;
} }
} },
// else if (view === 7) { category: "special",
// let a = (settings.textures !== 0) ? pixel.alpha : undefined; customColor: true,
// let d = elements[pixel.element].emit||true; }
// if (d === true) d = 5;
// let r = Math.floor(d/2);
// devtestsCtx2.fillStyle = pixel.color;
// if (devtestsCtx2.globalAlpha !== a) { devtestsCtx2.globalAlpha = a; }
// devtestsCtx2.fillRect(pixel.x-r, pixel.y-r, d, d);
// }
})

View File

@ -1,7 +1,9 @@
var isChromium = !!window.chrome; var isChromium = !!window.chrome;
var ua = navigator.userAgent.toLowerCase();
var isAndroid = ua.indexOf("android") > -1; //&& ua.indexOf("mobile");
if (!isChromium) { if (!isChromium && !isAndroid) {
window.addEventListener("load",function(){ window.addEventListener("load",function(){
console.log(1) console.log(1)
logMessage("Error: glow.js only works on Chrome or Chromium-based browsers.") logMessage("Error: glow.js only works on Chrome or Chromium-based browsers.")
@ -58,6 +60,13 @@ elements.malware.emit = 2;
elements.border.emit = 2; elements.border.emit = 2;
elements.void.emit = 10; elements.void.emit = 10;
window.addEventListener("load",()=>{
glowmodCtx2.canvas.width = ctx.canvas.width;
glowmodCtx2.canvas.height = ctx.canvas.height;
glowmodCtx.canvas.width = ctx.canvas.width;
glowmodCtx.canvas.height = ctx.canvas.height;
})
viewInfo[1] = { // Blur Glow (Emissive pixels only) viewInfo[1] = { // Blur Glow (Emissive pixels only)
name: "", name: "",
pixel: viewInfo[1].pixel, pixel: viewInfo[1].pixel,
@ -85,7 +94,7 @@ viewInfo[1] = { // Blur Glow (Emissive pixels only)
}; };
renderEachPixel(function(pixel,ctx) { renderEachPixel(function(pixel,ctx) {
if (view === 1) { if (view === 1 && settings.textures !== 0) {
if (elements[pixel.element].emit || pixel.emit || (elements[pixel.element].colorOn && pixel.charge)) { if (elements[pixel.element].emit || pixel.emit || (elements[pixel.element].colorOn && pixel.charge)) {
let a = (settings.textures !== 0) ? pixel.alpha : undefined; let a = (settings.textures !== 0) ? pixel.alpha : undefined;
let d = pixel.emit||elements[pixel.element].emit||true; let d = pixel.emit||elements[pixel.element].emit||true;

51
mods/gravity_test.js Normal file
View File

@ -0,0 +1,51 @@
// validateMoves((pixel,nx,ny) => {
// if (pixel.y-ny < 0) { //goes down usually
// return false;
// }
// })
validateMoves((pixel,nx,ny) => {
if (elements[pixel.element].isGas) return true;
if (true || pixel.y-ny < 0) { //goes down usually
nx = 0;
ny = 0;
const centerX = Math.floor(width/2);
const centerY = Math.floor(height/2);
let diffX = centerX-pixel.x;
let diffY = centerY-pixel.y;
let dirX = 0;
let dirY = 0;
if (Math.abs(diffX) > Math.abs(diffY)) {
dirX = Math.sign(diffX);
}
else {
dirY = Math.sign(diffY);
}
if (Math.random() < Math.abs(diffX)/100) diffX = Math.sign(diffX);
else diffX = 0;
if (Math.random() < Math.abs(diffY)/100) diffY = Math.sign(diffY);
else diffY = 0;
if ((diffX || diffY) && !isEmpty(pixel.x+diffX,pixel.y+diffY)) {
if (dirX !== 0) {
diffY = Math.random() < 0.5 ? 1 : -1;
}
else if (dirY !== 0) {
diffX = Math.random() < 0.5 ? 1 : -1;
}
}
// if (!(pixel.y-ny)) {
// diffX += pixel.y-ny;
// diffY += pixel.x-nx;
// }
return [pixel.x+diffX,pixel.y+diffY];
}
})

View File

@ -1,4 +1,3 @@
elements.mars_gunk = { elements.mars_gunk = {
color: "#121212", color: "#121212",
behavior: behaviors.DGAS, behavior: behaviors.DGAS,
@ -29,8 +28,8 @@ elements.mars_basalt = {
state: "solid", state: "solid",
density: 5000, density: 5000,
extraInfo: "Woah", extraInfo: "Woah",
tempHigh: "molten_mars", tempHigh: "700",
stateHigh: "600", stateHigh: "molten_mars",
hardness: 0.7, hardness: 0.7,
breakInto: ["mars_dust", "mars_rock", "mars_rock", "mars_rock", "molten_mars", "mars_debris", "mars_debris", "gunk", "mars_rock_wall"] breakInto: ["mars_dust", "mars_rock", "mars_rock", "mars_rock", "molten_mars", "mars_debris", "mars_debris", "gunk", "mars_rock_wall"]
} }
@ -113,7 +112,11 @@ elements.mars_ironheart_ore = {
} }
elements.mars_ironheart = { elements.mars_ironheart = {
color: ["#e8e8e8", "#bd1102"], color: ["#e8e8e8", "#bd1102"],
behavior: behaviors.STURDYPOWDER, behavior: [
"XX|CR:radiation%3|XX",
"XX|XX|XX",
"XX|XX|XX",
],
category: "mars", category: "mars",
state: "solid", state: "solid",
density: 1500, density: 1500,
@ -155,10 +158,10 @@ elements.nosmoker = {
breakInto: ["ironheart", "mars_ironheart", "ironheart_ore", "antigunk"] breakInto: ["ironheart", "mars_ironheart", "ironheart_ore", "antigunk"]
} }
elements.ironheart = { elements.ironheart = {
color: "#e9825a", color: "#FF6B5A",
behavior: [ behavior: [
"XX|XX|XX|", "XX|CR:radiation%2|XX|",
"XX|XX|XX|", "XX|CH:feynmanium%0.1|XX|",
"M2|M1|M2|", "M2|M1|M2|",
], ],
category: "mars", category: "mars",
@ -166,6 +169,40 @@ elements.ironheart = {
state: "solid", state: "solid",
stateHigh: "molten_mars", stateHigh: "molten_mars",
extraInfo: "Very Sturdy.", extraInfo: "Very Sturdy.",
stateLow: "depleted_ironheart",
tempLow: -50,
tempHigh: 1500,
reactions: {
"electric": { elem1: "smint", elem2: "null" },
},
}
elements.depleted_ironheart = {
color: "#e9825a",
behavior: [
"XX|XX|XX|",
"XX|XX|XX|",
"M2|M1|M2|",
],
category: "mars",
density: 1200,
state: "solid",
stateHigh: "molten_mars",
reactions: {
"electric": { elem1: "smint", elem2: "null" },
},
}
elements.feynmanium = {
color: "#8C7656",
behavior: [
"XX|XX|XX|",
"XX|XX|XX|",
"M2|M1|M2|",
],
category: "mars",
density: 1200,
state: "solid",
stateHigh: "molten_mars",
tempHigh: 6000,
reactions: { reactions: {
"electric": { elem1: "smint", elem2: "null" }, "electric": { elem1: "smint", elem2: "null" },
}, },
@ -190,7 +227,7 @@ elements.red_gold_powder = {
} }
elements.red_gold = { elements.red_gold = {
color: ["#D20103", "#E4080A", "#EFC3CA"], color: ["#D20103", "#E4080A", "#EFC3CA"],
behavior: behaviors.POWDER, behavior: behaviors.WALL,
category: "mars", category: "mars",
state: "solid", state: "solid",
density: 1350, density: 1350,
@ -240,7 +277,7 @@ elements.mars_coal = {
stateHigh: "molten_mars", stateHigh: "molten_mars",
temp: 10, temp: 10,
reactions: { reactions: {
"electric": { elem2: "useless", chance: 0.01 }, "electric": { elem2: "smint", chance: 0.01 },
} }
} }
elements.mars_ice = { elements.mars_ice = {
@ -354,7 +391,8 @@ elements.ironheart_core = {
conduct: 1, conduct: 1,
extraInfo: "wha" extraInfo: "wha"
} }
// 2.9.17.1
// 2.10.20
// most elements done :D // most elements done :D
// iron heart ore // iron heart ore
// iron heart // iron heart
@ -385,7 +423,10 @@ elements.ironheart_core = {
// added cores that emit electricity // added cores that emit electricity
// its like plants // its like plants
// dumbed down ironheart a bit, im thinking about its behaviour // dumbed down ironheart a bit, im thinking about its behaviour
// Ironheart is Radioactive
// Red Gold is Solid
// Feynmanium
// make things have recaitons
// Creditssss // Creditssss
// Ghanisma - idea for 2.9.16 // Ghanisma - idea for 2.9.16

View File

@ -1,3 +1,4 @@
behaviors.SOLIDIFY = function(pixel) { behaviors.SOLIDIFY = function(pixel) {
pixel.solid = true pixel.solid = true
} }
@ -1548,12 +1549,107 @@ grabAllWeights = function(pixel){
return results return results
} }
/*elements.Cherries_Ceri_Moji = { var modName = "mods/nekonicos_stuff.js";
color: "#fcd1d7", var cookieMod = "mods/cookie_clicker.js";
category: Student,
state: High_School, if (!enabledMods.includes(cookieMod)) {
behavior: [Shy, Introverted, Easily_Excited, Kind],
pronouns: [She,Her,Herself], elements.cookie_dough = {
sexuality: [Panromantic, Asexual], color: ["#bfac91","#CDBFAB",],
desc: "Ceri is a 16 year old high school student who loves cats" behavior: behaviors.STURDYPOWDER,
}*/ reactions: {
"chocolate": { elem1:"chocolate_chip_cookie_dough", elem2:null, chance: 0.5 },
"chocolate_powder": { elem1:"chocolate_chip_cookie_dough", elem2:null, chance: 0.5 },
},
category: "food",
tempHigh: 74,
stateHigh: "plain_cookie",
burn:40,
burnTime:25,
burnInto:"ash",
state: "solid",
density: 526.9,
isFood: true
}
elements.chocolate_chip_cookie_dough = {
color: ["#bfac91","#CDBFAB","#bfac91","#CDBFAB","#bfac91","#CDBFAB","#bfac91","#CDBFAB","#bfac91","#CDBFAB","#4d2818","#3b1b0d","#33160a"],
behavior: behaviors.STURDYPOWDER,
category: "food",
tempHigh: 74,
stateHigh: "cookie",
burn:40,
burnTime:25,
burnInto:"ash",
state: "solid",
density: 526.9,
isFood: true
}
clicked = false
cookies = 0
oldcookies = 0
createdcookies = 0
elements.plain_cookie = {
color: ["#C4966C","#C0946B"],
behavior: behaviors.POWDER,
reactions: {
"chocolate": { elem1:"cookie", elem2:null, chance: 0.25 },
"chocolate_powder": { elem1:"cookie", elem2:null, chance: 0.25 },
},
tempHigh: 192,
stateHigh: "toast",
category: "food",
burn: 10,
burnTime: 200,
burnInto: "toast",
breakInto: "crumb",
breakIntoColor: ["#c8946a","#c08655","#ba7a45","#a86d3e"],
state: "solid",
density: 233.96,
isFood: true
}
elements.cookie = {
color: ["#C4966C","#C0946B","#C4966C","#C0946B","#C4966C","#C0946B","#C4966C","#C0946B","#C4966C","#C0946B","#4d2818","#3b1b0d","#33160a"],
behavior: behaviors.POWDER,
tick: function(pixel) {
var top = mousePos.y - Math.floor(mouseSize/2);
var bottom = mousePos.y + Math.floor(mouseSize/2);
var left = mousePos.x - Math.floor(mouseSize/2);
var right = mousePos.x + Math.floor(mouseSize/2);
if ((pixel.x >= left && pixel.x <= right && pixel.y >= top && pixel.y <= bottom) && mouseIsDown === true && clicked === false) {
clicked = true
cookies += 1
}
else if ((pixel.x >= left && pixel.x <= right && pixel.y >= top && pixel.y <= bottom) && mouseIsDown !== true && clicked === true) {
clicked = false
}
doDefaults(pixel);
},
tempHigh: 95,
stateHigh: ["melted_chocolate","plain_cookie","plain_cookie"],
category: "food",
burn: 10,
burnTime: 200,
burnInto: ["melted_chocolate","plain_cookie","plain_cookie"],
breakInto: ["crumb","crumb","crumb","crumb","crumb","chocolate","chocolate_powder"],
breakIntoColor: ["#bfac91","#CDBFAB","#bfac91","#CDBFAB","#bfac91","#CDBFAB","#bfac91","#CDBFAB","#bfac91","#CDBFAB","#4d2818","#3b1b0d","#33160a"],
state: "solid",
density: 233.96,
isFood: true,
renderer: function(pixel,ctx) {
if (!viewInfo[view].effects) { return }
if (isEmpty(pixel.x,pixel.y+1) || !outOfBounds(pixel.x,pixel.y+1) || pixelMap[pixel.x][pixel.y+1].element === "pipe") {
drawPlus(ctx,"#C4966C",pixel.x,pixel.y,undefined,2)
}
drawDefault(ctx,pixel)
}
}
elements.dough.reactions.sugar = { elem1:"cookie_dough", elem2: null, chance:0.5}
elements.dough.reactions.chocolate = { elem1:"chocolate_chip_cookie_dough", elem2: null, chance:0.5}
elements.dough.reactions.chocolate_powder = { elem1:"chocolate_chip_cookie_dough", elem2: null, chance:0.5}
}

628
mods/note_block_advanced.js Normal file
View File

@ -0,0 +1,628 @@
audioContext = new AudioContext()
//Derived from Alice's note_block.js - thanks!
//adv_note_block/note_block_advance/nba
oscillatorDefaults = {
frequency: 440,
type: "sine",
endType: "none",
length: 1,
volume: 1,
delay: 0,
};
audioObject = {};
function oscillator(name="test",parameterObject=oscillatorDefaults){ //creates oscillator with gain node, has specifiable frequency and type, fades out over 1 second (hard-coded)
var defaultKeys = Object.keys(oscillatorDefaults); //readability variable
for(i = 0; i < defaultKeys.length; i++) {
var key = defaultKeys[i]; //the indexed keyname
if(typeof(parameterObject[key]) === "undefined") {
parameterObject[key] = oscillatorDefaults[key];
};
};
var oscillatorNodeName = `${name}Oscillator`;
var gainNodeName = `${name}Gain`;
audioObject[oscillatorNodeName] = audioContext.createOscillator()
audioObject[gainNodeName] = audioContext.createGain()
audioObject[gainNodeName].gain.value = parameterObject.volume;
audioObject[oscillatorNodeName].type = parameterObject.type
audioObject[oscillatorNodeName].connect(audioObject[gainNodeName])
audioObject[oscillatorNodeName].frequency.value = parameterObject.frequency
audioObject[gainNodeName].connect(audioContext.destination)
audioObject[oscillatorNodeName].start(audioContext.currentTime + parameterObject.delay)
//stopping handler
if(parameterObject.endType === "exponential") { //starts fading immediately
audioObject[gainNodeName].gain.exponentialRampToValueAtTime(
0.00001, audioContext.currentTime + parameterObject.length
);
} else if(parameterObject.endType === "linear") { //starts fading immediately
audioObject[gainNodeName].gain.linearRampToValueAtTime(
0.00001, audioContext.currentTime + parameterObject.length
);
} else { //waits to stop
audioObject[oscillatorNodeName].stop(audioContext.currentTime + parameterObject.delay + parameterObject.length);
};
};
elements.c_note_block = {
color: "#eb4034",
name: "Note Block - C",
behavior: behaviors.WALL,
state: "solid",
category: "note_blocks",
density: 1200,
hardness: 0.2,
breakInto: ["plastic","metal_scrap","metal_scrap","metal_scrap"],
conduct: 1,
properties: {
frequency: 261.63,
type: "triangle",
endType: "none",
length: 0.5,
volume: 0.7,
delay: 0,
debounce: 0,
debounceLength: tps,
},
tick: function(pixel) {
var pixelSoundName = `x${pixel.x}y${pixel.y}`; //Generate unique-enough name
var pixelPropertyObject = { //Load sound properties from pixel as object;
frequency: pixel.frequency,
type: pixel.type,
endType: pixel.endType,
length: pixel.length,
volume: pixel.volume,
delay: pixel.delay,
};
//console.log(pixelPropertyObject);
if(pixel.debounce < 1) {
//console.log(`${pixel.debounce} not debounced, play`);
if(pixel.charge) {
oscillator(pixelSoundName,pixelPropertyObject);
delete pixel.charge;
pixel.debounce = pixel.debounceLength;
};
} else if(pixel.debounce > 0) {
//console.log(`${pixel.debounce} debounced, don't play`);
pixel.debounce--;
};
},
};
elements.cs_note_block = {
color: "#fc3903",
name: "Note Block - C Sharp",
behavior: behaviors.WALL,
state: "solid",
category: "note_blocks",
density: 1200,
hardness: 0.2,
breakInto: ["plastic","metal_scrap","metal_scrap","metal_scrap"],
conduct: 1,
properties: {
frequency: 277.183,
type: "triangle",
endType: "none",
length: 0.5,
volume: 0.7,
delay: 0,
debounce: 0,
debounceLength: tps,
},
tick: function(pixel) {
var pixelSoundName = `x${pixel.x}y${pixel.y}`; //Generate unique-enough name
var pixelPropertyObject = { //Load sound properties from pixel as object;
frequency: pixel.frequency,
type: pixel.type,
endType: pixel.endType,
length: pixel.length,
volume: pixel.volume,
delay: pixel.delay,
};
//console.log(pixelPropertyObject);
if(pixel.debounce < 1) {
//console.log(`${pixel.debounce} not debounced, play`);
if(pixel.charge) {
oscillator(pixelSoundName,pixelPropertyObject);
delete pixel.charge;
pixel.debounce = pixel.debounceLength;
};
} else if(pixel.debounce > 0) {
//console.log(`${pixel.debounce} debounced, don't play`);
pixel.debounce--;
};
},
};
elements.d_note_block = {
color: "#fc6203",
name: "Note Block - D",
behavior: behaviors.WALL,
state: "solid",
category: "note_blocks",
density: 1200,
hardness: 0.2,
breakInto: ["plastic","metal_scrap","metal_scrap","metal_scrap"],
conduct: 1,
properties: {
frequency: 293.66,
type: "triangle",
endType: "none",
length: 0.5,
volume: 0.7,
delay: 0,
debounce: 0,
debounceLength: tps,
},
tick: function(pixel) {
var pixelSoundName = `x${pixel.x}y${pixel.y}`; //Generate unique-enough name
var pixelPropertyObject = { //Load sound properties from pixel as object;
frequency: pixel.frequency,
type: pixel.type,
endType: pixel.endType,
length: pixel.length,
volume: pixel.volume,
delay: pixel.delay,
};
//console.log(pixelPropertyObject);
if(pixel.debounce < 1) {
//console.log(`${pixel.debounce} not debounced, play`);
if(pixel.charge) {
oscillator(pixelSoundName,pixelPropertyObject);
delete pixel.charge;
pixel.debounce = pixel.debounceLength;
};
} else if(pixel.debounce > 0) {
//console.log(`${pixel.debounce} debounced, don't play`);
pixel.debounce--;
};
},
};
elements.ef_note_block = {
color: "#fc9803",
name: "Note Block - E Flat",
behavior: behaviors.WALL,
state: "solid",
category: "note_blocks",
density: 1200,
hardness: 0.2,
breakInto: ["plastic","metal_scrap","metal_scrap","metal_scrap"],
conduct: 1,
properties: {
frequency: 293.66,
type: "triangle",
endType: "none",
length: 0.5,
volume: 0.7,
delay: 0,
debounce: 0,
debounceLength: tps,
},
tick: function(pixel) {
var pixelSoundName = `x${pixel.x}y${pixel.y}`; //Generate unique-enough name
var pixelPropertyObject = { //Load sound properties from pixel as object;
frequency: pixel.frequency,
type: pixel.type,
endType: pixel.endType,
length: pixel.length,
volume: pixel.volume,
delay: pixel.delay,
};
//console.log(pixelPropertyObject);
if(pixel.debounce < 1) {
//console.log(`${pixel.debounce} not debounced, play`);
if(pixel.charge) {
oscillator(pixelSoundName,pixelPropertyObject);
delete pixel.charge;
pixel.debounce = pixel.debounceLength;
};
} else if(pixel.debounce > 0) {
//console.log(`${pixel.debounce} debounced, don't play`);
pixel.debounce--;
};
},
};
elements.e_note_block = {
color: "#fce303",
name: "Note Block - E",
behavior: behaviors.WALL,
state: "solid",
category: "note_blocks",
density: 1200,
hardness: 0.2,
breakInto: ["plastic","metal_scrap","metal_scrap","metal_scrap"],
conduct: 1,
properties: {
frequency: 329.63,
type: "triangle",
endType: "none",
length: 0.5,
volume: 0.7,
delay: 0,
debounce: 0,
debounceLength: tps,
},
tick: function(pixel) {
var pixelSoundName = `x${pixel.x}y${pixel.y}`; //Generate unique-enough name
var pixelPropertyObject = { //Load sound properties from pixel as object;
frequency: pixel.frequency,
type: pixel.type,
endType: pixel.endType,
length: pixel.length,
volume: pixel.volume,
delay: pixel.delay,
};
//console.log(pixelPropertyObject);
if(pixel.debounce < 1) {
//console.log(`${pixel.debounce} not debounced, play`);
if(pixel.charge) {
oscillator(pixelSoundName,pixelPropertyObject);
delete pixel.charge;
pixel.debounce = pixel.debounceLength;
};
} else if(pixel.debounce > 0) {
//console.log(`${pixel.debounce} debounced, don't play`);
pixel.debounce--;
};
},
};
elements.f_note_block = {
color: "#fce303",
name: "Note Block - F",
behavior: behaviors.WALL,
state: "solid",
category: "note_blocks",
density: 1200,
hardness: 0.2,
breakInto: ["plastic","metal_scrap","metal_scrap","metal_scrap"],
conduct: 1,
properties: {
frequency: 349.228,
type: "triangle",
endType: "none",
length: 0.5,
volume: 0.7,
delay: 0,
debounce: 0,
debounceLength: tps,
},
tick: function(pixel) {
var pixelSoundName = `x${pixel.x}y${pixel.y}`; //Generate unique-enough name
var pixelPropertyObject = { //Load sound properties from pixel as object;
frequency: pixel.frequency,
type: pixel.type,
endType: pixel.endType,
length: pixel.length,
volume: pixel.volume,
delay: pixel.delay,
};
//console.log(pixelPropertyObject);
if(pixel.debounce < 1) {
//console.log(`${pixel.debounce} not debounced, play`);
if(pixel.charge) {
oscillator(pixelSoundName,pixelPropertyObject);
delete pixel.charge;
pixel.debounce = pixel.debounceLength;
};
} else if(pixel.debounce > 0) {
//console.log(`${pixel.debounce} debounced, don't play`);
pixel.debounce--;
};
},
};
elements.fs_note_block = {
color: "#03fc3d",
name: "Note Block - F Sharp",
behavior: behaviors.WALL,
state: "solid",
category: "note_blocks",
density: 1200,
hardness: 0.2,
breakInto: ["plastic","metal_scrap","metal_scrap","metal_scrap"],
conduct: 1,
properties: {
frequency: 369.99,
type: "triangle",
endType: "none",
length: 0.5,
volume: 0.7,
delay: 0,
debounce: 0,
debounceLength: tps,
},
tick: function(pixel) {
var pixelSoundName = `x${pixel.x}y${pixel.y}`; //Generate unique-enough name
var pixelPropertyObject = { //Load sound properties from pixel as object;
frequency: pixel.frequency,
type: pixel.type,
endType: pixel.endType,
length: pixel.length,
volume: pixel.volume,
delay: pixel.delay,
};
//console.log(pixelPropertyObject);
if(pixel.debounce < 1) {
//console.log(`${pixel.debounce} not debounced, play`);
if(pixel.charge) {
oscillator(pixelSoundName,pixelPropertyObject);
delete pixel.charge;
pixel.debounce = pixel.debounceLength;
};
} else if(pixel.debounce > 0) {
//console.log(`${pixel.debounce} debounced, don't play`);
pixel.debounce--;
};
},
};
elements.g_note_block = {
color: "#03fcca",
name: "Note Block - G",
behavior: behaviors.WALL,
state: "solid",
category: "note_blocks",
density: 1200,
hardness: 0.2,
breakInto: ["plastic","metal_scrap","metal_scrap","metal_scrap"],
conduct: 1,
properties: {
frequency: 391.995,
type: "triangle",
endType: "none",
length: 0.5,
volume: 0.7,
delay: 0,
debounce: 0,
debounceLength: tps,
},
tick: function(pixel) {
var pixelSoundName = `x${pixel.x}y${pixel.y}`; //Generate unique-enough name
var pixelPropertyObject = { //Load sound properties from pixel as object;
frequency: pixel.frequency,
type: pixel.type,
endType: pixel.endType,
length: pixel.length,
volume: pixel.volume,
delay: pixel.delay,
};
//console.log(pixelPropertyObject);
if(pixel.debounce < 1) {
//console.log(`${pixel.debounce} not debounced, play`);
if(pixel.charge) {
oscillator(pixelSoundName,pixelPropertyObject);
delete pixel.charge;
pixel.debounce = pixel.debounceLength;
};
} else if(pixel.debounce > 0) {
//console.log(`${pixel.debounce} debounced, don't play`);
pixel.debounce--;
};
},
};
elements.gs_note_block = {
color: "#0394fc",
name: "Note Block - G Sharp",
behavior: behaviors.WALL,
state: "solid",
category: "note_blocks",
density: 1200,
hardness: 0.2,
breakInto: ["plastic","metal_scrap","metal_scrap","metal_scrap"],
conduct: 1,
properties: {
frequency: 415.305,
type: "triangle",
endType: "none",
length: 0.5,
volume: 0.7,
delay: 0,
debounce: 0,
debounceLength: tps,
},
tick: function(pixel) {
var pixelSoundName = `x${pixel.x}y${pixel.y}`; //Generate unique-enough name
var pixelPropertyObject = { //Load sound properties from pixel as object;
frequency: pixel.frequency,
type: pixel.type,
endType: pixel.endType,
length: pixel.length,
volume: pixel.volume,
delay: pixel.delay,
};
//console.log(pixelPropertyObject);
if(pixel.debounce < 1) {
//console.log(`${pixel.debounce} not debounced, play`);
if(pixel.charge) {
oscillator(pixelSoundName,pixelPropertyObject);
delete pixel.charge;
pixel.debounce = pixel.debounceLength;
};
} else if(pixel.debounce > 0) {
//console.log(`${pixel.debounce} debounced, don't play`);
pixel.debounce--;
};
},
};
elements.a_note_block = {
color: "#0f03fc",
name: "Note Block - A",
behavior: behaviors.WALL,
state: "solid",
category: "note_blocks",
density: 1200,
hardness: 0.2,
breakInto: ["plastic","metal_scrap","metal_scrap","metal_scrap"],
conduct: 1,
properties: {
frequency: 440,
type: "triangle",
endType: "none",
length: 0.5,
volume: 0.7,
delay: 0,
debounce: 0,
debounceLength: tps,
},
tick: function(pixel) {
var pixelSoundName = `x${pixel.x}y${pixel.y}`; //Generate unique-enough name
var pixelPropertyObject = { //Load sound properties from pixel as object;
frequency: pixel.frequency,
type: pixel.type,
endType: pixel.endType,
length: pixel.length,
volume: pixel.volume,
delay: pixel.delay,
};
//console.log(pixelPropertyObject);
if(pixel.debounce < 1) {
//console.log(`${pixel.debounce} not debounced, play`);
if(pixel.charge) {
oscillator(pixelSoundName,pixelPropertyObject);
delete pixel.charge;
pixel.debounce = pixel.debounceLength;
};
} else if(pixel.debounce > 0) {
//console.log(`${pixel.debounce} debounced, don't play`);
pixel.debounce--;
};
},
};
elements.bf_note_block = {
color: "#9803fc",
name: "Note Block - B Flat",
behavior: behaviors.WALL,
state: "solid",
category: "note_blocks",
density: 1200,
hardness: 0.2,
breakInto: ["plastic","metal_scrap","metal_scrap","metal_scrap"],
conduct: 1,
properties: {
frequency: 466.164,
type: "triangle",
endType: "none",
length: 0.5,
volume: 0.7,
delay: 0,
debounce: 0,
debounceLength: tps,
},
tick: function(pixel) {
var pixelSoundName = `x${pixel.x}y${pixel.y}`; //Generate unique-enough name
var pixelPropertyObject = { //Load sound properties from pixel as object;
frequency: pixel.frequency,
type: pixel.type,
endType: pixel.endType,
length: pixel.length,
volume: pixel.volume,
delay: pixel.delay,
};
//console.log(pixelPropertyObject);
if(pixel.debounce < 1) {
//console.log(`${pixel.debounce} not debounced, play`);
if(pixel.charge) {
oscillator(pixelSoundName,pixelPropertyObject);
delete pixel.charge;
pixel.debounce = pixel.debounceLength;
};
} else if(pixel.debounce > 0) {
//console.log(`${pixel.debounce} debounced, don't play`);
pixel.debounce--;
};
},
};
elements.b_note_block = {
color: "#fc03b5",
name: "Note Block - B",
behavior: behaviors.WALL,
state: "solid",
category: "note_blocks",
density: 1200,
hardness: 0.2,
breakInto: ["plastic","metal_scrap","metal_scrap","metal_scrap"],
conduct: 1,
properties: {
frequency: 493.883,
type: "triangle",
endType: "none",
length: 0.5,
volume: 0.7,
delay: 0,
debounce: 0,
debounceLength: tps,
},
tick: function(pixel) {
var pixelSoundName = `x${pixel.x}y${pixel.y}`; //Generate unique-enough name
var pixelPropertyObject = { //Load sound properties from pixel as object;
frequency: pixel.frequency,
type: pixel.type,
endType: pixel.endType,
length: pixel.length,
volume: pixel.volume,
delay: pixel.delay,
};
//console.log(pixelPropertyObject);
if(pixel.debounce < 1) {
//console.log(`${pixel.debounce} not debounced, play`);
if(pixel.charge) {
oscillator(pixelSoundName,pixelPropertyObject);
delete pixel.charge;
pixel.debounce = pixel.debounceLength;
};
} else if(pixel.debounce > 0) {
//console.log(`${pixel.debounce} debounced, don't play`);
pixel.debounce--;
};
},
};

421
mods/reverse_time.js Normal file
View File

@ -0,0 +1,421 @@
emptyList = []
runPerPixel(function(pixel) {
// run any code on each pixel every tick
if (pixel.start>pixelTicks) {
if (pixel.olderelement != undefined && pixel.oldercolor != undefined && pixel.olderstart != undefined && pixel.oldertemp != undefined && pixel.olderanimal != undefined && pixel.olderage != undefined) {
OGChangePixel(pixel)
}
else {
deletePixel(pixel.x,pixel.y)
}
} /*
if (pixel.start>pixelTicks+10) {
deletePixel(pixel.x,pixel.y)
} */
if (pixel.burnStart && pixel.burnStart>pixelTicks) {
if (pixel.burning) {
delete pixel.burning;
delete pixel.burnStart;
}
}
if (pixel.origColor && !pixel.stainStart) {
pixel.stainStart = pixelTicks
}
if (pixel.stainStart && pixel.origColor && pixel.stainStart>pixelTicks) {
pixel.color = "rgb("+pixel.origColor[0]+","+pixel.origColor[1]+","+pixel.origColor[2]+")"
delete pixel.origColor
delete pixel.stainStart
}
})
changePixel = function(pixel,element,changetemp=true) {
if (!element) { return }
if (elements[pixel.element].onChange !== undefined) {
elements[pixel.element].onChange(pixel,element);
}
if (!elements[element]) {
pixel.invalidElement = element;
element = "unknown"
}
if (!pixel.olderelement) {
pixel.olderelement = []
}
if (!pixel.oldercolor) {
pixel.oldercolor = []
}
if (!pixel.olderstart) {
pixel.olderstart = []
}
if (!pixel.oldertemp) {
pixel.oldertemp = []
}
if (!pixel.olderanimal) {
pixel.olderanimal = []
}
if (!pixel.olderage) {
pixel.olderage = []
}
for (var i = 0; i <= 500; i++) {
if (!pixel.olderelement[i]) {
pixel.olderelement[i] = pixel.element
if (pixel.element === "human") {
pixel.olderelement[i] = "head"
}
break;
}
}
for (var i = 0; i <= 500; i++) {
if (!pixel.oldercolor[i]) {
pixel.oldercolor[i] = pixel.color
break;
}
}
for (var i = 0; i <= 500; i++) {
if (!pixel.olderstart[i]) {
pixel.olderstart[i] = pixel.start
break;
}
}
for (var i = 0; i <= 500; i++) {
if (!pixel.oldertemp[i]) {
pixel.oldertemp[i] = pixel.temp
if (elements[pixel.element].tempHigh && elements[pixel.element].tempHigh < pixel.temp) {
pixel.oldertemp[i] = (elements[pixel.element].tempHigh - 1.5)
}
if (elements[pixel.element].tempLow && elements[pixel.element].tempLow > pixel.temp) {
pixel.oldertemp[i] = (elements[pixel.element].tempLow + 1.5)
}
break;
}
}
for (var i = 0; i <= 500; i++) {
if (!pixel.olderanimal[i]) {
pixel.olderanimal[i] = pixel.animal
if (!pixel.animal) {
pixel.olderanimal[i] = pixel.element
}
break;
}
}
for (var i = 0; i <= 500; i++) {
if (!pixel.olderage[i]) {
pixel.olderage[i] = pixel.age
if (!pixel.age) {
pixel.olderage[i] = pixel.start
}
break;
}
}
pixel.element = element;
pixel.color = pixelColorPick(pixel);
pixel.start = pixelTicks;
var elementInfo = elements[element];
if (elementInfo.burning == true) {
pixel.burning = true;
pixel.burnStart = pixelTicks;
}
else if (pixel.burning && !elementInfo.burn) {
delete pixel.burning;
delete pixel.burnStart;
}
delete pixel.origColor; // remove stain
delete pixel.clone;
if (pixel.glow !== undefined) {
delete pixel.glow;
}
if (pixel.r && !elementInfo.rotatable) {
delete pixel.r;
}
if (pixel.flipX && !elementInfo.flippableX) {
delete pixel.flipX;
}
if (pixel.flipY && !elementInfo.flippableY) {
delete pixel.flipY;
}
// If elementInfo.flippableX, set it to true or false randomly
if (elementInfo.flipX !== undefined) { pixel.flipX = elementInfo.flipX }
else if (elementInfo.flippableX) {
pixel.flipX = Math.random() >= 0.5;
}
// If elementInfo.flippableY, set it to true or false randomly
if (elementInfo.flipY !== undefined) { pixel.flipY = elementInfo.flipY }
else if (elementInfo.flippableY) {
pixel.flipY = Math.random() >= 0.5;
}
if (elementInfo.temp !== undefined && changetemp) {
pixel.temp = (elementInfo.temp+pixel.temp)/2;
pixelTempCheck(pixel)
}
if (pixel.con && !elementInfo.canContain) {
delete pixel.con;
}
// If elementInfo.properties, set each key to its value
if (elementInfo.properties !== undefined) {
for (var key in elementInfo.properties) {
// If it is an array or object, make a copy of it
if (typeof elementInfo.properties[key] == "object") {
pixel[key] = JSON.parse(JSON.stringify(elementInfo.properties[key]));
}
else {
pixel[key] = elementInfo.properties[key];
}
}
}
if (pixel.alpha !== undefined) {
delete pixel.alpha;
}
if (pixel.emit) {
delete pixel.emit;
}
if (elements[element].alpha !== undefined) {
pixel.alpha = elements[element].alpha;
}
if (elements[element].onPlace !== undefined) {
elements[element].onPlace(pixel);
}
checkUnlock(element);
}
OGChangePixel = function(pixel) {
if (pixel.olderelement != undefined && pixel.oldercolor != undefined && pixel.olderstart != undefined && pixel.oldertemp != undefined && pixel.olderanimal != undefined && pixel.olderage != undefined && pixel.olderelement.length > emptyList.length && pixel.oldercolor.length > emptyList.length && pixel.olderstart.length > emptyList.length && pixel.oldertemp.length > emptyList.length && pixel.olderanimal.length > emptyList.length && pixel.olderage.length > emptyList.length && pixel.start<pixelTicks+5) {
pixel.element = pixel.olderelement[(pixel.olderelement.length - 1)]
pixel.color = pixel.oldercolor[(pixel.oldercolor.length - 1)]
pixel.start = pixel.olderstart[(pixel.olderstart.length - 1)]
pixel.temp = pixel.oldertemp[(pixel.oldertemp.length - 1)]
pixel.animal = pixel.olderanimal[(pixel.olderanimal.length - 1)]
pixel.age = pixel.olderage[(pixel.olderage.length - 1)]
pixel.olderelement.pop()
pixel.oldercolor.pop()
pixel.olderstart.pop()
pixel.oldertemp.pop()
pixel.olderanimal.pop()
pixel.olderage.pop()
}
else {
deletePixel(pixel.x,pixel.y)
}
}
elements.reverse_time = {
color: "#f2eeb8",
tool: function(pixel) {},
perTick: function() {
pixelTicks -= 2;
},
category: "tools",
canPlace: false,
darkText: true,
}
/*
elements.egg = {
color: "#e0d3ab",
tick: function(pixel) {
if (!pixel.animal && pixel.start>pixelTicks) {
deletePixel(pixel.x,pixel.y)
}
else if (pixel.animal && pixel.start-pixelTicks >= 500 && Math.random() < 0.2) {
deletePixel(pixel.x,pixel.y)
}
if (pixel.start === pixelTicks) {return}
if (pixel.drag) pixel.fall = 0;
if (!tryMove(pixel, pixel.x, pixel.y+1)) {
if (pixel.animal || pixel.fall < 20) {
if (Math.random() < 0.5) {
if (!tryMove(pixel, pixel.x+1, pixel.y+1)) {
tryMove(pixel, pixel.x-1, pixel.y+1);
}
} else {
if (!tryMove(pixel, pixel.x-1, pixel.y+1)) {
tryMove(pixel, pixel.x+1, pixel.y+1);
}
}
pixel.fall = 0;
}
else if (outOfBounds(pixel.x,pixel.y+1) || (!isEmpty(pixel.x,pixel.y+1,true) && elements.egg.ignore.indexOf(pixelMap[pixel.x][pixel.y+1].element) === -1 && elements[pixelMap[pixel.x][pixel.y+1].element].state === "solid")) {
changePixel(pixel,"yolk")
}
else {pixel.fall = 0}
if (pixel.animal && pixelTicks-pixel.start >= 500 && Math.random() < 0.2) {
changePixel(pixel,pixel.animal)
}
}
else {pixel.fall ++}
if (pixel.temp < -2 || pixel.temp > 100) {
pixel.animal = null;
}
doDefaults(pixel);
},
ignore: ["paper","sponge","straw","wheat","rat","frog","pollen","clay","snow","mud","wet_sand","tinder","feather","bread","ice_cream","dough"],
innerColor: "#ffffff",
properties: { "fall":0 },
tempHigh: 1500,
stateHigh: ["steam","calcium","carbon_dioxide","sulfur_gas"],
breakInto: "yolk",
category: "food",
state: "solid",
density: 1031,
cooldown: defaultCooldown
}
elements.tadpole = {
color: "#87b574",
behavior: [
"XX|XX|M2%25 AND SW:water,salt_water,sugar_water,dirty_water,seltzer,pool_water%14",
"XX|FX%0.5|SW:water,salt_water,sugar_water,dirty_water,seltzer,pool_water%14",
"XX|M1|SW:water,salt_water,sugar_water,dirty_water,seltzer,pool_water%14",
],
tick: function(pixel) {
if (pixel.start-pixelTicks > 500) {
OGChangePixel(pixel,"egg")
pixel.color = pixelColorPick(pixel,"#717c80")
pixel.animal = "tadpole"
}
if (pixelTicks-pixel.start > 500) {
changePixel(pixel,"frog");
}
},
reactions: {
"algae": { elem2:null, chance:0.25 },
"kelp": { elem2:"water", chance:0.25 }
},
tempHigh: 100,
stateHigh: "steam",
tempLow: -10,
stateLow: "ice",
breakInto: ["slime",null],
category:"life",
hidden: true,
state: "solid",
density: 1450,
conduct: 0.2
}
elements.frog = {
color: "#607300",
behavior: [
"XX|XX|M2%3 AND SW:water,salt_water,sugar_water,dirty_water,seltzer%7",
"XX|FX%0.5|CR:slime%0.01 AND BO",
"XX|M1|XX",
],
reactions: {
"fly": { elem2:null, chance:0.5, func:behaviors.FEEDPIXEL },
"firefly": { elem1:"meat", elem2:null, chance:0.5 },
"stink_bug": { elem2:null, chance:0.55, func:behaviors.FEEDPIXEL },
"snail": { elem2:"limestone", chance:0.05, func:behaviors.FEEDPIXEL },
"slug": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
"worm": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
"spider": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
"algae": { elem2:null, chance:0.5, func:behaviors.FEEDPIXEL },
"kelp": { elem2:"water", chance:0.5, func:behaviors.FEEDPIXEL },
"oxygen": { elem2:"carbon_dioxide", chance:0.5 },
"dead_bug": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
"mercury": { elem1:"rotten_meat", chance:0.1 },
"bleach": { elem1:"rotten_meat", chance:0.1 },
"infection": { elem1:"rotten_meat", chance:0.025 },
"uranium": { elem1:"rotten_meat", chance:0.1 },
"cyanide": { elem1:"rotten_meat", chance:0.1 },
"chlorine": { elem1:"meat", chance:0.1 },
"alcohol": { elem1:"meat", chance:0.025 },
"dirty_water": { elem1:"rotten_meat", chance:0.0001 },
"pool_water": { elem1:"rotten_meat", chance:0.005 },
"vinegar": { elem1:"rotten_meat", chance:0.001 },
},
tick: function(pixel) {
if (pixelTicks < pixel.start) {
OGChangePixel(pixel,"tadpole");
}
},
foodNeed: 10,
baby: "tadpole",
eggColor:"#717c80",
temp: 19.1,
tempHigh: 100,
stateHigh: "cooked_meat",
stateHighColor: "#CDAF96",
onStateHigh: function(pixel) {
releaseElement(pixel,"steam");
},
tempLow: -18,
stateLow: "frozen_frog",
category:"life",
breakInto: "slime",
burn:15,
burnTime:300,
state: "solid",
density: 1450,
conduct: 0.2
}
elements.fly = {
color: "#4c4e42",
behaviorOn: [
"XX|CR:flash|XX",
"CR:flash|CH:ash|CR:flash",
"XX|CR:flash|XX",
],
reactions: {
"dead_plant": { elem2:null, chance:0.15, func:behaviors.FEEDPIXEL },
"meat": { elem2:null, chance:0.15, func:behaviors.FEEDPIXEL },
"cooked_meat": { elem2:null, chance:0.15, func:behaviors.FEEDPIXEL },
"rotten_meat": { elem2:[null,null,"ammonia"], chance:0.15, func:behaviors.FEEDPIXEL },
"cheese": { elem2:[null,null,"ammonia"], chance:0.15, func:behaviors.FEEDPIXEL },
"cheese_powder": { elem2:[null,null,"ammonia"], chance:0.15, func:behaviors.FEEDPIXEL },
"rotten_cheese": { elem2:[null,null,"ammonia"], chance:0.15, func:behaviors.FEEDPIXEL },
"vine": { elem2:null, chance:0.15, func:behaviors.FEEDPIXEL },
"corn": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL },
"potato": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL },
"crumb": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL },
"wheat": { elem2:null, chance:0.1, func:behaviors.FEEDPIXEL },
"yeast": { elem2:null, chance:0.15, func:behaviors.FEEDPIXEL },
"caramel": { elem2:null, chance:0.15, func:behaviors.FEEDPIXEL },
"bread": { elem2:null, chance:0.1, func:behaviors.FEEDPIXEL },
"sugar_water": { elem2:null, chance:0.15, func:behaviors.FEEDPIXEL },
"honey": { elem2:null, chance:0.15, func:behaviors.FEEDPIXEL },
"soda": { elem2:null, chance:0.15, func:behaviors.FEEDPIXEL }
},
tick: function(pixel, onHit) {
var nx = pixel.flipX ? -1 : 1;
var ny = Math.random() < 0.5 ? -1 : 1;
var hit = false;
if (!tryMove(pixel, pixel.x+nx, pixel.y+ny)) {
if (!tryMove(pixel, pixel.x+nx, pixel.y-ny)) {
if (!tryMove(pixel, pixel.x, pixel.y+ny)) {
if (!tryMove(pixel, pixel.x, pixel.y-ny)) {hit=[pixel.x, pixel.y-ny]}
}else {hit=[pixel.x, pixel.y+ny]}
}else {hit=[pixel.x+nx, pixel.y-ny]}
}else {hit=[pixel.x+nx, pixel.y+ny]}
if (hit && onHit) {
if (!isEmpty(hit[0], hit[1], true)) {
onHit(pixel, pixelMap[hit[0]][hit[1]]);
}
else {onHit(pixel);}
}
if (pixel.del) {return}
if (!isEmpty(pixel.x+nx,pixel.y) || Math.random() < 0.02) {
pixel.flipX = !pixel.flipX;
}
if (pixel.charge && elements[pixel.element].behaviorOn) {
pixelTick(pixel)
}
doDefaults(pixel);
if (pixel.start-pixelTicks > 500) {
OGChangePixel(pixel,"egg")
pixel.animal = "fly"
}
},
foodNeed: 15,
tempHigh: 100,
stateHigh: "ash",
tempLow: 0,
stateLow: "dead_bug",
breakInto: "dead_bug",
category:"life",
burn:95,
burnTime:25,
state: "solid",
density: 600,
conduct: 1
} */

124
mods/talismanadditions.js Normal file
View File

@ -0,0 +1,124 @@
behaviors.YOGURT = [
"XX|XX|XX",
"XX|XX|XX",
"M2%5|M1|M2%5",
];
elements.kefir = {
color: "#f0f1fa",
behavior: behaviors.YOGURT,
category: "food",
state: "solid",
stateHigh: "yogurt",
stateLow: "frozen_kefir",
stateLowColorMultiplier: 1.05,
tempHigh: 125,
tempLow: 0,
reactions: {
"honey": { elem1: "honey_kefir", elem2: null },
"caramel": { elem1: "honey_kefir", elem2: null },
"sugar": { elem1: "honey_kefir", elem2: null },
}
}
elements.frozen_kefir = {
temp: -5,
tempHigh: 0,
stateHigh: "kefir",
breakInto: "kefir",
behavior: behaviors.STURDYPOWDER,
category: "food",
isFood: true,
stateHighColorMultiplier: 0.955,
}
elements.honey_kefir = {
color: "#ffe7cf",
behavior: behaviors.YOGURT,
category: "states",
state: "solid",
stateHigh: "honey",
stateLowName: "frozen_kefir",
stateLowColorMultiplier: 1.05,
tempHigh: 125,
tempLow: 0,
}
elements.honey_yogurt = {
color: "#fff6e6",
category: "states",
behavior: behaviors.YOGURT,
tempHigh: 1000,
stateHigh: ["smoke","smoke","honey","calcium"],
tempLow: 0,
stateLowName: "frozen_yogurt",
stateLowColorMultiplier: 1.05,
state: "liquid",
density: 820.33,
isFood: true,
alias: "honey_yoghurt",
}
elements.beet = {
color: "#ff576d",
category: "food",
behavior: behaviors.POWDER,
state: "solid",
stateHigh: "beet_juice",
tempHigh: 125,
breakInto: "beet_juice",
}
elements.beet_juice = {
color: "#ff0062",
category: "liquids",
behavior: behaviors.LIQUID,
state: "solid",
stateHigh: "sugar",
tempHigh: 125,
stateLow: "frozen_beet_juice",
stateLowColorMultiplier: 1.15,
tempLow: 0,
}
elements.frozen_beet_juice = {
temp: -5,
tempHigh: 0,
stateHigh: "beet_juice",
breakInto: "beet_juice",
behavior: behaviors.STURDYPOWDER,
category: "states",
isFood: true,
stateHighColorMultiplier: 0.955,
}
const swaps = {
"meat": "cooked_meat",
"kefir": "honey_kefir",
"bread": "toast",
"yogurt": "honey_yogurt",
"egg": "yolk",
"wheat": "flour",
"frozen_meat": "meat",
"coffee_beans": "coffee_ground",
"coffee_ground": "coffee",
"corn": "popcorn",
"flour": "dough",
"potato": "baked_potato",
"beet": "beet_juice",
};
elements.prepare = {
color: "#ffe7cf",
tool: function(pixel) {
if (pixel.element in swaps) {
changePixel(pixel, swaps[pixel.element])
}
},
category: "tools",
};
if (!elements.yogurt.reactions) { // Include this block once
elements.yogurt.reactions = {} // This creates the property if it doesn't exist
}
elements.yogurt.reactions.honey = { "elem1":"honey_yogurt", "elem2":null }

207
mods/velocity2.js Normal file
View File

@ -0,0 +1,207 @@
airResistance = 0.1;
terminalVelocity = 5;
gravityPull = 0.2;
validateMoves((pixel,nx,ny) => {
if (elements[pixel.element].isGas) return true;
if (isEmpty(pixel.x,pixel.y+1) && pixel.y-ny < 0) { //goes down usually
pixel.vy = (pixel.vy||0) + gravityPull;
}
return true;
})
runPerPixel((pixel) => {
let vx = pixel.vx;
let vy = pixel.vy;
if (vx === undefined ) vx = 0;
else if (Math.abs(vx) > terminalVelocity) vx = (vx + terminalVelocity) / 2;
if (vy === undefined ) vy = 0;
else if (Math.abs(vy) > terminalVelocity) vy = (vy + terminalVelocity) / 2;
if (vx !== 0 || vy !== 0) {
if (!elements[pixel.element].movable) {
pixel.vx = 0;
pixel.vy = 0;
return;
};
// Calculate change in position; Random chance for in-between decimal values
const changeX = Math.trunc(vx) +
(Math.random() < (vx % 1) ? Math.sign(vx) : 0);
const changeY = Math.trunc(vy) +
(Math.random() < (vy % 1) ? Math.sign(vy) : 0);
const loopFor = Math.max(Math.abs(changeX),Math.abs(changeY));
// console.log(Math.trunc(vy));
// let hit = false;
for (let i = 0; i < loopFor; i++) {
const newX = pixel.x + (changeX ? Math.sign(changeX) : 0);
const newY = pixel.y + (changeY ? Math.sign(changeY) : 0);
if (!tryMove(pixel,newX,newY)) {
if (!isEmpty(newX,newY,true)) {
const newPixel = pixelMap[newX][newY];
newPixel.vx = (newPixel.vx||0) + vx*0.6;
newPixel.vy = (newPixel.vy||0) + vy*0.6;
}
vx = vx*0.3;
vy = vy*0.3;
};
}
// const newX = pixel.x + changeX;
// const newY = pixel.y + changeY;
const multiplier = (1-airResistance);
pixel.vx = vx * multiplier;
pixel.vy = vy * multiplier;
// Cut off very low decimal values
if (Math.abs(pixel.vx) < 0.01) pixel.vx = 0;
if (Math.abs(pixel.vy) < 0.01) pixel.vy = 0;
}
})
elements.push_up = {
color: "#ffffff",
tool: function(pixel) {
pixel.vx = (Math.random() * 2) * (Math.random() < 0.5 ? 1 : -1);
pixel.vy = (Math.random() * 2) * -1;
},
category: "special"
}
elements.repeller = {
color: "#ffffff",
tick: function(pixel) {
var coords = circleCoords(pixel.x,pixel.y,5);
for (var i = 0; i < coords.length; i++) {
var coord = coords[i];
if (!isEmpty(coord.x,coord.y,true)) {
if (!elements[pixelMap[coord.x][coord.y].element].movable) continue;
pixelMap[coord.x][coord.y].vx = (pixelMap[coord.x][coord.y].vx||0) + (Math.random() < 0.5 ? 1 : -1);
pixelMap[coord.x][coord.y].vy = (pixelMap[coord.x][coord.y].vy||0) -1;
}
}
},
movable: false,
category: "machines",
emit: true
}
viewInfo["4"] = { // Velocity View
name: "velocity",
pixel: function(pixel,ctx) {
const thermalMin = -5;
const thermalMax = 5;
var temp = pixel.vx || 0;
var hue = Math.round((temp - thermalMin) / (thermalMax - thermalMin) * 255);
if (hue < 0) {hue = 0}
if (hue > 225) {hue = 225}
drawSquare(ctx,"hsl("+hue+",100%,50%)",pixel.x,pixel.y)
}
}
explodeAt = function(x,y,radius,fire="fire") {
// if fire contains , split it into an array
if (fire.indexOf(",") !== -1) {
fire = fire.split(",");
}
var coords = circleCoords(x,y,radius);
var power = radius/10;
//for (var p = 0; p < Math.round(radius/10+1); p++) {
for (var i = 0; i < coords.length; i++) {
// damage value is based on distance from x and y
var distance = (Math.floor(Math.sqrt(Math.pow(coords[i].x-x,2) + Math.pow(coords[i].y-y,2)))) / radius;
const dirX = coords[i].x > x ? 1 : -1;
const dirY = coords[i].y > y ? 1 : -1;
var damage = Math.random() + distance;
// invert
damage = 1 - damage;
if (damage < 0) { damage = 0; }
damage *= power;
if (isEmpty(coords[i].x,coords[i].y)) {
// create smoke or fire depending on the damage if empty
if (damage < 0.02) { } // do nothing
else if (damage < 0.2) {
createPixel("smoke",coords[i].x,coords[i].y);
pixelMap[coords[i].x][coords[i].y].vy = power * (1-distance) * -1;
pixelMap[coords[i].x][coords[i].y].vx = power * (1-distance) * dirX;
}
else {
// if fire is an array, choose a random item
if (Array.isArray(fire)) {
createPixel(fire[Math.floor(Math.random() * fire.length)],coords[i].x,coords[i].y);
}
else {
createPixel(fire,coords[i].x,coords[i].y);
}
pixelMap[coords[i].x][coords[i].y].vy = 2*power * (1-distance) * -1;
pixelMap[coords[i].x][coords[i].y].vx = 2*power * (1-distance) * dirX;
}
}
else if (!outOfBounds(coords[i].x,coords[i].y)) {
// damage the pixel
var pixel = pixelMap[coords[i].x][coords[i].y];
var info = elements[pixel.element];
if (info.hardness) { // lower damage depending on hardness(0-1)
if (info.hardness < 1) {
// more hardness = less damage, logarithmic
damage *= Math.pow((1-info.hardness),info.hardness);
}
else { damage = 0; }
}
pixel.vy = 3 * (1-distance) * -1;
pixel.vx = 3 * (1-distance) * dirX;
if (damage > 0.9) {
if (Array.isArray(fire)) {
var newfire = fire[Math.floor(Math.random() * fire.length)];
}
else {
var newfire = fire;
}
changePixel(pixel,newfire);
// pixel.vy = 10 * damage * (Math.random() < 0.5 ? 1 : -1);
// pixel.vx = 10 * damage * (Math.random() < 0.5 ? 1 : -1);
continue;
}
else if (damage > 0.25) {
if (isBreakable(pixel)) {
breakPixel(pixel);
continue;
}
else {
if (Array.isArray(fire)) {
var newfire = fire[Math.floor(Math.random() * fire.length)];
}
else {
var newfire = fire;
}
if (elements[pixel.element].onBreak !== undefined) {
elements[pixel.element].onBreak(pixel);
}
changePixel(pixel,newfire);
// pixel.vy = 10 * damage * (Math.random() < 0.5 ? 1 : -1);
// pixel.vx = 10 * damage * (Math.random() < 0.5 ? 1 : -1);
continue;
}
}
if (damage > 0.75 && info.burn) {
pixel.burning = true;
pixel.burnStart = pixelTicks;
}
pixel.temp += damage*radius*power;
pixel.vy = 3 * (1-distance) * -1;
pixel.vx = 3 * (1-distance) * dirX;
// console.log(pixel.vy);
pixelTempCheck(pixel);
}
}
}

17
mods/vinegar.js Normal file
View File

@ -0,0 +1,17 @@
elements.acetobacter = {
color: ["#328fa8", "#6bbfd6", "#19718a"],
category: "life",
tempHigh: "102",
tempLow: "-2",
stateHigh: ["steam","steam","steam","sugar"],
stateLow: ["ice","ice","ice","sugar_ice"],
breakInto:["dna","dna","dna","water"],
behavior: [
["XX","M1%30","XX"],
["M1%50","XX","M1%50"],
["XX","M1%30","XX"]
],
reactions:{
"alcohol" :{ elem1: "acetobacter", elem2:"vinegar", chance:0.2,}
}
}

View File

@ -61,7 +61,6 @@
<body> <body>
<h1><a href="https://sandboxels.R74n.com" class="backbutton">&lt;</a> Sandboxels Offline Use</h1> <h1><a href="https://sandboxels.R74n.com" class="backbutton">&lt;</a> Sandboxels Offline Use</h1>
</ul>
<div id="content"> <div id="content">
<p>Sandboxels can be installed for offline use on mobile. See our <a href="mobile-use">Mobile Use Guide</a>.</p> <p>Sandboxels can be installed for offline use on mobile. See our <a href="mobile-use">Mobile Use Guide</a>.</p>

159
presskit.html Normal file
View File

@ -0,0 +1,159 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Press Kit - Sandboxels</title>
<meta name="description" content="Falling-sand simulation game playable in the browser with a focus on chemistry and life.">
<meta name="keywords" content="falling sand, elements, pixel art, simulator, powder">
<meta name="author" content="R74n">
<meta name="copyright" content="R74n">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="robots" content="all">
<!--Favicons-->
<link rel="apple-touch-icon" sizes="180x180" href="icons/apple-touch-icon.png?v=2">
<link rel="icon" type="image/png" sizes="32x32" href="icons/favicon-32x32.png?v=2">
<link rel="icon" type="image/png" sizes="16x16" href="icons/favicon-16x16.png?v=2">
<link rel="manifest" href="manifest.json">
<link rel="mask-icon" href="icons/safari-pinned-tab.svg?v=2" color="#2167ff">
<link rel="shortcut icon" href="icons/favicon.ico?v=2">
<meta name="msapplication-TileColor" content="#e6d577">
<meta name="theme-color" content="#000000">
<!--OpenGraph-->
<meta property="og:locale" content="en_US">
<meta property="og:type" content="website">
<meta property="og:site_name" content="Sandboxels">
<meta property="og:image" content="https://sandboxels.r74n.com/icons/wallpaper.png">
<meta property="og:image:width" content="1980">
<meta property="og:image:height" content="971">
<meta property="og:image:type" content="image/png">
<meta property="og:image:alt" content="A rainforest made in Sandboxels">
<!--Twitter-->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site:id" content="1436857621827530753">
<meta name="twitter:image" content="https://sandboxels.r74n.com/icons/card.png">
<meta name="twitter:image:alt" content="A rainforest made in Sandboxels">
<meta name="twitter:creator:id" content="1436857621827530753">
<link rel="stylesheet" type="text/css" href="style.css?nocache=3">
<style>
#content { font-family:'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif; font-size:1.2em; padding-bottom: 5em }
h2 { text-align: center; margin-bottom:0; margin-top:45px}
h2 {
font-family: 'Press Start 2P';
}
img {
max-width: 100%;
}
.centered {
margin: auto;
display: block;
max-width: 100%;
}
.imglink:hover, .gallery a:hover {
filter: none
}
.gallery {
display: flex;
max-width: 100%;
flex-wrap: wrap;
justify-content: space-evenly;
}
.gallery a {
flex-shrink: 1;
max-width: 40%;
padding-left: 1em;
padding-right: 1em;
}
@media only screen and (max-width: 800px) {
h1 { font-size: 1em; }
img {max-width: 100%; }
.linkgallery {
flex-direction: row;
}
.linkgallery a {
width: 100%;
}
}
</style>
</head>
<body>
<!-- <h1><a href="https://sandboxels.R74n.com" class="backbutton">&lt;</a> Press Kit</h1> -->
<div id="content">
<a class="imglink" href="https://sandboxels.R74n.com"><img src="icons/cover-3840x1240px-text.png" class="centered"></a>
<h2>The Game</h2>
<p><dfn>Sandboxels</dfn> is a falling-sand simulator playable in any web browser.</p>
<p>It brings nostalgia to players of old falling-sand games. This modern take on the genre has a strong focus on chemistry, life, and even food.</p>
<p>Players are allowed to freely experiment with over 500 different materials — liquids, powders, metals, plants, bugs, gases, and more — and see how they interact with each other in real time.</p>
<p>Sandboxels is releasing on Steam <strong><time>May 16th, 2025</time></strong> for Windows and macOS. Sandboxels is and always will be available to play in the browser as well.</p>
<h2>The Dev</h2>
<p>R74n was founded in 2017 as a web collective. We published Sandboxels in late 2021, and have been marketing it on <a href="https://www.youtube.com/@R74n/shorts" target="_blank">YouTube</a> and <a href="https://tiktok.com/@r74n.com" target="_blank">TikTok</a>, where it has amassed millions of views.</p>
<h2>Official Trailer</h2>
<p style="text-align: center;">Watch the official trailer we posted for the Steam release!</p>
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/TgHnD-KRieM?si=twCxVuE2ibNZhP19" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen class="centered"></iframe>
<h2>Screenshots</h2>
<p style="text-align: center;">You are free to use any assets or screenshots in your articles!</p>
<div class="gallery">
<a href="icons/promo1.png" target="_blank"><img src="icons/promo1.png"></a>
<a href="icons/promo2.png" target="_blank"><img src="icons/promo2.png"></a>
<a href="icons/promo3.png" target="_blank"><img src="icons/promo3.png"></a>
<a href="icons/promo4.png" target="_blank"><img src="icons/promo4.png"></a>
</div>
<h2>Assets</h2>
<p><a href="https://drive.google.com/drive/folders/1wyWliJTc4-xu0L-PfBNo2Fm9_L6OO-LS?usp=sharing" target="_blank">Click here</a> for all logos and assets.</p>
<h2>Pricing</h2>
<p>Sandboxels is free to play in the browser, and the Steam version will only cost under a dollar.</p>
<h2>Quick Facts</h2>
<p>Initial release: December 15th, 2021</p>
<p>Press Email: <a href="mailto:contact@R74n.com?subject=%5BPress%5D" target="_blank">contact@R74n.com</a></p>
<p>Engine: None! :&rbrack; Just HTML5 and JavaScript</p>
<h2>Quick Links</h2>
<p>
<div class="gallery linkgallery">
<a href="https://sandboxels.R74n.com/" target="_blank">Play Sandboxels</a>
<a href="https://R74n.com/" target="_blank">Developer Website</a>
<a href="https://store.steampowered.com/app/3664820/Sandboxels/" target="_blank">Steam</a>
<a href="https://www.youtube.com/@R74n/shorts" target="_blank">YouTube</a>
<a href="https://tiktok.com/@r74n.com" target="_blank">TikTok</a>
<a href="https://discord.gg/ejUc6YPQuS" target="_blank">Discord</a>
<a href="https://news.r74n.com/" target="_blank">Newsletter</a>
</div></p>
</div>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-93720349-9"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-93720349-9');
</script>
</body>
</html>

View File

@ -10,3 +10,4 @@ https://sandboxels.r74n.com/mod-list
https://sandboxels.r74n.com/offline-use https://sandboxels.r74n.com/offline-use
https://sandboxels.r74n.com/feedback https://sandboxels.r74n.com/feedback
https://sandboxels.r74n.com/tips https://sandboxels.r74n.com/tips
https://sandboxels.r74n.com/presskit

View File

@ -50,6 +50,12 @@ a:active, a:hover:active, .saveOption:active, .saveOption:hover:active {filter:
margin-top: 0!important; margin-top: 0!important;
border: none!important; border: none!important;
} }
.standalone.mobile #savesButton, .standalone.mobile #extraInfo {
display: none
}
.standalone #extraInfo {
display: none
}
#game { #game {
image-rendering: pixelated; image-rendering: pixelated;
} }

View File

@ -52,7 +52,6 @@
<body> <body>
<h1><a href="https://sandboxels.R74n.com" class="backbutton">&lt;</a> Sandboxels Page</h1> <h1><a href="https://sandboxels.R74n.com" class="backbutton">&lt;</a> Sandboxels Page</h1>
</ul>
<div id="content"> <div id="content">
<h2>Section</h2> <h2>Section</h2>

View File

@ -58,7 +58,6 @@
<body> <body>
<h1><a href="https://sandboxels.R74n.com" class="backbutton">&lt;</a> 50 Things to Do in Sandboxels</h1> <h1><a href="https://sandboxels.R74n.com" class="backbutton">&lt;</a> 50 Things to Do in Sandboxels</h1>
</ul>
<div id="content"> <div id="content">
<p>Sandboxels is the <strong>ultimate sandbox simulator</strong>, allowing you to experiment with chemistry, ecosystems, food, and much more, with 500+ elements, like sand, water, fire, and plants! Get started on any device with a web browser, even your phone, by visiting the <a href="https://sandboxels.R74n.com/">WEBSITE</a> for free!</p> <p>Sandboxels is the <strong>ultimate sandbox simulator</strong>, allowing you to experiment with chemistry, ecosystems, food, and much more, with 500+ elements, like sand, water, fire, and plants! Get started on any device with a web browser, even your phone, by visiting the <a href="https://sandboxels.R74n.com/">WEBSITE</a> for free!</p>

View File

@ -52,7 +52,6 @@
<body> <body>
<h1><a href="https://sandboxels.R74n.com" class="backbutton">&lt;</a> Translation</h1> <h1><a href="https://sandboxels.R74n.com" class="backbutton">&lt;</a> Translation</h1>
</ul>
<div id="content"> <div id="content">
<h2>What's This?</h2> <h2>What's This?</h2>