~/bend-docscommunity

minecraft.bend fails

raw source on the hub · import 0xc517d5d3635f5bc3ec47170caccaebf0/minecraft.bend as Minecraft

7 imports
import Base
import ./blocks.bend as B
import ./world.bend as W
import ./render.bend as R
import ./player.bend as PL
import ./physics.bend as PH
import ./mobs.bend as MB

Types

type Edit source · line 33 · raw

Data

type Acc source · line 36 · raw

Data

type State source · line 39 · raw

Data

Definitions

def MC.quality source · line 60 · raw

Nat

---------------- resolution ---------------- The display backend walks the Image quadtree on the GPU, one thread per screen pixel, down to depth k = ceil_pow2(max(win_w, win_h)). Two regimes: - depth < k: each rendered pixel magnifies to 2^(k-depth) screen pixels (free integer upscale, chunky retro look). - depth >= k: 1:1 pixels (depth > k wastes rays point-picking tl). So: match depth to the window (2^depth >= max(w,h), minimal) for 1:1, or render small for speed and let the backend upscale. CPU cost ~= leaves * raymarch: 128^2 ~60fps, 256^2 ~15fps, 512^2 ~4fps. PRESETS (edit quality/win_w/win_h together): Smooth: 7n / 128 / 128 (60fps CPU) Balanced: 8n / 256 / 256 (~15fps CPU) Big: 9n / 512 / 512 (~4fps CPU, needs GPU for realtime) 1080p: 9n / 1920 / 1080 (512 render upscaled x4, chunky 1080p) FullHD: 11n / 1920 / 1080 (true 1:1 1080p, GPU ! only, experimental) GPU NOTE: replace MC.build with MC.build! inside frame_q to run the whole quadtree build on the GPU (needs clang 19+, Metal on Mac / CUDA on Linux). Untested here (no GPU in this box) — keep the CPU path as fallback.

def MC.win_w source · line 63 · raw

U32

def MC.win_h source · line 66 · raw

U32

def MC.acc_empty source · line 71 · raw

Acc

def MC.set_fw source · line 74 · raw

@a:Acc -> @v:Bool -> Acc

def MC.set_back source · line 79 · raw

@a:Acc -> @v:Bool -> Acc

def MC.set_left source · line 84 · raw

@a:Acc -> @v:Bool -> Acc

def MC.set_right source · line 89 · raw

@a:Acc -> @v:Bool -> Acc

def MC.set_jump source · line 94 · raw

@a:Acc -> @v:Bool -> Acc

def MC.set_down source · line 99 · raw

@a:Acc -> @v:Bool -> Acc

def MC.set_brk source · line 104 · raw

@a:Acc -> @v:Bool -> Acc

def MC.set_plc source · line 109 · raw

@a:Acc -> @v:Bool -> Acc

def MC.set_flytog source · line 114 · raw

@a:Acc -> @v:Bool -> Acc

def MC.set_spr source · line 119 · raw

@a:Acc -> @v:Bool -> Acc

def MC.set_snk source · line 124 · raw

@a:Acc -> @v:Bool -> Acc

def MC.set_atk source · line 129 · raw

@a:Acc -> @v:Bool -> Acc

def MC.set_hot source · line 134 · raw

@a:Acc -> @v:U32 -> Acc

def MC.set_quit source · line 139 · raw

@a:Acc -> @v:Bool -> Acc

def MC.add_look source · line 144 · raw

@a:Acc -> @dx:F32 -> @dy:F32 -> Acc

def MC.is_fw source · line 150 · raw

@+c:U32 -> Bool

Local movement predicates: WASD only (arrows are look keys here).

def MC.is_back source · line 153 · raw

@+c:U32 -> Bool

def MC.is_left source · line 156 · raw

@+c:U32 -> Bool

def MC.is_right source · line 159 · raw

@+c:U32 -> Bool

def MC.is_lookL source · line 163 · raw

@+c:U32 -> Bool

Look keys: JLIK + arrows. Linux arrows are 37-40, Mac arrows 63232-63235.

def MC.is_lookR source · line 166 · raw

@+c:U32 -> Bool

def MC.is_lookU source · line 169 · raw

@+c:U32 -> Bool

def MC.is_lookD source · line 172 · raw

@+c:U32 -> Bool

def MC.kd_hot9 source · line 176 · raw

@on:Bool -> @a:Acc -> @+c:U32 -> Acc

key-down chain (each link: match on Bool param, never computed).

def MC.kd_hot8 source · line 183 · raw

@on:Bool -> @a:Acc -> @+c:U32 -> Acc

def MC.kd_hot7 source · line 190 · raw

@on:Bool -> @a:Acc -> @+c:U32 -> Acc

def MC.kd_hot6 source · line 197 · raw

@on:Bool -> @a:Acc -> @+c:U32 -> Acc

def MC.kd_hot5 source · line 204 · raw

@on:Bool -> @a:Acc -> @+c:U32 -> Acc

def MC.kd_hot4 source · line 211 · raw

@on:Bool -> @a:Acc -> @+c:U32 -> Acc

def MC.kd_hot3 source · line 218 · raw

@on:Bool -> @a:Acc -> @+c:U32 -> Acc

def MC.kd_hot2 source · line 225 · raw

@on:Bool -> @a:Acc -> @+c:U32 -> Acc

def MC.kd_hot1 source · line 232 · raw

@on:Bool -> @a:Acc -> @+c:U32 -> Acc

def MC.kd_quit source · line 239 · raw

@on:Bool -> @a:Acc -> @+c:U32 -> Acc

def MC.kd_snk source · line 246 · raw

@on:Bool -> @a:Acc -> @+c:U32 -> Acc

def MC.kd_spr source · line 253 · raw

@on:Bool -> @a:Acc -> @+c:U32 -> Acc

def MC.kd_atk source · line 260 · raw

@on:Bool -> @a:Acc -> @+c:U32 -> Acc

def MC.kd_fly source · line 267 · raw

@on:Bool -> @a:Acc -> @+c:U32 -> Acc

def MC.kd_plc source · line 274 · raw

@on:Bool -> @a:Acc -> @+c:U32 -> Acc

def MC.kd_brk source · line 281 · raw

@on:Bool -> @a:Acc -> @+c:U32 -> Acc

def MC.kd_down source · line 288 · raw

@on:Bool -> @a:Acc -> @+c:U32 -> Acc

def MC.kd_jump source · line 295 · raw

@on:Bool -> @a:Acc -> @+c:U32 -> Acc

def MC.kd_lookD source · line 302 · raw

@on:Bool -> @a:Acc -> @+c:U32 -> Acc

def MC.kd_lookU source · line 309 · raw

@on:Bool -> @a:Acc -> @+c:U32 -> Acc

def MC.kd_lookR source · line 316 · raw

@on:Bool -> @a:Acc -> @+c:U32 -> Acc

def MC.kd_lookL source · line 323 · raw

@on:Bool -> @a:Acc -> @+c:U32 -> Acc

def MC.kd_right source · line 330 · raw

@on:Bool -> @a:Acc -> @+c:U32 -> Acc

def MC.kd_left source · line 337 · raw

@on:Bool -> @a:Acc -> @+c:U32 -> Acc

def MC.kd_back source · line 344 · raw

@on:Bool -> @a:Acc -> @+c:U32 -> Acc

def MC.kd_fw source · line 351 · raw

@on:Bool -> @a:Acc -> @+c:U32 -> Acc

def MC.kd source · line 358 · raw

@a:Acc -> @+c:U32 -> Acc

def MC.ku_jump source · line 363 · raw

@on:Bool -> @a:Acc -> @+c:U32 -> Acc

key-up: clear held movement flags.

def MC.ku_look source · line 370 · raw

@on:Bool -> @a:Acc -> @+c:U32 -> Acc

def MC.ku_snk source · line 377 · raw

@on:Bool -> @a:Acc -> @+c:U32 -> Acc

def MC.ku_spr source · line 384 · raw

@on:Bool -> @a:Acc -> @+c:U32 -> Acc

def MC.ku_right source · line 391 · raw

@on:Bool -> @a:Acc -> @+c:U32 -> Acc

def MC.ku_left source · line 398 · raw

@on:Bool -> @a:Acc -> @+c:U32 -> Acc

def MC.ku_back source · line 405 · raw

@on:Bool -> @a:Acc -> @+c:U32 -> Acc

def MC.ku_fw source · line 412 · raw

@on:Bool -> @a:Acc -> @+c:U32 -> Acc

def MC.ku source · line 419 · raw

@a:Acc -> @+c:U32 -> Acc

def MC.key source · line 423 · raw

@a:Acc -> @c:U32 -> @down:Bool -> Acc

def MC.mb_plc source · line 430 · raw

@on:Bool -> @a:Acc -> Acc

def MC.mb_brk source · line 437 · raw

@on:Bool -> @a:Acc -> @btn:U32 -> Acc

def MC.mouse source · line 444 · raw

@a:Acc -> @+btn:U32 -> @down:Bool -> Acc

def MC.press source · line 451 · raw

@a:Acc -> @e:Event -> Acc

def MC.fold source · line 462 · raw

@events:List<&1, Event> -> @acc:Acc -> Acc

def MC.edit_miss source · line 471 · raw

Pair(U32, Bool)

def MC.edit_hit source · line 474 · raw

@v:U32 -> Pair(U32, Bool)

def MC.edit_pick source · line 477 · raw

@eq:Bool -> @v:U32 -> @pv:U32 -> @pf:Bool -> Pair(U32, Bool)

def MC.edit_combine source · line 484 · raw

@eq:Bool -> @v:U32 -> @prev:Pair(U32, Bool) -> Pair(U32, Bool)

def MC.edit_head source · line 488 · raw

@h:Edit -> @+t:List<&2, Edit> -> @+idx:U32 -> @prev:Pair(U32, Bool) -> Pair(U32, Bool)

def MC.edit_lookup source · line 493 · raw

@+edits:List<&2, Edit> -> @+idx:U32 -> Pair(U32, Bool)

def MC.elen source · line 500 · raw

@fuel:Nat -> @+edits:List<&2, Edit> -> U32

def MC.push_go source · line 509 · raw

@ok:Bool -> @+edits:List<&2, Edit> -> @idx:U32 -> @v:U32 -> List<&2, Edit>

def MC.push source · line 516 · raw

@+edits:List<&2, Edit> -> @idx:U32 -> @v:U32 -> List<&2, Edit>

def MC.flat_idx source · line 521 · raw

@x:U32 -> @y:U32 -> @z:U32 -> U32

def MC.tree_lo source · line 528 · raw

@lo:Bool -> U32

Per-column tree approximation: trunk h+1..h+2, canopy h+3..h+4.

def MC.tree_hi source · line 535 · raw

@hi:Bool -> @lo:Bool -> U32

def MC.tree_voxel source · line 542 · raw

@+y:U32 -> @+h:U32 -> U32

def MC.tree_pick source · line 545 · raw

@is_tree:Bool -> @+seed:U32 -> @+x:U32 -> @+y:U32 -> @+z:U32 -> @+h:U32 -> U32

def MC.terrain source · line 552 · raw

@+seed:U32 -> @+x:U32 -> @+y:U32 -> @+z:U32 -> U32

def MC.voxel_pick source · line 556 · raw

@hit:Bool -> @v:U32 -> @+seed:U32 -> @+x:U32 -> @+y:U32 -> @+z:U32 -> U32

def MC.voxel_found source · line 563 · raw

@found:Pair(U32, Bool) -> @+seed:U32 -> @+x:U32 -> @+y:U32 -> @+z:U32 -> U32

def MC.voxel_oob source · line 567 · raw

@oob:Bool -> @+seed:U32 -> @+edits:List<&2, Edit> -> @+x:U32 -> @+y:U32 -> @+z:U32 -> U32

def MC.voxel source · line 574 · raw

@+seed:U32 -> @+edits:List<&2, Edit> -> @+x:U32 -> @+y:U32 -> @+z:U32 -> U32

def MC.eye_water source · line 577 · raw

@+seed:U32 -> @+edits:List<&2, Edit> -> @px:F32 -> @py:F32 -> @pz:F32 -> Bool

def MC.face_x source · line 583 · raw

@pos:Bool -> U32

Face id from dominant ray axis (0 top,1 bottom,2 +x,3 -x,4 +z,5 -z).

def MC.face_y source · line 590 · raw

@pos:Bool -> U32

def MC.face_z source · line 597 · raw

@pos:Bool -> U32

def MC.face_yz source · line 604 · raw

@y_dom:Bool -> @+dy:F32 -> @+dz:F32 -> U32

def MC.face_pick source · line 611 · raw

@x_dom:Bool -> @y_dom:Bool -> @+dx:F32 -> @+dy:F32 -> @+dz:F32 -> U32

def MC.face_of source · line 618 · raw

@+dx:F32 -> @+dy:F32 -> @+dz:F32 -> U32

def MC.sky_fin source · line 624 · raw

@cloud:Bool -> @sun:U32 -> U32

def MC.sky_at source · line 631 · raw

@+dx:F32 -> @+dy:F32 -> @+dz:F32 -> @+time:F32 -> @x:F32 -> @z:F32 -> U32

def MC.tex_hash source · line 634 · raw

@+ix:U32 -> @+iy:U32 -> @+iz:U32 -> @+face:U32 -> U32

def MC.tex_br source · line 641 · raw

@h:U32 -> F32

def MC.tex_scale source · line 644 · raw

@+color:U32 -> @+ix:U32 -> @+iy:U32 -> @+iz:U32 -> @+face:U32 -> U32

def MC.daylight source · line 650 · raw

@+time:F32 -> F32

def MC.day_scale source · line 656 · raw

@+color:U32 -> @+time:F32 -> U32

def MC.frac source · line 667 · raw

@+a:F32 -> F32

def MC.tex_uv_go source · line 670 · raw

@top:Bool -> @side_x:Bool -> @+hx:F32 -> @+hy:F32 -> @+hz:F32 -> Pair(F32, F32)

def MC.tex_uv source · line 679 · raw

@+face:U32 -> @+hx:F32 -> @+hy:F32 -> @+hz:F32 -> Pair(F32, F32)

def MC.pick2 source · line 682 · raw

@on:Bool -> @a:U32 -> @b:U32 -> U32

def MC.checker source · line 689 · raw

@tu:U32 -> @tv:U32 -> @a:U32 -> @b:U32 -> U32

def MC.pat_grass_side source · line 692 · raw

@top_row:Bool -> @tu:U32 -> @tv:U32 -> U32

def MC.pat_grass source · line 699 · raw

@top:Bool -> @bot:Bool -> @+tu:U32 -> @+tv:U32 -> U32

def MC.pat_mortar source · line 708 · raw

@tu:U32 -> @tv:U32 -> U32

def MC.pat_wood source · line 711 · raw

@tu:U32 -> U32

def MC.pat_dither source · line 714 · raw

@tu:U32 -> @tv:U32 -> @ix:U32 -> @iz:U32 -> @a:U32 -> @b:U32 -> U32

def MC.pat11 source · line 717 · raw

@eq:Bool -> @+bid:U32 -> @+tu:U32 -> @+tv:U32 -> @+ix:U32 -> @+iy:U32 -> @+iz:U32 -> @+face:U32 -> U32

def MC.pat10 source · line 724 · raw

@eq:Bool -> @+bid:U32 -> @+tu:U32 -> @+tv:U32 -> @+ix:U32 -> @+iy:U32 -> @+iz:U32 -> @+face:U32 -> U32

def MC.pat09 source · line 731 · raw

@eq:Bool -> @+bid:U32 -> @+tu:U32 -> @+tv:U32 -> @+ix:U32 -> @+iy:U32 -> @+iz:U32 -> @+face:U32 -> U32

def MC.pat08 source · line 738 · raw

@eq:Bool -> @+bid:U32 -> @+tu:U32 -> @+tv:U32 -> @+ix:U32 -> @+iy:U32 -> @+iz:U32 -> @+face:U32 -> U32

def MC.pat07 source · line 745 · raw

@eq:Bool -> @+bid:U32 -> @+tu:U32 -> @+tv:U32 -> @+ix:U32 -> @+iy:U32 -> @+iz:U32 -> @+face:U32 -> U32

def MC.pat06 source · line 752 · raw

@eq:Bool -> @+bid:U32 -> @+tu:U32 -> @+tv:U32 -> @+ix:U32 -> @+iy:U32 -> @+iz:U32 -> @+face:U32 -> U32

def MC.pat05 source · line 759 · raw

@eq:Bool -> @+bid:U32 -> @+tu:U32 -> @+tv:U32 -> @+ix:U32 -> @+iy:U32 -> @+iz:U32 -> @+face:U32 -> U32

def MC.pat04 source · line 766 · raw

@eq:Bool -> @+bid:U32 -> @+tu:U32 -> @+tv:U32 -> @+ix:U32 -> @+iy:U32 -> @+iz:U32 -> @+face:U32 -> U32

def MC.pat03 source · line 773 · raw

@eq:Bool -> @+bid:U32 -> @+tu:U32 -> @+tv:U32 -> @+ix:U32 -> @+iy:U32 -> @+iz:U32 -> @+face:U32 -> U32

def MC.pat02 source · line 780 · raw

@eq:Bool -> @+bid:U32 -> @+tu:U32 -> @+tv:U32 -> @+ix:U32 -> @+iy:U32 -> @+iz:U32 -> @+face:U32 -> U32

def MC.pat01 source · line 787 · raw

@eq:Bool -> @+bid:U32 -> @+tu:U32 -> @+tv:U32 -> @+ix:U32 -> @+iy:U32 -> @+iz:U32 -> @+face:U32 -> U32

def MC.pat source · line 794 · raw

@+bid:U32 -> @+face:U32 -> @tu:U32 -> @tv:U32 -> @+ix:U32 -> @+iy:U32 -> @+iz:U32 -> U32

def MC.texel_go source · line 797 · raw

@uv:Pair(F32, F32) -> @+bid:U32 -> @+face:U32 -> @+ix:U32 -> @+iy:U32 -> @+iz:U32 -> U32

def MC.texel source · line 801 · raw

@+bid:U32 -> @+face:U32 -> @+ix:U32 -> @+iy:U32 -> @+iz:U32 -> @+hx:F32 -> @+hy:F32 -> @+hz:F32 -> U32

def MC.hit_shade source · line 804 · raw

@+bid:U32 -> @+steps:U32 -> @+dx:F32 -> @+dy:F32 -> @+dz:F32 -> @+ix:U32 -> @+iy:U32 -> @+iz:U32 -> @+hx:F32 -> @+hy:F32 -> @+hz:F32 -> @+time:F32 -> U32

def MC.march source · line 813 · raw

@fuel:Nat -> @+seed:U32 -> @+edits:List<&2, Edit> -> @ox:F32 -> @oy:F32 -> @oz:F32 -> @+dx:F32 -> @+dy:F32 -> @+dz:F32 -> @bid:U32 -> @empty:Bool -> @+ix:U32 -> @+iy:U32 -> @+iz:U32 -> @+steps:U32 -> @+time:F32 -> U32

Single self-recursive raymarcher (Bend forbids mutual recursion, so the step/hit/march trio is one def). bid/empty ride along as params, seeded with (0, True) by pixel_go; each step computes the next pair as call args.

def MC.cross source · line 833 · raw

@on:Bool -> @c:U32 -> U32

def MC.slot_block8 source · line 840 · raw

@s:U32 -> U32

def MC.slot_block7 source · line 843 · raw

@eq:Bool -> @+s:U32 -> U32

def MC.slot_block6 source · line 850 · raw

@eq:Bool -> @+s:U32 -> U32

def MC.slot_block5 source · line 857 · raw

@eq:Bool -> @+s:U32 -> U32

def MC.slot_block4 source · line 864 · raw

@eq:Bool -> @+s:U32 -> U32

def MC.slot_block3 source · line 871 · raw

@eq:Bool -> @+s:U32 -> U32

def MC.slot_block2 source · line 878 · raw

@eq:Bool -> @+s:U32 -> U32

def MC.slot_block1 source · line 885 · raw

@eq:Bool -> @+s:U32 -> U32

def MC.slot_block source · line 893 · raw

@+s:U32 -> U32

Mirrors PL.Hotbar.default slots [1,3,4,9,6,5,10,11,2].

def MC.slot_color source · line 896 · raw

@x:U32 -> @sel:U32 -> U32

def MC.hud_go source · line 900 · raw

@is_hud:Bool -> @x:U32 -> @sel:U32 -> @vcolor:U32 -> U32

def MC.hud_bar source · line 907 · raw

U32

def MC.heart_top source · line 910 · raw

U32

def MC.heart_bot source · line 913 · raw

U32

def MC.half_w source · line 916 · raw

U32

def MC.cell_w source · line 919 · raw

U32

def MC.mob_pick source · line 923 · raw

@hit:Bool -> @color:U32 -> @prev:Pair(U32, Bool) -> Pair(U32, Bool)

Mob billboard: first mob whose 3D direction aligns with the ray.

def MC.mob_test source · line 930 · raw

@dist2:F32 -> @dot:F32 -> @color:U32 -> @prev:Pair(U32, Bool) -> Pair(U32, Bool)

def MC.mob_dot_len source · line 933 · raw

@ok:Bool -> @vx:F32 -> @vy:F32 -> @vz:F32 -> @+d2:F32 -> @+dx:F32 -> @+dy:F32 -> @+dz:F32 -> @id:U32 -> @prev:Pair(U32, Bool) -> Pair(U32, Bool)

def MC.mob_dot_go source · line 941 · raw

@m:0xc517d5d3635f5bc3ec47170caccaebf0/mobs.Mob -> @ox:F32 -> @oy:F32 -> @oz:F32 -> @+dx:F32 -> @+dy:F32 -> @+dz:F32 -> @prev:Pair(U32, Bool) -> Pair(U32, Bool)

def MC.mob_dot source · line 950 · raw

@+mobs:List<&2, 0xc517d5d3635f5bc3ec47170caccaebf0/mobs.Mob> -> @+ox:F32 -> @+oy:F32 -> @+oz:F32 -> @+dx:F32 -> @+dy:F32 -> @+dz:F32 -> Pair(U32, Bool)

def MC.heart_ok source · line 957 · raw

@valid:Bool -> @full:Bool -> @base:U32 -> U32

def MC.heart_dot source · line 968 · raw

@+i:U32 -> @hp:U32 -> @base:U32 -> U32

def MC.food_dot source · line 971 · raw

@+j:U32 -> @food:U32 -> @base:U32 -> U32

def MC.hearts_side source · line 974 · raw

@left:Bool -> @x:U32 -> @hp:U32 -> @food:U32 -> @base:U32 -> U32

def MC.post_hearts source · line 981 · raw

@is_row:Bool -> @+x:U32 -> @hp:U32 -> @food:U32 -> @base:U32 -> U32

def MC.post_flash source · line 988 · raw

@base:U32 -> @hurt:U32 -> U32

def MC.post_water source · line 991 · raw

@uw:Bool -> @c:U32 -> U32

def MC.pixel_post source · line 998 · raw

@+x:U32 -> @+y:U32 -> @+sel:U32 -> @+hp:U32 -> @+food:U32 -> @+hurt:U32 -> @+uw:Bool -> @base:U32 -> U32

def MC.pixel_pick source · line 1004 · raw

@hit:Bool -> @mc:U32 -> @+seed:U32 -> @+edits:List<&2, Edit> -> @ox:F32 -> @oy:F32 -> @oz:F32 -> @+dx:F32 -> @+dy:F32 -> @+dz:F32 -> @+x:U32 -> @+y:U32 -> @+sel:U32 -> @+hp:U32 -> @+food:U32 -> @+hurt:U32 -> @+uw:Bool -> @+time:F32 -> U32

def MC.pixel_mob source · line 1011 · raw

@mhit:Pair(U32, Bool) -> @+seed:U32 -> @+edits:List<&2, Edit> -> @ox:F32 -> @oy:F32 -> @oz:F32 -> @+dx:F32 -> @+dy:F32 -> @+dz:F32 -> @+x:U32 -> @+y:U32 -> @+sel:U32 -> @+hp:U32 -> @+food:U32 -> @+hurt:U32 -> @+uw:Bool -> @+time:F32 -> U32

def MC.pixel_go source · line 1015 · raw

@+seed:U32 -> @+edits:List<&2, Edit> -> @+mobs:List<&2, 0xc517d5d3635f5bc3ec47170caccaebf0/mobs.Mob> -> @r:0xc517d5d3635f5bc3ec47170caccaebf0/render.Ray -> @+x:U32 -> @+y:U32 -> @+sel:U32 -> @+hp:U32 -> @+food:U32 -> @+hurt:U32 -> @+uw:Bool -> @+time:F32 -> U32

def MC.pixel source · line 1020 · raw

@+seed:U32 -> @+edits:List<&2, Edit> -> @+mobs:List<&2, 0xc517d5d3635f5bc3ec47170caccaebf0/mobs.Mob> -> @+cam:0xc517d5d3635f5bc3ec47170caccaebf0/render.Cam -> @+x:U32 -> @+y:U32 -> @+sel:U32 -> @+hp:U32 -> @+food:U32 -> @+hurt:U32 -> @+uw:Bool -> @+time:F32 -> U32

def MC.build source · line 1023 · raw

@+seed:U32 -> @+edits:List<&2, Edit> -> @+mobs:List<&2, 0xc517d5d3635f5bc3ec47170caccaebf0/mobs.Mob> -> @+cam:0xc517d5d3635f5bc3ec47170caccaebf0/render.Cam -> @+size:Nat -> @+x0:U32 -> @+y0:U32 -> @+sel:U32 -> @+hp:U32 -> @+food:U32 -> @+hurt:U32 -> @+uw:Bool -> @+time:F32 -> Image

def MC.frame source · line 1035 · raw

@+seed:U32 -> @+edits:List<&2, Edit> -> @+mobs:List<&2, 0xc517d5d3635f5bc3ec47170caccaebf0/mobs.Mob> -> @+cam:0xc517d5d3635f5bc3ec47170caccaebf0/render.Cam -> @+sel:U32 -> @+hp:U32 -> @+food:U32 -> @+hurt:U32 -> @+uw:Bool -> @+time:F32 -> Image

def MC.view_cam source · line 1040 · raw

@+seed:U32 -> @+px:F32 -> @+py:F32 -> @+pz:F32 -> @+yaw:F32 -> @+pitch:F32 -> @+vy:F32 -> @+og:Bool -> @+fly:Bool -> @+hb:0xc517d5d3635f5bc3ec47170caccaebf0/player.Hotbar -> @+edits:List<&2, Edit> -> @+hp:U32 -> @+food:U32 -> @+hurt:U32 -> @+mobs:List<&2, 0xc517d5d3635f5bc3ec47170caccaebf0/mobs.Mob> -> @+tickn:U32 -> @+time:F32 -> @sel:U32 -> @uw:Bool -> @cam:0xc517d5d3635f5bc3ec47170caccaebf0/render.Cam -> Pair(State, Image)

def MC.view_go source · line 1043 · raw

@+seed:U32 -> @+px:F32 -> @+py:F32 -> @+pz:F32 -> @+yaw:F32 -> @+pitch:F32 -> @+vy:F32 -> @+og:Bool -> @+fly:Bool -> @+hb:0xc517d5d3635f5bc3ec47170caccaebf0/player.Hotbar -> @+edits:List<&2, Edit> -> @+hp:U32 -> @+food:U32 -> @+hurt:U32 -> @+mobs:List<&2, 0xc517d5d3635f5bc3ec47170caccaebf0/mobs.Mob> -> @+tickn:U32 -> @+time:F32 -> @sel:U32 -> Pair(State, Image)

def view source · line 1046 · raw

@state:State -> Pair(State, Image)

def MC.cap_x source · line 1053 · raw

@lt:Bool -> @ux:U32 -> U32

def MC.clamp_xz source · line 1060 · raw

@v:F32 -> U32

def MC.ground_y source · line 1064 · raw

@+seed:U32 -> @px:F32 -> @pz:F32 -> F32

def MC.do_look source · line 1067 · raw

@s:State -> @dx:F32 -> @dy:F32 -> State

def MC.hot_go source · line 1072 · raw

@lt:Bool -> @hb:0xc517d5d3635f5bc3ec47170caccaebf0/player.Hotbar -> @hot:U32 -> 0xc517d5d3635f5bc3ec47170caccaebf0/player.Hotbar

def MC.do_hot source · line 1079 · raw

@s:State -> @+hot:U32 -> State

def MC.move_apply source · line 1084 · raw

@s:State -> @dx:F32 -> @dz:F32 -> State

def MC.do_strafe source · line 1089 · raw

@s:State -> @+side:F32 -> State

def MC.spd_snk source · line 1096 · raw

@snk:Bool -> F32

def MC.spd_pick source · line 1103 · raw

@spr:Bool -> @snk:Bool -> F32

def MC.spd source · line 1110 · raw

@spr:Bool -> @snk:Bool -> F32

def MC.mv_side source · line 1113 · raw

@l:Bool -> @r:Bool -> @spd:F32 -> F32

def MC.mv_fwd source · line 1124 · raw

@f:Bool -> @b:Bool -> @spd:F32 -> F32

def MC.do_move source · line 1135 · raw

@s:State -> @f:Bool -> @b:Bool -> @l:Bool -> @r:Bool -> @+spd:F32 -> State

def MC.fly_go source · line 1146 · raw

@fly:Bool -> @s:State -> State

def MC.do_fly source · line 1155 · raw

@s:State -> @tog:Bool -> State

def MC.jump_og source · line 1158 · raw

@og:Bool -> @s:State -> State

def MC.jump_ground source · line 1167 · raw

@jump:Bool -> @s:State -> State

def MC.jump_ud source · line 1176 · raw

@jump:Bool -> @down:Bool -> @s:State -> State

def MC.jump_fly source · line 1191 · raw

@fly:Bool -> @s:State -> @jump:Bool -> @down:Bool -> State

def MC.do_jump source · line 1200 · raw

@s:State -> @jump:Bool -> @down:Bool -> State

def MC.term_v source · line 1205 · raw

@lt:Bool -> @v:F32 -> F32

def MC.hp_go source · line 1212 · raw

@ok:Bool -> @hp:U32 -> @dmg:U32 -> U32

def MC.hp_sub source · line 1219 · raw

@+hp:U32 -> @+dmg:U32 -> U32

def MC.landed_hp source · line 1222 · raw

@no_dmg:Bool -> @+seed:U32 -> @px:F32 -> @pz:F32 -> @+yaw:F32 -> @+pitch:F32 -> @+fly:Bool -> @+hb:0xc517d5d3635f5bc3ec47170caccaebf0/player.Hotbar -> @+edits:List<&2, Edit> -> @+hp:U32 -> @+food:U32 -> @+hurt:U32 -> @+mobs:List<&2, 0xc517d5d3635f5bc3ec47170caccaebf0/mobs.Mob> -> @+tickn:U32 -> @+time:F32 -> @gy:F32 -> @dmg:U32 -> State

def MC.landed source · line 1229 · raw

@land:Bool -> @+seed:U32 -> @px:F32 -> @pz:F32 -> @+yaw:F32 -> @+pitch:F32 -> @+fly:Bool -> @+hb:0xc517d5d3635f5bc3ec47170caccaebf0/player.Hotbar -> @+edits:List<&2, Edit> -> @+hp:U32 -> @+food:U32 -> @+hurt:U32 -> @+mobs:List<&2, 0xc517d5d3635f5bc3ec47170caccaebf0/mobs.Mob> -> @+tickn:U32 -> @+time:F32 -> @new_py:F32 -> @new_vy:F32 -> @gy:F32 -> @v2:F32 -> State

def MC.fall_step source · line 1237 · raw

@+seed:U32 -> @+px:F32 -> @+py:F32 -> @+pz:F32 -> @+yaw:F32 -> @+pitch:F32 -> @+vy:F32 -> @+fly:Bool -> @+hb:0xc517d5d3635f5bc3ec47170caccaebf0/player.Hotbar -> @+edits:List<&2, Edit> -> @+hp:U32 -> @+food:U32 -> @+hurt:U32 -> @+mobs:List<&2, 0xc517d5d3635f5bc3ec47170caccaebf0/mobs.Mob> -> @+tickn:U32 -> @+time:F32 -> State

def MC.phys_fly source · line 1243 · raw

@fly:Bool -> @+seed:U32 -> @px:F32 -> @py:F32 -> @pz:F32 -> @+yaw:F32 -> @+pitch:F32 -> @vy:F32 -> @+hb:0xc517d5d3635f5bc3ec47170caccaebf0/player.Hotbar -> @+edits:List<&2, Edit> -> @+hp:U32 -> @+food:U32 -> @+hurt:U32 -> @+mobs:List<&2, 0xc517d5d3635f5bc3ec47170caccaebf0/mobs.Mob> -> @+tickn:U32 -> @+time:F32 -> State

def MC.do_phys source · line 1250 · raw

@s:State -> State

def MC.march_idx source · line 1257 · raw

@fuel:Nat -> @ex:F32 -> @ey:F32 -> @ez:F32 -> @fx:F32 -> @fy:F32 -> @fz:F32 -> U32

def MC.target_idx source · line 1267 · raw

@px:F32 -> @py:F32 -> @pz:F32 -> @+yaw:F32 -> @+pitch:F32 -> U32

def MC.brk_go source · line 1276 · raw

@ok:Bool -> @+edits:List<&2, Edit> -> @idx:U32 -> List<&2, Edit>

def MC.brk_fin source · line 1283 · raw

@ok:Bool -> @+seed:U32 -> @+px:F32 -> @+py:F32 -> @+pz:F32 -> @+yaw:F32 -> @+pitch:F32 -> @+vy:F32 -> @+og:Bool -> @+fly:Bool -> @+hb:0xc517d5d3635f5bc3ec47170caccaebf0/player.Hotbar -> @+edits:List<&2, Edit> -> @+hp:U32 -> @+food:U32 -> @+hurt:U32 -> @+mobs:List<&2, 0xc517d5d3635f5bc3ec47170caccaebf0/mobs.Mob> -> @+tickn:U32 -> @+time:F32 -> @idx:U32 -> State

def MC.brk_with source · line 1286 · raw

@+seed:U32 -> @+px:F32 -> @+py:F32 -> @+pz:F32 -> @+yaw:F32 -> @+pitch:F32 -> @+vy:F32 -> @+og:Bool -> @+fly:Bool -> @+hb:0xc517d5d3635f5bc3ec47170caccaebf0/player.Hotbar -> @+edits:List<&2, Edit> -> @+hp:U32 -> @+food:U32 -> @+hurt:U32 -> @+mobs:List<&2, 0xc517d5d3635f5bc3ec47170caccaebf0/mobs.Mob> -> @+tickn:U32 -> @+time:F32 -> State

def MC.do_break source · line 1295 · raw

@s:State -> State

def MC.plc_go source · line 1300 · raw

@empty:Bool -> @+edits:List<&2, Edit> -> @idx:U32 -> @blk:U32 -> List<&2, Edit>

def MC.plc_fin source · line 1307 · raw

@empty:Bool -> @+seed:U32 -> @+px:F32 -> @+py:F32 -> @+pz:F32 -> @+yaw:F32 -> @+pitch:F32 -> @+vy:F32 -> @+og:Bool -> @+fly:Bool -> @+hb:0xc517d5d3635f5bc3ec47170caccaebf0/player.Hotbar -> @+edits:List<&2, Edit> -> @+hp:U32 -> @+food:U32 -> @+hurt:U32 -> @+mobs:List<&2, 0xc517d5d3635f5bc3ec47170caccaebf0/mobs.Mob> -> @+tickn:U32 -> @+time:F32 -> @idx:U32 -> State

def MC.plc_with source · line 1310 · raw

@+seed:U32 -> @+px:F32 -> @+py:F32 -> @+pz:F32 -> @+yaw:F32 -> @+pitch:F32 -> @+vy:F32 -> @+og:Bool -> @+fly:Bool -> @+hb:0xc517d5d3635f5bc3ec47170caccaebf0/player.Hotbar -> @+edits:List<&2, Edit> -> @+hp:U32 -> @+food:U32 -> @+hurt:U32 -> @+mobs:List<&2, 0xc517d5d3635f5bc3ec47170caccaebf0/mobs.Mob> -> @+tickn:U32 -> @+time:F32 -> State

def MC.do_place source · line 1319 · raw

@s:State -> State

def MC.time_wrap source · line 1324 · raw

@ge:Bool -> @t:F32 -> F32

def MC.do_time source · line 1331 · raw

@s:State -> State

def MC.night source · line 1339 · raw

@+time:F32 -> Bool

def MC.adopt source · line 1342 · raw

@l:List<&1, 0xc517d5d3635f5bc3ec47170caccaebf0/mobs.Mob> -> List<&2, 0xc517d5d3635f5bc3ec47170caccaebf0/mobs.Mob>

def MC.step_one_go source · line 1349 · raw

@dead:Bool -> @nm:0xc517d5d3635f5bc3ec47170caccaebf0/mobs.Mob -> @rec:List<&2, 0xc517d5d3635f5bc3ec47170caccaebf0/mobs.Mob> -> List<&2, 0xc517d5d3635f5bc3ec47170caccaebf0/mobs.Mob>

def MC.step_mobs source · line 1356 · raw

@+l:List<&2, 0xc517d5d3635f5bc3ec47170caccaebf0/mobs.Mob> -> @+px:F32 -> @+pz:F32 -> @+night:Bool -> @+tick:U32 -> List<&2, 0xc517d5d3635f5bc3ec47170caccaebf0/mobs.Mob>

def MC.atk_hit source · line 1364 · raw

@close:Bool -> @m:0xc517d5d3635f5bc3ec47170caccaebf0/mobs.Mob -> @rec:List<&2, 0xc517d5d3635f5bc3ec47170caccaebf0/mobs.Mob> -> List<&2, 0xc517d5d3635f5bc3ec47170caccaebf0/mobs.Mob>

def MC.atk_one source · line 1371 · raw

@m:0xc517d5d3635f5bc3ec47170caccaebf0/mobs.Mob -> @+px:F32 -> @+py:F32 -> @+pz:F32 -> @rec:List<&2, 0xc517d5d3635f5bc3ec47170caccaebf0/mobs.Mob> -> List<&2, 0xc517d5d3635f5bc3ec47170caccaebf0/mobs.Mob>

def MC.attack_mobs source · line 1381 · raw

@+l:List<&2, 0xc517d5d3635f5bc3ec47170caccaebf0/mobs.Mob> -> @+px:F32 -> @+py:F32 -> @+pz:F32 -> List<&2, 0xc517d5d3635f5bc3ec47170caccaebf0/mobs.Mob>

def MC.atk_go source · line 1388 · raw

@atk:Bool -> @+seed:U32 -> @+px:F32 -> @+py:F32 -> @+pz:F32 -> @+yaw:F32 -> @+pitch:F32 -> @+vy:F32 -> @+og:Bool -> @+fly:Bool -> @+hb:0xc517d5d3635f5bc3ec47170caccaebf0/player.Hotbar -> @+edits:List<&2, Edit> -> @+hp:U32 -> @+food:U32 -> @+hurt:U32 -> @+mobs:List<&2, 0xc517d5d3635f5bc3ec47170caccaebf0/mobs.Mob> -> @+tickn:U32 -> @+time:F32 -> State

def MC.do_atk source · line 1395 · raw

@s:State -> @atk:Bool -> State

def MC.food_pick source · line 1402 · raw

@drain:Bool -> @food:U32 -> U32

def MC.do_food source · line 1409 · raw

@s:State -> @moving:Bool -> State

def MC.regen_pick source · line 1414 · raw

@grow:Bool -> @hp:U32 -> U32

def MC.do_regen source · line 1421 · raw

@s:State -> State

def MC.starve_go source · line 1426 · raw

@starving:Bool -> @+seed:U32 -> @+px:F32 -> @+py:F32 -> @+pz:F32 -> @+yaw:F32 -> @+pitch:F32 -> @+vy:F32 -> @+og:Bool -> @+fly:Bool -> @+hb:0xc517d5d3635f5bc3ec47170caccaebf0/player.Hotbar -> @+edits:List<&2, Edit> -> @+hp:U32 -> @+food:U32 -> @+hurt:U32 -> @+mobs:List<&2, 0xc517d5d3635f5bc3ec47170caccaebf0/mobs.Mob> -> @+tickn:U32 -> @+time:F32 -> State

def MC.do_starve source · line 1433 · raw

@s:State -> State

def MC.hurt_pick source · line 1438 · raw

@fading:Bool -> @hurt:U32 -> U32

def MC.do_hurt source · line 1445 · raw

@s:State -> State

def MC.do_tickn source · line 1450 · raw

@s:State -> State

def MC.death_go source · line 1455 · raw

@dead:Bool -> @+seed:U32 -> @+px:F32 -> @+py:F32 -> @+pz:F32 -> @+yaw:F32 -> @+pitch:F32 -> @+vy:F32 -> @+og:Bool -> @+fly:Bool -> @+hb:0xc517d5d3635f5bc3ec47170caccaebf0/player.Hotbar -> @+edits:List<&2, Edit> -> @+hp:U32 -> @+food:U32 -> @+hurt:U32 -> @+mobs:List<&2, 0xc517d5d3635f5bc3ec47170caccaebf0/mobs.Mob> -> @+tickn:U32 -> @+time:F32 -> State

def MC.do_death source · line 1463 · raw

@s:State -> State

def MC.do_mobs source · line 1468 · raw

@s:State -> State

def MC.a_break source · line 1475 · raw

@do_it:Bool -> @s:State -> State

def MC.a_place source · line 1482 · raw

@do_it:Bool -> @s:State -> State

def MC.apply source · line 1489 · raw

@+fw:Bool -> @+back:Bool -> @+left:Bool -> @+right:Bool -> @jump:Bool -> @down:Bool -> @brk:Bool -> @plc:Bool -> @flytog:Bool -> @spr:Bool -> @snk:Bool -> @atk:Bool -> @hot:U32 -> @yd:F32 -> @pd:F32 -> @s:State -> State

def MC.tq source · line 1493 · raw

@quit:Bool -> @fw:Bool -> @back:Bool -> @left:Bool -> @right:Bool -> @jump:Bool -> @down:Bool -> @brk:Bool -> @plc:Bool -> @flytog:Bool -> @spr:Bool -> @snk:Bool -> @atk:Bool -> @hot:U32 -> @yd:F32 -> @pd:F32 -> @s:State -> IO(Maybe<&1, State>)

def MC.tick_go source · line 1500 · raw

@a:Acc -> @s:State -> IO(Maybe<&1, State>)

def tick source · line 1505 · raw

@events:List<&1, Event> -> @state:State -> IO(Maybe<&1, State>)

def MC.spawn_go source · line 1510 · raw

@+seed:U32 -> @gy:F32 -> State

def MC.spawn source · line 1513 · raw

@seed:U32 -> State

def main source · line 1517 · raw

IO(Unit)