(Mobile) Minecraft Platformer and Level Editor (and more!)

Instructions: Read All:\nClick Green Flag A LOT for less lag.\nI put a lot of effort into this so please love and favorite.\nIf, you remix change something or it may be reported.\n7,980 blocks!!!\nTook 4 months from start to finish, over 75 hours of work!\nMy most viewed project in just 4 days!\nView in Turbowarp for less lag and glitches:\nhttps://turbowarp.org/596396767\nFULL SCREEN RECOMMENDED (Entry for @TrentonTNT's contest)\n---------------------------------------------------------------------------------\nPlaatformer Mode:\nAvoid TNT and lava, and stay on grass.\n---------------------------------------------------------------------------------\nLevel Editor Mode:\nPress H to hide the no blocks thingy (it's there for people who didn't listen to me and view in Scratch)\nHover mouse at the bottom, and choose the block.\nMAY TAKE SEVERAL CLICKS TO FINALLY APPEAR, BECAUSE OF LAG! \n---------------------------------------------------------------------------------\nIsometric Mode:\nSpace: Switch between "mine" and "put"\nClick: place/mine a block\n1-9: Type of block, gravity block are working but not water and lava\n1: Stone\n2: Dirt\n3: Grass\n4: Log\n5: Obsidian\n6: Gravel\n7: Sand\n8: Water (kinda broken and laggy but ok)\n9: Lava\n---------------------------------------------------------------------------------\n3D Mode: use keys 1, 2, 3, 4, 5 to switch between mining and blocks.\n---------------------------------------------------------------------------------\nFor more great projects, view @TrentonTNT's projects, and also mine, @ecward27.\n---------------------------------------------------------------------------------\nCan we get this to 250 Loves?\n---------------------------------------------------------------------------------

@Stage\n\nwhen [8 v] key pressed\nset [chosen block v] to [8]\n\nwhen I receive [3d minecraft v]\nswitch backdrop to (backdrop2 v)\n\nwhen I receive [back v]\nswitch backdrop to (backdrop1 v)\n\nwhen [5 v] key pressed\nset [chosen block v] to [5]\n\nwhen flag clicked\nswitch backdrop to (backdrop3 v)\n\nwhen flag clicked\nset [chosen block v] to [1]\n\nwhen [4 v] key pressed\nset [chosen block v] to [4]\n\nwhen I receive [start v]\nswitch backdrop to (backdrop1 v)\n\nwhen I receive [back v]\nswitch backdrop to (backdrop1 v)\n\nwhen [3 v] key pressed\nset [chosen block v] to [3]\n\nwhen I receive [start v]\nforever\n    play sound [Minecraft v] until done\nend\n\nwhen [2 v] key pressed\nset [chosen block v] to [2]\n\nwhen I receive [isometric v]\nswitch backdrop to (backdrop2 v)\n\nwhen [1 v] key pressed\nset [chosen block v] to [1]\n\nwhen I receive [level editor v]\nswitch backdrop to (backdrop2 v)\n\nwhen flag clicked\nforever\n    if <key (down arrow v) pressed?> then\n        change [cam z v] by (-1)\n    end\n    if <key (up arrow v) pressed?> then\n        change [cam z v] by (1)\n    end\nend\n\nwhen I receive [credits v]\nswitch backdrop to (backdrop3 v)\n\nwhen I receive [play v]\nswitch backdrop to (backdrop2 v)\n\nwhen [6 v] key pressed\nset [chosen block v] to [6]\n\nwhen [9 v] key pressed\nset [chosen block v] to [9]\n\nwhen flag clicked\nset [mine/put v] to [mine]\nforever\n    if <key (space v) pressed?> then\n        if <(MINE/PUT) = [put]> then\n            set [mine/put v] to [mine]\n        else\n            set [mine/put v] to [put]\n        end\n        wait (1) seconds\n    end\nend\n\nwhen I receive [start v]\nforever\n    play sound [Minecraft v] until done\nend\n\n@level editor player\n\ndefine Move (up) (left) (right)\nchange y by (Y Velocity)\nif <<touching (level editor blocks v)?> or <(y position) < [-151]>> then\n    repeat ([abs v] of (Y Velocity) )\n        if <<touching (level editor blocks v)?> or <(y position) < [-151]>> then\n            change y by ((0) - (([abs v] of (Y Velocity) ) / (Y Velocity)))\n        end\n    end\n    if <(Device) = [PC]> then\n        if <<not <(Y Velocity) > [0]>> and <<key (up arrow v) pressed?> or <<key (space v) pressed?> or <key (w v) pressed?>>>> then\n            set [y velocity v] to (up)\n        else\n            set [y velocity v] to [0]\n        end\n    else\n        if <<not <(Y Velocity) > [0]>> and <<mouse down?> and <(mouse y) > (y position)>>> then\n            set [y velocity v] to (up)\n        else\n            set [y velocity v] to [0]\n        end\n    end\nelse\n    change [y velocity v] by (-1)\nend\nchange x by (X Velocity)\nif <touching (level editor blocks v)?> then\n    repeat ([abs v] of (X Velocity) )\n        if <touching (level editor blocks v)?> then\n            change x by ((0) - (([abs v] of (X Velocity) ) / (X Velocity)))\n        end\n    end\nend\nif <(Device) = [PC]> then\n    if <<key (right arrow v) pressed?> or <key (d v) pressed?>> then\n        change [x velocity v] by (right)\n    end\n    if <<key (left arrow v) pressed?> or <key (a v) pressed?>> then\n        change [x velocity v] by (left)\n    end\nelse\n    if <<mouse down?> and <(mouse x) > ((x position) + (20))>> then\n        change [x velocity v] by (right)\n    end\n    if <<mouse down?> and <((x position) - (20)) > (mouse x)>> then\n        change [x velocity v] by (left)\n    end\nend\nset [x velocity v] to ((X Velocity) * (0.8))\n\nwhen flag clicked\nhide\n\nwhen I receive [next level v]\ngo to x: (-200) y: (100)\nwait (0.1) seconds\nset [next level v] to [False]\n\nwhen I receive [block placed v]\nFix Glitch\n\ndefine Fix Glitch\nset [fix glitch v] to [0]\nif <not <touching (level editor blocks v)?>> then\n    stop [this script v]\nend\nrepeat (100)\n    change [fix glitch v] by (1)\n    change y by (Fix Glitch)\n    if <not <touching (level editor blocks v)?>> then\n        stop [this script v]\n    end\n    change y by ((0) - ((Fix Glitch) * (2)))\n    if <not <touching (level editor blocks v)?>> then\n        stop [this script v]\n    end\n    change y by (Fix Glitch)\nend\n\nwhen I receive [touching lava v]\ngo to x: (-200) y: (100)\n\nwhen I receive [level editor v]\nshow\ngo to x: (-200) y: (100)\nset [y velocity v] to [0]\nforever\n    Move [9] [-1] [1]\n    if <(Touching Lava) = [True]> then\n        go to x: (-200) y: (100)\n    end\n    if <(x position) > [229]> then\n        broadcast (Next Level v)\n        set [next level v] to [True]\n        set [x velocity v] to [0]\n        set [y velocity v] to [0]\n    end\nend\n\nwhen I receive [back v]\nhide\n\nwhen flag clicked\nhide variable [loading v]\n\n@Arms\n\nwhen flag clicked\nhide\n\nwhen I start as a clone\nshow\nif <(Clone ID) = [Sleeves]> then\n    switch costume to (costume3 v)\n    point in direction (90)\n    forever\n        go to [front v] layer\n        go to (level editor player v)\n    end\nend\nif <(Clone ID) = [Arm 1]> then\n    switch costume to (costume1 v)\n    point in direction (90)\n    go to [front v] layer\n    forever\n        go to (level editor player v)\n        change x by (-12)\n        change y by (11)\n        point towards (mouse-pointer v)\n    end\nend\nif <(Clone ID) = [Arm 2]> then\n    go to [front v] layer\n    forever\n        if <(Mode) = [1Mine]> then\n            switch costume to (1mine v)\n        else\n            switch costume to (costume5 v)\n        end\n        go to (level editor player v)\n        change x by (12)\n        change y by (11)\n        point towards (mouse-pointer v)\n    end\nend\n\nwhen I receive [level editor v]\nhide\nset [clone id v] to [Arm 1]\ncreate clone of (_myself_ v)\nset [clone id v] to [Arm 2]\ncreate clone of (_myself_ v)\nset [clone id v] to [Sleeves]\ncreate clone of (_myself_ v)\n\nwhen I receive [back v]\nhide\n\n@Cursor\n\nwhen flag clicked\nswitch costume to (costume1 v)\nhide\n\ndefine Go to mouse\nrepeat (100)\n    if <touching (mouse-pointer v)?> then\n        stop [this script v]\n    end\n    if <(mouse x) > ((x position) + (10))> then\n        change x by (20)\n    end\n    if <(mouse x) < ((x position) - (10))> then\n        change x by (-20)\n    end\n    if <(mouse y) > ((y position) + (10))> then\n        change y by (20)\n    end\n    if <(mouse y) < ((y position) - (10))> then\n        change y by (-20)\n    end\nend\n\nwhen I receive [level editor v]\nswitch costume to (costume1 v)\ngo to x: (10) y: (10)\nforever\n    Go to mouse\n    if <<<<(Mode) = [1Axe]> and <(distance to [level editor player v]) < [100]>> or <(Mode) = [Start]>> or <(Mode) = [1Mine]>> then\n        show\n    else\n        hide\n    end\nend\n\nwhen I receive [back v]\nswitch costume to (costume2 v)\nhide\n\n@level editor blocks\n\ndefine Generate Level\ndelete all of [y v]\nset [clones v] to [20]\nswitch costume to (1 v)\ngo to x: (-250) y: (-170)\nswitch costume to (4stone 1 v)\nrepeat (pick random (1) to (2))\n    repeat (24)\n        if <(pick random (1) to (5)) = [1]> then\n            switch costume to (5coal 1 v)\n        else\n            switch costume to (4stone 1 v)\n        end\n        change x by ((40) / ((100) / (size)))\n        create clone of (_myself_ v)\n    end\n    change y by ((40) / ((100) / (size)))\n    switch costume to (1 v)\n    set x to (-250)\nend\nset [y v] to (y position)\nset [length v] to (pick random (0) to (5))\nrepeat (24)\n    if <(pick random (1) to (2)) = [1]> then\n        if <(Length) > [8]> then\n            change [length v] by (-1)\n        else\n            change [length v] by (pick random (-1) to (1))\n        end\n    end\n    set y to (y)\n    change x by ((40) / ((100) / (size)))\n    repeat (Length)\n        if <(pick random (1) to (5)) = [1]> then\n            switch costume to (5coal 1 v)\n        else\n            switch costume to (4stone 1 v)\n        end\n        create clone of (_myself_ v)\n        change y by ((40) / ((100) / (size)))\n    end\n    repeat (2)\n        switch costume to (3dirt 1 v)\n        create clone of (_myself_ v)\n        change y by ((40) / ((100) / (size)))\n    end\n    switch costume to (2grass 1 v)\n    create clone of (_myself_ v)\n    change y by ((40) / ((100) / (size)))\n    add (y position) to [y v]\nend\n\nwhen flag clicked\nhide\n\nwhen I receive [next level v]\nwait until <(Next Level) = [False]>\nGenerate Level\nrepeat until <not <<[y v] contains [50]?> or <[y v] contains [70]?>>>\n    Generate Level\nend\n\nwhen I start as a clone\nshow\nset [ghost v] effect to (0)\nchange [clones v] by (1)\nif <(costume [name v]) = [7TNT]> then\n    repeat (5)\n        hide\n        wait (0.1) seconds\n        show\n        wait (0.1) seconds\n    end\n    switch costume to (explosion v)\n    wait (0) seconds\n    change [clones v] by (-1)\n    delete this clone\nend\nforever\n    if <(Mode) = [1Mine]> then\n        if <<<mouse down?> and <touching (cursor v)?>> and <(distance to [level editor player v]) < [100]>> then\n            if <(Device) = [PC]> then\n                next costume\n                if < (costume [name v]) contains [1]?> then\n                    change [clones v] by (-1)\n                    delete this clone\n                end\n                wait until <not <mouse down?>>\n            else\n                Double Click [Mine]\n            end\n        end\n    end\n    if <(costume [name v]) = [6Lava]> then\n        Check Touching Lava (x position) (y position)\n    end\nend\n\nwhen I start as a clone\nforever\n    if <touching color (#d7dfe3)?> then\n        change [clones v] by (-1)\n        delete this clone\n    end\n    if <(Next Level) = [True]> then\n        delete this clone\n    end\nend\n\ndefine Check Touching Lava (x) (y)\nchange y by (1)\nif <touching (level editor player v)?> then\n    broadcast (Touching Lava v)\n    go to x: (x) y: (y)\n    stop [this script v]\nend\nchange y by (-2)\nif <touching (level editor player v)?> then\n    broadcast (Touching Lava v)\n    go to x: (x) y: (y)\n    stop [this script v]\nend\ngo to x: (x) y: (y)\n\ndefine Double Click (item)\nrepeat (5)\n    if <not <mouse down?>> then\n        repeat (5)\n            if <mouse down?> then\n                if <(item) = [Mine]> then\n                    next costume\n                    if < (costume [name v]) contains [1]?> then\n                        change [clones v] by (-1)\n                        delete this clone\n                    end\n                    wait until <not <mouse down?>>\n                    stop [this script v]\n                end\n                if <(item) = [Add]> then\n                    if <(Clones) = [300]> then\n                        broadcast (Out of clones v)\n                    end\n                    create clone of (_myself_ v)\n                    broadcast (Block Placed v)\n                    wait until <not <mouse down?>>\n                    stop [this script v]\n                end\n            end\n        end\n    end\nend\n\nwhen I receive [level editor v]\nhide\nbroadcast (Next Level v)\nforever\n    if <not <<(Mode) = [1Mine]> or <(Mode) = [Start]>>> then\n        switch costume to (Mode)\n        go to (cursor v)\n    end\n    if <<mouse down?> and <(distance to [level editor player v]) < [100]>> then\n        if <(Device) = [PC]> then\n            if <(Clones) > [299]> then\n                broadcast (Out of clones v)\n            end\n            create clone of (_myself_ v)\n            broadcast (Block Placed v)\n            wait until <not <mouse down?>>\n        else\n            Double Click [Add]\n        end\n    end\n    if <key (s v) pressed?> then\n        set [next level v] to [True]\n        broadcast (Next Level v)\n        wait until <not <key (s v) pressed?>>\n    end\nend\n\nwhen I receive [back v]\nhide\n\n@Transparent Blocks\n\nwhen flag clicked\ngo to [back v] layer\nhide\n\nwhen flag clicked\nforever\n    set [ghost v] effect to (30)\n    hide\n    if <not <<(Mode) = [1Mine]> or <(Mode) = [Start]>>> then\n        switch costume to (Mode)\n        go to (cursor v)\n        if <(distance to [level editor player v]) < [100]> then\n            show\n        else\n            hide\n        end\n    end\nend\n\nwhen I receive [back v]\nhide\n\n@Menu\n\nwhen flag clicked\nhide\n\nwhen I start as a clone\nshow\nswitch costume to (Clone ID)\nforever\n    if <(Clone ID) = [Background]> then\n        switch costume to (background v)\n        go to x: (0) y: (-150)\n    else\n        if <(Hide) = [False]> then\n            set x to (item (costume [number v]) of [x v])\n            if <touching (mouse-pointer v)?> then\n                say (Clone ID)\n                set [brightness v] effect to (5)\n                set size to (105) %\n            else\n                say []\n                set [brightness v] effect to (0)\n                set size to (100) %\n            end\n            if <<mouse down?> and <touching (mouse-pointer v)?>> then\n                if <<(costume [number v]) = [1]> or <<(costume [number v]) = [6]> or <(costume [number v]) = [7]>>> then\n                    set [mode v] to (join (costume [number v]) (costume [name v]))\n                else\n                    set [mode v] to (join (costume [number v]) (join (costume [name v]) [ 1]))\n                end\n            end\n        end\n    end\n    if <key (v v) pressed?> then\n        if <(Hide) = [False]> then\n            set [hide v] to [True]\n            hide\n        else\n            set [hide v] to [False]\n            set [ghost v] effect to (0)\n            show\n        end\n        wait until <not <key (v v) pressed?>>\n    end\nend\n\ndefine Clone (#)\nrepeat (#)\n    set [clone id v] to (costume [name v])\n    create clone of (_myself_ v)\n    next costume\nend\ncreate clone of (_myself_ v)\nset [hide v] to [False]\n\nwhen I receive [level editor v]\nshow\ngo to x: (0) y: (-150)\nset [clone id v] to [Background]\ncreate clone of (_myself_ v)\nswitch costume to (mine v)\nClone [7]\nset [mode v] to [Start]\nwait until <not <(Mode) = [Start]>>\nshow\nswitch costume to (select v)\nset [ghost v] effect to (0)\nforever\n    set x to (item (letter (1) of (Mode)) of [x v])\n    if <key (v v) pressed?> then\n        if <(Hide) = [False]> then\n            set [hide v] to [True]\n            hide\n        else\n            set [hide v] to [False]\n            set [ghost v] effect to (0)\n            show\n        end\n        wait until <not <key (v v) pressed?>>\n    end\nend\n\nwhen I receive [back v]\nhide\n\n@play\n\nwhen flag clicked\nhide\n\nwhen this sprite clicked\nbroadcast (play v)\nhide\n\nwhen I receive [level editor v]\nhide\n\nwhen I receive [isometric v]\nhide\n\nwhen I receive [credits v]\nhide\n\nwhen I receive [back v]\nshow\n\nwhen I receive [start v]\nshow\nforever\n    if <touching (mouse-pointer v)?> then\n        change size by (((120) - (size)) / (3))\n        set [ghost v] effect to (20)\n    else\n        change size by (((100) - (size)) / (3))\n        set [ghost v] effect to (-20)\n    end\nend\n\nwhen I receive [3d minecraft v]\nhide\n\n@level editor\n\nwhen flag clicked\nhide\n\nwhen this sprite clicked\nbroadcast (level editor v)\nhide\n\nwhen I receive [isometric v]\nhide\n\nwhen I receive [play v]\nhide\n\nwhen I receive [credits v]\nhide\n\nwhen I receive [back v]\nshow\n\nwhen I receive [start v]\nshow\nforever\n    if <touching (mouse-pointer v)?> then\n        change size by (((120) - (size)) / (3))\n        set [ghost v] effect to (20)\n    else\n        change size by (((100) - (size)) / (3))\n        set [ghost v] effect to (-20)\n    end\nend\n\nwhen I receive [3d minecraft v]\nhide\n\n@isometric\n\nwhen flag clicked\nhide\n\nwhen this sprite clicked\nbroadcast (isometric v)\nhide\n\nwhen I receive [play v]\nhide\n\nwhen I receive [level editor v]\nhide\n\nwhen I receive [credits v]\nhide\n\nwhen I receive [back v]\nshow\n\nwhen I receive [start v]\nshow\nforever\n    if <touching (mouse-pointer v)?> then\n        change size by (((120) - (size)) / (3))\n        set [ghost v] effect to (20)\n    else\n        change size by (((100) - (size)) / (3))\n        set [ghost v] effect to (-20)\n    end\nend\n\nwhen I receive [3d minecraft v]\nhide\n\n@inventory\n\nwhen flag clicked\nset [inventory type v] to [1]\nforever\n    hide\n    go to [front v] layer\n    switch costume to ((INVENTORY TYPE) mod (2))\n    if <(costume [number v]) = [1]> then\n        go to x: (0) y: (-158)\n    else\n        go to x: (0) y: (0)\n    end\nend\n\nwhen [e v] key pressed\nchange [inventory type v] by (1)\n\n@block \n\nwhen I start as a clone\ngo to [front v] layer\nswitch costume to (stone v)\nshow\nset [start x v] to (x position)\nset [start y v] to (y position)\nset [x v] to [0]\nset [y v] to [0]\nforever\n    go to x: ((start x) + (x)) y: ((start y) + (y))\n    set costume\n    grassing / ungrassing\n    gravity block fall\nend\n\ndefine create world\nset [clone number v] to [1]\ngo to x: (0) y: (-39)\nrepeat (SIZE_Z)\n    set [ystart v] to (y position)\n    repeat (SIZE_Z)\n        repeat (SIZE_Z)\n            set costume\n            if <<not <[] = (item (clone costume) of [grid list v])>> and <[] = (item ((clone costume) + ((1) + ((TILE) + ((TILE) * (TILE))))) of [grid list v])>> then\n                show\n                create clone of (_myself_ v)\n                hide\n            end\n            change [clone number v] by (1)\n            change x by (17)\n            change y by (-8)\n        end\n        change [clone number v] by ((TILE) - (SIZE_Z))\n        change x by ((-17) * ((1) + (SIZE_Z)))\n        change y by ((8) * ((SIZE_Z) - (1)))\n    end\n    set x to (0)\n    set y to ((ystart) + (22))\n    change [clone number v] by (((TILE) * (TILE)) - (((SIZE_Z) * ((TILE) - (SIZE_Z))) + ((SIZE_Z) * (SIZE_Z))))\nend\n\ndefine check for mouse touching\nswitch costume to (check up v)\nif <touching (mouse-pointer v)?> then\n    replace item ((clone costume) + ((TILE) * (TILE))) of [grid list v] with (Chosen block)\nend\nswitch costume to (check right v)\nif <touching (mouse-pointer v)?> then\n    replace item ((clone costume) + (1)) of [grid list v] with (Chosen block)\nend\nswitch costume to (check left v)\nif <touching (mouse-pointer v)?> then\n    replace item ((clone costume) + (TILE)) of [grid list v] with (Chosen block)\nend\n\ndefine click\nif <(MINE/PUT) = [mine]> then\n    add (item (clone costume) of [grid list v]) to [inventory v]\n    replace item (clone costume) of [grid list v] with []\nelse\n    check for mouse touching\nend\n\ndefine grassing / ungrassing\nif <<(item (clone costume) of [grid list v]) = [2]> and <(item ((clone costume) + ((TILE) * (TILE))) of [grid list v]) = []>> then\n    replace item (clone costume) of [grid list v] with [3]\nend\nif <<(item (clone costume) of [grid list v]) = [3]> and <not <(item ((clone costume) + ((TILE) * (TILE))) of [grid list v]) = []>>> then\n    replace item (clone costume) of [grid list v] with [2]\nend\n\nwhen this sprite clicked\nclick\n\nwhen I receive [check v]\ngrassing / ungrassing\nset touch\n\ndefine setup list\nset [size_z v] to [8]\nset [tile v] to [20]\ndelete all of [grid list v]\nrepeat ((TILE) * ((TILE) * (TILE)))\n    add [] to [grid list v]\nend\nset [clone number v] to [1]\nrepeat (2)\n    repeat (4)\n        repeat (6)\n            replace item (clone number) of [grid list v] with [2]\n            change [clone number v] by (1)\n        end\n        repeat ((TILE) - (6))\n            replace item (clone number) of [grid list v] with []\n            change [clone number v] by (1)\n        end\n    end\n    repeat (((TILE) - (4)) * (TILE))\n        replace item (clone number) of [grid list v] with []\n        change [clone number v] by (1)\n    end\nend\nreplace item (801) of [grid list v] with [4]\nreplace item (1201) of [grid list v] with [4]\nreplace item (1601) of [grid list v] with [4]\nreplace item (2001) of [grid list v] with [4]\nreplace item (821) of [grid list v] with [10]\n\ndefine set costume\nset [clone costume v] to ((clone number) + ((CAM X) + (((CAM Y) * (TILE)) + ((CAM Z) * ((TILE) * (TILE))))))\nswitch costume to (item (clone costume) of [grid list v])\n\ndefine gravity block fall\nif <<<(item (clone costume) of [grid list v]) = [7]> or <(item (clone costume) of [grid list v]) = [6]>> and <(item ((clone costume) - ((TILE) * (TILE))) of [grid list v]) = []>> then\n    change [x v] by ((-2.125) / (4))\n    change [y v] by ((-1.125) / (4))\n    if <(x) > [-17]> then\n        set [x v] to [0]\n        set [y v] to [0]\n        replace item ((clone costume) - ((TILE) * (TILE))) of [grid list v] with (item (clone costume) of [grid list v])\n        replace item (clone costume) of [grid list v] with []\n    end\nend\n\ndefine set touch\nif <(item (clone costume) of [grid list v]) = []> then\n    delete all of [touching v]\n    add (item ((clone costume) + (1)) of [grid list v]) to [touching v]\n    add (item ((clone costume) + (-1)) of [grid list v]) to [touching v]\n    add (item ((clone costume) + (TILE)) of [grid list v]) to [touching v]\n    add (item ((clone costume) - (TILE)) of [grid list v]) to [touching v]\n    add (item ((clone costume) + ((TILE) * (TILE))) of [grid list v]) to [touching v]\nend\n\nwhen I receive [delete v]\ndelete this clone\n\nwhen I receive [isometric v]\ndelete all of [inventory v]\nerase all\nreset timer\nset [clicking v] to [0]\nset [cam x v] to [0]\nset [cam y v] to [0]\nset [cam z v] to [0]\nsetup list\nforever\n    broadcast (delete v)\n    create world\nend\n\nwhen flag clicked\nhide variable [mine/put v]\n\nwhen I receive [isometric v]\nshow variable [mine/put v]\n\nwhen I receive [isometric v]\nshow variable [mine/put v]\n\n@credits\n\nwhen flag clicked\nhide\n\nwhen this sprite clicked\nbroadcast (credits v)\nhide\n\nwhen I receive [level editor v]\nhide\n\nwhen I receive [isometric v]\nhide\n\nwhen I receive [play v]\nhide\n\nwhen I receive [back v]\nshow\n\nwhen I receive [start v]\nshow\nforever\n    if <touching (mouse-pointer v)?> then\n        change size by (((120) - (size)) / (3))\n        set [ghost v] effect to (20)\n    else\n        change size by (((100) - (size)) / (3))\n        set [ghost v] effect to (-20)\n    end\nend\n\nwhen I receive [3d minecraft v]\nhide\n\n@Credits\n\nwhen I receive [credits v]\nswitch costume to (credits v)\nclear graphic effects\nshow\ngo to x: (0) y: (-378)\nforever\n    set size to (1000) %\n    change y by (0.5)\n    set size to (100) %\n    if <(y position) > [370]> then\n        hide\n        broadcast (back v)\n        stop [this script v]\n    end\nend\n\nwhen flag clicked\nhide\n\nwhen I receive [back v]\nhide\nstop [other scripts in sprite v]\n\n@Clouds\n\nwhen I start as a clone\ngo to [back v] layer\nforever\n    if <<<(lvl) = [3]> or <(lvl) = [4]>> or <(lvl) = [7]>> then\n        hide\n    else\n        show\n    end\n    switch costume to (pick random (1) to (4))\n    set size to (pick random (40) to (70)) %\n    go to [back v] layer\n    set [ghost v] effect to (pick random (5) to (20))\n    if <(pick random (1) to (2)) = [1]> then\n        go to x: (-200) y: (pick random (20) to (180))\n        repeat (220)\n            change x by (2)\n        end\n        hide\n        wait (pick random (1) to (5)) seconds\n    end\n    if <(pick random (1) to (2)) = [2]> then\n        go to x: (220) y: (pick random (20) to (180))\n        repeat (110)\n            change x by (-4)\n        end\n        hide\n        wait (pick random (1) to (5)) seconds\n    end\nend\n\nwhen I receive [isometric v]\nrepeat (5)\n    create clone of (_myself_ v)\n    go to [back v] layer\n    wait (1) seconds\nend\n\nwhen I receive [level editor v]\nrepeat (5)\n    create clone of (_myself_ v)\n    go to [back v] layer\n    wait (1) seconds\nend\n\nwhen I receive [play v]\nrepeat (5)\n    create clone of (_myself_ v)\n    go to [back v] layer\n    wait (1) seconds\nend\n\nwhen I receive [back v]\nstop [other scripts in sprite v]\ndelete this clone\n\n@back\n\nwhen flag clicked\ngo to x: (185) y: (-147)\nhide\n\nwhen this sprite clicked\nbroadcast (back v)\nhide\n\nwhen I receive [play v]\nshow\n\nwhen I receive [credits v]\nshow\n\nwhen I receive [credits v]\ngo to x: (185) y: (-147)\ngo to [front v] layer\nshow\nforever\n    if <touching (mouse-pointer v)?> then\n        change size by (((120) - (size)) / (3))\n        set [ghost v] effect to (20)\n    else\n        change size by (((100) - (size)) / (3))\n        set [ghost v] effect to (-20)\n    end\nend\n\nwhen I receive [play v]\ngo to [front v] layer\nshow\nforever\n    if <touching (mouse-pointer v)?> then\n        change size by (((120) - (size)) / (3))\n        set [ghost v] effect to (20)\n    else\n        change size by (((100) - (size)) / (3))\n        set [ghost v] effect to (-20)\n    end\nend\n\nwhen I receive [back v]\nhide\n\nwhen I receive [complete death v]\ngo to x: (185) y: (-115)\ngo to [front v] layer\nshow\nforever\n    if <touching (mouse-pointer v)?> then\n        change size by (((120) - (size)) / (3))\n        set [ghost v] effect to (20)\n    else\n        change size by (((100) - (size)) / (3))\n        set [ghost v] effect to (-20)\n    end\nend\n\nwhen I receive [play v]\ngo to x: (185) y: (147)\ngo to [front v] layer\nshow\nforever\n    if <touching (mouse-pointer v)?> then\n        change size by (((120) - (size)) / (3))\n        set [ghost v] effect to (20)\n    else\n        change size by (((100) - (size)) / (3))\n        set [ghost v] effect to (-20)\n    end\nend\n\n@Green Flag\n\nwhen flag clicked\nhide\n\nwhen I receive [level editor v]\nshow\n\nwhen I receive [isometric v]\nshow\n\nwhen [h v] key pressed\nhide\n\nwhen [s v] key pressed\nshow\n\nwhen I receive [start 3d minecraft v]\nshow\n\n@Green Flag2\n\nwhen flag clicked\nhide\n\nwhen I receive [level editor v]\nshow\n\nwhen [h v] key pressed\nhide\n\nwhen [s v] key pressed\nshow\n\nwhen I receive [isometric v]\nshow\n\n@Hearts\n\nwhen flag clicked\ngo to x: (-94) y: (290)\nswitch costume to (10 v)\nhide\n\nwhen I receive [back v]\nswitch costume to (10 v)\ngo to x: (-94) y: (290)\nhide\n\nwhen I receive [play v]\nshow\n\nwhen I receive [death v]\nif <(costume [number v]) = [1]> then\n    switch costume to (10 v)\n    repeat (3)\n        wait (0.3) seconds\n        switch costume to ((costume [number v]) + (1))\n        wait (0.3) seconds\n        switch costume to (10 v)\n    end\n    switch costume to (9 v)\n    broadcast (respawn timer v)\nend\n\nwhen I receive [death v]\nif <(costume [number v]) = [2]> then\n    repeat (3)\n        wait (0.3) seconds\n        switch costume to ((costume [number v]) + (1))\n        wait (0.3) seconds\n        switch costume to (9 v)\n    end\n    switch costume to (8 v)\n    broadcast (respawn timer v)\nend\n\nwhen I receive [death v]\nif <(costume [number v]) = [3]> then\n    repeat (3)\n        wait (0.3) seconds\n        switch costume to ((costume [number v]) + (1))\n        wait (0.3) seconds\n        switch costume to (8 v)\n    end\n    switch costume to (7 v)\n    broadcast (respawn timer v)\nend\n\nwhen I receive [death v]\nif <(costume [number v]) = [4]> then\n    repeat (3)\n        wait (0.3) seconds\n        switch costume to ((costume [number v]) + (1))\n        wait (0.3) seconds\n        switch costume to (7 v)\n    end\n    switch costume to (6 v)\n    broadcast (respawn timer v)\nend\n\nwhen I receive [death v]\nif <(costume [number v]) = [5]> then\n    repeat (3)\n        wait (0.3) seconds\n        switch costume to ((costume [number v]) + (1))\n        wait (0.3) seconds\n        switch costume to (6 v)\n    end\n    switch costume to (5 v)\n    broadcast (respawn timer v)\nend\n\nwhen I receive [death v]\nif <(costume [number v]) = [6]> then\n    repeat (3)\n        wait (0.3) seconds\n        switch costume to ((costume [number v]) + (1))\n        wait (0.3) seconds\n        switch costume to (5 v)\n    end\n    switch costume to (4 v)\n    broadcast (respawn timer v)\nend\n\nwhen I receive [death v]\nif <(costume [number v]) = [7]> then\n    repeat (3)\n        wait (0.3) seconds\n        switch costume to ((costume [number v]) + (1))\n        wait (0.3) seconds\n        switch costume to (4 v)\n    end\n    switch costume to (3 v)\n    broadcast (respawn timer v)\nend\n\nwhen I receive [death v]\nif <(costume [number v]) = [8]> then\n    repeat (3)\n        wait (0.3) seconds\n        switch costume to ((costume [number v]) + (1))\n        wait (0.3) seconds\n        switch costume to (3 v)\n    end\n    switch costume to (2 v)\n    broadcast (respawn timer v)\nend\n\nwhen I receive [death v]\nif <(costume [number v]) = [9]> then\n    repeat (3)\n        wait (0.3) seconds\n        switch costume to ((costume [number v]) + (1))\n        wait (0.3) seconds\n        switch costume to (2 v)\n    end\n    switch costume to (1 v)\n    broadcast (respawn timer v)\nend\n\nwhen I receive [death v]\nif <(costume [number v]) = [10]> then\n    repeat (3)\n        wait (0.3) seconds\n        switch costume to ((costume [number v]) + (1))\n        wait (0.3) seconds\n        switch costume to (1 v)\n    end\n    go to x: (-94) y: (-31)\n    switch costume to (complete death v)\n    broadcast (complete death v)\nend\n\n@Steve\n\nwhen [left arrow v] key pressed\nrepeat until <not <key (left arrow v) pressed?>>\n    point in direction (-90)\n    next costume\n    wait (0.05) seconds\nend\nswitch costume to (straight v)\n\nwhen [right arrow v] key pressed\nrepeat until <not <key (right arrow v) pressed?>>\n    point in direction (90)\n    next costume\n    wait (0.05) seconds\nend\nswitch costume to (straight v)\n\ndefine Platformer engine\nif on edge, bounce\nchange [y2 v] by (-0.5)\nif <<<key (left arrow v) pressed?> or <key (a v) pressed?>> or <<mouse down?> and <(x position) > (mouse x)>>> then\n    change [x2 v] by (-1)\nend\nif <<key (right arrow v) pressed?> or <<key (d v) pressed?> or <<mouse down?> and <(x position) < (mouse x)>>>> then\n    change [x2 v] by (1)\nend\nset [x2 v] to ((x2) * (0.9))\nchange x by (x2)\nif <touching (ground v)?> then\n    change y by (1)\n    if <touching (ground v)?> then\n        change y by (1)\n        if <touching (ground v)?> then\n            change y by (1)\n            if <touching (ground v)?> then\n                change y by (1)\n                if <touching (ground v)?> then\n                    change y by (1)\n                    if <touching (ground v)?> then\n                        change y by (1)\n                        if <touching (ground v)?> then\n                            change y by (-6)\n                            change x by ((x2) * (-1))\n                            if <<key (up arrow v) pressed?> or <<key (w v) pressed?> or <<mouse down?> and <((mouse y) - (y position)) > [50]>>>> then\n                                set [y2 v] to [10]\n                                if <(x2) > [0]> then\n                                    set [x2 v] to [-10]\n                                else\n                                    set [x2 v] to [10]\n                                end\n                            else\n                                set [x2 v] to [0]\n                            end\n                        end\n                    end\n                end\n            end\n        end\n    end\nend\nchange y by (y2)\nif <touching (ground v)?> then\n    change y by ((y2) * (-1))\n    set [y2 v] to [0]\nend\nchange y by (-0.5)\nif <<touching (ground v)?> and <<key (up arrow v) pressed?> or <<key (w v) pressed?> or <<mouse down?> and <((mouse y) - (y position)) > [50]>>>>> then\n    set [y2 v] to [7.5]\nend\nchange y by (0.5)\nif <touching (danger v)?> then\n    hide\n    go to x: (X Spawn) y: (Y Spawn)\n    broadcast (death v)\nend\n\nwhen flag clicked\nhide\n\ndefine reset\ngo to x: (-233) y: (-100)\n\nwhen I receive [play v]\nshow\nset [y spawn v] to [-100]\nset [x spawn v] to [-218]\ngo to x: (X Spawn) y: (Y Spawn)\nshow\nset size to (200) %\nset [x2 v] to [0]\nset [y2 v] to [0]\nforever\n    Platformer engine\nend\n\nwhen I receive [play v]\nset rotation style [left-right v]\nforever\n    if <(y position) = [-180]> then\n        reset\n    end\nend\n\nwhen I receive [play v]\nforever\n    if <(x position) > [230]> then\n        reset\n        broadcast (lvlnxt v)\n        change [level v] by (1)\n    end\nend\n\nwhen I receive [complete death v]\nhide\n\nwhen I receive [back v]\nhide\n\nwhen I receive [respawn timer v]\nshow\nset [y spawn v] to [-100]\nset [x spawn v] to [-218]\ngo to x: (X Spawn) y: (Y Spawn)\nshow\n\nwhen flag clicked\nset [level v] to [1]\n\nwhen I receive [skip v]\nreset\n\nwhen flag clicked\nforever\n    if <<mouse down?> and <(mouse x) > (x position)>> then\n        point in direction (90)\n    end\nend\n\nwhen flag clicked\nforever\n    if <<mouse down?> and <(x position) > (mouse x)>> then\n        point in direction (-90)\n    end\nend\n\nwhen [a v] key pressed\nrepeat until <not <key (a v) pressed?>>\n    point in direction (-90)\n    next costume\n    wait (0.05) seconds\nend\nswitch costume to (straight v)\n\nwhen [d v] key pressed\nrepeat until <not <key (d v) pressed?>>\n    point in direction (90)\n    next costume\n    wait (0.05) seconds\nend\nswitch costume to (straight v)\n\n@(Love Fave Follow)\n\nwhen I start as a clone\nif <(costume [number v]) = [2]> then\n    go [forward v] (25) layers\n    show\n    go to x: (-104) y: (-200)\n    wait (1) seconds\n    glide (1) secs to x: (-51) y: (-125)\n    wait (0.3) seconds\n    go to [front v] layer\n    glide (0.5) secs to x: (-20) y: (-125)\n    wait (0.3) seconds\n    glide (1) secs to x: (35) y: (-125)\n    wait (2) seconds\n    hide\nend\n\nwhen I start as a clone\nif <(costume [number v]) = [1]> then\n    go [forward v] (25) layers\n    show\n    go to x: (0) y: (-123)\n    set size to (0) %\n    repeat until <(size) > [100]>\n        change size by (((50) + (size)) / (25))\n    end\n    wait (2.5) seconds\n    hide\nend\n\nwhen I start as a clone\nif <(costume [number v]) = [3]> then\n    go [forward v] (25) layers\n    hide\n    wait (2.5) seconds\n    show\n    go to x: (0) y: (-123)\n    wait (4.1) seconds\n    hide\nend\n\nwhen I start as a clone\nif <(costume [number v]) = [4]> then\n    go [forward v] (25) layers\n    hide\n    wait (3.3) seconds\n    show\n    go to x: (0) y: (-123)\n    wait (3.3) seconds\n    hide\nend\n\nwhen I start as a clone\nif <(costume [number v]) = [5]> then\n    go [forward v] (25) layers\n    hide\n    wait (4.6) seconds\n    show\n    go to x: (0) y: (-123)\n    wait (2) seconds\n    hide\nend\n\nwhen flag clicked\ngo to [front v] layer\nforever\n    go to [front v] layer\n    hide\n    wait (15) seconds\n    broadcast (Please do this!!! v)\nend\n\nwhen I receive [please do this!!! v]\nswitch costume to (don't let this happen v)\ncreate clone of (_myself_ v)\nswitch costume to (cursor v)\ncreate clone of (_myself_ v)\nswitch costume to (loved v)\ncreate clone of (_myself_ v)\nswitch costume to (loved and faved v)\ncreate clone of (_myself_ v)\nswitch costume to (loved, faved, and followed v)\ncreate clone of (_myself_ v)\nhide\n\n@Ground\n\nwhen flag clicked\nswitch costume to (1 v)\nhide\n\nwhen I receive [play v]\nshow\n\nwhen I receive [back v]\nswitch costume to (1 v)\nhide\n\nwhen I receive [complete death v]\nhide\n\nwhen flag clicked\nset [level v] to [0]\nforever\n    switch costume to (level)\nend\n\nwhen I receive [back v]\nset [level v] to [0]\nswitch costume to (1 v)\n\nwhen I receive [play v]\nset [level v] to [1]\nswitch costume to (1 v)\n\n@Danger\n\nwhen flag clicked\nswitch costume to (1 v)\nhide\n\nwhen I receive [play v]\nshow\n\nwhen I receive [back v]\nswitch costume to (1 v)\nhide\n\nwhen I receive [complete death v]\nhide\n\nwhen flag clicked\ngo to [front v] layer\nforever\n    switch costume to (level)\nend\n\nwhen flag clicked\nforever\n    if <<(costume [number v]) = [3]> or <(costume [number v]) = [11]>> then\n        go to [back v] layer\n    else\n        go to [front v] layer\n    end\nend\n\nwhen I receive [back v]\nswitch costume to (1 v)\n\nwhen I receive [play v]\nswitch costume to (1 v)\n\n@Intro\n\ndefine Render Shock\npen up\nset [shock_i v] to [0]\nrepeat ((length of [shockwaves v]) / (6))\n    set pen size to ((item ((Shock_i) + (3)) of [shockwaves v]) - (item ((Shock_i) + (4)) of [shockwaves v]))\n    set pen (color v) to (0)\n    set pen (saturation v) to (item ((Shock_i) + (5)) of [shockwaves v])\n    set pen (brightness v) to (item ((Shock_i) + (6)) of [shockwaves v])\n    go to x: (item ((Shock_i) + (1)) of [shockwaves v]) y: (item ((Shock_i) + (2)) of [shockwaves v])\n    repeat (360)\n        move (item ((Shock_i) + (4)) of [shockwaves v]) steps\n        pen down\n        pen up\n        move (() - (item ((Shock_i) + (4)) of [shockwaves v])) steps\n        turn right (1) degrees\n    end\n    replace item ((Shock_i) + (4)) of [shockwaves v] with ((item ((Shock_i) + (4)) of [shockwaves v]) + (((item ((Shock_i) + (3)) of [shockwaves v]) - (item ((Shock_i) + (4)) of [shockwaves v])) / (5)))\n    if <(round (item ((Shock_i) + (4)) of [shockwaves v])) = (round (item ((Shock_i) + (3)) of [shockwaves v]))> then\n        repeat (6)\n            delete ((Shock_i) + (1)) of [shockwaves v]\n        end\n    else\n        change [shock_i v] by (6)\n    end\nend\n\ndefine Add shock (x) (y) pen size (pen) Bright (color) Dark (dark)\nadd (x) to [shockwaves v]\nadd (y) to [shockwaves v]\nadd (pen) to [shockwaves v]\nadd [0] to [shockwaves v]\nadd (color) to [shockwaves v]\nadd (dark) to [shockwaves v]\n\ndefine Go To (x) (y) Dir (dir)\ngo to x: ((((x) + (Cam X)) * ([sin v] of (dir) )) + (((y) + (Cam Y)) * ([cos v] of (dir) ))) y: ((((x) + (Cam X)) * ([cos v] of (dir) )) - (((y) + (Cam Y)) * ([sin v] of (dir) )))\n\ndefine Reset Keyframes\ndelete all of [keyframes v]\nadd [4.25] to [keyframes v]\nadd [4.73] to [keyframes v]\nadd [5.2] to [keyframes v]\nadd [5.65] to [keyframes v]\nadd [6.14] to [keyframes v]\nadd [6.6] to [keyframes v]\nadd [7.06] to [keyframes v]\nadd [7.56] to [keyframes v]\nadd [8.02] to [keyframes v]\nadd [8.49] to [keyframes v]\nadd [8.96] to [keyframes v]\nadd [9.42] to [keyframes v]\nadd [9.89] to [keyframes v]\nadd [10.36] to [keyframes v]\nadd [10.82] to [keyframes v]\nadd [11.18] to [keyframes v]\n\nwhen flag clicked\nreset timer\nbroadcast (ecward27 v)\n\nwhen I receive [ecward27 v]\nhide\nReset Keyframes\nstart sound [Arlow, Shiah Maisel - 21 v]\nset [keyframe v] to [1]\nrepeat (16)\n    Keyframe (item (Keyframe) of [keyframes v])\n    Keyframe\nend\n\nwhen I receive [ecward27 v]\nset [end size v] to [0]\nset [name size v] to [500]\nset [name ghost v] to [100]\nset [shake v] to [100]\nset [bars v] to [-20]\nset [cam dir v] to [90]\ndelete all of [chevrons v]\ndelete all of [shockwaves v]\nset [end v] to [No]\nset [bg v] to [0]\nset [flash v] to [100]\nrepeat until <(End) = [Yes]>\n    Shake (Shake)\n    change [shake v] by (((100) - (Shake)) / (7))\n    change [flash v] by (((100) - (Flash)) / (8))\n    change [chev_bump v] by (((0) - (Chev_bump)) / (6))\nend\n\ndefine Shake ()\nset [cam z v] to (() + (Name Size))\nset [cam x v] to (((([sin v] of ((timer) * (800)) ) * (() - (100))) * (0.3)) + (Intro: Name X))\nset [cam y v] to (((([cos v] of ((timer) * (750)) ) * (() - (100))) * (0.8)) + (Name Y))\nset [cam dir v] to ((((([cos v] of ((timer) * (900)) ) * (() - (100))) * (.15)) + (90)) + (Name Dir))\n\ndefine Render\nswitch costume to (size hack v)\nset size to (1000000) %\npen up\nerase all\nif <(End) = [Yes]> then\n    Render End\nelse\n    Render BG\n    Render Inverse Circle Chevs\n    Render Chevs\n    Render Shock\n    Render Text\n    Render Grid(TV)\n    Render Flash\n    Render Bars\n    Render End\nend\n\nwhen I receive [ecward27 v]\nset [end v] to [No]\nrepeat until <[16] < (timer)>\n    Render\nend\nerase all\n\ndefine Render Text\ngo to x: (Cam X) y: (Cam Y)\npoint in direction (Cam Dir)\nset [brightness v] effect to ((Shake) - (100))\nset [ghost v] effect to (NAME GHOST)\nif <(Cam Z) < [100]> then\n    set size to (Cam Z) %\n    switch costume to (ecward27 v)\nelse\n    set size to (Cam Z) %\n    switch costume to (ecward27 v)\nend\nstamp\n\ndefine Keyframe ()\nwait until <() < (timer)>\n\ndefine Keyframe\nadd [0] to [chevrons v]\nset [flash v] to [40]\nset [shake v] to [120]\nset [chev_bump v] to [35]\nchange [keyframe v] by (1)\n\ndefine Render Chevs\nswitch costume to (costume1 v)\nset [chev_i v] to [1]\nrepeat (length of [chevrons v])\n    set [chev_increment v] to [0]\n    repeat (10)\n        set pen color to (#ff0000)\n        set pen size to (3)\n        Make Chevron w/ offset (chev_increment) item (chev_i) of chevs\n        change [chev_increment v] by (3)\n    end\n    set [chev_increment v] to [0]\n    repeat (10)\n        set pen color to (#820000)\n        set pen size to (3)\n        Make Chevron w/ offset (chev_increment) item (chev_i) of chevs\n        change [chev_increment v] by (-3)\n    end\n    set [chev_increment v] to [15]\n    repeat (10)\n        set pen color to (#ffffff)\n        set pen size to (3)\n        Make Chevron w/ offset (chev_increment) item (chev_i) of chevs\n        change [chev_increment v] by (-3)\n    end\n    replace item (chev_i) of [chevrons v] with ((item (chev_i) of [chevrons v]) + (Chev_bump))\n    if <[700] < (item (chev_i) of [chevrons v])> then\n        delete (chev_i) of [chevrons v]\n    end\n    change [chev_i v] by (1)\nend\n\ndefine Make Chevron w/ offset () item (blank) of chevs\npen up\nGo To [] ((item (chev_i) of [chevrons v]) + ()) Dir (Cam Dir)\npen down\nGo To ((item (chev_i) of [chevrons v]) + ()) [] Dir (Cam Dir)\nGo To [] (() - ((item (chev_i) of [chevrons v]) + ())) Dir (Cam Dir)\nGo To (() - ((item (chev_i) of [chevrons v]) + ())) [] Dir (Cam Dir)\nGo To [] ((item (chev_i) of [chevrons v]) + ()) Dir (Cam Dir)\npen up\n\ndefine Render BG\npen up\nset pen color to (#c10000)\ngo to x: (0) y: (0)\nset pen size to (BG)\npen down\npen up\n\ndefine Render Inverse Circle Chevs\nset [circle chev_i v] to [1]\nrepeat (length of [chevrons v])\n    pen up\n    set pen color to (#ff7f7f)\n    set pen size to (item (Circle chev_i) of [chevrons v])\n    go to x: (-240) y: (0)\n    pen down\n    pen up\n    go to x: (240) y: (0)\n    pen down\n    pen up\n    set pen color to (#c10000)\n    set pen size to ((item (Circle chev_i) of [chevrons v]) - (60))\n    go to x: (-240) y: (0)\n    pen down\n    pen up\n    go to x: (240) y: (0)\n    pen down\n    pen up\n    change [circle chev_i v] by (1)\nend\n\ndefine Render Flash\npen up\nset pen color to (#ffffff)\ngo to x: (0) y: (0)\nset pen size to (1000)\nset pen (transparency v) to (Flash)\npen down\npen up\n\ndefine Render Bars\npen up\nset pen color to (#000000)\nset pen size to (((Shake) - (100)) + (Bars))\nGo To [500] [180] Dir [90]\npen down\nGo To [-500] [180] Dir [90]\npen up\nGo To [500] [-180] Dir [90]\npen down\nGo To [-500] [-180] Dir [90]\npen up\n\ndefine Render Grid(TV)\npen up\nset pen size to (5)\nset pen color to (#5a5a5a)\nset pen (transparency v) to (60)\nset [grid x v] to [-500]\nset [grid y v] to [200]\nrepeat (100)\n    Go To (Grid X) (Grid Y) Dir [90]\n    pen down\n    change [grid x v] by (1000)\n    Go To (Grid X) (Grid Y) Dir [90]\n    change [grid x v] by (-1000)\n    pen up\n    change [grid y v] by (-4)\nend\n\nwhen I receive [ecward27 v]\nrepeat (300)\n    change [name size v] by (((0) - (Name Size)) / (40))\n    change [name ghost v] by (-1.5)\nend\n\nwhen I receive [ecward27 v]\nKeyframe [2]\nrepeat (300)\n    change [bg v] by (((800) - (BG)) / (20))\n    change [bars v] by (((80) - (Bars)) / (20))\nend\n\nwhen I receive [ecward27 v]\nset [intro: name x v] to [0]\nKeyframe (item (1) of [keyframes v])\nrepeat (15)\n    change [intro: name x v] by (((100) - (Intro: Name X)) / (5.5))\nend\n\nwhen I receive [ecward27 v]\nKeyframe (item (2) of [keyframes v])\nrepeat (40)\n    change [intro: name x v] by (((0) - (Intro: Name X)) / (6))\nend\n\nwhen I receive [ecward27 v]\nset [name dir v] to [0]\nKeyframe (item (6) of [keyframes v])\nrepeat (10)\n    change [name dir v] by (25)\nend\nrepeat (30)\n    change [name dir v] by (((360) - (Name Dir)) / (5))\nend\n\nwhen I receive [ecward27 v]\nKeyframe (item (3) of [keyframes v])\nrepeat (15)\n    change [intro: name x v] by (((-120) - (Intro: Name X)) / (5.5))\nend\n\nwhen I receive [ecward27 v]\nKeyframe (item (9) of [keyframes v])\nrepeat (30)\n    change [name size v] by (((150) - (Name Size)) / (6))\nend\n\nwhen I receive [ecward27 v]\nKeyframe (item (11) of [keyframes v])\nrepeat (30)\n    change [name size v] by (((0) - (Name Size)) / (6))\nend\n\nwhen I receive [ecward27 v]\nKeyframe (item (4) of [keyframes v])\nrepeat (40)\n    change [intro: name x v] by (((0) - (Intro: Name X)) / (6))\nend\n\nwhen I receive [ecward27 v]\nKeyframe (item (1) of [keyframes v])\nAdd shock [120] [60] pen size [75] Bright [100] Dark [50]\nAdd shock [120] [-60] pen size [75] Bright [100] Dark [50]\nKeyframe (item (2) of [keyframes v])\nAdd shock [0] [0] pen size [125] Bright [30] Dark [100]\nKeyframe (item (3) of [keyframes v])\nAdd shock [-120] [60] pen size [75] Bright [100] Dark [50]\nAdd shock [-120] [-60] pen size [75] Bright [100] Dark [50]\nKeyframe (item (4) of [keyframes v])\nAdd shock [0] [0] pen size [125] Bright [30] Dark [100]\nKeyframe (item (6) of [keyframes v])\nAdd shock [80] [75] pen size [75] Bright [80] Dark [100]\nAdd shock [-80] [-75] pen size [75] Bright [80] Dark [100]\nAdd shock [80] [-75] pen size [75] Bright [80] Dark [100]\nAdd shock [-80] [75] pen size [75] Bright [80] Dark [100]\nAdd shock [125] [0] pen size [75] Bright [30] Dark [100]\nAdd shock [-125] [0] pen size [75] Bright [30] Dark [100]\nKeyframe (item (9) of [keyframes v])\nAdd shock [] [] pen size [275] Bright [100] Dark [100]\nAdd shock [] [] pen size [200] Bright [100] Dark [100]\nAdd shock [] [] pen size [125] Bright [100] Dark [100]\nAdd shock [] [] pen size [50] Bright [100] Dark [100]\nKeyframe (item (11) of [keyframes v])\nAdd shock [-120] [0] pen size [100] Bright [100] Dark [100]\nAdd shock [120] [0] pen size [100] Bright [100] Dark [100]\nKeyframe (item (13) of [keyframes v])\nAdd shock [-120] [0] pen size [100] Bright [100] Dark [100]\nAdd shock [120] [0] pen size [100] Bright [100] Dark [100]\nAdd shock [0] [90] pen size [100] Bright [100] Dark [100]\nAdd shock [0] [-90] pen size [100] Bright [100] Dark [100]\nAdd shock [-120] [0] pen size [75] Bright [0] Dark [100]\nAdd shock [120] [0] pen size [75] Bright [0] Dark [100]\nAdd shock [0] [90] pen size [75] Bright [0] Dark [100]\nAdd shock [0] [-90] pen size [75] Bright [0] Dark [100]\n\nwhen I receive [ecward27 v]\nset [name dir v] to [0]\nKeyframe (item (13) of [keyframes v])\nrepeat (10)\n    change [name dir v] by (-25)\nend\nrepeat (30)\n    change [name dir v] by (((0) - (Name Dir)) / (5))\nend\n\ndefine Render End\npen up\ngo to x: (0) y: (180)\nset pen color to (#000000)\nset pen size to (End Size)\npen down\npen up\ngo to x: (0) y: (-180)\npen down\npen up\n\nwhen I receive [ecward27 v]\nKeyframe [11.2]\nrepeat (50)\n    change [end size v] by (((800) - (End Size)) / (13))\nend\nset [end v] to [Yes]\nwait (1) seconds\nrepeat (80)\n    change [end size v] by (((0) - (End Size)) / (6))\nend\nbroadcast (Start v)\n\n@Thumb\n\nwhen flag clicked\nhide\n\n@Loader\n\nwhen flag clicked\nhide\n\nwhen I receive [3d minecraft v]\nshow\n\nwhen I receive [start 3d minecraft v]\nhide\n\n@Items\n\nwhen I receive [start 3d minecraft v]\nshow\nswitch costume to (1 v)\nforever\n    if <key (1 v) pressed?> then\n        switch costume to (1 v)\n    end\n    if <key (2 v) pressed?> then\n        switch costume to (2 v)\n    end\n    if <key (3 v) pressed?> then\n        switch costume to (3 v)\n    end\n    if <key (4 v) pressed?> then\n        switch costume to (4 v)\n    end\n    if <key (5 v) pressed?> then\n        switch costume to (5 v)\n    end\nend\n\nwhen I receive [load v]\nhide\n\nwhen flag clicked\nhide\n\n@is compiled?\n\nwhen flag clicked\nhide\n\nwhen I receive [3d minecraft v]\nshow\ngo to [front v] layer\nset [ghost v] effect to (100)\nforever\n    if <is compiled?> then\n        set [render distance v] to [11]\n    else\n        set [render distance v] to [4]\n    end\nend\n\n@world generation\n\nwhen flag clicked\nhide\n\ndefine noise at (x) (y)\nset [terrain x v] to (x)\nset [terrain y v] to (y)\nset [terrain mu v] to (((terrain x) + (terrain y)) * (0.36))\nset [terrain a v] to ((terrain x) + (terrain mu))\nset [terrain a v] to ((terrain a) - ((terrain a) mod (1)))\nset [terrain b v] to ((terrain y) + (terrain mu))\nset [terrain b v] to ((terrain b) - ((terrain b) mod (1)))\nset [terrain mu v] to (((terrain a) + (terrain b)) * (0.21))\nset [terrain offset a v] to ((terrain x) - ((terrain a) - (terrain mu)))\nset [terrain offset b v] to ((terrain y) - ((terrain b) - (terrain mu)))\nif <(terrain offset a) > (terrain offset b)> then\n    set [terrain transversal a v] to [1]\n    set [terrain transversal b v] to [0]\nelse\n    set [terrain transversal a v] to [0]\n    set [terrain transversal b v] to [1]\nend\nset [terrain wrapped a v] to (((terrain a) mod (256)) + (1))\nset [terrain wrapped b v] to (((terrain b) mod (256)) + (1))\nset [terrain v v] to ((0.5) - (((terrain offset a) * (terrain offset a)) + ((terrain offset b) * (terrain offset b))))\nif <(terrain v) > [0]> then\n    set [terrain index v] to (((item ((terrain wrapped a) + (item (terrain wrapped b) of [terrain table v])) of [terrain table v]) mod (8)) + (1))\n    set [terrain grad a v] to (item (terrain index) of [terrain gradient a v])\n    set [terrain grad b v] to (item (terrain index) of [terrain gradient b v])\n    set [terrain v v] to ((terrain v) * (terrain v))\n    set [terrain value v] to (((terrain v) * (terrain v)) * (((terrain offset a) * (terrain grad a)) + ((terrain offset b) * (terrain grad b))))\nelse\n    set [terrain value v] to [0]\nend\nset [terrain vertex a v] to ((terrain offset a) - ((terrain transversal a) - (0.21)))\nset [terrain vertex b v] to ((terrain offset b) - ((terrain transversal b) - (0.21)))\nset [terrain v v] to ((0.5) - (((terrain vertex a) * (terrain vertex a)) + ((terrain vertex b) * (terrain vertex b))))\nif <(terrain v) > [0]> then\n    set [terrain index v] to (((item (((terrain wrapped a) + (terrain transversal a)) + (item ((terrain wrapped b) + (terrain transversal b)) of [terrain table v])) of [terrain table v]) mod (8)) + (1))\n    set [terrain grad a v] to (item (terrain index) of [terrain gradient a v])\n    set [terrain grad b v] to (item (terrain index) of [terrain gradient b v])\n    set [terrain v v] to ((terrain v) * (terrain v))\n    change [terrain value v] by (((terrain v) * (terrain v)) * (((terrain vertex a) * (terrain grad a)) + ((terrain vertex b) * (terrain grad b))))\nend\nset [terrain vertex a v] to ((terrain offset a) - (0.57))\nset [terrain vertex b v] to ((terrain offset b) - (0.57))\nset [terrain v v] to ((0.5) - (((terrain vertex a) * (terrain vertex a)) + ((terrain vertex b) * (terrain vertex b))))\nif <(terrain v) > [0]> then\n    set [terrain index v] to (((item (((terrain wrapped a) + (1)) + (item ((terrain wrapped b) + (1)) of [terrain table v])) of [terrain table v]) mod (8)) + (1))\n    set [terrain grad a v] to (item (terrain index) of [terrain gradient a v])\n    set [terrain grad b v] to (item (terrain index) of [terrain gradient b v])\n    set [terrain v v] to ((terrain v) * (terrain v))\n    change [terrain value v] by (((terrain v) * (terrain v)) * (((terrain vertex a) * (terrain grad a)) + ((terrain vertex b) * (terrain grad b))))\nend\n\ndefine generate world (seed) (world type)\ndelete all of [terrain table v]\nset [terrain i v] to (seed)\nset [loading v] to [0%]\nrepeat (256)\n    repeat until <(join (letter (terrain i) of (item (1) of [terrain seed v])) (join (letter ((terrain i) + (1)) of (item (1) of [terrain seed v])) (letter ((terrain i) + (2)) of (item (1) of [terrain seed v])))) < [256]>\n        change [terrain i v] by (1)\n    end\n    if <(terrain i) > [999900]> then\n        set [terrain i v] to [1]\n    else\n        add (join (letter (terrain i) of (item (1) of [terrain seed v])) (join (letter ((terrain i) + (1)) of (item (1) of [terrain seed v])) (letter ((terrain i) + (2)) of (item (1) of [terrain seed v])))) to [terrain table v]\n    end\n    change [terrain i v] by (3)\n    set [loading v] to (round (join (((length of [terrain table v]) / (256)) * (25)) [%]))\nend\nset [terrain i v] to [0]\nrepeat (256)\n    change [terrain i v] by (1)\n    add (item (terrain i) of [terrain table v]) to [terrain table v]\nend\ndelete all of [b x blocks v]\ndelete all of [b y blocks v]\ndelete all of [b z blocks v]\ndelete all of [b t blocks v]\ndelete all of [terrain n trees v]\nset [terrain i 2 v] to (seed)\nset [terrain make tree? v] to [0]\nset y to (-240)\nrepeat (80)\n    generate row\n    change y by ((480) / (80))\n    set [loading v] to (join (round ((((y position) + (240)) / (480)) * (100))) [%])\nend\nset [terrain i v] to [0]\nset [loading v] to [100%]\nrepeat (length of [terrain n trees v])\n    change [terrain i v] by (1)\n    add tree at (item (item (terrain i) of [terrain n trees v]) of [b x blocks v]) (item (item (terrain i) of [terrain n trees v]) of [b y blocks v]) (item (item (terrain i) of [terrain n trees v]) of [b z blocks v])\nend\n\ndefine add block at (x) (y) (z) (t)\nadd (x) to [b x blocks v]\nadd (y) to [b y blocks v]\nadd (z) to [b z blocks v]\nadd (t) to [b t blocks v]\n\ndefine add tree at (x) (y) (z)\nset [terrain i 2 v] to [0]\nrepeat (4)\n    replace block at (x) ((y) + (terrain i 2)) (z) [4]\n    change [terrain i 2 v] by (1)\nend\nreplace block at ((x) + (-1)) ((y) + (3)) ((z) + (1)) [5]\nreplace block at ((x) + (0)) ((y) + (3)) ((z) + (1)) [5]\nreplace block at ((x) + (1)) ((y) + (3)) ((z) + (1)) [5]\nreplace block at ((x) + (-1)) ((y) + (3)) ((z) + (0)) [5]\nreplace block at ((x) + (1)) ((y) + (3)) ((z) + (0)) [5]\nreplace block at ((x) + (-1)) ((y) + (3)) ((z) + (-1)) [5]\nreplace block at ((x) + (0)) ((y) + (3)) ((z) + (-1)) [5]\nreplace block at ((x) + (1)) ((y) + (3)) ((z) + (-1)) [5]\nreplace block at ((x) + (0)) ((y) + (4)) ((z) + (0)) [5]\n\ndefine replace block at (x) (y) (z) (t)\nif <(item (((30) * ((x) + (40))) + ((y) + ((2400) * ((z) + (40))))) of [b t blocks v]) = [0]> then\n    replace item (((30) * ((x) + (40))) + ((y) + ((2400) * ((z) + (40))))) of [b t blocks v] with (t)\nend\n\ndefine generate row\nset x to (-240)\nrepeat (80)\n    change [terrain i 2 v] by (1)\n    if <(terrain i 2) > [999900]> then\n        set [terrain i 2 v] to [1]\n    end\n    noise at ((x position) / (150)) ((y position) / (150))\n    add block at (round ((x position) / (6))) [1] (round ((y position) / (6))) [3]\n    set [terrain i v] to [1]\n    repeat (round (((((terrain value) * (65)) + (1)) * (2.5)) + (3)))\n        change [terrain i v] by (1)\n        add block at (round ((x position) / (6))) (terrain i) (round ((y position) / (6))) [2]\n    end\n    change [terrain i v] by (1)\n    add block at (round ((x position) / (6))) (terrain i) (round ((y position) / (6))) [1]\n    change [terrain i v] by (1)\n    add block at (round ((x position) / (6))) (terrain i) (round ((y position) / (6))) [1]\n    if <(letter (terrain i 2) of (item (1) of [terrain seed v])) = [5]> then\n        set [terrain i 3 v] to [0]\n        set [terrain tree near? v] to [0]\n        repeat (length of [terrain n trees v])\n            change [terrain i 3 v] by (1)\n            if <[4] > ([abs v] of ((round ((x position) / (6))) - (item (item (terrain i 3) of [terrain n trees v]) of [b x blocks v])) )> then\n                if <[4] > ([abs v] of ((round ((y position) / (6))) - (item (item (terrain i 3) of [terrain n trees v]) of [b z blocks v])) )> then\n                    set [terrain tree near? v] to [1]\n                end\n            end\n        end\n        if <(terrain tree near?) = [0]> then\n            change [terrain make tree? v] by (1)\n            if <(terrain make tree?) = [1]> then\n                if <<<(round ((x position) / (6))) > [-40]> and <[39] > (round ((x position) / (6)))>> and <<(round ((y position) / (6))) > [-40]> and <[39] > (round ((y position) / (6)))>>> then\n                    if <<(round ((x position) / (6))) = [0]> and <(round ((x position) / (6))) = [0]>> then\n                end\n            end\n            if <(terrain make tree?) = [5]> then\n                set [terrain make tree? v] to [0]\n            end\n        end\n    end\n    repeat until <(terrain i) = [30]>\n        change [terrain i v] by (1)\n        add block at (round ((x position) / (6))) (terrain i) (round ((y position) / (6))) [0]\n    end\n    change x by ((480) / (80))\nend\n\ndefine setup lists\ndelete all of [terrain gradient a v]\nrepeat (2)\n    add [1] to [terrain gradient a v]\nend\nadd [0] to [terrain gradient a v]\nrepeat (3)\n    add [-1] to [terrain gradient a v]\nend\nadd [0] to [terrain gradient a v]\nadd [1] to [terrain gradient a v]\ndelete all of [terrain gradient b v]\nadd [0] to [terrain gradient b v]\nrepeat (3)\n    add [1] to [terrain gradient b v]\nend\nadd [0] to [terrain gradient b v]\nrepeat (3)\n    add [-1] to [terrain gradient b v]\nend\ndelete all of [terrain seed v]\n\ndefine fix seed\nif <not <((terrain seed) / (1)) = (terrain seed)>> then\n    delete all of [terrain fix seed v]\n    set [terrain i v] to [0]\n    repeat (length of (terrain seed))\n        change [terrain i v] by (1)\n        if <not <[terrain fix seed v] contains (letter (terrain i) of (terrain seed))?>> then\n            add (letter (terrain i) of (terrain seed)) to [terrain fix seed v]\n        end\n    end\n    set [terrain i v] to [0]\n    set [terrain i 2 v] to []\n    repeat (length of (terrain seed))\n        change [terrain i v] by (1)\n        set [terrain i 2 v] to (join (terrain i 2) (item # of (letter (terrain i) of (terrain seed)) in [terrain fix seed v]))\n    end\n    set [terrain seed v] to (terrain i 2)\nend\nset [terrain seed v] to (round ((terrain seed) mod (900000)))\n\nwhen I receive [load world v]\ngenerate world (terrain seed) (terrain world type)\n\nwhen I receive [3d minecraft v]\nhide variable [loading v]\npen up\nerase all\nset [loading v] to [0%]\nbroadcast (Load v)\nshow variable [loading v]\nsetup lists\nset [terrain seed v] to [174]\nset [terrain world type v] to [1]\nfix seed\ngenerate world (terrain seed) (terrain world type)\nhide variable [loading v]\nbroadcast (Start 3D Minecraft v)\n\n@Render\n\ndefine Fill Tri (x0) (y0) (x1) (y1) (x2) (y2) (outline)\nset [z _tri2 v] to ([sqrt v] of ((((x1) - (x2)) * ((x1) - (x2))) + (((y1) - (y2)) * ((y1) - (y2)))) )\nset [z _tri3 v] to ([sqrt v] of ((((x0) - (x2)) * ((x0) - (x2))) + (((y0) - (y2)) * ((y0) - (y2)))) )\nset [z _tri4 v] to ([sqrt v] of ((((x0) - (x1)) * ((x0) - (x1))) + (((y0) - (y1)) * ((y0) - (y1)))) )\nset [z _tri1 v] to (((z _tri2) + ((z _tri3) + (z _tri4))) / (2))\nset [z _tri0 v] to ((2) * ([sqrt v] of ((((z _tri1) - (z _tri2)) * (((z _tri1) - (z _tri3)) * ((z _tri1) - (z _tri4)))) / (z _tri1)) ))\nchange [z _tri1 v] by (z _tri1)\ngo to x: (((((z _tri2) * (x0)) + ((z _tri3) * (x1))) + ((z _tri4) * (x2))) / (z _tri1)) y: (((((z _tri2) * (y0)) + ((z _tri3) * (y1))) + ((z _tri4) * (y2))) / (z _tri1))\nset pen size to (z _tri0)\npen down\nif <(z _tri0) > [0]> then\n    if <<(z _tri3) < (z _tri2)> or <(z _tri4) < (z _tri2)>> then\n        if <<(z _tri2) < (z _tri3)> or <(z _tri4) < (z _tri3)>> then\n            set [z _tri1 v] to ((x position) - (x2))\n            set [z _tri2 v] to ((y position) - (y2))\n        else\n            set [z _tri1 v] to ((x position) - (x1))\n            set [z _tri2 v] to ((y position) - (y1))\n        end\n    else\n        set [z _tri1 v] to ((x position) - (x0))\n        set [z _tri2 v] to ((y position) - (y0))\n    end\n    set [z _tri1 v] to (([sqrt v] of (((z _tri1) * (z _tri1)) + ((z _tri2) * (z _tri2))) ) / ((z _tri0) / (2)))\n    set [z _tri8 v] to (((z _tri1) * (outline)) / ((z _tri1) - (1)))\n    set [z _tri1 v] to ((0.5) - ((0.5) / (z _tri1)))\n    set [z _tri2 v] to (((x position) - (x0)) / (z _tri0))\n    set [z _tri3 v] to (((y position) - (y0)) / (z _tri0))\n    set [z _tri4 v] to (((x position) - (x1)) / (z _tri0))\n    set [z _tri5 v] to (((y position) - (y1)) / (z _tri0))\n    set [z _tri6 v] to (((x position) - (x2)) / (z _tri0))\n    set [z _tri7 v] to (((y position) - (y2)) / (z _tri0))\n    repeat until <(z _tri0) < (z _tri8)>\n        set [z _tri0 v] to ((z _tri1) * (z _tri0))\n        set pen size to ((z _tri0) + (.5))\n        go to x: ((x0) + ((z _tri0) * (z _tri2))) y: ((y0) + ((z _tri0) * (z _tri3)))\n        go to x: ((x1) + ((z _tri0) * (z _tri4))) y: ((y1) + ((z _tri0) * (z _tri5)))\n        go to x: ((x2) + ((z _tri0) * (z _tri6))) y: ((y2) + ((z _tri0) * (z _tri7)))\n        go to x: ((x0) + ((z _tri0) * (z _tri2))) y: ((y0) + ((z _tri0) * (z _tri3)))\n    end\nend\nset pen size to (outline)\ngo to x: (x0) y: (y0)\ngo to x: (x1) y: (y1)\ngo to x: (x2) y: (y2)\ngo to x: (x0) y: (y0)\npen up\n\ndefine Fill 3d Triangle from (x1) (y1) (z1) to (x2) (y2) (z2) to (x3) (y3) (z3)\nchange [a tri/line drawn v] by (1)\nset point ((x1) - (cam x)) [0] ((z1) - (cam z)) [1]\nset point (((z z1) * (z sin y)) + ((z x1) * (z cos y))) ((y1) - (cam y)) (((z z1) * (z cos y)) - ((z x1) * (z sin y))) [1]\nset point (z x1) (((z y1) * (z cos x)) - ((z z1) * (z sin x))) (((z y1) * (z sin x)) + ((z z1) * (z cos x))) [1]\nset point ((x2) - (cam x)) [0] ((z2) - (cam z)) [2]\nset point (((z z2) * (z sin y)) + ((z x2) * (z cos y))) ((y2) - (cam y)) (((z z2) * (z cos y)) - ((z x2) * (z sin y))) [2]\nset point (z x2) (((z y2) * (z cos x)) - ((z z2) * (z sin x))) (((z y2) * (z sin x)) + ((z z2) * (z cos x))) [2]\nset point ((x3) - (cam x)) [0] ((z3) - (cam z)) [3]\nset point (((z z3) * (z sin y)) + ((z x3) * (z cos y))) ((y3) - (cam y)) (((z z3) * (z cos y)) - ((z x3) * (z sin y))) [3]\nset point (z x3) (((z y3) * (z cos x)) - ((z z3) * (z sin x))) (((z y3) * (z sin x)) + ((z z3) * (z cos x))) [3]\nif <(z z1) < (z minZ)> then\n    if <(z z2) < (z minZ)> then\n        if <not <(z z3) < (z minZ)>> then\n            z Clip Type 2: (z x1) (z y1) (z z1) (z x2) (z y2) (z z2) (z x3) (z y3) (z z3)\n        end\n    else\n        if <(z z3) < (z minZ)> then\n            if <not <(z z2) < (z minZ)>> then\n                z Clip Type 2: (z x1) (z y1) (z z1) (z x3) (z y3) (z z3) (z x2) (z y2) (z z2)\n            end\n        else\n            z Clip Type 1: (z x1) (z y1) (z z1) (z x2) (z y2) (z z2) (z x3) (z y3) (z z3)\n        end\n    end\nelse\n    if <(z z2) < (z minZ)> then\n        if <(z z3) < (z minZ)> then\n            if <not <(z z1) < (z minZ)>> then\n                z Clip Type 2: (z x2) (z y2) (z z2) (z x3) (z y3) (z z3) (z x1) (z y1) (z z1)\n            end\n        else\n            if <(z z1) < (z minZ)> then\n                if <not <(z z3) < (z minZ)>> then\n                    z Clip Type 2: (z x2) (z y2) (z z2) (z x1) (z y1) (z z1) (z x3) (z y3) (z z3)\n                end\n            else\n                z Clip Type 1: (z x2) (z y2) (z z2) (z x3) (z y3) (z z3) (z x1) (z y1) (z z1)\n            end\n        end\n    else\n        if <(z z3) < (z minZ)> then\n            if <(z z1) < (z minZ)> then\n                if <not <(z z2) < (z minZ)>> then\n                    z Clip Type 2: (z x3) (z y3) (z z3) (z x1) (z y1) (z z1) (z x2) (z y2) (z z2)\n                end\n            else\n                if <(z z2) < (z minZ)> then\n                    if <not <(z z1) < (z minZ)>> then\n                        z Clip Type 2: (z x3) (z y3) (z z3) (z x2) (z y2) (z z2) (z x1) (z y1) (z z1)\n                    end\n                else\n                    z Clip Type 1: (z x3) (z y3) (z z3) (z x1) (z y1) (z z1) (z x2) (z y2) (z z2)\n                end\n            end\n        else\n            Fill Tri ((FOV) * ((z x1) / (z z1))) ((FOV) * ((z y1) / (z z1))) ((FOV) * ((z x2) / (z z2))) ((FOV) * ((z y2) / (z z2))) ((FOV) * ((z x3) / (z z3))) ((FOV) * ((z y3) / (z z3))) (z res)\n        end\n    end\nend\n\ndefine z Clip Type 1: (x1) (y1) (z1) (x2) (y2) (z2) (x3) (y3) (z3)\nset [z dz v] to (((z2) - (z minZ)) / ((z2) - (z1)))\nset [z px v] to ((z min) * ((x2) - (((x2) - (x1)) * (z dZ))))\nset [z py v] to ((z min) * ((y2) - (((y2) - (y1)) * (z dZ))))\nset [z dz v] to (((z3) - (z minZ)) / ((z3) - (z1)))\nset [z px2 v] to ((z min) * ((x3) - (((x3) - (x1)) * (z dZ))))\nset [z py2 v] to ((z min) * ((y3) - (((y3) - (y1)) * (z dZ))))\nFill Tri (z pX) (z pY) ((FOV) * ((x2) / (z2))) ((FOV) * ((y2) / (z2))) ((FOV) * ((x3) / (z3))) ((FOV) * ((y3) / (z3))) (z res)\nFill Tri (z pX) (z pY) (z pX2) (z pY2) ((FOV) * ((x3) / (z3))) ((FOV) * ((y3) / (z3))) (z res)\n\ndefine z Clip Type 2: (x1) (y1) (z1) (x2) (y2) (z2) (x3) (y3) (z3)\nset [z dz v] to (((z3) - (z minZ)) / ((z3) - (z1)))\nset [z px v] to ((z min) * ((x3) - (((x3) - (x1)) * (z dZ))))\nset [z py v] to ((z min) * ((y3) - (((y3) - (y1)) * (z dZ))))\nset [z dz v] to (((z3) - (z minZ)) / ((z3) - (z2)))\nFill Tri (z pX) (z pY) ((z min) * ((x3) - (((x3) - (x2)) * (z dZ)))) ((z min) * ((y3) - (((y3) - (y2)) * (z dZ)))) ((FOV) * ((x3) / (z3))) ((FOV) * ((y3) / (z3))) (z res)\n\ndefine Settings: Field of View (f) Minimum Z Distance: (z) Resolution: (r)\nset [fov v] to (round ((240) / ([tan v] of ((f) / (2)) )))\nset [z minz v] to (z)\nset [z min v] to ((FOV) / (z minZ))\nset [z res v] to (r)\n\nFill 3d Triangle from (1) (1) (1) to (1) (1) (1) to (1) (1) (1)\n\nSettings: Field of View (90) Minimum Z Distance: (2) Resolution: (1)\n\ndefine set point (x) (y) (z) (point)\nif <(point) = [1]> then\n    set [z x1 v] to (x)\n    set [z y1 v] to (y)\n    set [z z1 v] to (z)\nelse\n    if <(point) = [2]> then\n        set [z x2 v] to (x)\n        set [z y2 v] to (y)\n        set [z z2 v] to (z)\n    else\n        set [z x3 v] to (x)\n        set [z y3 v] to (y)\n        set [z z3 v] to (z)\n    end\nend\n\ndefine render (filled?)\nerase all\nset [a tri/line drawn v] to [0]\nupdate blocks\ndelete all of [r distance blocks v]\nset [sort i v] to [0]\nrepeat (length of [r x blocks v])\n    change [sort i v] by (1)\n    distance ((item (sort i) of [r x blocks v]) * (100)) ((item (sort i) of [r y blocks v]) * (100)) ((item (sort i) of [r z blocks v]) * (100)) to (cam x) (cam y) (cam z)\n    add (a distance) to [r distance blocks v]\nend\nsort\nset [render outline? v] to [0]\nset [render i v] to [0]\nif <(filled?) = [0]> then\n    repeat (length of [r x blocks v])\n        change [render i v] by (1)\n        if <(cam z) > (((item (render i) of [r z blocks v]) * (100)) + (50))> then\n            if <(item (((30) * ((item (render i) of [r x blocks v]) + (40))) + ((item (render i) of [r y blocks v]) + ((2400) * ((item (render i) of [r z blocks v]) + (41))))) of [b t blocks v]) = [0]> then\n                set color block side [] [3]\n                Fill 3d Triangle from (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (50)) to (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (50)) to (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (50))\n                Fill 3d Triangle from (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (50)) to (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (50)) to (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (50))\n            end\n        end\n        if <(((item (render i) of [r z blocks v]) * (100)) + (-50)) > (cam z)> then\n            if <(item (((30) * ((item (render i) of [r x blocks v]) + (40))) + ((item (render i) of [r y blocks v]) + ((2400) * ((item (render i) of [r z blocks v]) + (39))))) of [b t blocks v]) = [0]> then\n                set color block side [] [4]\n                Fill 3d Triangle from (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (-50)) to (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (-50)) to (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (-50))\n                Fill 3d Triangle from (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (-50)) to (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (-50)) to (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (-50))\n            end\n        end\n        if <(cam x) > (((item (render i) of [r x blocks v]) * (100)) + (50))> then\n            if <(item (((30) * ((item (render i) of [r x blocks v]) + (41))) + ((item (render i) of [r y blocks v]) + ((2400) * ((item (render i) of [r z blocks v]) + (40))))) of [b t blocks v]) = [0]> then\n                set color block side [] [5]\n                Fill 3d Triangle from (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (-50)) to (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (-50)) to (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (50))\n                Fill 3d Triangle from (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (-50)) to (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (50)) to (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (50))\n            end\n        end\n        if <(((item (render i) of [r x blocks v]) * (100)) + (-50)) > (cam x)> then\n            if <(item (((30) * ((item (render i) of [r x blocks v]) + (39))) + ((item (render i) of [r y blocks v]) + ((2400) * ((item (render i) of [r z blocks v]) + (40))))) of [b t blocks v]) = [0]> then\n                set color block side [] [6]\n                Fill 3d Triangle from (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (-50)) to (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (-50)) to (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (50))\n                Fill 3d Triangle from (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (-50)) to (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (50)) to (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (50))\n            end\n        end\n        if <(cam y) > (((item (render i) of [r y blocks v]) * (100)) + (50))> then\n            if <(item (((30) * ((item (render i) of [r x blocks v]) + (40))) + (((item (render i) of [r y blocks v]) + (1)) + ((2400) * ((item (render i) of [r z blocks v]) + (40))))) of [b t blocks v]) = [0]> then\n                set color block side [] [1]\n                Fill 3d Triangle from (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (50)) to (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (-50)) to (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (50))\n                Fill 3d Triangle from (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (-50)) to (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (-50)) to (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (50))\n            end\n        end\n        if <(((item (render i) of [r y blocks v]) * (100)) + (-50)) > (cam y)> then\n            if <(item (((30) * ((item (render i) of [r x blocks v]) + (40))) + (((item (render i) of [r y blocks v]) + (-1)) + ((2400) * ((item (render i) of [r z blocks v]) + (40))))) of [b t blocks v]) = [0]> then\n                set color block side [] [2]\n                Fill 3d Triangle from (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (50)) to (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (-50)) to (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (50))\n                Fill 3d Triangle from (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (-50)) to (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (-50)) to (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (50))\n            end\n        end\n        render block outline\n    end\nelse\n    repeat (length of [r x blocks v])\n        set pen size to (6)\n        change [render i v] by (1)\n        delete all of [r wireframe lines v]\n        repeat (12)\n            add [1] to [r wireframe lines v]\n        end\n        if <(cam z) > (((item (render i) of [r z blocks v]) * (100)) + (50))> then\n            if <(item (((30) * ((item (render i) of [r x blocks v]) + (40))) + ((item (render i) of [r y blocks v]) + ((2400) * ((item (render i) of [r z blocks v]) + (41))))) of [b t blocks v]) = [0]> then\n                set color block side [] [3]\n                if <(item (5) of [r wireframe lines v]) = [1]> then\n                    Draw Line (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (50)) to (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (50))\n                    if <not <(item (((30) * ((item (render i) of [r x blocks v]) + (40))) + ((item (render i) of [r y blocks v]) + ((2400) * ((item (render i) of [r z blocks v]) + (40))))) of [b t blocks v]) = [4]>> then\n                        replace item (5) of [r wireframe lines v] with [0]\n                    end\n                end\n                if <(item (10) of [r wireframe lines v]) = [1]> then\n                    Draw Line (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (50)) to (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (50))\n                    replace item (10) of [r wireframe lines v] with [0]\n                end\n                if <(item (9) of [r wireframe lines v]) = [1]> then\n                    Draw Line (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (50)) to (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (50))\n                    replace item (9) of [r wireframe lines v] with [0]\n                end\n                if <(item (1) of [r wireframe lines v]) = [1]> then\n                    if <(item (((30) * ((item (render i) of [r x blocks v]) + (40))) + ((item (render i) of [r y blocks v]) + ((2400) * ((item (render i) of [r z blocks v]) + (40))))) of [b t blocks v]) = [1]> then\n                        if <(item (((30) * ((item (render i) of [r x blocks v]) + (40))) + (((item (render i) of [r y blocks v]) + (1)) + ((2400) * ((item (render i) of [r z blocks v]) + (40))))) of [b t blocks v]) = [0]> then\n                            set pen color to (#49f300)\n                        end\n                    end\n                    Draw Line (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (50)) to (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (50))\n                    if <not <(item (((30) * ((item (render i) of [r x blocks v]) + (40))) + ((item (render i) of [r y blocks v]) + ((2400) * ((item (render i) of [r z blocks v]) + (40))))) of [b t blocks v]) = [4]>> then\n                        replace item (1) of [r wireframe lines v] with [0]\n                    end\n                end\n            end\n        end\n        if <(((item (render i) of [r z blocks v]) * (100)) + (-50)) > (cam z)> then\n            if <(item (((30) * ((item (render i) of [r x blocks v]) + (40))) + ((item (render i) of [r y blocks v]) + ((2400) * ((item (render i) of [r z blocks v]) + (39))))) of [b t blocks v]) = [0]> then\n                set color block side [] [4]\n                if <(item (7) of [r wireframe lines v]) = [1]> then\n                    Draw Line (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (-50)) to (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (-50))\n                    if <not <(item (((30) * ((item (render i) of [r x blocks v]) + (40))) + ((item (render i) of [r y blocks v]) + ((2400) * ((item (render i) of [r z blocks v]) + (40))))) of [b t blocks v]) = [4]>> then\n                        replace item (7) of [r wireframe lines v] with [0]\n                    end\n                end\n                if <(item (12) of [r wireframe lines v]) = [1]> then\n                    Draw Line (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (-50)) to (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (-50))\n                    replace item (12) of [r wireframe lines v] with [0]\n                end\n                if <(item (11) of [r wireframe lines v]) = [1]> then\n                    Draw Line (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (-50)) to (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (-50))\n                    replace item (11) of [r wireframe lines v] with [0]\n                end\n                if <(item (3) of [r wireframe lines v]) = [1]> then\n                    if <(item (((30) * ((item (render i) of [r x blocks v]) + (40))) + ((item (render i) of [r y blocks v]) + ((2400) * ((item (render i) of [r z blocks v]) + (40))))) of [b t blocks v]) = [1]> then\n                        if <(item (((30) * ((item (render i) of [r x blocks v]) + (40))) + (((item (render i) of [r y blocks v]) + (1)) + ((2400) * ((item (render i) of [r z blocks v]) + (40))))) of [b t blocks v]) = [0]> then\n                            set pen color to (#49f300)\n                        end\n                    end\n                    Draw Line (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (-50)) to (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (-50))\n                    if <not <(item (((30) * ((item (render i) of [r x blocks v]) + (40))) + ((item (render i) of [r y blocks v]) + ((2400) * ((item (render i) of [r z blocks v]) + (40))))) of [b t blocks v]) = [4]>> then\n                        replace item (3) of [r wireframe lines v] with [0]\n                    end\n                end\n            end\n        end\n        if <(cam x) > (((item (render i) of [r x blocks v]) * (100)) + (50))> then\n            if <(item (((30) * ((item (render i) of [r x blocks v]) + (41))) + ((item (render i) of [r y blocks v]) + ((2400) * ((item (render i) of [r z blocks v]) + (40))))) of [b t blocks v]) = [0]> then\n                set color block side [] [5]\n                if <(item (6) of [r wireframe lines v]) = [1]> then\n                    Draw Line (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (-50)) to (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (50))\n                    if <not <(item (((30) * ((item (render i) of [r x blocks v]) + (40))) + ((item (render i) of [r y blocks v]) + ((2400) * ((item (render i) of [r z blocks v]) + (40))))) of [b t blocks v]) = [4]>> then\n                        replace item (6) of [r wireframe lines v] with [0]\n                    end\n                end\n                if <(item (10) of [r wireframe lines v]) = [1]> then\n                    Draw Line (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (50)) to (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (50))\n                    replace item (10) of [r wireframe lines v] with [0]\n                end\n                if <(item (12) of [r wireframe lines v]) = [1]> then\n                    Draw Line (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (-50)) to (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (-50))\n                    replace item (12) of [r wireframe lines v] with [0]\n                end\n                if <(item (2) of [r wireframe lines v]) = [1]> then\n                    if <(item (((30) * ((item (render i) of [r x blocks v]) + (40))) + ((item (render i) of [r y blocks v]) + ((2400) * ((item (render i) of [r z blocks v]) + (40))))) of [b t blocks v]) = [1]> then\n                        if <(item (((30) * ((item (render i) of [r x blocks v]) + (40))) + (((item (render i) of [r y blocks v]) + (1)) + ((2400) * ((item (render i) of [r z blocks v]) + (40))))) of [b t blocks v]) = [0]> then\n                            set pen color to (#49f300)\n                        end\n                    end\n                    Draw Line (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (-50)) to (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (50))\n                    if <not <(item (((30) * ((item (render i) of [r x blocks v]) + (40))) + ((item (render i) of [r y blocks v]) + ((2400) * ((item (render i) of [r z blocks v]) + (40))))) of [b t blocks v]) = [4]>> then\n                        replace item (2) of [r wireframe lines v] with [0]\n                    end\n                end\n            end\n        end\n        if <(((item (render i) of [r x blocks v]) * (100)) + (-50)) > (cam x)> then\n            if <(item (((30) * ((item (render i) of [r x blocks v]) + (39))) + ((item (render i) of [r y blocks v]) + ((2400) * ((item (render i) of [r z blocks v]) + (40))))) of [b t blocks v]) = [0]> then\n                set color block side [] [6]\n                if <(item (8) of [r wireframe lines v]) = [1]> then\n                    Draw Line (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (-50)) to (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (50))\n                    if <not <(item (((30) * ((item (render i) of [r x blocks v]) + (40))) + ((item (render i) of [r y blocks v]) + ((2400) * ((item (render i) of [r z blocks v]) + (40))))) of [b t blocks v]) = [4]>> then\n                        replace item (8) of [r wireframe lines v] with [0]\n                    end\n                end\n                if <(item (9) of [r wireframe lines v]) = [1]> then\n                    Draw Line (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (50)) to (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (50))\n                    replace item (9) of [r wireframe lines v] with [0]\n                end\n                if <(item (11) of [r wireframe lines v]) = [1]> then\n                    Draw Line (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (-50)) to (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (-50))\n                    replace item (11) of [r wireframe lines v] with [0]\n                end\n                if <(item (4) of [r wireframe lines v]) = [1]> then\n                    if <(item (((30) * ((item (render i) of [r x blocks v]) + (40))) + ((item (render i) of [r y blocks v]) + ((2400) * ((item (render i) of [r z blocks v]) + (40))))) of [b t blocks v]) = [1]> then\n                        if <(item (((30) * ((item (render i) of [r x blocks v]) + (40))) + (((item (render i) of [r y blocks v]) + (1)) + ((2400) * ((item (render i) of [r z blocks v]) + (40))))) of [b t blocks v]) = [0]> then\n                            set pen color to (#49f300)\n                        end\n                    end\n                    Draw Line (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (-50)) to (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (50))\n                    if <not <(item (((30) * ((item (render i) of [r x blocks v]) + (40))) + ((item (render i) of [r y blocks v]) + ((2400) * ((item (render i) of [r z blocks v]) + (40))))) of [b t blocks v]) = [4]>> then\n                        replace item (4) of [r wireframe lines v] with [0]\n                    end\n                end\n            end\n        end\n        if <(cam y) > (((item (render i) of [r y blocks v]) * (100)) + (50))> then\n            if <(item (((30) * ((item (render i) of [r x blocks v]) + (40))) + (((item (render i) of [r y blocks v]) + (1)) + ((2400) * ((item (render i) of [r z blocks v]) + (40))))) of [b t blocks v]) = [0]> then\n                set color block side [] [1]\n                if <(item (3) of [r wireframe lines v]) = [1]> then\n                    Draw Line (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (-50)) to (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (-50))\n                    replace item (3) of [r wireframe lines v] with [0]\n                end\n                if <(item (2) of [r wireframe lines v]) = [1]> then\n                    Draw Line (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (-50)) to (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (50))\n                    replace item (2) of [r wireframe lines v] with [0]\n                end\n                if <(item (1) of [r wireframe lines v]) = [1]> then\n                    Draw Line (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (50)) to (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (50))\n                    replace item (1) of [r wireframe lines v] with [0]\n                end\n                if <(item (4) of [r wireframe lines v]) = [1]> then\n                    Draw Line (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (-50)) to (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (50)) (((item (render i) of [r z blocks v]) * (100)) + (50))\n                    replace item (4) of [r wireframe lines v] with [0]\n                end\n            end\n        end\n        if <(((item (render i) of [r y blocks v]) * (100)) + (-50)) > (cam y)> then\n            if <(item (((30) * ((item (render i) of [r x blocks v]) + (40))) + (((item (render i) of [r y blocks v]) + (-1)) + ((2400) * ((item (render i) of [r z blocks v]) + (40))))) of [b t blocks v]) = [0]> then\n                set color block side [] [2]\n                if <(item (7) of [r wireframe lines v]) = [1]> then\n                    Draw Line (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (-50)) to (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (-50))\n                    replace item (7) of [r wireframe lines v] with [0]\n                end\n                if <(item (6) of [r wireframe lines v]) = [1]> then\n                    Draw Line (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (-50)) to (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (50))\n                    replace item (6) of [r wireframe lines v] with [0]\n                end\n                if <(item (5) of [r wireframe lines v]) = [1]> then\n                    Draw Line (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (50)) to (((item (render i) of [r x blocks v]) * (100)) + (50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (50))\n                    replace item (5) of [r wireframe lines v] with [0]\n                end\n                if <(item (8) of [r wireframe lines v]) = [1]> then\n                    Draw Line (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (-50)) to (((item (render i) of [r x blocks v]) * (100)) + (-50)) (((item (render i) of [r y blocks v]) * (100)) + (-50)) (((item (render i) of [r z blocks v]) * (100)) + (50))\n                    replace item (8) of [r wireframe lines v] with [0]\n                end\n            end\n        end\n        render block outline\n    end\nend\nif <(settings open?) = [0]> then\n    set pen size to (7)\n    set pen color to (#000000)\n    go to x: (-10) y: (0)\n    pen down\n    go to x: (10) y: (0)\n    pen up\n    go to x: (0) y: (10)\n    pen down\n    go to x: (0) y: (-10)\n    pen up\n    set pen size to (4)\n    set pen color to (#848484)\n    go to x: (-10) y: (0)\n    pen down\n    go to x: (10) y: (0)\n    pen up\n    go to x: (0) y: (10)\n    pen down\n    go to x: (0) y: (-10)\n    pen up\nend\n\ndefine calculate trig values\nset [z sin x v] to ([sin v] of (rot x) )\nset [z cos x v] to ([cos v] of (rot x) )\nset [z sin y v] to ([sin v] of (rot y) )\nset [z cos y v] to ([cos v] of (rot y) )\nset [update normalized x v] to ([cos v] of ((rot y) + (90)) )\nset [update normalized y v] to (z sin x)\nset [update normalized z v] to ([sin v] of ((rot y) + (90)) )\n\ndefine tick\nif <(settings open?) = [0]> then\n    if <<key (d v) pressed?> or <key (right arrow v) pressed?>> then\n        change [b player xvel v] by ((4) * (z cos y))\n        change [b player zvel v] by ((4) * (z sin y))\n    end\n    if <<key (a v) pressed?> or <key (left arrow v) pressed?>> then\n        change [b player xvel v] by ((-4) * (z cos y))\n        change [b player zvel v] by ((-4) * (z sin y))\n    end\n    if <<key (w v) pressed?> or <key (up arrow v) pressed?>> then\n        change [b player xvel v] by ((-4) * (z sin y))\n        change [b player zvel v] by ((4) * (z cos y))\n    end\n    if <<key (s v) pressed?> or <key (down arrow v) pressed?>> then\n        change [b player xvel v] by ((4) * (z sin y))\n        change [b player zvel v] by ((-4) * (z cos y))\n    end\n    change x and z by (round (b player xvel)) (round (b player zvel))\n    set [b player xvel v] to ((b player xvel) * (0.6))\n    set [b player zvel v] to ((b player zvel) * (0.6))\n    if <<key (space v) pressed?> and <[5] > (b falling?)>> then\n        set [b player yvel v] to [16]\n        set [b falling? v] to [333]\n    end\n    change [b falling? v] by (1)\n    change [b player yvel v] by (-1)\n    change y by (b player yvel)\n    change [rot x v] by ((((mouse y) / (1.5)) - (rot x)) / (3))\n    if <(rot x) > [90]> then\n        set [rot x v] to [90]\n    end\n    if <[-90] > (rot x)> then\n        set [rot x v] to [-90]\n    end\n    change [rot y v] by ((((b rot y + mouse) + (() - ((mouse x) / (1.5)))) - (rot y)) / (3))\n    if <(mouse x) > [220]> then\n        change [b rot y + mouse v] by (-3)\n    end\n    if <[-220] > (mouse x)> then\n        change [b rot y + mouse v] by (3)\n    end\n    change [b walking frame v] by (1)\n    if <(([abs v] of (b player xvel) ) + ([abs v] of (b player zvel) )) > [2.5]> then\n        if <[5] > (b falling?)> then\n            change [cam y v] by ((((b player y) + (([sin v] of ((b walking frame) * (25)) ) * (5))) - (cam y)) / (2))\n        else\n            change [cam y v] by (((b player y) - (cam y)) / (2))\n        end\n    else\n        change [cam y v] by (((b player y) - (cam y)) / (2))\n    end\n    change [cam x v] by (((b player x) - (cam x)) / (2))\n    change [cam z v] by (((b player z) - (cam z)) / (2))\n    // [block selection]\n    if <key (1 v) pressed?> then\n        set [a placing/breaking v] to [0]\n    end\n    if <key (2 v) pressed?> then\n        set [a placing/breaking v] to [1]\n    end\n    if <key (3 v) pressed?> then\n        set [a placing/breaking v] to [2]\n    end\n    if <key (4 v) pressed?> then\n        set [a placing/breaking v] to [4]\n    end\n    if <key (5 v) pressed?> then\n        set [a placing/breaking v] to [5]\n    end\n    // [place and break]\n    send ray\n    if <mouse down?> then\n        change [place/break cooldown v] by (1.5)\n        if <not <(d break x block) = [nope]>> then\n            if <(place/break cooldown) > [15]> then\n                set [place/break cooldown v] to [0]\n                if <(a placing/breaking) = [0]> then\n                    if <not <(item (((30) * ((d break x block) + (40))) + ((d break y block) + ((2400) * ((d break z block) + (40))))) of [b t blocks v]) = [3]>> then\n                        replace item (((30) * ((d break x block) + (40))) + ((d break y block) + ((2400) * ((d break z block) + (40))))) of [b t blocks v] with [0]\n                    end\n                else\n                    replace item (((30) * ((d place x block) + (40))) + ((d place y block) + ((2400) * ((d place z block) + (40))))) of [b t blocks v] with (a placing/breaking)\n                    check collision []\n                    if <(c collision?) = [false]> then\n                        replace item (((30) * ((d place x block) + (40))) + ((d place y block) + ((2400) * ((d place z block) + (40))))) of [b t blocks v] with [0]\n                    end\n                end\n            end\n        end\n    else\n        change [place/break cooldown v] by (5)\n    end\n    // [set block holding variable thing]\n    if <(a placing/breaking) = [0]> then\n        set [a placing/breaking display v] to [pickaxe]\n    else\n        if <(a placing/breaking) = [1]> then\n            set [a placing/breaking display v] to [grass]\n        else\n            if <(a placing/breaking) = [2]> then\n                set [a placing/breaking display v] to [stone]\n            else\n                if <(a placing/breaking) = [4]> then\n                    set [a placing/breaking display v] to [log]\n                else\n                    if <(a placing/breaking) = [5]> then\n                        set [a placing/breaking display v] to [leave]\n                    end\n                end\n            end\n        end\n    end\nend\n\ndefine Draw Line (x1) (y1) (z1) to (x2) (y2) (z2)\nchange [a tri/line drawn v] by (1)\nset point ((x1) - (cam x)) [] ((z1) - (cam z)) [1]\nset point ((x2) - (cam x)) [] ((z2) - (cam z)) [2]\nset point (((z z1) * (z sin y)) + ((z x1) * (z cos y))) ((y1) - (cam y)) (((z z1) * (z cos y)) - ((z x1) * (z sin y))) [1]\nset point (((z z2) * (z sin y)) + ((z x2) * (z cos y))) ((y2) - (cam y)) (((z z2) * (z cos y)) - ((z x2) * (z sin y))) [2]\nset point (z x1) (((z y1) * (z cos x)) - ((z z1) * (z sin x))) (((z y1) * (z sin x)) + ((z z1) * (z cos x))) [1]\nset point (z x2) (((z y2) * (z cos x)) - ((z z2) * (z sin x))) (((z y2) * (z sin x)) + ((z z2) * (z cos x))) [2]\nif <not <<(z z1) < (z minZ)> and <(z z2) < (z minZ)>>> then\n    if <<(z z1) < (z minZ)> or <(z z2) < (z minZ)>> then\n        set [z m v] to (((z minZ) - (z z1)) / ((z z2) - (z z1)))\n        if <(z z1) < (z minZ)> then\n            set point ((z x1) + (((z x2) - (z x1)) * (z m))) ((z y1) + (((z y2) - (z y1)) * (z m))) (z minZ) [1]\n        else\n            if <(z z2) < (z minZ)> then\n                set point ((z x1) + (((z x2) - (z x1)) * (z m))) ((z y1) + (((z y2) - (z y1)) * (z m))) (z minZ) [2]\n            end\n        end\n    end\n    go to x: ((FOV) * ((z x1) / (z z1))) y: ((FOV) * ((z y1) / (z z1)))\n    pen down\n    go to x: ((FOV) * ((z x2) / (z z2))) y: ((FOV) * ((z y2) / (z z2)))\n    pen up\nend\n\nwhen I receive [start 3d minecraft v]\nsetup\nforever\n    calculate trig values\n    tick\n    calculate trig values\n    render (wireframe)\n    broadcast (tick v) and wait\n    change [zz frame v] by (1)\n    if <((86400) * ((days since 2000) - (zz time started))) > [1]> then\n        set [zz fps v] to (zz frame)\n        set [zz frame v] to [0]\n        set [zz time started v] to (days since 2000)\n    end\nend\n\ndefine update blocks\ndelete all of [r x blocks v]\ndelete all of [r y blocks v]\ndelete all of [r z blocks v]\ndelete all of [r t blocks v]\nset [update render distance calculated v] to (((render distance) * (2)) + (1))\nset [update z v] to ((round ((cam z) / (100))) + (((render distance) * (-1)) - (1)))\nrepeat (update render distance calculated)\n    change [update z v] by (1)\n    set [update x v] to ((round ((cam x) / (100))) + (((render distance) * (-1)) - (1)))\n    repeat (update render distance calculated)\n        change [update x v] by (1)\n        set [update y v] to ((round ((cam y) / (100))) + (((render distance) * (-1)) - (1)))\n        repeat (update render distance calculated)\n            change [update y v] by (1)\n            if <<<<(update x) > [-41]> and <[40] > (update x)>> and <<(update z) > [-41]> and <[40] > (update z)>>> and <<(update y) > [0]> and <[31] > (update y)>>> then\n                if <not <(item (((30) * ((update x) + (40))) + ((update y) + ((2400) * ((update z) + (40))))) of [b t blocks v]) = [0]>> then\n                    if <(((update normalized x) * (((item (((30) * ((update x) + (40))) + ((update y) + ((2400) * ((update z) + (40))))) of [b x blocks v]) * (100)) - (cam x))) + (((update normalized y) * (((item (((30) * ((update x) + (40))) + ((update y) + ((2400) * ((update z) + (40))))) of [b y blocks v]) * (100)) - (cam y))) + ((update normalized z) * (((item (((30) * ((update x) + (40))) + ((update y) + ((2400) * ((update z) + (40))))) of [b z blocks v]) * (100)) - (cam z))))) > [-100]> then\n                        if <(item (((30) * ((update x) + (40))) + (((update y) + (1)) + ((2400) * ((update z) + (40))))) of [b t blocks v]) = [0]> then\n                            add (update x) to [r x blocks v]\n                            add (update y) to [r y blocks v]\n                            add (update z) to [r z blocks v]\n                            add (item (((30) * ((update x) + (40))) + ((update y) + ((2400) * ((update z) + (40))))) of [b t blocks v]) to [r t blocks v]\n                        else\n                            if <(item (((30) * ((update x) + (40))) + (((update y) + (-1)) + ((2400) * ((update z) + (40))))) of [b t blocks v]) = [0]> then\n                                add (update x) to [r x blocks v]\n                                add (update y) to [r y blocks v]\n                                add (update z) to [r z blocks v]\n                                add (item (((30) * ((update x) + (40))) + ((update y) + ((2400) * ((update z) + (40))))) of [b t blocks v]) to [r t blocks v]\n                            else\n                                if <(item (((30) * ((update x) + (41))) + ((update y) + ((2400) * ((update z) + (40))))) of [b t blocks v]) = [0]> then\n                                    add (update x) to [r x blocks v]\n                                    add (update y) to [r y blocks v]\n                                    add (update z) to [r z blocks v]\n                                    add (item (((30) * ((update x) + (40))) + ((update y) + ((2400) * ((update z) + (40))))) of [b t blocks v]) to [r t blocks v]\n                                else\n                                    if <(item (((30) * ((update x) + (39))) + ((update y) + ((2400) * ((update z) + (40))))) of [b t blocks v]) = [0]> then\n                                        add (update x) to [r x blocks v]\n                                        add (update y) to [r y blocks v]\n                                        add (update z) to [r z blocks v]\n                                        add (item (((30) * ((update x) + (40))) + ((update y) + ((2400) * ((update z) + (40))))) of [b t blocks v]) to [r t blocks v]\n                                    else\n                                        if <(item (((30) * ((update x) + (40))) + ((update y) + ((2400) * ((update z) + (41))))) of [b t blocks v]) = [0]> then\n                                            add (update x) to [r x blocks v]\n                                            add (update y) to [r y blocks v]\n                                            add (update z) to [r z blocks v]\n                                            add (item (((30) * ((update x) + (40))) + ((update y) + ((2400) * ((update z) + (40))))) of [b t blocks v]) to [r t blocks v]\n                                        else\n                                            if <(item (((30) * ((update x) + (40))) + ((update y) + ((2400) * ((update z) + (39))))) of [b t blocks v]) = [0]> then\n                                                add (update x) to [r x blocks v]\n                                                add (update y) to [r y blocks v]\n                                                add (update z) to [r z blocks v]\n                                                add (item (((30) * ((update x) + (40))) + ((update y) + ((2400) * ((update z) + (40))))) of [b t blocks v]) to [r t blocks v]\n                                            end\n                                        end\n                                    end\n                                end\n                            end\n                        end\n                    end\n                end\n            end\n        end\n    end\nend\n\ndefine setup\nset [cam x v] to [0]\nset [cam z v] to [0]\nset [cam y v] to [200]\nrepeat until <(item (((30) * ((round ((cam x) / (100))) + (40))) + ((round ((cam y) / (100))) + ((2400) * ((round ((cam z) / (100))) + (40))))) of [b t blocks v]) = [0]>\n    change [cam y v] by (100)\nend\nchange [cam y v] by (100)\nset [b player x v] to (cam x)\nset [b player xvel v] to [0]\nset [b player y v] to (cam y)\nset [b player yvel v] to [0]\nset [b player z v] to (cam z)\nset [b player zvel v] to [0]\nset [rot x v] to [0]\nset [rot y v] to [0]\nset [b rot y + mouse v] to [0]\nset [place/break cooldown v] to [0]\nset [a placing/breaking v] to [0]\n\ndefine set color block side (t) (side)\nif <(t) = []> then\n    if <not <(item (render i) of [r t blocks v]) = []>> then\n        set color block side (item (render i) of [r t blocks v]) (side)\n    end\n    stop [this script v]\nend\nif <(side) = [1]> then\n    if <(t) = [1]> then\n        set pen color to (#49f300)\n    end\n    if <(t) = [2]> then\n        set pen color to (#c1c1c1)\n    end\n    if <(t) = [3]> then\n        set pen color to (#3c3c3c)\n    end\n    if <(t) = [4]> then\n        set pen color to (#f7b366)\n    end\n    if <(t) = [5]> then\n        set pen color to (#00bb56)\n    end\nend\nif <(side) = [2]> then\n    if <(t) = [1]> then\n        set pen color to (#6e2900)\n    end\n    if <(t) = [2]> then\n        set pen color to (#828282)\n    end\n    if <(t) = [3]> then\n        set pen color to (#232323)\n    end\n    if <(t) = [4]> then\n        set pen color to (#e0a35d)\n    end\n    if <(t) = [5]> then\n        set pen color to (#008b3f)\n    end\n    if <(t) = [6]> then\n        set pen color to (#ffffff)\n    end\nend\nif <(side) = [3]> then\n    if <(t) = [1]> then\n        set pen color to (#f35d00)\n    end\n    if <(t) = [2]> then\n        set pen color to (#b4b4b4)\n    end\n    if <(t) = [3]> then\n        set pen color to (#232323)\n    end\n    if <(t) = [4]> then\n        set pen color to (#6e0000)\n    end\n    if <(t) = [5]> then\n        set pen color to (#00ad4e)\n    end\nend\nif <(side) = [4]> then\n    if <(t) = [1]> then\n        set pen color to (#ad4200)\n    end\n    if <(t) = [2]> then\n        set pen color to (#8d8d8d)\n    end\n    if <(t) = [3]> then\n        set pen color to (#232323)\n    end\n    if <(t) = [4]> then\n        set pen color to (#3c0000)\n    end\n    if <(t) = [5]> then\n        set pen color to (#009442)\n    end\nend\nif <(side) = [5]> then\n    if <(t) = [1]> then\n        set pen color to (#da5300)\n    end\n    if <(t) = [2]> then\n        set pen color to (#a7a7a7)\n    end\n    if <(t) = [3]> then\n        set pen color to (#232323)\n    end\n    if <(t) = [4]> then\n        set pen color to (#5f0000)\n    end\n    if <(t) = [5]> then\n        set pen color to (#00a248)\n    end\nend\nif <(side) = [6]> then\n    if <(t) = [1]> then\n        set pen color to (#bd4700)\n    end\n    if <(t) = [2]> then\n        set pen color to (#9b9b9b)\n    end\n    if <(t) = [3]> then\n        set pen color to (#232323)\n    end\n    if <(t) = [4]> then\n        set pen color to (#440000)\n    end\n    if <(t) = [5]> then\n        set pen color to (#009943)\n    end\nend\nif <[1] = (() + ((((item (((30) * ((item (render i) of [r x blocks v]) + (40))) + (((item (render i) of [r y blocks v]) + (0)) + ((2400) * ((item (render i) of [r z blocks v]) + (40))))) of [b x blocks v]) + (item (((30) * ((item (render i) of [r x blocks v]) + (40))) + (((item (render i) of [r y blocks v]) + (0)) + ((2400) * ((item (render i) of [r z blocks v]) + (40))))) of [b y blocks v])) mod (2)) + ((item (((30) * ((item (render i) of [r x blocks v]) + (40))) + (((item (render i) of [r y blocks v]) + (0)) + ((2400) * ((item (render i) of [r z blocks v]) + (40))))) of [b z blocks v]) mod (2))))> then\n    change pen (brightness v) by (-3.5)\nend\nif <(settings open?) = [1]> then\n    change pen (brightness v) by (-10)\nend\n\nwhen [j v] key pressed\ndelete all of [b t blocks v]\ndelete all of [b x blocks v]\ndelete all of [b y blocks v]\ndelete all of [b z blocks v]\ndelete all of [terrain seed v]\ndelete all of [savecode edited blocks v]\n\ndefine sort\nset [sort last v] to (length of [r distance blocks v])\nif <not <(sort last) = [0]>> then\n    repeat until <(sort last) = [1]>\n        set [sort i v] to [0]\n        set [sort highest v] to [1]\n        repeat (sort last)\n            change [sort i v] by (1)\n            if <(item (sort highest) of [r distance blocks v]) > (item (sort i) of [r distance blocks v])> then\n                set [sort highest v] to (sort i)\n            end\n        end\n        set [sort item v] to (item (sort last) of [r distance blocks v])\n        replace item (sort last) of [r distance blocks v] with (item (sort highest) of [r distance blocks v])\n        replace item (sort highest) of [r distance blocks v] with (sort item)\n        set [sort item v] to (item (sort last) of [r t blocks v])\n        replace item (sort last) of [r t blocks v] with (item (sort highest) of [r t blocks v])\n        replace item (sort highest) of [r t blocks v] with (sort item)\n        set [sort item v] to (item (sort last) of [r x blocks v])\n        replace item (sort last) of [r x blocks v] with (item (sort highest) of [r x blocks v])\n        replace item (sort highest) of [r x blocks v] with (sort item)\n        set [sort item v] to (item (sort last) of [r y blocks v])\n        replace item (sort last) of [r y blocks v] with (item (sort highest) of [r y blocks v])\n        replace item (sort highest) of [r y blocks v] with (sort item)\n        set [sort item v] to (item (sort last) of [r z blocks v])\n        replace item (sort last) of [r z blocks v] with (item (sort highest) of [r z blocks v])\n        replace item (sort highest) of [r z blocks v] with (sort item)\n        change [sort last v] by (-1)\n    end\nend\n\ndefine distance (x1) (y1) (z1) to (x2) (y2) (z2)\nset [a distance v] to ([sqrt v] of ((((x1) - (x2)) * ((x1) - (x2))) + ((((y1) - (y2)) * ((y1) - (y2))) + (((z1) - (z2)) * ((z1) - (z2))))) )\n\ndefine change y by (y)\nchange [b player y v] by (y)\ncheck collision []\nrepeat until <(c collision?) = [true]>\n    if <(y) > [0]> then\n        change [b player y v] by (-1)\n    else\n        change [b player y v] by (1)\n        set [b falling? v] to [0]\n    end\n    set [b player yvel v] to [0]\n    check collision []\nend\n\ndefine change x and z by (x) (z)\nchange [b player x v] by (x)\ncheck collision []\nrepeat until <(c collision?) = [true]>\n    if <(x) > [0]> then\n        change [b player x v] by (-1)\n    else\n        change [b player x v] by (1)\n    end\n    set [b player xvel v] to [0]\n    check collision []\nend\nchange [b player z v] by (z)\ncheck collision []\nrepeat until <(c collision?) = [true]>\n    if <(z) > [0]> then\n        change [b player z v] by (-1)\n    else\n        change [b player z v] by (1)\n    end\n    set [b player zvel v] to [0]\n    check collision []\nend\n\ndefine check collision (edge)\nif <(edge) = []> then\n    check collision [30]\n    stop [this script v]\nend\ndelete all of [c collision v]\nadd <(item (((30) * ((round (((b player x) - (edge)) / (100))) + (40))) + ((round ((b player y) / (100))) + ((2400) * ((round (((b player z) + (edge)) / (100))) + (40))))) of [b t blocks v]) = [0]> to [c collision v]\nadd <(item (((30) * ((round (((b player x) - (edge)) / (100))) + (40))) + ((round (((b player y) + (-50)) / (100))) + ((2400) * ((round (((b player z) + (edge)) / (100))) + (40))))) of [b t blocks v]) = [0]> to [c collision v]\nadd <(item (((30) * ((round (((b player x) - (edge)) / (100))) + (40))) + ((round (((b player y) + (-150)) / (100))) + ((2400) * ((round (((b player z) + (edge)) / (100))) + (40))))) of [b t blocks v]) = [0]> to [c collision v]\nadd <(item (((30) * ((round (((b player x) + (edge)) / (100))) + (40))) + ((round ((b player y) / (100))) + ((2400) * ((round (((b player z) + (edge)) / (100))) + (40))))) of [b t blocks v]) = [0]> to [c collision v]\nadd <(item (((30) * ((round (((b player x) + (edge)) / (100))) + (40))) + ((round (((b player y) + (-50)) / (100))) + ((2400) * ((round (((b player z) + (edge)) / (100))) + (40))))) of [b t blocks v]) = [0]> to [c collision v]\nadd <(item (((30) * ((round (((b player x) + (edge)) / (100))) + (40))) + ((round (((b player y) + (-150)) / (100))) + ((2400) * ((round (((b player z) + (edge)) / (100))) + (40))))) of [b t blocks v]) = [0]> to [c collision v]\nadd <(item (((30) * ((round (((b player x) - (edge)) / (100))) + (40))) + ((round ((b player y) / (100))) + ((2400) * ((round (((b player z) - (edge)) / (100))) + (40))))) of [b t blocks v]) = [0]> to [c collision v]\nadd <(item (((30) * ((round (((b player x) - (edge)) / (100))) + (40))) + ((round (((b player y) + (-50)) / (100))) + ((2400) * ((round (((b player z) - (edge)) / (100))) + (40))))) of [b t blocks v]) = [0]> to [c collision v]\nadd <(item (((30) * ((round (((b player x) - (edge)) / (100))) + (40))) + ((round (((b player y) + (-150)) / (100))) + ((2400) * ((round (((b player z) - (edge)) / (100))) + (40))))) of [b t blocks v]) = [0]> to [c collision v]\nadd <(item (((30) * ((round (((b player x) + (edge)) / (100))) + (40))) + ((round ((b player y) / (100))) + ((2400) * ((round (((b player z) - (edge)) / (100))) + (40))))) of [b t blocks v]) = [0]> to [c collision v]\nadd <(item (((30) * ((round (((b player x) + (edge)) / (100))) + (40))) + ((round (((b player y) + (-50)) / (100))) + ((2400) * ((round (((b player z) - (edge)) / (100))) + (40))))) of [b t blocks v]) = [0]> to [c collision v]\nadd <(item (((30) * ((round (((b player x) + (edge)) / (100))) + (40))) + ((round (((b player y) + (-150)) / (100))) + ((2400) * ((round (((b player z) - (edge)) / (100))) + (40))))) of [b t blocks v]) = [0]> to [c collision v]\nset [c collision? v] to <not <[c collision v] contains [false]?>>\nif <<<[-4020] > (b player z)> or <(b player z) > [3919]>> or <<[-4020] > (b player x)> or <(b player x) > [3919]>>> then\n    set [c collision? v] to [false]\nend\n\ndefine send ray\nset [z cos y v] to ([sin v] of ((rot y) - (-90)) )\nset [z sin y v] to ([cos v] of ((rot y) - (-90)) )\nset [z sin x v] to ([sin v] of (rot x) )\nset [z cos x v] to ([cos v] of (rot x) )\nset [d break x block v] to (cam x)\nset [d break y block v] to (cam y)\nset [d break z block v] to (cam z)\nset [d place x block v] to (cam x)\nset [d place y block v] to (cam y)\nset [d place z block v] to (cam z)\nrepeat (500)\n    set [d place x block v] to (d break x block)\n    set [d place y block v] to (d break y block)\n    set [d place z block v] to (d break z block)\n    change [d break x block v] by ((1) * ((z sin y) * (z cos x)))\n    change [d break y block v] by ((1) * (z sin x))\n    change [d break z block v] by ((1) * ((z cos y) * (z cos x)))\n    if <not <(item (((30) * ((round ((d break x block) / (100))) + (40))) + ((round ((d break y block) / (100))) + ((2400) * ((round ((d break z block) / (100))) + (40))))) of [b t blocks v]) = [0]>> then\n        set [d break x block v] to (round ((d break x block) / (100)))\n        set [d break y block v] to (round ((d break y block) / (100)))\n        set [d break z block v] to (round ((d break z block) / (100)))\n        set [d place x block v] to (round ((d place x block) / (100)))\n        set [d place y block v] to (round ((d place y block) / (100)))\n        set [d place z block v] to (round ((d place z block) / (100)))\n        if <<<(d place y block) > [0]> and <[31] > (d place y block)>> and <<<(d break x block) > [-41]> and <[40] > (d break x block)>> and <<(d break z block) > [-41]> and <[40] > (d break z block)>>>> then\n            stop [this script v]\n        end\n        set [d break x block v] to [nope]\n        stop [this script v]\n    end\nend\nset [d break x block v] to [nope]\n\ndefine render block outline\nif <not <(d break x block) = [nope]>> then\n    delete all of [r block outline? v]\n    add <<(d break x block) = ((item (render i) of [r x blocks v]) + ())> and <<(d break y block) = ((item (render i) of [r y blocks v]) + ())> and <(d break z block) = ((item (render i) of [r z blocks v]) + ())>>> to [r block outline? v]\n    if <[r block outline? v] contains [true]?> then\n        set [render outline? v] to [1]\n    end\n    if <(render outline?) = [1]> then\n        add <<(d break x block) = ((item (render i) of [r x blocks v]) + (-1))> and <<(d break y block) = ((item (render i) of [r y blocks v]) + ())> and <(d break z block) = ((item (render i) of [r z blocks v]) + ())>>> to [r block outline? v]\n        add <<(d break x block) = ((item (render i) of [r x blocks v]) + (1))> and <<(d break y block) = ((item (render i) of [r y blocks v]) + ())> and <(d break z block) = ((item (render i) of [r z blocks v]) + ())>>> to [r block outline? v]\n        add <<(d break x block) = ((item (render i) of [r x blocks v]) + ())> and <<(d break y block) = ((item (render i) of [r y blocks v]) + (-1))> and <(d break z block) = ((item (render i) of [r z blocks v]) + ())>>> to [r block outline? v]\n        add <<(d break x block) = ((item (render i) of [r x blocks v]) + ())> and <<(d break y block) = ((item (render i) of [r y blocks v]) + (1))> and <(d break z block) = ((item (render i) of [r z blocks v]) + ())>>> to [r block outline? v]\n        add <<(d break x block) = ((item (render i) of [r x blocks v]) + ())> and <<(d break y block) = ((item (render i) of [r y blocks v]) + ())> and <(d break z block) = ((item (render i) of [r z blocks v]) + (-1))>>> to [r block outline? v]\n        add <<(d break x block) = ((item (render i) of [r x blocks v]) + ())> and <<(d break y block) = ((item (render i) of [r y blocks v]) + ())> and <(d break z block) = ((item (render i) of [r z blocks v]) + (1))>>> to [r block outline? v]\n        if <[r block outline? v] contains [true]?> then\n            set pen size to (3)\n            set pen color to (#000000)\n            delete all of [r wireframe lines v]\n            repeat (12)\n                add [1] to [r wireframe lines v]\n            end\n            if <(cam z) > (((d break z block) * (100)) + (50))> then\n                if <(item (((30) * ((d break x block) + (40))) + ((d break y block) + ((2400) * ((d break z block) + (41))))) of [b t blocks v]) = [0]> then\n                    if <(item (5) of [r wireframe lines v]) = [1]> then\n                        Draw Line (((d break x block) * (100)) + (-50)) (((d break y block) * (100)) + (-50)) (((d break z block) * (100)) + (50)) to (((d break x block) * (100)) + (50)) (((d break y block) * (100)) + (-50)) (((d break z block) * (100)) + (50))\n                        replace item (5) of [r wireframe lines v] with [0]\n                    end\n                    if <(item (10) of [r wireframe lines v]) = [1]> then\n                        Draw Line (((d break x block) * (100)) + (50)) (((d break y block) * (100)) + (-50)) (((d break z block) * (100)) + (50)) to (((d break x block) * (100)) + (50)) (((d break y block) * (100)) + (50)) (((d break z block) * (100)) + (50))\n                        replace item (10) of [r wireframe lines v] with [0]\n                    end\n                    if <(item (9) of [r wireframe lines v]) = [1]> then\n                        Draw Line (((d break x block) * (100)) + (-50)) (((d break y block) * (100)) + (50)) (((d break z block) * (100)) + (50)) to (((d break x block) * (100)) + (-50)) (((d break y block) * (100)) + (-50)) (((d break z block) * (100)) + (50))\n                        replace item (9) of [r wireframe lines v] with [0]\n                    end\n                    if <(item (1) of [r wireframe lines v]) = [1]> then\n                        Draw Line (((d break x block) * (100)) + (50)) (((d break y block) * (100)) + (50)) (((d break z block) * (100)) + (50)) to (((d break x block) * (100)) + (-50)) (((d break y block) * (100)) + (50)) (((d break z block) * (100)) + (50))\n                        replace item (1) of [r wireframe lines v] with [0]\n                    end\n                end\n            end\n            if <(((d break z block) * (100)) + (-50)) > (cam z)> then\n                if <(item (((30) * ((d break x block) + (40))) + ((d break y block) + ((2400) * ((d break z block) + (39))))) of [b t blocks v]) = [0]> then\n                    if <(item (7) of [r wireframe lines v]) = [1]> then\n                        Draw Line (((d break x block) * (100)) + (-50)) (((d break y block) * (100)) + (-50)) (((d break z block) * (100)) + (-50)) to (((d break x block) * (100)) + (50)) (((d break y block) * (100)) + (-50)) (((d break z block) * (100)) + (-50))\n                        replace item (7) of [r wireframe lines v] with [0]\n                    end\n                    if <(item (12) of [r wireframe lines v]) = [1]> then\n                        Draw Line (((d break x block) * (100)) + (50)) (((d break y block) * (100)) + (-50)) (((d break z block) * (100)) + (-50)) to (((d break x block) * (100)) + (50)) (((d break y block) * (100)) + (50)) (((d break z block) * (100)) + (-50))\n                        replace item (12) of [r wireframe lines v] with [0]\n                    end\n                    if <(item (11) of [r wireframe lines v]) = [1]> then\n                        Draw Line (((d break x block) * (100)) + (-50)) (((d break y block) * (100)) + (50)) (((d break z block) * (100)) + (-50)) to (((d break x block) * (100)) + (-50)) (((d break y block) * (100)) + (-50)) (((d break z block) * (100)) + (-50))\n                        replace item (11) of [r wireframe lines v] with [0]\n                    end\n                    if <(item (3) of [r wireframe lines v]) = [1]> then\n                        Draw Line (((d break x block) * (100)) + (50)) (((d break y block) * (100)) + (50)) (((d break z block) * (100)) + (-50)) to (((d break x block) * (100)) + (-50)) (((d break y block) * (100)) + (50)) (((d break z block) * (100)) + (-50))\n                        replace item (3) of [r wireframe lines v] with [0]\n                    end\n                end\n            end\n            if <(cam x) > (((d break x block) * (100)) + (50))> then\n                if <(item (((30) * ((d break x block) + (41))) + ((d break y block) + ((2400) * ((d break z block) + (40))))) of [b t blocks v]) = [0]> then\n                    if <(item (6) of [r wireframe lines v]) = [1]> then\n                        Draw Line (((d break x block) * (100)) + (50)) (((d break y block) * (100)) + (-50)) (((d break z block) * (100)) + (-50)) to (((d break x block) * (100)) + (50)) (((d break y block) * (100)) + (-50)) (((d break z block) * (100)) + (50))\n                        replace item (6) of [r wireframe lines v] with [0]\n                    end\n                    if <(item (10) of [r wireframe lines v]) = [1]> then\n                        Draw Line (((d break x block) * (100)) + (50)) (((d break y block) * (100)) + (-50)) (((d break z block) * (100)) + (50)) to (((d break x block) * (100)) + (50)) (((d break y block) * (100)) + (50)) (((d break z block) * (100)) + (50))\n                        replace item (10) of [r wireframe lines v] with [0]\n                    end\n                    if <(item (12) of [r wireframe lines v]) = [1]> then\n                        Draw Line (((d break x block) * (100)) + (50)) (((d break y block) * (100)) + (50)) (((d break z block) * (100)) + (-50)) to (((d break x block) * (100)) + (50)) (((d break y block) * (100)) + (-50)) (((d break z block) * (100)) + (-50))\n                        replace item (12) of [r wireframe lines v] with [0]\n                    end\n                    if <(item (2) of [r wireframe lines v]) = [1]> then\n                        Draw Line (((d break x block) * (100)) + (50)) (((d break y block) * (100)) + (50)) (((d break z block) * (100)) + (-50)) to (((d break x block) * (100)) + (50)) (((d break y block) * (100)) + (50)) (((d break z block) * (100)) + (50))\n                        replace item (2) of [r wireframe lines v] with [0]\n                    end\n                end\n            end\n            if <(((d break x block) * (100)) + (-50)) > (cam x)> then\n                if <(item (((30) * ((d break x block) + (39))) + ((d break y block) + ((2400) * ((d break z block) + (40))))) of [b t blocks v]) = [0]> then\n                    if <(item (8) of [r wireframe lines v]) = [1]> then\n                        Draw Line (((d break x block) * (100)) + (-50)) (((d break y block) * (100)) + (-50)) (((d break z block) * (100)) + (-50)) to (((d break x block) * (100)) + (-50)) (((d break y block) * (100)) + (-50)) (((d break z block) * (100)) + (50))\n                        replace item (8) of [r wireframe lines v] with [0]\n                    end\n                    if <(item (9) of [r wireframe lines v]) = [1]> then\n                        Draw Line (((d break x block) * (100)) + (-50)) (((d break y block) * (100)) + (-50)) (((d break z block) * (100)) + (50)) to (((d break x block) * (100)) + (-50)) (((d break y block) * (100)) + (50)) (((d break z block) * (100)) + (50))\n                        replace item (9) of [r wireframe lines v] with [0]\n                    end\n                    if <(item (11) of [r wireframe lines v]) = [1]> then\n                        Draw Line (((d break x block) * (100)) + (-50)) (((d break y block) * (100)) + (50)) (((d break z block) * (100)) + (-50)) to (((d break x block) * (100)) + (-50)) (((d break y block) * (100)) + (-50)) (((d break z block) * (100)) + (-50))\n                        replace item (11) of [r wireframe lines v] with [0]\n                    end\n                    if <(item (4) of [r wireframe lines v]) = [1]> then\n                        Draw Line (((d break x block) * (100)) + (-50)) (((d break y block) * (100)) + (50)) (((d break z block) * (100)) + (-50)) to (((d break x block) * (100)) + (-50)) (((d break y block) * (100)) + (50)) (((d break z block) * (100)) + (50))\n                        replace item (4) of [r wireframe lines v] with [0]\n                    end\n                end\n            end\n            if <(cam y) > (((d break y block) * (100)) + (50))> then\n                if <(item (((30) * ((d break x block) + (40))) + (((d break y block) + (1)) + ((2400) * ((d break z block) + (40))))) of [b t blocks v]) = [0]> then\n                    if <(item (3) of [r wireframe lines v]) = [1]> then\n                        Draw Line (((d break x block) * (100)) + (-50)) (((d break y block) * (100)) + (50)) (((d break z block) * (100)) + (-50)) to (((d break x block) * (100)) + (50)) (((d break y block) * (100)) + (50)) (((d break z block) * (100)) + (-50))\n                        replace item (3) of [r wireframe lines v] with [0]\n                    end\n                    if <(item (2) of [r wireframe lines v]) = [1]> then\n                        Draw Line (((d break x block) * (100)) + (50)) (((d break y block) * (100)) + (50)) (((d break z block) * (100)) + (-50)) to (((d break x block) * (100)) + (50)) (((d break y block) * (100)) + (50)) (((d break z block) * (100)) + (50))\n                        replace item (2) of [r wireframe lines v] with [0]\n                    end\n                    if <(item (1) of [r wireframe lines v]) = [1]> then\n                        Draw Line (((d break x block) * (100)) + (-50)) (((d break y block) * (100)) + (50)) (((d break z block) * (100)) + (50)) to (((d break x block) * (100)) + (50)) (((d break y block) * (100)) + (50)) (((d break z block) * (100)) + (50))\n                        replace item (1) of [r wireframe lines v] with [0]\n                    end\n                    if <(item (4) of [r wireframe lines v]) = [1]> then\n                        Draw Line (((d break x block) * (100)) + (-50)) (((d break y block) * (100)) + (50)) (((d break z block) * (100)) + (-50)) to (((d break x block) * (100)) + (-50)) (((d break y block) * (100)) + (50)) (((d break z block) * (100)) + (50))\n                        replace item (4) of [r wireframe lines v] with [0]\n                    end\n                end\n            end\n            if <(((d break y block) * (100)) + (-50)) > (cam y)> then\n                if <(item (((30) * ((d break x block) + (40))) + (((d break y block) + (-1)) + ((2400) * ((d break z block) + (40))))) of [b t blocks v]) = [0]> then\n                    if <(item (7) of [r wireframe lines v]) = [1]> then\n                        Draw Line (((d break x block) * (100)) + (-50)) (((d break y block) * (100)) + (-50)) (((d break z block) * (100)) + (-50)) to (((d break x block) * (100)) + (50)) (((d break y block) * (100)) + (-50)) (((d break z block) * (100)) + (-50))\n                        replace item (7) of [r wireframe lines v] with [0]\n                    end\n                    if <(item (6) of [r wireframe lines v]) = [1]> then\n                        Draw Line (((d break x block) * (100)) + (50)) (((d break y block) * (100)) + (-50)) (((d break z block) * (100)) + (-50)) to (((d break x block) * (100)) + (50)) (((d break y block) * (100)) + (-50)) (((d break z block) * (100)) + (50))\n                        replace item (6) of [r wireframe lines v] with [0]\n                    end\n                    if <(item (5) of [r wireframe lines v]) = [1]> then\n                        Draw Line (((d break x block) * (100)) + (-50)) (((d break y block) * (100)) + (-50)) (((d break z block) * (100)) + (50)) to (((d break x block) * (100)) + (50)) (((d break y block) * (100)) + (-50)) (((d break z block) * (100)) + (50))\n                        replace item (5) of [r wireframe lines v] with [0]\n                    end\n                    if <(item (8) of [r wireframe lines v]) = [1]> then\n                        Draw Line (((d break x block) * (100)) + (-50)) (((d break y block) * (100)) + (-50)) (((d break z block) * (100)) + (-50)) to (((d break x block) * (100)) + (-50)) (((d break y block) * (100)) + (-50)) (((d break z block) * (100)) + (50))\n                        replace item (8) of [r wireframe lines v] with [0]\n                    end\n                end\n            end\n        end\n    end\nend\n\ndefine // (note)\n\nrender [1]\n\n@3D Minecraft\n\nwhen flag clicked\nhide\n\nwhen this sprite clicked\nbroadcast (3D Minecraft v)\nhide\n\nwhen I receive [level editor v]\nhide\n\nwhen I receive [isometric v]\nhide\n\nwhen I receive [play v]\nhide\n\nwhen I receive [back v]\nshow\n\nwhen I receive [start v]\nshow\nforever\n    if <touching (mouse-pointer v)?> then\n        change size by (((120) - (size)) / (3))\n        set [ghost v] effect to (20)\n    else\n        change size by (((100) - (size)) / (3))\n        set [ghost v] effect to (-20)\n    end\nend\n\nwhen I receive [credits v]\nhide\n\n