Merge branch 'R74nCom:main' into main

This commit is contained in:
JustAGenericUsername 2025-05-13 18:58:29 -04:00 committed by GitHub
commit 32461b5bf6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
41 changed files with 2659 additions and 19681 deletions

View File

@ -1,11 +1,11 @@
# 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).
![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
* Left Click = Draw pixels
@ -29,7 +29,7 @@ Join the [Discord server](https://discord.com/invite/ejUc6YPQuS).
# Button Info
* Pause = Pause/play the simulation
* Step = Run a single frame
* Step (>) = Run a single frame
* Minus (-) = Decrease the cursor size
* Plus (+) = Increase the cursor size
* Reset = Clears the entire simulation
@ -37,5 +37,6 @@ Join the [Discord server](https://discord.com/invite/ejUc6YPQuS).
* E = Select any element by name
* TPS = Change how fast the simulation runs
* Info = Open the element info screen
* Saves = Open the Save & Load menu
* Mods = Open the Mod Manager
* 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

@ -4,7 +4,7 @@
// If elem1 exists
if (elements[key].reactions[reaction].elem1) {
// If elem1 is an array, loop through each element, else check once. Don't delete if it === null
if (Array.isArray(elements[key].reactions[reaction].elem1)) {
if (Array.isArray(elements[key].reactions[reaction].elem1)) {
for (var i = 0; i < elements[key].reactions[reaction].elem1.length; i++) {
if (elements[key].reactions[reaction].elem1[i] && !elements[elements[key].reactions[reaction].elem1[i]]) {
elements[key].reactions[reaction].elem1.splice(i,1);
@ -101,4 +101,4 @@
else {
if (elements[key].breakInto[i]!==null && !elements[elements[key].breakInto]) { delete elements[key].breakInto; }
}
}
}

View File

@ -128,6 +128,7 @@
<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>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>Settings</td> <td>Open the Settings Menu</tr>
</table>

View File

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

View File

@ -52,7 +52,6 @@
<body>
<h1><a href="https://sandboxels.R74n.com" class="backbutton">&lt;</a> Sandboxels in Education</h1>
</ul>
<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>

View File

@ -52,7 +52,6 @@
<body>
<h1><a href="https://sandboxels.R74n.com" class="backbutton">&lt;</a> Sandboxels Feedback</h1>
</ul>
<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>

View File

@ -52,7 +52,6 @@
<body>
<h1><a href="https://sandboxels.R74n.com" class="backbutton">&lt;</a> Troubleshooting Sandboxels</h1>
</ul>
<div id="content">
<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";
saveVersion = 4;
standalone = false;
standaloneType = null;
</script>
<style>
.setting-span {
@ -12963,23 +12964,39 @@ SEEDRISE: function(pixel) {
"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();
if (window.location.href.includes("holiday=false")) {}
else if (currentMonth == 3) { // April
if (new Date().getDate() <= 3) {
if (new Date().getDate() <= 3 && !standalone) {
var script = document.createElement('script');
script.src = "mods/fools25.js";
document.head.appendChild(script);
}
if (new Date().getDate() === 20) {
else if (new Date().getDate() === 20) {
elements.egg.color = elements.bead.color;
}
}
else if (currentMonth == 9) { // October
elements.pumpkin_seed.hidden = false;
var script = document.createElement('script');
script.src = "mods/souls.js"
document.head.appendChild(script);
if (!standalone) {
var script = document.createElement('script');
script.src = "mods/souls.js"
document.head.appendChild(script);
}
if (new Date().getDate() >= 30) {
elements.body.color = "#bf5c00";
}
@ -13048,6 +13065,10 @@ onAddElementList = [];
function onAddElement(callback) {
onAddElementList.push(callback);
}
validateMovesList = [];
function validateMoves(callback) {
validateMovesList.push(callback);
}
canvasLayers = {
// bg: document.createElement("canvas"),
pixels: document.createElement("canvas"),
@ -13764,6 +13785,16 @@ function langKey(key,fallback,template) {
function tryMove(pixel,nx,ny,leaveBehind,force) {
if (pixel.drag && force !== true) { return true; }
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 oob = outOfBounds(nx,ny);
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
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];
@ -18576,7 +18607,7 @@ window.onload = function() {
</div>
<script>
// 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 (!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>`
@ -18597,7 +18628,8 @@ window.onload = function() {
</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>
<!--<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>
<script>
// 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>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="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 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>
@ -19056,6 +19088,14 @@ Cancer, Landmine, Grenade, Smoke Grenade">?</span>
document.getElementById("bottomInfoBox").style.display = "none";
document.getElementById("pagetitle").style.display = "none";
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>

View File

@ -3,13 +3,13 @@
<head>
<meta charset="utf-8">
<title>Test - Sandboxels</title>
<meta name="description" content="Test">
<title>Sandboxels Images</title>
<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="author" content="R74n">
<meta name="copyright" content="R74n">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="robots" content="noindex">
<meta name="robots" content="all">
<!--Favicons-->
<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; }
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>
<!-- <script src="https://hb.vntsm.com/v4/live/vms/sites/sandboxels.r74n.com/index.js"></script> -->
</head>
<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">
This is a test page.
<div id="images">
<div id="slot-1"></div>
<div id="slot-2"></div>
<div id="slot-5"></div>
<div id="slot-10"></div>
<article class="imageItem">
<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>
<h2 class="imageCaption imageMeta">Sand city</h2>
<address class="imageAuthor imageMeta">by R74n</address>
</article>
</div>
</div>
<script>
standalone = false;
window.addEventListener('load', function() {
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);
})
loadedImages = {};
function loadImages() {
}
</script>

View File

@ -52,7 +52,6 @@
<body>
<h1><a href="https://sandboxels.R74n.com" class="backbutton">&lt;</a> Sandboxels Mobile Use</h1>
</ul>
<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>

View File

@ -69,7 +69,6 @@
<body>
<h1><a href="https://sandboxels.R74n.com" class="backbutton">&lt;</a> Sandboxels Mods</h1>
</ul>
<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>
@ -92,355 +91,353 @@
<!----><tr><td class="modCat" colspan="3">Top-rated Mods</td></tr><!---->
<!--2024:-->
<tr><td>chem.js</td><td>Adds 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>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>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 <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>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>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>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>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>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>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:-->
<!--
<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>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>chem.js</td><td>Several chemistry and physics-related elements</td><td>lllllllllwith10ls</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>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>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>fey_and_more.js</td><td>Adds fairies, magic, and a lot of other things</td><td>Melecie</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>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 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>building.js</td><td>Adds 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>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>Building generators and materials</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>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>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>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>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>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>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>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>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>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>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 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>adds a more advanced world generation to the game</td><td>Adora</td></tr>
<tr><td>betaworldgen.js</td><td>Advanced world generation</td><td>Adora</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>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>betterSettings.js</td><td>Additional settings and functionality</td><td>ggod</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>change.js</td><td>Adds a 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>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>Adds a pixel controlled using WASD (keyboard required)</td><td>Jayd</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>Adds temperature tools (set/heat/cool) that you change the value of.</td><td>guzzo86</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>Tools that manipulate colors</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>cpt_alt.js</td><td>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>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>descriptions.js</td><td>Adds 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>elementEraser.js</td><td>Adds a 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>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>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>elementEraser.js</td><td>Tool that deletes only desired element</td><td>SquareScreamYT</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>evenmoretemptools.js</td><td>Adds different 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>extrasaveslots.js</td><td>Adds extra saves slots !SAVE 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>hideandshowtools.js</td><td>Adds two tools, one that hides elements, and one that shows 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>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>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>Extra saves slots [KEEP IMPORTANT SAVES AS FILES!!]</td><td>Jayd</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>Tools to hide elements and show hidden elements</td><td>MicaelNotUsed</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>jaydsfunctions.js</td><td>Adds 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>Adds tools that move pixels</td><td>Alice</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 pop ups</td><td>mollthecoder</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>Adds a button to change pixel scale</td><td>feeshmaster</td></tr>
<tr><td>prompt.js</td><td>Adds a primitive command console</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>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>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>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>Adds a tool to paint only selected elements</td><td>SquareScreamYT</td></tr>
<tr><td>stripe_paint.js</td><td>Adds a tool to paint with stripes</td><td>Alice</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>text.js</td><td>Adds tools to write text</td><td>RedBirdly</td></tr>
<tr><td>the_ground.js</td><td>Adds several rock types, worldgen settings, and gemstones</td><td>Alice</td></tr>
<tr><td>jaydsfunctions.js</td><td>Extra tools</td><td>Jayd</td></tr>
<tr><td>move_tools.js</td><td>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>noconfirm.js</td><td>Removes all confirmation popups</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>pixelResizeTool.js</td><td>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>prop.js</td><td>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.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>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>selective_paint.js</td><td>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>text.js</td><td>Tools to write text</td><td>RedBirdly</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>the_ground.js</td><td>Several rock types, worldgen settings, and gemstones</td><td>Alice</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>alkahest.js</td><td>Adds 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>bettermetalscrap.js</td><td>Allows metal scrap to 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>biology.js</td><td>Adds various elements and functions 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>boiling_things.js</td><td>Allows for various elements to 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>chalcopyrite.js</td><td>Adds 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>chem.js</td><td>Adds 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>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_mod.js</td><td>Adds various properties to change fire behavior, & a radioactive version of 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>Gemstones.js</td><td>Adds more 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>grav_mudstones.js</td><td>Adds 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>alcohol.js</td><td>Methanol, (iso-)propanol, and butanol</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>Several things related to science and physics</td><td>Carbon Monoxide, salmonfishy</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>Spawners for larger stars</td><td>Alice</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>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>Various elements can be vaporized</td><td>Alice</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>The chalcopyrite ore</td><td>Sophie</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>Several chemistry and physics-related elements</td><td>lllllllllwith10ls</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>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>Various properties to change fire behavior and radioactive fire</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>Gemstones</td><td>Schweeny</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>Various forms of mudstone with different gravities</td><td>Alice</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>iocalfaeus_clones.js</td><td>Adds 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>laetium.js</td><td>Adds 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_mixing.js</td><td>Allows liquids to mix colors dynamically</td><td>Nekonico</td></tr>
<tr><td>lye.js</td><td>Adds 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>metals.js</td><td>Adds 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>more_gold.js</td><td>Adds 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>moreliquids.js</td><td>Adds 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 Mod.js</td><td>Variety of scientific elements<br>Explosions</td><td>StellarX20</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>noblegas.js</td><td>Adds the missing noble gases</td><td>nousernamefound</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>iocalfaeus_clones.js</td><td>Iorefrius, Iolucius, and Ioradius gas</td><td>Alice</td></tr>
<tr><td>jaydstuff.js</td><td>Various chemicals and compounds</td><td>Jayd</td></tr>
<tr><td>laetium.js</td><td>Several fictional elements</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>Liquids can mix colors dynamically</td><td>Nekonico</td></tr>
<tr><td>lye.js</td><td>Lye</td><td>BatteRaquette58</td></tr>
<tr><td>mars.js</td><td>Martian materials</td><td>charcoal_afterlife</td></tr>
<tr><td>metals.js</td><td>Several metals</td><td>Alice</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>Green Gold</td><td>pixelegend4</td></tr>
<tr><td>morechemistry.js</td><td>New chemicals, compounds, and machines</td><td>Adora</td></tr>
<tr><td>moreliquids.js</td><td>Various liquids</td><td>te-agma-at</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>noblegas.js</td><td>The missing noble gases</td><td>nousernamefound</td></tr>
<tr><td>nousersthings.js</td><td>Many chemical elements, compounds, and more</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>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>some_tf_liquids.js</td><td>Adds 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>the_ground.js</td><td>Adds several rock types, worldgen settings, and gemstones</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>Various liquids from the Thermal Foundation Minecraft mod</td><td>Alice</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>Several rocks, worldgen types, and gemstones</td><td>Alice</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>clone_liquid.js</td><td>Adds a 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>combustion.js</td><td>Adds components necessary for combustion engines</td><td>uptzik</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>Liquid form of cloner</td><td>Alice</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>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>drill.js</td><td>Adds 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>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>flipflop.js</td><td>Toggleable switches; <a href="https://github.com/R74nCom/sandboxels/pull/134">Explanation</a></td><td>Flix</td></tr>
<tr><td>fueled_generators.js</td><td>Fuel powered generators.</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>Sensors, energy resources, materials, and more</td><td>Mecoolnotcool</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">[More Info]</a></td><td>Flix</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>heatshield.js</td><td>adds 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>logicgates.js</td><td>Adds 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>heatshield.js</td><td>Heatshields, makes Plasma cooler</td></td><td>Taterbob</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>Predictable electricity and logic gates</td><td>nousernamefound</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>portal.js</td><td>Adds 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>pushers.js</td><td>Adds 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>spouts.js</td><td>Adds 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>switches.js</td><td>Adds 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>video.js</td><td>Adds a 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>WhisperingTheory.js</td><td>Adds many more variants of heater and cooler</td><td>kaeud</td></tr>
<tr><td>portal.js</td><td>Portals that can teleport pixels</td><td>Alice</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>Pixels that push elements away from them</td><td>Alice</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>Spouts for all liquids</td><td>kaeud</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>Electrical switches that can be toggled</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>Video player</td><td>ggod</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>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 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>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>guided_rocket.js</td><td>Adds a 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>life_eater.js</td><td>Adds Warhammer 40,000s 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>meat_rockets.js</td><td>Adds 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>rays.js</td><td>Adds 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>subspace.js</td><td>Adds 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>weapons.js</td><td>Adds a variety of different weapons</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>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>Homing misile</td><td>voidapex11</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>Warhammer 40,000's Life-Eater Virus and Virus Bombs</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>Rockets that create meat when exploding</td><td>Melecie</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>More Ray types</td><td>Alice</td></tr>
<tr><td>rays++.js</td><td>Couple more rays</td><td>uptzik</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>Tear gas and more</td><td>voidapex11</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>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>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>Adds bananas and banana plants</td><td>Alice</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>Adds various desserts from community suggestions</td><td>Tisquares</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>Adds various green things, including apples and more food</td><td>zonneschijn7</td>
<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>Adds lemons and lemonade</td><td>personman / baconthemyth</td></tr>
<tr><td>morefoodsmod.js</td><td>Adds more foods</td><td>Clide4</td></tr>
<tr><td>bananas.js</td><td>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>community_desserts.js</td><td>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>greenitemsandmore.js</td><td>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>lemonade.js</td><td>Lemons and lemonade</td><td>personman, baconthemyth</td></tr>
<tr><td>morefoodsmod.js</td><td>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>potato_chips.js</td><td>Potato chips.</td><td>guzzo86</td></tr>
<tr><td>sbstuff.js</td><td>Adds many foods</td><td>stefanblox</td></tr>
<tr><td>soups.js</td><td>Adds 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>potato_chips.js</td><td>Potato chips and sunflower oil</td><td>guzzo86</td></tr>
<tr><td>sbstuff.js</td><td>Many foods</td><td>stefanblox</td></tr>
<tr><td>soups.js</td><td>Seasoning and soup</td><td>pixelegend4</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>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>baby.js</td><td>Adds 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>bananas.js</td><td>Adds 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>cat.js</td><td>Adds 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>children.js</td><td>Adds 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>crimson.js</td><td>Adds 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>fairy_chain.js</td><td>Adds 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>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>Various babies</td><td>Suss</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>Bananas and banana plants</td><td>Alice</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>Cats and cat food</td><td>SquareScreamYT</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>Pesky little gremlins</td><td>Taterbob</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>Elements relating to the Crimson from Terraria</td><td>Alice</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>Way too many fairies to fey_and_more.js</td><td>Alice</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>fey_and_more.js</td><td>Adds 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>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>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>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>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>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>Trees and flowers</td><td>pixelegend4, SquareScreamYT</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>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>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>kopalstuff.js</td><td>Adds 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>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>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>mobs.js</td><td>Adds 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>nocancer.js</td><td>Removes cancer from the game 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>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>Creatures, spirits, DNA, foods, and more</td><td>DaviStudios</td></tr>
<tr><td>lizard_mod.js</td><td>Lizards</td><td>RedBirdly</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>Primordial Soup and Birthpool can mix (fey_and_more.js)</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>25 more tree and wood types</td><td>guzzo86</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>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>ores.js</td><td>Adds ore generation along with tools to mine them</td><td>nousernamefound</td></tr>
<tr><td>ocean.js</td><td>Marine life</td><td>SquareScreamYT</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>plants.js</td><td>Adds a 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>plants.js</td><td>Wide variety of new plants and fruits</td><td>Adora</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>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>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>10kelements.js</td><td>Inserts a customizable amount of randomly generated elements into the game</td><td>nousernamefound</td></tr>
<tr><td>all_around_fillers.js</td><td>Adds directional Filler variants</td><td>idk73248</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>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>amogus.js</td><td>Adds a small amogus structure</td><td>Alice</td></tr>
<tr><td>bfdi.js</td><td>Adds several references to bfdi</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>amogus.js</td><td>Small Among Us structure</td><td>Alice</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>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>doom.js</td><td>As seen on TikTok - Select the Doom element to start, WASD</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>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>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_solid.js</td><td>Adds 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>haseulite.js</td><td>Adds 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>lattice_filler.js</td><td>Adds a 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>lone_urea.js</td><td>Adds urea without the rest of the piss mod</td><td>Alice</td></tr>
<tr><td>maze.js</td><td>Adds a 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>minecraft.js</td><td>Adds several things from Minecraft</td><td>StellarX20, nousernamefound</td></tr>
<tr><td>minesweeper.js</td><td>A subpar implementation of Minesweeper</td><td>Alice</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>All elements and combinations from Elemental 3 [Very Large]</td><td>Sophie</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>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>Feces</td><td>Alice</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>Loona-related materials with various properties</td><td>Alice</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>Combination of lattice and filler and a destructive variant</td><td>Suss</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>Urea</td><td>Alice</td></tr>
<tr><td>maze.js</td><td>Solvable maze generator</td><td>ggod</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>Several things from Minecraft</td><td>nousernamefound</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>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>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>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_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>sports_beta.js</td><td>Adds 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>sus.js</td><td>Adds an 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>troll.js</td><td>Adds 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>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>Several sports items</td><td>BluBun5193</td></tr>
<tr><td>star_wars.js</td><td>Various items from Star Wars by Disney</td><td>SeaPickle754</td>
<tr><td>sus.js</td><td>Among Us crewmate</td><td>Nv7</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>Various dumb elements that iterate randomly on the entire screen</td><td>Alice</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>acid_and_shapes.js</td><td>Weird visual effects. Enable 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>acid_and_shapes.js</td><td>Weird visual effects enabled in settings</td><td>Alice</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>fast_lightmap.js</td><td>Makes light sources glow, but the fast version</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>hexagon_test.js</td><td>Makes pixels look like hexagons</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>Element and tools to render fractals in game</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>invisible_wall.js</td><td>Adds an element like Wall that takes 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>liquid_mixing.js</td><td>Allows liquids to mix colors dynamically</td><td>Nekonico</td></tr>
<tr><td>hexagon_test.js</td><td>Pixels look like hexagons</td><td>RedBirdly</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>invisible_wall.js</td><td>Element like Wall that takes the color of the background</td><td>Alice</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>nicer_flame.js</td><td>Makes fire 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>onecolor.js</td><td>Makes all placed pixels 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>rainbow_tests.js</td><td>Adds 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>shader_by_jayd.js</td><td>Adds a 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>singleColor.js</td><td>Makes all 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>solidcolor.js</td><td>Makes all placed pixels have a solid color (clone of onecolor.js)</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>UwUify.js</td><td>Adds an "UwU" background</td><td>Jayd</td></tr>
<tr><td>nicer_flame.js</td><td>Fire is visually pleasing</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>Placed pixels are single-colored</td><td>nousernamefound</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>Variants of the rainbow element with different maths</td><td>Alice</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>Glow around light elements</td><td>Jayd</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>Elements pick one color each time they're drawn</td><td>stefanblox</td></tr>
<tr><td>sky.js</td><td>Day-night cycle</td><td>RedBirdly</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>Cool 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>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>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>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>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>changeTempReactionParameter.js</td><td>Adds 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>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>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>The changeTemp property to modded reactions</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>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>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>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>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>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>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>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>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>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>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>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>nv7.js</td><td>Adds a giant Nv7 image [Large]</td><td>Nv7</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>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>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>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>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.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.js</td><td>A 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>structure_test.js</td><td>Test for implementing structures into Sandboxels</td><td>Alice</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>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 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>advanced_colonies.js</td><td>Adds davlers, creatures with complex colonies</td><td>DaviStudios</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>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>adjustablepixelsize.js</td><td>Set the pixelSize with a URL parameter</td><td>Alice</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>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>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>

View File

@ -1,6 +1,10 @@
document.body.style.backgroundImage = 'url("https://jayd-rubies.github.io/image/uwuify.png")';
document.body.style.backgroundSize = 'cover';
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(){
document.querySelectorAll(".categoryButton").forEach(e => {
e.style.backgroundColor = "#ffc0cb40";
@ -80,4 +84,4 @@ function pixelColorPick(pixel,customColor=null) {
}
}*/
return color;
}
}

View File

@ -1,6 +1,6 @@
//Main version
//Main version. Still in WIP
//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 = {
color: ["#b5b5b5", "#404040", "#2b2b2b",],
behavior: behaviors.GAS,
@ -232,7 +232,7 @@ reactions: {
}
};
elements.radiated_metal = {
elements.radiated_metal = {
behavior: [
["XX","CR:radiation%25","XX"],
["CR:radiation%25","XX","CR:radiation%25"],
@ -929,6 +929,7 @@ elements.liquid_phosgene = {
category: "states",
density: 7.50,
tempLow: -118,
hidden: true,
temp: -10,
stateLow: "solid_phosgene",
tempHigh: 8,
@ -939,6 +940,7 @@ elements.solid_phosgene = {
behavior: behaviors.WALL,
state: "solid",
category: "states",
hidden: true,
density: 12.45,
temp: -150,
tempHigh: -117,
@ -962,3 +964,232 @@ elements.chlorophyll = {
"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

@ -116,4 +116,39 @@ worldgentypes.city = {
// ["bird", 0.025, 10],
],
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"
// }
addCanvasLayer("devtests");
addCanvasLayer("devtests2");
canvasLayersPre.unshift(canvasLayers["devtests"]);
devtestsCtx = canvasLayers["devtests"].getContext("2d");
devtestsCtx2 = canvasLayers["devtests2"].getContext("2d");
delete canvasLayers.devtests;
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);
elements.hue_paint = {
color: elements.paint.color,
tool: (pixel) => {
let hsl;
if (pixel.color.match(/^rgb/)) {
hsl = RGBToHSL(pixel.color.match(/\d+/g));
}
if (pixel.charge && !elements[pixel.element].colorOn) {
drawSquare(devtestsCtx2,"#ffff00",pixel.x-1,pixel.y-1,3);
if (hsl) {
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) {
// 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);
// devtestsCtx2.fillStyle = pixel.color;
// if (devtestsCtx2.globalAlpha !== a) { devtestsCtx2.globalAlpha = a; }
// devtestsCtx2.fillRect(pixel.x-r, pixel.y-r, d, d);
// }
})
},
category: "special",
customColor: true,
}

View File

@ -1,7 +1,9 @@
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(){
console.log(1)
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.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)
name: "",
pixel: viewInfo[1].pixel,
@ -85,7 +94,7 @@ viewInfo[1] = { // Blur Glow (Emissive pixels only)
};
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)) {
let a = (settings.textures !== 0) ? pixel.alpha : undefined;
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 = {
color: "#121212",
behavior: behaviors.DGAS,
@ -29,8 +28,8 @@ elements.mars_basalt = {
state: "solid",
density: 5000,
extraInfo: "Woah",
tempHigh: "molten_mars",
stateHigh: "600",
tempHigh: "700",
stateHigh: "molten_mars",
hardness: 0.7,
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 = {
color: ["#e8e8e8", "#bd1102"],
behavior: behaviors.STURDYPOWDER,
behavior: [
"XX|CR:radiation%3|XX",
"XX|XX|XX",
"XX|XX|XX",
],
category: "mars",
state: "solid",
density: 1500,
@ -155,10 +158,10 @@ elements.nosmoker = {
breakInto: ["ironheart", "mars_ironheart", "ironheart_ore", "antigunk"]
}
elements.ironheart = {
color: "#e9825a",
color: "#FF6B5A",
behavior: [
"XX|XX|XX|",
"XX|XX|XX|",
"XX|CR:radiation%2|XX|",
"XX|CH:feynmanium%0.1|XX|",
"M2|M1|M2|",
],
category: "mars",
@ -166,6 +169,40 @@ elements.ironheart = {
state: "solid",
stateHigh: "molten_mars",
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: {
"electric": { elem1: "smint", elem2: "null" },
},
@ -190,7 +227,7 @@ elements.red_gold_powder = {
}
elements.red_gold = {
color: ["#D20103", "#E4080A", "#EFC3CA"],
behavior: behaviors.POWDER,
behavior: behaviors.WALL,
category: "mars",
state: "solid",
density: 1350,
@ -240,7 +277,7 @@ elements.mars_coal = {
stateHigh: "molten_mars",
temp: 10,
reactions: {
"electric": { elem2: "useless", chance: 0.01 },
"electric": { elem2: "smint", chance: 0.01 },
}
}
elements.mars_ice = {
@ -354,7 +391,8 @@ elements.ironheart_core = {
conduct: 1,
extraInfo: "wha"
}
// 2.9.17.1
// 2.10.20
// most elements done :D
// iron heart ore
// iron heart
@ -385,7 +423,10 @@ elements.ironheart_core = {
// added cores that emit electricity
// its like plants
// dumbed down ironheart a bit, im thinking about its behaviour
// Ironheart is Radioactive
// Red Gold is Solid
// Feynmanium
// make things have recaitons
// Creditssss
// Ghanisma - idea for 2.9.16

View File

@ -1,3 +1,4 @@
behaviors.SOLIDIFY = function(pixel) {
pixel.solid = true
}
@ -1548,12 +1549,107 @@ grabAllWeights = function(pixel){
return results
}
/*elements.Cherries_Ceri_Moji = {
color: "#fcd1d7",
category: Student,
state: High_School,
behavior: [Shy, Introverted, Easily_Excited, Kind],
pronouns: [She,Her,Herself],
sexuality: [Panromantic, Asexual],
desc: "Ceri is a 16 year old high school student who loves cats"
}*/
var modName = "mods/nekonicos_stuff.js";
var cookieMod = "mods/cookie_clicker.js";
if (!enabledMods.includes(cookieMod)) {
elements.cookie_dough = {
color: ["#bfac91","#CDBFAB",],
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>
<h1><a href="https://sandboxels.R74n.com" class="backbutton">&lt;</a> Sandboxels Offline Use</h1>
</ul>
<div id="content">
<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

@ -9,4 +9,5 @@ https://sandboxels.r74n.com/mobile-use
https://sandboxels.r74n.com/mod-list
https://sandboxels.r74n.com/offline-use
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;
border: none!important;
}
.standalone.mobile #savesButton, .standalone.mobile #extraInfo {
display: none
}
.standalone #extraInfo {
display: none
}
#game {
image-rendering: pixelated;
}

View File

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

View File

@ -58,7 +58,6 @@
<body>
<h1><a href="https://sandboxels.R74n.com" class="backbutton">&lt;</a> 50 Things to Do in Sandboxels</h1>
</ul>
<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>

View File

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