Snap! One Block

Here's a funny little challenge!
Using the odd little feature/bug here:

You can make a script that makes your sprite choose and say a random block for you to drag into the coding area!
With this, you can then make a project that works similar to Minecraft One Block!

Here's a starter project you can use to begin!

The rules:

  1. You cannot use blocks directly from the palette
  2. Your project must be actually usable
  3. You cannot edit the starter script to make it easier for yourself (Exception: You can make mods that EVERYONE can use which make the challenge easier, but they won't affect this challenge)
  4. You're allowed to enable any extensions from the settings menu (JavaScript, primitives/extensions, codification)
  5. You cannot import any libraries
  6. Mods are fully allowed, but any submission using a mod that was made to reduce the challenge's difficulty will not be counted
  7. You cannot use "relabel" to obtain other blocks
Why? (Rule 7)

If you want more of a challenge, don't copy blocks! Treat them like limited resources!

For some extra fun: build the script in a new project and see if you can code stages of blocks you can unlock at certain points, or even add block/category rarities!

this is genius. I think i'll start from scratch (make my own starter), but still a really fun idea.

Thanks, I hope you have fun!
Also, are you going to do anything different or do you just want to try making it yourself?

oh, i'm just going to make some improvements :) (almost done, just need 30 secs or so). Basically just making the game more fool-proof, if its possible to change your project it would be great :) if not thats ok

Ah, okay.
And I don't mind changing my project, it's no problem!

this goes in the stage; (first time :: variables is a stage local variable.

untitled script pic (1)

Just curious: is ringify or relabel allowed? Relabel allows one to access some hidden blocks as well...

Thanks for bringing that up...
(Added it to the rules.)

A few questions...

  1. So basically, I have to make a script based on random blocks the sprite chooses?
  2. Can I make the random block generation faster?
  3. Can we use infinite sprites?
  4. Do we have a limit on how many times we can generate?
  5. What do you mean when you say we cannot use blocks directly from the palette?

Did you know there is a microworlds library? You can use it to hide most of the UI features.

Also, you can use (extension [ide_blocks V] @:>) to get all blocks, including hidden ones. This way, you can hide blocks to stop people from readily cheating without worrying about the project breaking.


You cannot move your cursor to the palette and grab a block from it. You can only obtain a block by grabbing it from the sprite's speech bubble.

Can I restart?

What I got (in order)

there should be something that can hide blocks without making them not in the my [blocks V], because it only shows visible blocks, not hidden ones

Yeah, of course you can restart!
Do it as many times as you want/need!

I think Microworld does that, I want to start working on a higher-quality version using it soon.
I want to use sathvikrias' version, but it doesn't work for me.

sathvikrias' version

I think I'll begin redoing this from scratch using Microworld when I have time, and I'll consider also adding rarities and stages like I mentioned before.

wait i think i know how to do this
make a block that gives you the block, and then click generate puzzle, the only block left is the give you a block button

As in, a generator block?
One with all the blocks stored?

"Generate puzzle..." hides all the blocks in the palette except for the ones already used, deletes those blocks, and only restores the project once the exact scripts are recreated.
Not very useful in this case.

Doing this would most likely require all the blocks to be in the definition of the generator, meaning any person could just right-click it, click "edit", and then drag the blocks into the scripting area and copy them as they please.

also i realized, if i just use pick random of my blocks, it will always pick the give yuo a block block

What?

also i just realized, getting a list of every block by using blockify on my blocks, grabbing it, and placing it into the give block block doesnt work because of immense lag

I would say you could set a block variable for all the primitives, but again...