add first patch

This commit is contained in:
2026-07-31 10:34:32 +09:00
parent 03aac2e45e
commit b1cbc6c78d
6390 changed files with 547430 additions and 0 deletions
@@ -0,0 +1,160 @@
Ponder.registry((e) => {
e.create('bakery:baker_station').scene("baker_station_scene_one", "Caking Baked Goods", (scene, util) => {
scene.showStructure();
scene.world.setBlocks([2, 1, 2], "bakery:baker_station");
scene.idle(10);
scene.text(80, "The Caking Station is the work table for preparing cakes, cookies, and cupcakes.")
scene.idle(100);
scene.addLazyKeyframe();
scene.text(80, "To start, place cake dough on top of the station", [2, 2, 2])
scene.idle(30);
scene.showControls(35, [2, 3, 2], "down").rightClick().withItem('bakery:cake_dough')
scene.idle(40);
scene.world.setBlocks([2, 2, 2], "bakery:blank_cake", true);
scene.idle(50);
scene.addLazyKeyframe();
scene.text(80, "To make cupcakes, any kind of knife can be used to cut the cake.", [2, 3, 2])
scene.idle(30);
scene.showControls(35, [2, 3, 2], "down").rightClick().withItem('bakery:bread_knife')
scene.idle(40);
scene.world.modifyBlock([2, 2, 2], () => Block.id("bakery:blank_cake").with("cake", false).with("cupcake", true), true);
scene.idle(40);
scene.addLazyKeyframe();
scene.text(80, "For cookies, roll down the cupcake dough using a rolling pin.", [2, 3, 2])
scene.idle(30);
scene.showControls(35, [2, 3, 2], "down").rightClick().withItem('bakery:rolling_pin')
scene.idle(40);
scene.world.modifyBlock([2, 2, 2], () => Block.id("bakery:blank_cake").with("cake", false).with("cupcake", false).with("cookie", true), true);
scene.idle(40);
scene.world.hideSection([2, 1, 2], Facing.UP);
scene.world.hideSection([2, 2, 2], Facing.UP);
scene.world.hideSection([0, 1, 2], Facing.UP);
scene.world.hideSection([4, 1, 2], Facing.UP);
scene.world.hideSection([0, 2, 2], Facing.UP);
scene.world.hideSection([0, 2, 2], Facing.UP);
scene.idle(20);
scene.addLazyKeyframe();
scene.world.setBlocks([0, 1, 2], "bakery:baker_station");
scene.world.showSection([0, 1, 2], Facing.DOWN);
scene.world.setBlocks([4, 1, 2], "bakery:baker_station");
scene.world.showSection([4, 1, 2], Facing.DOWN);
scene.world.setBlocks([0, 2, 2], "bakery:blank_cake");
scene.world.showSection([0, 2, 2], Facing.DOWN);
scene.world.setBlocks([4, 2, 2], "bakery:blank_cake");
scene.world.showSection([4, 2, 2], Facing.DOWN);
scene.world.modifyBlock([0, 2, 2], () => Block.id("bakery:blank_cake").with("cake", false).with("cupcake", false).with("cookie", true), false);
scene.world.modifyBlock([2, 2, 2], () => Block.id("bakery:blank_cake").with("cake", false).with("cupcake", true), false);
scene.world.showSection([2, 1, 2], Facing.DOWN);
scene.world.showSection([2, 2, 2], Facing.DOWN);
scene.text(80, "Frosting can be added at any stage of the caking process.")
scene.idle(50);
scene.showControls(35, [2, 3, 2], "down").rightClick().withItem('bakery:strawberry_jam')
scene.idle(40);
scene.world.setBlocks([0, 2, 2], "bakery:strawberry_cookie_block", true);
scene.world.setBlocks([2, 2, 2], "bakery:strawberry_cupcake_block", true);
scene.world.setBlocks([4, 2, 2], "bakery:strawberry_cake", true);
scene.idle(40);
scene.addLazyKeyframe()
scene.text(80, "The cakes can then be harvested with an empty hand.", [2, 3, 2])
scene.idle(30);
scene.showControls(35, [2, 3, 2], "down").rightClick()
scene.idle(40);
scene.world.replaceBlocks([4, 2, 2], "air", true);
scene.world.replaceBlocks([2, 2, 2], "air", true);
scene.world.replaceBlocks([0, 2, 2], "air", true);
const leftBlockPos = util.grid.at(4, 2, 2);
const centerBlockPos = util.grid.at(2, 2, 2);
const rightBlockPos = util.grid.at(0, 2, 2);
const leftTop = util.vector.topOf(leftBlockPos);
const centerTop = util.vector.topOf(centerBlockPos);
const rightTop = util.vector.topOf(rightBlockPos);
const cakeEntity = scene.world.createItemEntity(leftTop.add(0, 0.2, 0), util.vector.of(0.01, 0, 0), "bakery:strawberry_cake");
const cupcakecakeEntity =scene.world.createItemEntity(centerTop.add(0, 0.2, 0), util.vector.of(0.01, 0, 0), "4x bakery:strawberry_cupcake");
const cookieEntity = scene.world.createItemEntity(rightTop.add(0, 0.2, 0), util.vector.of(0.01, 0, 0), "4x bakery:strawberry_glazed_cookie");
scene.idle(60);
scene.world.modifyEntity(cakeEntity, (e) => {
e.discard();
});
scene.world.modifyEntity(cupcakecakeEntity, (e) => {
e.discard();
});
scene.world.modifyEntity(cookieEntity, (e) => {
e.discard();
});
scene.world.hideSection([2, 1, 2], Facing.UP);
scene.world.hideSection([2, 2, 2], Facing.UP);
scene.world.hideSection([0, 1, 2], Facing.UP);
scene.world.hideSection([4, 1, 2], Facing.UP);
scene.world.hideSection([0, 2, 2], Facing.UP);
scene.world.hideSection([0, 2, 2], Facing.UP);
scene.idle(20);
scene.addLazyKeyframe()
scene.world.replaceBlocks([0, 1, 2], "air", false);
scene.world.replaceBlocks([4, 1, 2], "air", false);
scene.world.replaceBlocks([2, 1, 2], "bakery:iron_table", false);
scene.world.setBlocks([2, 2, 2], "bakery:strawberry_cake", true);
scene.world.showSection([2, 1, 2], Facing.DOWN);
scene.world.showSection([2, 2, 2], Facing.DOWN);
scene.text(80, "Cakes must be sliced before being eaten.", [2, 3, 2])
scene.idle(30);
scene.showControls(35, [2, 3, 2], "down").rightClick().withItem('bakery:bread_knife')
scene.idle(40);
scene.world.modifyBlock([2, 2, 2], () => Block.id("bakery:strawberry_cake").with("cuts", "1"), false);
scene.world.createItemEntity(centerTop.add(0, 0.2, 0), util.vector.of(0.01, 0, 0), "bakery:strawberry_cake_slice");
scene.idle(70);
});
});
@@ -0,0 +1,222 @@
Ponder.registry((e) => {
e.create(["brewery:wooden_brewingstation", "brewery:copper_brewingstation", "brewery:netherite_brewingstation"]).scene('brewingstation_scene_one', "Starting the Brewing Process", (scene) => {
scene.showBasePlate();
scene.world.setBlocks([1, 1, 2], "brewery:wooden_brewingstation");
scene.world.setBlocks([1, 1, 1], "brewery:brew_timer");
scene.world.setBlocks([2, 1, 1], "brewery:brew_oven");
scene.world.setBlocks([2, 1, 2], "brewery:brew_whistle");
scene.world.setBlocks([2, 2, 2], "brewery:brew_whistle");
scene.world.modifyBlock([1, 1, 2], () => Block.id("brewery:wooden_brewingstation").with("facing", "south"), false);
scene.world.modifyBlock([1, 1, 1], () => Block.id("brewery:brew_timer").with("facing", "south"), false);
scene.world.modifyBlock([2, 1, 1], () => Block.id("brewery:brew_oven").with("facing", "south"), false);
scene.world.modifyBlock([2, 1, 2], () => Block.id("brewery:brew_whistle").with("facing", "south"), false);
scene.world.modifyBlock([2, 2, 2], () => Block.id("brewery:brew_whistle").with("half", "upper").with("facing", "south"), false);
global.showPonderLayer(scene, 0, 1);
scene.idle(10);
scene.text(80, "The Brewingstation is a multiblock machine for brewing beers and spirits.")
scene.idle(100);
scene.addLazyKeyframe();
scene.text(80, "To start, place your ingredients into the basin and fill with water.", [1, 2, 2])
scene.idle(30);
scene.showControls(35, [1, 2, 3], "down").rightClick().withItem('brewery:hops')
scene.idle(40);
scene.showControls(35, [1, 2, 3], "down").rightClick().withItem('minecraft:water_bucket')
scene.world.modifyBlock([1, 1, 2], () => Block.id("brewery:wooden_brewingstation").with("facing", "south").with("liquid", "filled"), false);
scene.idle(50);
scene.addLazyKeyframe();
scene.text(80, "Place your fuel in the oven block to begin brewing.", [2, 2, 1])
scene.idle(30);
scene.showControls(35, [2, 2, 1], "down").rightClick().withItem('minecraft:coal')
scene.world.modifyBlock([2, 1, 1], () => Block.id("brewery:brew_oven").with("facing", "south").with("heat", "lit"), false);
scene.idle(40);
});
e.create(["brewery:wooden_brewingstation", "brewery:copper_brewingstation", "brewery:netherite_brewingstation"]).scene('brewingstation_scene_two', "The Brewing Minigame", (scene, util) => {
scene.showBasePlate();
scene.world.setBlocks([1, 1, 2], "brewery:wooden_brewingstation");
scene.world.setBlocks([1, 1, 1], "brewery:brew_timer");
scene.world.setBlocks([2, 1, 1], "brewery:brew_oven");
scene.world.setBlocks([2, 1, 2], "brewery:brew_whistle");
scene.world.setBlocks([2, 2, 2], "brewery:brew_whistle");
scene.world.modifyBlock([1, 1, 2], () => Block.id("brewery:wooden_brewingstation").with("facing", "south").with("liquid", "filled"), false);
scene.world.modifyBlock([1, 1, 1], () => Block.id("brewery:brew_timer").with("facing", "south"), false);
scene.world.modifyBlock([2, 1, 1], () => Block.id("brewery:brew_oven").with("facing", "south").with("heat", "lit"), false);
scene.world.modifyBlock([2, 1, 2], () => Block.id("brewery:brew_whistle").with("facing", "south"), false);
scene.world.modifyBlock([2, 2, 2], () => Block.id("brewery:brew_whistle").with("half", "upper").with("facing", "south"), false);
global.showPonderLayer(scene, 0, 1);
scene.idle(10);
scene.text(80, "The brewing process is an active one, and the faster you fix issues in the brewing, the higher output you'll get.")
scene.idle(90);
scene.addLazyKeyframe();
scene.text(80, "The basin needs a constant supply of water, and sometimes drains", [1, 2, 2])
let basin = util.select.fromTo(1, 1, 2, 1, 1, 2)
scene.overlay.showOutline(PonderPalette.GREEN, "block", basin, 30)
scene.idle(10);
scene.world.modifyBlock([1, 1, 2], () => Block.id("brewery:wooden_brewingstation").with("facing", "south").with("liquid", "drained"), false);
scene.idle(60);
scene.showControls(35, [1, 2, 3], "down").rightClick().withItem('minecraft:water_bucket')
scene.world.modifyBlock([1, 1, 2], () => Block.id("brewery:wooden_brewingstation").with("facing", "south").with("liquid", "filled"), false);
scene.idle(60);
scene.addLazyKeyframe();
scene.text(80, "The basin may also overflow, requiring you to take out some water", [1, 2, 2])
scene.idle(10);
scene.world.modifyBlock([1, 1, 2], () => Block.id("brewery:wooden_brewingstation").with("facing", "south").with("liquid", "overflowing"), false);
scene.idle(60);
scene.showControls(35, [1, 2, 3], "down").rightClick().withItem('minecraft:bucket')
scene.world.modifyBlock([1, 1, 2], () => Block.id("brewery:wooden_brewingstation").with("facing", "south").with("liquid", "filled"), false);
scene.idle(60);
scene.addLazyKeyframe();
let oven = util.select.fromTo(2, 1, 1, 2, 1, 1)
scene.overlay.showOutline(PonderPalette.GREEN, "block", oven, 30)
scene.text(80, "Like the basin, the oven portion may run out of fuel", [2, 2, 1])
scene.idle(10);
scene.world.modifyBlock([2, 1, 1], () => Block.id("brewery:brew_oven").with("facing", "south").with("heat", "weak"), false);
scene.idle(60);
scene.showControls(35, [2, 2, 1], "down").rightClick().withItem('minecraft:coal')
scene.world.modifyBlock([2, 1, 1], () => Block.id("brewery:brew_oven").with("facing", "south").with("heat", "lit"), false);
scene.idle(60);
scene.addLazyKeyframe();
let timer = util.select.fromTo(1, 1, 1, 1, 1, 1)
scene.overlay.showOutline(PonderPalette.GREEN, "block", timer, 30)
scene.text(80, "Finally, the timer portion of the brewingstation may need to be reset with a right click", [2, 2, 2])
scene.idle(10);
scene.world.modifyBlock([1, 1, 1], () => Block.id("brewery:brew_timer").with("facing", "south").with("time", true), false);
scene.world.modifyBlock([1, 1, 1], () => Block.id("brewery:brew_timer").with("facing", "south").with("activated", true), false);
scene.idle(60);
scene.showControls(35, [1, 2, 1], "down").rightClick()
scene.world.modifyBlock([1, 1, 1], () => Block.id("brewery:brew_timer").with("facing", "south"), false);
scene.idle(60);
scene.addLazyKeyframe();
scene.overlay.showOutline(PonderPalette.GREEN, "block", basin, 30)
scene.world.modifyBlock([1, 1, 2], () => Block.id("brewery:wooden_brewingstation").with("facing", "south").with("liquid", "beer"), false);
scene.text(80, "Once finished, you can take your beer out with a Beer Mugs!", [1, 2, 2])
scene.idle(70);
scene.showControls(35, [1, 2, 3], "down").rightClick().withItem('brewery:beer_mug')
scene.world.modifyBlock([1, 1, 2], () => Block.id("brewery:wooden_brewingstation").with("facing", "south").with("liquid", "empty"), false);
scene.idle(60);
});
e.create(["brewery:wooden_brewingstation", "brewery:copper_brewingstation", "brewery:netherite_brewingstation"]).scene('brewingstation_scene_three', "Brewingstation Tiers", (scene) => {
scene.showBasePlate();
scene.world.setBlocks([1, 1, 2], "brewery:wooden_brewingstation");
scene.world.setBlocks([1, 1, 1], "brewery:brew_timer");
scene.world.setBlocks([2, 1, 1], "brewery:brew_oven");
scene.world.setBlocks([2, 1, 2], "brewery:brew_whistle");
scene.world.setBlocks([2, 2, 2], "brewery:brew_whistle");
scene.world.modifyBlock([1, 1, 2], () => Block.id("brewery:wooden_brewingstation").with("facing", "south"), false);
scene.world.modifyBlock([1, 1, 1], () => Block.id("brewery:brew_timer").with("facing", "south"), false);
scene.world.modifyBlock([2, 1, 1], () => Block.id("brewery:brew_oven").with("facing", "south"), false);
scene.world.modifyBlock([2, 1, 2], () => Block.id("brewery:brew_whistle").with("facing", "south"), false);
scene.world.modifyBlock([2, 2, 2], () => Block.id("brewery:brew_whistle").with("half", "upper").with("facing", "south"), false);
global.showPonderLayer(scene, 0, 1);
scene.idle(10);
scene.text(60, "There are three tiers of Brewingstation:")
scene.idle(70);
scene.text(70, "Wooden is the starter tier, and can only brew beers.")
scene.idle(90);
scene.addLazyKeyframe();
scene.world.setBlocks([1, 1, 2], "brewery:copper_brewingstation");
scene.world.modifyBlock([1, 1, 2], () => Block.id("brewery:copper_brewingstation").with("facing", "south").with("material", "copper"), true);
scene.world.modifyBlock([1, 1, 1], () => Block.id("brewery:brew_timer").with("facing", "south").with("material", "copper"), true);
scene.world.modifyBlock([2, 1, 1], () => Block.id("brewery:brew_oven").with("facing", "south").with("material", "copper"), true);
scene.world.modifyBlock([2, 1, 2], () => Block.id("brewery:brew_whistle").with("facing", "south").with("material", "copper"), true);
scene.world.modifyBlock([2, 2, 2], () => Block.id("brewery:brew_whistle").with("half", "upper").with("material", "copper").with("facing", "south"), true);
scene.text(60, "Copper is the second tier, capable of brewing spirits and beers. It also never spawns Elementals.")
scene.idle(90);
scene.addLazyKeyframe();
scene.world.setBlocks([1, 1, 2], "brewery:netherite_brewingstation");
scene.world.modifyBlock([1, 1, 2], () => Block.id("brewery:netherite_brewingstation").with("facing", "south").with("material", "netherite"), true);
scene.world.modifyBlock([1, 1, 1], () => Block.id("brewery:brew_timer").with("facing", "south").with("material", "netherite"), true);
scene.world.modifyBlock([2, 1, 1], () => Block.id("brewery:brew_oven").with("facing", "south").with("material", "netherite"), true);
scene.world.modifyBlock([2, 1, 2], () => Block.id("brewery:brew_whistle").with("facing", "south").with("material", "netherite"), true);
scene.world.modifyBlock([2, 2, 2], () => Block.id("brewery:brew_whistle").with("half", "upper").with("material", "netherite").with("facing", "south"), true);
scene.idle(10);
scene.text(80, "Reinforced is the final tier. It can brew every drink, and provides a minimum quality of 3.")
scene.idle(80);
});
});
@@ -0,0 +1,73 @@
Ponder.registry((e) => {
e.create("vinery:grapevine_pot").scene("grapevine_pot_scene", "Juicing grapes", (scene, util) => {
scene.showBasePlate();
scene.world.setBlocks([2, 1, 2], "vinery:grapevine_pot");
scene.world.showSection([2, 1, 2], Facing.DOWN);
scene.idle(10);
scene.text(80, "The Grapevine Pot can be filled with a max of 6 grapes of the same type", [2, 2, 2])
scene.showControls(60, [2, 2, 2], "down").rightClick().withItem('vinery:red_grape')
scene.idle(70);
scene.world.modifyBlock([2, 1, 2], () => Block.id("vinery:grapevine_pot").with("type", "red").with("storage", "1").with("stage", "1"), false);
scene.idle(5);
scene.world.modifyBlock([2, 1, 2], () => Block.id("vinery:grapevine_pot").with("type", "red").with("storage", "3").with("stage", "2"), false);
scene.idle(5);
scene.world.modifyBlock([2, 1, 2], () => Block.id("vinery:grapevine_pot").with("type", "red").with("storage", "6").with("stage", "3"), false);
scene.idle(70);
scene.addLazyKeyframe();
const armorStand = scene.world.createEntity("armor_stand", [2.5, 1, 2.5]);
scene.text(80, "Once filled, jump on the grapes to turn them into juice", [2, 3, 2])
scene.idle(20);
for (let height = 1; height < 3; height = height + 0.07) {
let h = height;
scene.world.modifyEntity(armorStand, (e) => {
e.setY(h);
});
scene.idle(1);
}
for (let height = 3; height > 1; height = height - 0.07) {
let h = height;
scene.world.modifyEntity(armorStand, (e) => {
e.setY(h);
});
scene.idle(1);
}
scene.idle(20);
scene.world.removeEntity(armorStand)
scene.idle(20);
scene.world.modifyBlock([2, 1, 2], () => Block.id("vinery:grapevine_pot").with("type", "red").with("storage", "6").with("stage", "4"), false);
scene.idle(5);
scene.world.modifyBlock([2, 1, 2], () => Block.id("vinery:grapevine_pot").with("type", "red").with("storage", "6").with("stage", "5"), false);
scene.idle(5);
scene.world.modifyBlock([2, 1, 2], () => Block.id("vinery:grapevine_pot").with("type", "red").with("storage", "6").with("stage", "6"), false);
scene.idle(50);
scene.addLazyKeyframe();
scene.text(80, "You can then bottle the juice using empty wine bottles", [2, 2, 2])
let selection = util.select.fromTo(2, 1, 2, 2, 1, 2)
scene.overlay.showOutline(PonderPalette.GREEN, "fiveby", selection, 30)
scene.showControls(60, [2, 2, 2], "down").rightClick().withItem('vinery:wine_bottle')
scene.idle(70);
scene.world.modifyBlock([2, 1, 2], () => Block.id("vinery:grapevine_pot").with("type", "red").with("storage", "3").with("stage", "1"), false);
scene.idle(5);
scene.world.modifyBlock([2, 1, 2], () => Block.id("vinery:grapevine_pot").with("type", "red").with("storage", "0").with("stage", "2"), false);
});
});