Spaces:
Sleeping
Sleeping
Document Living Canvas Minecraft bridge
Browse files- CODEX_BUILD_LOG.md +1 -0
- README.md +2 -0
- app.py +19 -0
- docs/MINECRAFT_SERVER_BLUEPRINT.md +26 -3
- paper-plugin/README.md +24 -4
CODEX_BUILD_LOG.md
CHANGED
|
@@ -24,3 +24,4 @@ This file records how Codex was used to build the hackathon entry.
|
|
| 24 |
- Improved Living Graffiti with prompt-derived names, explicit 32x32 block sizing, 10-frame footprint metadata, and staged growth from seed sketch to server myth.
|
| 25 |
- Added Living Moving Canvas mode: a multi-prompt 12x12 Minecraft wall simulation with neighbor fusion, attention weather, growth stages, and a `living_canvas.mc.v1` packet.
|
| 26 |
- Upgraded Living Moving Canvas into an animated wall: stable Minecraft coordinates, pulsing timeline frames, visible fusion links, evolution events, and a clearer Thousand Token Wood demo runbook.
|
|
|
|
|
|
| 24 |
- Improved Living Graffiti with prompt-derived names, explicit 32x32 block sizing, 10-frame footprint metadata, and staged growth from seed sketch to server myth.
|
| 25 |
- Added Living Moving Canvas mode: a multi-prompt 12x12 Minecraft wall simulation with neighbor fusion, attention weather, growth stages, and a `living_canvas.mc.v1` packet.
|
| 26 |
- Upgraded Living Moving Canvas into an animated wall: stable Minecraft coordinates, pulsing timeline frames, visible fusion links, evolution events, and a clearer Thousand Token Wood demo runbook.
|
| 27 |
+
- Added per-tile Minecraft origins/bounds and documented the Paper bridge path for placing Living Canvas tiles and representing motion through particles, map updates, or block-frame updates.
|
README.md
CHANGED
|
@@ -74,6 +74,8 @@ The MVP emits:
|
|
| 74 |
- a named Gradio API endpoint: `living_graffiti`
|
| 75 |
- a named Gradio API endpoint: `living_canvas`
|
| 76 |
|
|
|
|
|
|
|
| 77 |
The repo also includes a Paper plugin scaffold in [`paper-plugin/`](paper-plugin/) that can reach the live Space and is ready to extend into block placement.
|
| 78 |
|
| 79 |
### API Shape
|
|
|
|
| 74 |
- a named Gradio API endpoint: `living_graffiti`
|
| 75 |
- a named Gradio API endpoint: `living_canvas`
|
| 76 |
|
| 77 |
+
Each `living_canvas.mc.v1` tile includes a stable `minecraft_origin` and `minecraft_bounds`, so the Paper bridge can place it directly on the 384x384 wall.
|
| 78 |
+
|
| 79 |
The repo also includes a Paper plugin scaffold in [`paper-plugin/`](paper-plugin/) that can reach the live Space and is ready to extend into block placement.
|
| 80 |
|
| 81 |
### API Shape
|
app.py
CHANGED
|
@@ -787,6 +787,19 @@ def summarize_wall_tile(prompt: str, index: int, wall_zone: str, tick: int) -> d
|
|
| 787 |
"prompt": prompt,
|
| 788 |
"creator": player,
|
| 789 |
"plot": plot,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 790 |
"moods": moods,
|
| 791 |
"palette": palette_names,
|
| 792 |
"value": value["creative_value"],
|
|
@@ -965,6 +978,12 @@ def living_wall_canvas(prompt_block: str, wall_zone: str, tick: int):
|
|
| 965 |
"growth_stage_unlocks",
|
| 966 |
"server_packet_export",
|
| 967 |
],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 968 |
"fusion_links": links,
|
| 969 |
"evolution_events": events,
|
| 970 |
"tiles": tiles,
|
|
|
|
| 787 |
"prompt": prompt,
|
| 788 |
"creator": player,
|
| 789 |
"plot": plot,
|
| 790 |
+
"minecraft_origin": {
|
| 791 |
+
"x": plot["world_x"],
|
| 792 |
+
"y": 80,
|
| 793 |
+
"z": plot["world_z"],
|
| 794 |
+
},
|
| 795 |
+
"minecraft_bounds": {
|
| 796 |
+
"x1": plot["world_x"],
|
| 797 |
+
"y1": 80,
|
| 798 |
+
"z1": plot["world_z"],
|
| 799 |
+
"x2": plot["world_x"] + PLOT_SCALE - 1,
|
| 800 |
+
"y2": 80 + PLOT_SCALE - 1,
|
| 801 |
+
"z2": plot["world_z"],
|
| 802 |
+
},
|
| 803 |
"moods": moods,
|
| 804 |
"palette": palette_names,
|
| 805 |
"value": value["creative_value"],
|
|
|
|
| 978 |
"growth_stage_unlocks",
|
| 979 |
"server_packet_export",
|
| 980 |
],
|
| 981 |
+
"minecraft_animation_plan": {
|
| 982 |
+
"v1": "place stable 32x32 tiles as map art or wool blocks",
|
| 983 |
+
"v2": "pulse fusion links with particles between tile centers",
|
| 984 |
+
"v3": "periodically update tile frames from the GIF timeline",
|
| 985 |
+
"redstone_required": False,
|
| 986 |
+
},
|
| 987 |
"fusion_links": links,
|
| 988 |
"evolution_events": events,
|
| 989 |
"tiles": tiles,
|
docs/MINECRAFT_SERVER_BLUEPRINT.md
CHANGED
|
@@ -65,12 +65,35 @@ total canvas: 384 x 384 blocks
|
|
| 65 |
2. Install Paper and WorldEdit.
|
| 66 |
3. Upload DreamWall bridge jar.
|
| 67 |
4. Run `/dreamwall fetch`.
|
| 68 |
-
5.
|
| 69 |
-
6.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 70 |
|
| 71 |
## Second Server Milestone
|
| 72 |
|
| 73 |
-
Implement real block placement from `grid.row_runs`:
|
| 74 |
|
| 75 |
```text
|
| 76 |
world_x = canvas_origin_x + plot.x * 32 + run.x
|
|
|
|
| 65 |
2. Install Paper and WorldEdit.
|
| 66 |
3. Upload DreamWall bridge jar.
|
| 67 |
4. Run `/dreamwall fetch`.
|
| 68 |
+
5. Call the `living_canvas` Space endpoint and copy the `living_canvas.mc.v1` packet.
|
| 69 |
+
6. Manually place one generated 32x32 tile from `tiles[].minecraft_origin` on a test wall.
|
| 70 |
+
7. Add signs for title, creator, stage, weather, and value.
|
| 71 |
+
8. Record a 20-second proof clip.
|
| 72 |
+
|
| 73 |
+
## Living Canvas Packet
|
| 74 |
+
|
| 75 |
+
The main demo packet is `living_canvas.mc.v1`.
|
| 76 |
+
|
| 77 |
+
It gives the server:
|
| 78 |
+
|
| 79 |
+
- stable tile coordinates
|
| 80 |
+
- per-tile `minecraft_origin`
|
| 81 |
+
- per-tile `minecraft_bounds`
|
| 82 |
+
- `stage`, `weather`, `value`, and `mutation_rate`
|
| 83 |
+
- `fusion_links` between tiles
|
| 84 |
+
- `evolution_events` for narration
|
| 85 |
+
- a `minecraft_animation_plan`
|
| 86 |
+
|
| 87 |
+
The wall does not need physical redstone for V1. Use the Space GIF as proof of motion, then represent motion in Minecraft with one of:
|
| 88 |
+
|
| 89 |
+
- animated map updates
|
| 90 |
+
- particles between linked tiles
|
| 91 |
+
- block-frame updates on a timer
|
| 92 |
+
- lamps or command-block pulses around high-stage artifacts
|
| 93 |
|
| 94 |
## Second Server Milestone
|
| 95 |
|
| 96 |
+
Implement real block placement from one `living_canvas.mc.v1` tile or one `dreamwall.mc.v1` `grid.row_runs` packet:
|
| 97 |
|
| 98 |
```text
|
| 99 |
world_x = canvas_origin_x + plot.x * 32 + run.x
|
paper-plugin/README.md
CHANGED
|
@@ -9,6 +9,7 @@ The hackathon Space is the official submission surface. This plugin scaffold is
|
|
| 9 |
- `/dreamwall` shows the configured Space endpoint.
|
| 10 |
- `/dreamwall fetch` calls the Space app domain and confirms the bridge can reach Hugging Face.
|
| 11 |
- A scheduled task can be extended to poll approved wall jobs.
|
|
|
|
| 12 |
|
| 13 |
## Planned Placement Behavior
|
| 14 |
|
|
@@ -25,6 +26,21 @@ The Space emits a `dreamwall.mc.v1` JSON packet with:
|
|
| 25 |
- `grid.row_runs`
|
| 26 |
- WorldEdit preview lines
|
| 27 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 28 |
The next plugin step is converting `grid.row_runs` into wall block placement:
|
| 29 |
|
| 30 |
```text
|
|
@@ -41,10 +57,12 @@ The Space also emits a `neuropets.mc.v1` packet from the `hatch_pet` endpoint. T
|
|
| 41 |
|
| 42 |
For the hackathon video, the safest route is:
|
| 43 |
|
| 44 |
-
1.
|
| 45 |
-
2. Copy the
|
| 46 |
-
3.
|
| 47 |
-
4.
|
|
|
|
|
|
|
| 48 |
|
| 49 |
## Flat World Canvas
|
| 50 |
|
|
@@ -62,6 +80,8 @@ The Space assigns the plot. The plugin should trust the packet and place the mur
|
|
| 62 |
canvas_origin + plot.x * plot_size, y=80, canvas_origin_z + plot.z * plot_size
|
| 63 |
```
|
| 64 |
|
|
|
|
|
|
|
| 65 |
## Build
|
| 66 |
|
| 67 |
```bash
|
|
|
|
| 9 |
- `/dreamwall` shows the configured Space endpoint.
|
| 10 |
- `/dreamwall fetch` calls the Space app domain and confirms the bridge can reach Hugging Face.
|
| 11 |
- A scheduled task can be extended to poll approved wall jobs.
|
| 12 |
+
- The Space now emits `living_canvas.mc.v1`, a multi-prompt wall packet for the main hackathon demo.
|
| 13 |
|
| 14 |
## Planned Placement Behavior
|
| 15 |
|
|
|
|
| 26 |
- `grid.row_runs`
|
| 27 |
- WorldEdit preview lines
|
| 28 |
|
| 29 |
+
The stronger cash-prize path uses `living_canvas.mc.v1` from the `living_canvas` endpoint:
|
| 30 |
+
|
| 31 |
+
- `tile_size_blocks`: `32 x 32`
|
| 32 |
+
- `canvas_size_tiles`: `12 x 12`
|
| 33 |
+
- `minecraft_wall_size_blocks`: `384 x 384`
|
| 34 |
+
- `tiles[].minecraft_origin`
|
| 35 |
+
- `tiles[].minecraft_bounds`
|
| 36 |
+
- `tiles[].stage`
|
| 37 |
+
- `tiles[].weather`
|
| 38 |
+
- `fusion_links`
|
| 39 |
+
- `evolution_events`
|
| 40 |
+
- `minecraft_animation_plan`
|
| 41 |
+
|
| 42 |
+
The plugin should treat each tile as a stable wall address. Motion comes from particles, map updates, or block-frame updates, not from moving the artifact to a new plot.
|
| 43 |
+
|
| 44 |
The next plugin step is converting `grid.row_runs` into wall block placement:
|
| 45 |
|
| 46 |
```text
|
|
|
|
| 57 |
|
| 58 |
For the hackathon video, the safest route is:
|
| 59 |
|
| 60 |
+
1. Run Living Moving Canvas in the Space.
|
| 61 |
+
2. Copy the `living_canvas.mc.v1` packet or call the Gradio API.
|
| 62 |
+
3. Place one or more `tiles[]` at their `minecraft_origin`.
|
| 63 |
+
4. Add signs for creator, title, value, stage, and weather.
|
| 64 |
+
5. Use particles or a command-block pulse to show fusion links.
|
| 65 |
+
6. Walk through the server gallery.
|
| 66 |
|
| 67 |
## Flat World Canvas
|
| 68 |
|
|
|
|
| 80 |
canvas_origin + plot.x * plot_size, y=80, canvas_origin_z + plot.z * plot_size
|
| 81 |
```
|
| 82 |
|
| 83 |
+
For `living_canvas.mc.v1`, the packet already includes `tiles[].minecraft_origin`, so the plugin can skip recomputing the address.
|
| 84 |
+
|
| 85 |
## Build
|
| 86 |
|
| 87 |
```bash
|