About MineKhan
If you want to suggest stuff, you should go to the website that this is on: hereWhere MineKhan came from
One upon a time, there was a game on Khan Academy called Scuscraft.One day, Willard spin-offed Scusraft and made MineKhan.
After many days, he ported it from a pjs program to to a webpage.
Then, when Willard made his own website (willard.fun), thingMaker copied the code and programmed it more so soon it became this.
The End.
A lot of great and fun things and interesting conflicts happened in MineKhan in its golden days.
Read about it here
Changelog
URL parameters
target=id - Join a server when loading is finished Example: /minekhan?target=ew2nm43qjxz66hb4kwe5 nosound Example: /minekhan?nosound
Controls
These controls are used only when playing in a world. You can change them by going to options and clicking change controlsWith keyboard and mouse: * Right-click (or ctrl + left-click): place block * Left-click: Remove block * Middle-click: Pick block * In survival mode, hold down left-click or repeatedly left-click: Break block * Q: Sprint * Shift: Sneak and stop sitting * W: Walk forward * S: Walk backward * A: Walk left * D: Walk right * E: Open inventory * B: Toggle super Breaker * Z: Zoom * L: Toggle Spectator mode * Enter: Toggle slab/stair mode * Arrow Keys: look around * P or Esc: pause/unpause * 1-9 navigate hotbar * Spacebar: jump * Double jump: toggle flight * Shift (flying): fly down * Space (flying): fly up * T: Open chat * ; (semicolon): Release the pointer without pausing (for screenshots) * Backspace or delete: drops the item you're holding right now * /: Type command * H: Hyper builder * O: Toggle third person mode * U: Toggle sitting * F3: Show some info With keyboard and touchpad: * Click-with-two-fingers (or ctrl + click-with-one-finger): place block * Click-with-one-finger: Remove block * Click-with-three-fingers: Pick block * In survival mode, hold down one finger or repeatedly click-with-one-finger: Break block * Other controls are same as controls for keyboard and mouse With touch screen: * Tap: Place block / Attack * Press and hold: Break block / Use * Swipe: Look around (can be changed with mouse sensitivity) * Tap hotbar: Select slot * Press and hold hotbar: Drop item in slot * Buttons with arrows / joystick: Move around * There are also other controls that are self explanatory
Can't remember WASD keys?
Think of them as this:
| W: ⇧ | ||
| A: ⇦ | S: ⇩ | D: ⇨ |
Health
Health is a feature only in survival.A heart looks like this:
A half heart looks like this:
When you create a new world, you start with 20health.
When you have 0health, you die.
Losing health
There are many ways to lose health inluding fall damage, being attacked by other players, and touching cactus and lava.Effects
There are effects that change how the hearts look.When you are withered, it looks like this:

When you are freezing, it looks like this:
Inventory
When playing a world, press e to open the inventory.Creative inventory

Survival inventory

More info will
Crafting
You can access the crafting grid from the inventory or by right clicking a crafting table.The inventory crafting grid is 2×2.
The crafting table's crafting grid is 3×3.
Some things require a crafting table to be crafted.
Recipes
Click the collapsible to see crafting recipesFixed: You have to put the items in the grid the exact way.
Shaped: The ingredients have a certain shape and the shape can be moved around.
Shapeless: The ingredients can be arranged on the grid in any way
Mods
You can write a mod (code) when editing a world.
There are so many possibilities! Here are some examples:
This shows a welcome message when someone joins. Try changing the message and color!
world.on("join", e => {
e.player.connection.send({type:"title", data:"Welcome "+e.player.username, color:"yellow"})
})
This makes you get damage when you click a redStain.
world.on("click", e => {
if(e.block === blockIds.redStain) e.player.damage(3, e.player.username+" died from clicking it.")
})
This makes emerald blocks become checkpoints. When you stand on one, the respawn point is set there.
world.on("tick", e => {
for(let p of world.players){
if(p.world.getBlock(round(p.x), round(p.y-1), round(p.z)) === blockIds.emeraldBlock){
p.spawnPoint = {x:p.x, y:p.y, z:p.z}
}
}
})
This stops fall damage.
world.on("damage", e => {
if(e.type === "bigfall" || e.type === "smallfall"){
return "stop"
}
})
Here is an example of world (terrain) generation.
world.customChunkGenerate = function(chunk){
for (let i = 0; i < 16; i++) { // for each column in the chunk
for (let k = 0; k < 16; k++) {
let wx = chunk.x + i
let wz = chunk.z + k
// Try adding another noise! Just copy this line and rename "noise" and add the new noise to the equation.
let noise = world.noiseProfile.noise(wx*0.1,wz*0.1)
let height = round(noise * 30 + 10) // multiply by 30 then add 10 then round it
for(let y=0; y<height; y++){ // from y=0 to y=height
chunk.setBlock(i,y,k,blockIds.dirt) // fill with dirt
}
chunk.setBlock(i,height,k,blockIds.grass) // put grass on top
chunk.biomes[k*16+i] = biomeIds.oldPineTaiga
chunk.tops[k*16+i] = height
}
}
chunk.waterTops = new Uint8Array(256)
}
world.customChunkPopulate = function(chunk){
for (let i = 0; i < 16; i++) {
for (let k = 0; k < 16; k++) {
wx = chunk.x + i
wz = chunk.z + k
ground = chunk.tops[k * 16 + i]
if(i === 3 && k === 9){
chunk.spawnSmallTree(i,ground,k,wx,wz, false) // Put a oak tree
}
}
}
}
This turns bricks into house spawners. Note: block can also be an item.
// Define the list of blocks
const wallBlocks = [blockIds.quartzBlock, blockIds.bricks, blockIds.oakPlanks, blockIds.stoneBricks, blockIds.endStoneBricks, blockIds.purpurBlock, blockIds.deepslateTiles]
const frameBlocks = [blockIds.quartzPillar, blockIds.oakLog, blockIds.purpurPillar]
world.on("click", e => {
let wall = wallBlocks[floor(rand(wallBlocks.length))] // Choose a block
let frame = frameBlocks[floor(rand(frameBlocks.length))]
if(e.holding === blockIds.brick){
for(let x = -2; x <= 2; x++)
for(let y = -2; y <= 2; y++)
for(let z = -2; z <= 2; z++)
{
if((!x + !y + !z) === 2) continue // Stop for windows
let overlaps = (abs(x) === 2) + (abs(y) === 2) + (abs(z) === 2) // How many edges is this block in
if(overlaps >= 2){
world[""].setBlock(e.x+x, e.y+y+2, e.z+z, frame)
}else if(abs(x) === 2 || abs(y) === 2 || abs(z) === 2){
world[""].setBlock(e.x+x, e.y+y+2, e.z+z, wall)
}
}
e.holdObj.amount-- // Subtract one, it was used up
}
})