From f6c796b295e592b90d0b5304055085567443c0d6 Mon Sep 17 00:00:00 2001 From: ButterDog Date: Fri, 17 Nov 2023 20:41:02 +0000 Subject: [PATCH 1/3] Upload files to "src/kubejs/client_scripts" First of 3 --- src/kubejs/client_scripts/fission_mek.js | 121 ++++++++++++++++++ .../client_scripts/fission_mek_fuelrod.js | 75 +++++++++++ .../client_scripts/fission_mek_logic.js | 66 ++++++++++ src/kubejs/client_scripts/fission_mek_port.js | 43 +++++++ src/kubejs/client_scripts/fusion_activate.js | 63 +++++++++ 5 files changed, 368 insertions(+) create mode 100644 src/kubejs/client_scripts/fission_mek.js create mode 100644 src/kubejs/client_scripts/fission_mek_fuelrod.js create mode 100644 src/kubejs/client_scripts/fission_mek_logic.js create mode 100644 src/kubejs/client_scripts/fission_mek_port.js create mode 100644 src/kubejs/client_scripts/fusion_activate.js diff --git a/src/kubejs/client_scripts/fission_mek.js b/src/kubejs/client_scripts/fission_mek.js new file mode 100644 index 0000000..fd6c698 --- /dev/null +++ b/src/kubejs/client_scripts/fission_mek.js @@ -0,0 +1,121 @@ +Ponder.registry((event) => { + event.create('mekanismgenerators:fission_reactor_casing') + .scene('fission_mek','Mekanism Fission Reactor', 'kubejs:fission_mek', + + (scene, util) => { + + + scene.world.showSection([4, 0, 4], Facing.down); + scene.idle(5); + + + [1, 2, 3, 4].forEach(num => { + scene.world.showSection([4, num, 4], Facing.down); + scene.world.showSection([4, 0, 4 - num], Facing.down); + scene.world.showSection([4 - num, 0, 4], Facing.down); + scene.idle(5) + }); + + [1, 2, 3].forEach(num => { + + scene.world.showSection([4, 4, 4 - num], Facing.down); + scene.world.showSection([4 - num, 4, 4], Facing.down); + scene.world.showSection([0, 0, 4 - num], Facing.down); + scene.world.showSection([4 - num, 0, 0], Facing.down); + scene.world.showSection([0, num, 4], Facing.down); + scene.world.showSection([4, num, 0], Facing.down); + scene.idle(5) + }); + + scene.text(80, 'The Edges Must Be Casings', [0, 4.5, 4.5]).placeNearTarget(); + + scene.world.showSection([4, 4, 0], Facing.down); + scene.world.showSection([0, 4, 4], Facing.down); + scene.world.showSection([0, 0, 0], Facing.down); + scene.idle(5); + + [1, 2, 3].forEach(num => { + + scene.world.showSection([0, num, 0], Facing.down); + scene.world.showSection([0, 4, 4 - num], Facing.down); + scene.world.showSection([4 - num, 4, 0], Facing.down); + scene.idle(5) + }); + + scene.world.showSection([0, 4, 0], Facing.down); + scene.addKeyframe(); + scene.idle(80); + + + //top glass + scene.world.showSection([1, 4, 1, 3, 4, 3], Facing.down); + scene.idle(5) + + // bottom glass + scene.world.showSection([1, 0, 1, 3, 0, 3], Facing.up); + scene.idle(5) + + // north glass + scene.world.showSection([1, 1, 0, 3, 3, 0], Facing.south); + scene.idle(5) + + // south glass + scene.world.showSection([1, 1, 4, 3, 3, 4], Facing.north); + scene.idle(5) + + // west glass + scene.world.showSection([0, 1, 1, 0, 3, 3], Facing.east); + scene.idle(5) + + scene.text(80, 'The Walls Can Be Either Casings Or Glass', [0, 2.5, 2.5]).placeNearTarget(); + + // east glass + scene.world.showSection([4, 1, 1, 4, 3, 3], Facing.west); + scene.addKeyframe(); + scene.idle(80); + + scene.world.hideSection([0, 1, 0, 3, 4, 0], Facing.up) + scene.world.hideSection([0, 1, 0, 0, 4, 3], Facing.up) + scene.world.hideSection([1, 4, 1, 3, 4, 3], Facing.up) + scene.idle(10); + + scene.text(60, 'Place Fuel Assembly Blocks Inside To Make The Fuel Rods', [2.5, 2.5, 2.5]).placeNearTarget(); + scene.world.setBlock([2, 1, 2], 'mekanismgenerators:fission_fuel_assembly', false); + scene.world.showSection([2, 1, 2], Facing.down) + scene.idle(10) + scene.world.setBlock([2, 2, 2], 'mekanismgenerators:fission_fuel_assembly', false); + scene.world.showSection([2, 2, 2], Facing.down) + scene.idle(10) + scene.addKeyframe(); + scene.idle(40); + + scene.world.setBlock([2, 3, 2], 'mekanismgenerators:control_rod_assembly', false); + scene.world.showSection([2, 3, 2], Facing.down) + scene.idle(10) + scene.text(60, 'Place Control Rod Assembly At The Top Of Each Fuel Rod', [2.5, 3.5, 2.5]).placeNearTarget(); + scene.idle(20); + scene.addKeyframe(); + scene.idle(60); + + scene.world.showSection([0, 1, 0, 3, 4, 0], Facing.up) + scene.world.showSection([0, 1, 0, 0, 4, 3], Facing.up) + scene.world.showSection([1, 4, 1, 3, 4, 3], Facing.up) + + scene.addKeyframe(); + scene.idle(40); + + //scene.world.modifyTileNBT([0,0,0, 4, 4, 4], (nbt) => { nbt.activeState = "fissionReactor" }); + + //scene + // .showControls(40, [1.5, 3, 1.5], 'down') + // .rightClick() + // .withItem('comparator'); + //scene + // .text(40, 'Right Click With Comparator For Redstone Control', [1, 1.5, 2]) + // .placeNearTarget() + // .attachKeyFrame(); + + //scene.idle(40); + + }); +}); \ No newline at end of file diff --git a/src/kubejs/client_scripts/fission_mek_fuelrod.js b/src/kubejs/client_scripts/fission_mek_fuelrod.js new file mode 100644 index 0000000..92bfca8 --- /dev/null +++ b/src/kubejs/client_scripts/fission_mek_fuelrod.js @@ -0,0 +1,75 @@ +Ponder.registry((event) => { + event.create([ + 'mekanismgenerators:fission_fuel_assembly', + 'mekanismgenerators:control_rod_assembly' + ]) + .scene('fission_mek_fuelrod','Mekanism Fission Reactor: Fuel Assembly', 'kubejs:fission_mek', + + (scene, util) => { + + + scene.world.showSection([0, 0, 0, 4, 4, 4], Facing.down); + scene.idle(20); + scene.world.hideSection([0, 1, 0, 3, 4, 3], Facing.up); + scene.idle(20); + + scene.text(80, 'Place Fuel Assembly Blocks Inside To Make The Fuel Rods', [2.5, 2.5, 2.5]).placeNearTarget().attachKeyFrame(); + scene.world.setBlock([2, 1, 2], 'mekanismgenerators:fission_fuel_assembly', true); + scene.world.showSection([2, 1, 2], Facing.down) + scene.idle(10); + scene.world.setBlock([2, 2, 2], 'mekanismgenerators:fission_fuel_assembly', true); + scene.world.showSection([2, 2, 2], Facing.down) + scene.idle(80); + + scene.text(120, 'Fuel Rods are created with several Fission Fuel Assembly blocks with a Control Rod Assembly on top.', [1.5, 2.5, 2.5]).placeNearTarget(); + scene.idle(40); + scene.addKeyframe(); + scene.world.setBlock([2, 3, 2], 'mekanismgenerators:control_rod_assembly', true); + scene.world.showSection([2, 3, 2], Facing.down) + scene.idle(80); + + scene.text(80, 'Place Control Rod Assembly At The Top Of Each Fuel Rod', [1.5, 3.5, 2.5]).placeNearTarget().attachKeyFrame(); + scene.idle(90); + + scene.text(80, 'Control Rod Assembly blocks are placed 1 block from the ceiling.', [1.5, 3.5, 2.5]).placeNearTarget().attachKeyFrame(); + scene.idle(90); + + scene.text(60, 'Fuel Rods Cannot Touch', [1.5, 1.5, 2.5]).placeNearTarget().attachKeyFrame(); + scene.world.setBlock([1, 1, 2], 'mekanismgenerators:fission_fuel_assembly', true); + scene.world.setBlock([3, 1, 2], 'mekanismgenerators:fission_fuel_assembly', true); + scene.world.showSection([1, 1, 2], Facing.down) + scene.world.showSection([3, 1, 2], Facing.down) + scene.idle(60) + scene.world.setBlock([1, 1, 2], 'air', true); + scene.world.setBlock([3, 1, 2], 'air', true); + scene.idle(40); + + scene.world.hideSection([1, 1, 1, 3, 3, 3], Facing.up); + scene.idle(40); + scene.world.setBlock([1, 1, 1], 'mekanismgenerators:fission_fuel_assembly', true); + scene.world.setBlock([1, 2, 1], 'mekanismgenerators:fission_fuel_assembly', true); + scene.world.setBlock([1, 3, 1], 'mekanismgenerators:control_rod_assembly', true); + scene.world.setBlock([1, 1, 3], 'mekanismgenerators:fission_fuel_assembly', true); + scene.world.setBlock([1, 2, 3], 'mekanismgenerators:fission_fuel_assembly', true); + scene.world.setBlock([1, 3, 3], 'mekanismgenerators:control_rod_assembly', true); + scene.world.setBlock([3, 1, 1], 'mekanismgenerators:fission_fuel_assembly', true); + scene.world.setBlock([3, 2, 1], 'mekanismgenerators:fission_fuel_assembly', true); + scene.world.setBlock([3, 3, 1], 'mekanismgenerators:control_rod_assembly', true); + scene.world.setBlock([3, 1, 3], 'mekanismgenerators:fission_fuel_assembly', true); + scene.world.setBlock([3, 2, 3], 'mekanismgenerators:fission_fuel_assembly', true); + scene.world.setBlock([3, 3, 3], 'mekanismgenerators:control_rod_assembly', true); + scene.world.showSection([1, 1, 1, 3, 3, 3], Facing.down); + + scene.text(80, 'Multiple Fuel Rods work best in a checkerboard pattern.', [1.5, 1.5, 2.5]).placeNearTarget().attachKeyFrame(); + scene.idle(100); + + scene.world.showSection([0, 1, 0, 3, 4, 0], Facing.down) + scene.idle(5); + scene.world.showSection([0, 1, 1, 0, 4, 3], Facing.down) + scene.idle(5); + scene.world.showSection([1, 4, 1, 3, 4, 3], Facing.down); + scene.idle(20); + + + }); +}); \ No newline at end of file diff --git a/src/kubejs/client_scripts/fission_mek_logic.js b/src/kubejs/client_scripts/fission_mek_logic.js new file mode 100644 index 0000000..70021b5 --- /dev/null +++ b/src/kubejs/client_scripts/fission_mek_logic.js @@ -0,0 +1,66 @@ +Ponder.registry((event) => { + event.create('mekanismgenerators:fission_reactor_logic_adapter') + .scene('fission_mek_logic','Mekanism Fission Reactor: Logic Adapters', 'kubejs:fission_logic_example', + + (scene, util) => { + + + scene.world.showSection([0, 0, 2, 4, 4, 6], Facing.down); + scene.world.setBlock([2, 3, 2], 'mekanismgenerators:reactor_glass', false); + scene.idle(20); + + scene.text(60, 'Logic Adapters allow Redstone Control for Reactors.', [2.5, 1.5, 2]).placeNearTarget().attachKeyFrame(); + scene.idle(80) + + + scene.text(60, 'Right Click to Open Configuration Settings', [2.5, 1.5, 2]).placeNearTarget().attachKeyFrame(); + scene.showControls(60, [2.5, 2.5, 2], 'down').rightClick(); + scene.idle(70); + + + scene.text(80, 'With two, you can set up a Fail Safe that can shut off the Reactor under certain conditions.', [2.5, 3.5, 2]).placeNearTarget().attachKeyFrame(); + scene.world.setBlock([2, 3, 2], 'mekanismgenerators:fission_reactor_logic_adapter', true); + scene.idle(90); + + scene.text(60, 'Set this one to Activation', [2.5, 3.5, 2]).placeNearTarget().attachKeyFrame(); + scene.idle(60); + scene.text(60, 'Set this one to Damage Critical.', [2.5, 1.5, 2]).placeNearTarget().attachKeyFrame(); + scene.idle(70); + + scene.world.showSection([2, 0, 0], Facing.down); + scene.idle(5); + scene.world.showSection([2, 0, 1], Facing.down); + scene.idle(5); + scene.world.showSection([2, 1, 1], Facing.down); + scene.idle(5); + + scene.text(60, 'When the Reactor has Critical Damage, it will give off a redstone signal.', [2.5, 1.5, 2]).placeNearTarget().attachKeyFrame(); + scene.idle(10); + scene.idle(60); + + scene.world.setBlock([2, 2, 0], 'minecraft:gravel', false); + //scene.world.modifyBlock([2, 3, 1], () => Block.id("minecraft:observer").with("facing", "north"), false); + scene.world.showSection([2, 1, 0, 2, 3, 0], Facing.down); + scene.world.showSection([2, 3, 1], Facing.down); + scene.idle(20); + + scene.text(80, 'We can use this to activate a piston with gravel or sand on it to activate an Observer.', [2.5, 1.5, 1]).placeNearTarget().attachKeyFrame(); + scene.idle(5); + + scene.world.modifyBlock([2, 1, 1], (curState) => curState.with("power", "15"), false); + scene.world.modifyBlock([2, 1, 0], (curState) => curState.with("extended", "true"), false); + scene.world.setBlock([2, 3, 0], 'minecraft:gravel', false); + scene.world.setBlock([2, 2, 0], 'minecraft:piston_head', false); + scene.world.modifyBlock([2, 2, 0], (curState) => curState.with("facing", "up"), false); + scene.idle(90); + + scene.text(120, 'This is an Oberserver facing towards the Gravel. The Gravel will activate it and turn off the reactor.', [2.5, 3.5, 2]).placeNearTarget().attachKeyFrame(); + scene.idle(60); + + + + + + + }); +}); \ No newline at end of file diff --git a/src/kubejs/client_scripts/fission_mek_port.js b/src/kubejs/client_scripts/fission_mek_port.js new file mode 100644 index 0000000..df1ee77 --- /dev/null +++ b/src/kubejs/client_scripts/fission_mek_port.js @@ -0,0 +1,43 @@ +Ponder.registry((event) => { + event.create('mekanismgenerators:fission_reactor_port') + .scene('fission_mek_port','Mekanism Fission Reactor: Ports', 'kubejs:fission_mek', + + (scene, util) => { + + + scene.showStructure(); + scene.idle(20); + + scene.world.setBlock([0, 1, 1], 'mekanismgenerators:fission_reactor_port', true); + scene.world.setBlock([0, 1, 3], 'mekanismgenerators:fission_reactor_port', true); + scene.world.modifyBlock([0, 1, 1], (curState) => curState.with("mode", "output_waste"), false); + scene.world.modifyBlock([0, 1, 3], (curState) => curState.with("mode", "output_coolant"), false); + + scene.text(60, 'A Reactor Needs At Least 4 Ports', [0, 1.5, 3.5]).placeNearTarget(); + scene.addKeyframe(); + scene.idle(80) + + scene.addKeyframe() + + scene.text(60, 'Ports Can Be Changed Using A Configurator', [0, 1.5, 3.5]).placeNearTarget(); + scene.showControls(60, [0.5, 2, 3.5], 'down').rightClick().withItem('mekanism:configurator').whileSneaking(); + scene.idle(80); + + scene.addKeyframe(); + + scene.text(160, 'Required Ports:', [-1, 4, 4]).placeNearTarget(); + + scene.text(40, 'Input Coolant', [3.5, 1.5, 0]).placeNearTarget(); + scene.idle(40); + scene.text(40, 'Input Fuel', [1.5, 1.5, 0]).placeNearTarget(); + scene.idle(40); + scene.text(40, 'Output Waste', [0, 1.5, 1.5]).placeNearTarget(); + scene.idle(40); + scene.text(40, 'Output Heated Coolant', [0, 1.5, 3.5]).placeNearTarget(); + scene.idle(40); + scene.addKeyframe(); + scene.idle(10); + + + }); +}); \ No newline at end of file diff --git a/src/kubejs/client_scripts/fusion_activate.js b/src/kubejs/client_scripts/fusion_activate.js new file mode 100644 index 0000000..c21c34c --- /dev/null +++ b/src/kubejs/client_scripts/fusion_activate.js @@ -0,0 +1,63 @@ +Ponder.registry((event) => { + event.create([ + 'mekanismgenerators:hohlraum', + Item.of('mekanismgenerators:hohlraum', '{mekData:{GasTanks:[{Tank:0b,stored:{amount:10L,gasName:"mekanismgenerators:fusion_fuel"}}]}}'), + 'mekanismgenerators:laser_focus_matrix' + ]) + .scene('fusion_activation','Mekanism Fusion Reactor: Activation', 'kubejs:fusion_activation', + + (scene, util) => { + scene.world.showSection([2, 0, 0, 6, 4, 6], Facing.down); + //scene.world.hideSection([3, 0, 0, 5, 2, 0], Facing.up); + scene.idle(10); + + scene.text(60, 'To activate the Fusion Reactor, we will need a few things.', [2, 2.5, 4.5]).placeNearTarget().attachKeyFrame(); + scene.idle(80) + + scene.text(100, 'You will need to put a Hohlraum filled with D-T fuel in the Controller.', [4.5, 5, 3.5]).attachKeyFrame(); + scene.showControls(100, [4.5, 5.5, 3.5], 'down').withItem('mekanismgenerators:hohlraum'); + scene.idle(110); + + + //show lasers + scene.world.showSection([0, 0, 0, 1, 4, 6], Facing.down); + scene.idle(10); + + //Laser + scene.text(100, 'You will need to shoot 400MRF using Lasers into the Laser Matrix.', [0, 2.5, 3.5]).placeNearTarget().attachKeyFrame(); + scene.idle(110); + + //show laser + scene.world.hideSection([1, 0, 0, 6, 4, 6], Facing.down); + scene.idle(10) + scene.rotateCameraY(90); + scene.idle(5) + + scene.text(100, 'The Laser Amplifier needs to have the Red face pointing towards the Matrix.', [1, 2.5, 3]).placeNearTarget().attachKeyFrame(); + scene.idle(110); + + scene.rotateCameraY(-90); + scene.idle(5) + + //show everything + scene.world.showSection([1, 0, 0, 6, 4, 6], Facing.down); + scene.idle(10) + + + //hide lasers + scene.world.hideSection([0, 0, 0, 1, 4, 6], Facing.down); + scene.idle(10); + + //fuel input + + scene.overlay.showText(100).text("You will also need to give the Reactor fuel.").independent(-50); + scene.text(50, 'For Deuterium', [5.5, 2.5, 1]).placeNearTarget().attachKeyFrame(); + scene.idle(60); + scene.text(50, 'For Tritium.', [3.5, 2.5, 1]).placeNearTarget().attachKeyFrame(); + scene.idle(60); + + scene.text(80, 'The Reactor mixes the D-T fuel at a set rate when they are pumped in separately.', [4.5, 2.5, 1]).placeNearTarget().attachKeyFrame(); + scene.idle(80); + + }); +}); \ No newline at end of file From 1623ec1acda5c168aef79670d81114797b001b62 Mon Sep 17 00:00:00 2001 From: SeaswimmerTheFsh Date: Fri, 17 Nov 2023 16:07:05 -0500 Subject: [PATCH 2/3] Version bump to 0.6.3 Added KubeJS scripts: - client_scripts/ponder/fission_mek_fuelrod.js - client_scripts/ponder/fission_mek_logic.js - client_scripts/ponder/fission_mek_port.js - client_scripts/ponder/fission_mek.js - client_scripts/ponder/fusion_activate.js --- src/index.toml | 20 +++++++++++++++++++ .../{ => ponder}/fission_mek.js | 0 .../{ => ponder}/fission_mek_fuelrod.js | 0 .../{ => ponder}/fission_mek_logic.js | 0 .../{ => ponder}/fission_mek_port.js | 0 .../{ => ponder}/fusion_activate.js | 0 src/pack.toml | 4 ++-- 7 files changed, 22 insertions(+), 2 deletions(-) rename src/kubejs/client_scripts/{ => ponder}/fission_mek.js (100%) rename src/kubejs/client_scripts/{ => ponder}/fission_mek_fuelrod.js (100%) rename src/kubejs/client_scripts/{ => ponder}/fission_mek_logic.js (100%) rename src/kubejs/client_scripts/{ => ponder}/fission_mek_port.js (100%) rename src/kubejs/client_scripts/{ => ponder}/fusion_activate.js (100%) diff --git a/src/index.toml b/src/index.toml index 7d2c114..ef1eeb6 100644 --- a/src/index.toml +++ b/src/index.toml @@ -55,6 +55,26 @@ hash = "23116999939851feb0b358564af45813b1e65fbd1e33d9ccfe6fac7b7027e1ad" file = "kubejs/client_scripts/cape.js" hash = "d86fdabd2650706a673bc235e3fa19b4339f7d6e3dec2c0dd938f40c7ef880dd" +[[files]] +file = "kubejs/client_scripts/ponder/fission_mek.js" +hash = "7aec59883862a2fa254457f544e54d2ee9d0b1c8c0c59a892bc033d142e2eebd" + +[[files]] +file = "kubejs/client_scripts/ponder/fission_mek_fuelrod.js" +hash = "77a904c3e8e013b91075af400cefa2002009df6baf54f094d83467b438285bab" + +[[files]] +file = "kubejs/client_scripts/ponder/fission_mek_logic.js" +hash = "d5fc04fb449307b381f4f6dae347f56566a3bb142720d8f25c0de03cf0b16295" + +[[files]] +file = "kubejs/client_scripts/ponder/fission_mek_port.js" +hash = "45b73abe0fc61e6bc442db7762548137f05f6039fc1062a1d34e97edc925bbb2" + +[[files]] +file = "kubejs/client_scripts/ponder/fusion_activate.js" +hash = "63da07f866125580fb4b97a26cae7bf691214266b4e12b5efa407b7a05f37763" + [[files]] file = "kubejs/config/client.properties" hash = "322a6d4945ceaf10855031a951c1e6250533570fa6e4b9e427b486805b95f724" diff --git a/src/kubejs/client_scripts/fission_mek.js b/src/kubejs/client_scripts/ponder/fission_mek.js similarity index 100% rename from src/kubejs/client_scripts/fission_mek.js rename to src/kubejs/client_scripts/ponder/fission_mek.js diff --git a/src/kubejs/client_scripts/fission_mek_fuelrod.js b/src/kubejs/client_scripts/ponder/fission_mek_fuelrod.js similarity index 100% rename from src/kubejs/client_scripts/fission_mek_fuelrod.js rename to src/kubejs/client_scripts/ponder/fission_mek_fuelrod.js diff --git a/src/kubejs/client_scripts/fission_mek_logic.js b/src/kubejs/client_scripts/ponder/fission_mek_logic.js similarity index 100% rename from src/kubejs/client_scripts/fission_mek_logic.js rename to src/kubejs/client_scripts/ponder/fission_mek_logic.js diff --git a/src/kubejs/client_scripts/fission_mek_port.js b/src/kubejs/client_scripts/ponder/fission_mek_port.js similarity index 100% rename from src/kubejs/client_scripts/fission_mek_port.js rename to src/kubejs/client_scripts/ponder/fission_mek_port.js diff --git a/src/kubejs/client_scripts/fusion_activate.js b/src/kubejs/client_scripts/ponder/fusion_activate.js similarity index 100% rename from src/kubejs/client_scripts/fusion_activate.js rename to src/kubejs/client_scripts/ponder/fusion_activate.js diff --git a/src/pack.toml b/src/pack.toml index eab506f..b8bc42c 100644 --- a/src/pack.toml +++ b/src/pack.toml @@ -1,12 +1,12 @@ name = "GalacticFactory" author = "GalacticFactory" -version = "0.6.2" +version = "0.6.3" pack-format = "packwiz:1.1.0" [index] file = "index.toml" hash-format = "sha256" -hash = "b44a524d55a7d1696d0bd2c2bcda71aff53aab3f5ab2f8cb441e732548415064" +hash = "ce7619edcabe8377bd979294c4074c72c32bef2d99422978d7733d47beb8afa1" [versions] forge = "47.2.0" From 9566dd137d06276f88acbb799916eef5d71966e6 Mon Sep 17 00:00:00 2001 From: ButterDog Date: Fri, 17 Nov 2023 21:09:10 +0000 Subject: [PATCH 3/3] Upload files to "src/kubejs/client_scripts/ponder" Part 2 cause github upload limit --- .../client_scripts/ponder/fusion_reactor.js | 78 ++++++++++ .../client_scripts/ponder/induction_mek.js | 135 +++++++++++++++++ src/kubejs/client_scripts/ponder/pylons.js | 88 +++++++++++ src/kubejs/client_scripts/ponder/sps.js | 76 ++++++++++ .../client_scripts/ponder/turbine_mek.js | 141 ++++++++++++++++++ 5 files changed, 518 insertions(+) create mode 100644 src/kubejs/client_scripts/ponder/fusion_reactor.js create mode 100644 src/kubejs/client_scripts/ponder/induction_mek.js create mode 100644 src/kubejs/client_scripts/ponder/pylons.js create mode 100644 src/kubejs/client_scripts/ponder/sps.js create mode 100644 src/kubejs/client_scripts/ponder/turbine_mek.js diff --git a/src/kubejs/client_scripts/ponder/fusion_reactor.js b/src/kubejs/client_scripts/ponder/fusion_reactor.js new file mode 100644 index 0000000..4dc8e73 --- /dev/null +++ b/src/kubejs/client_scripts/ponder/fusion_reactor.js @@ -0,0 +1,78 @@ +Ponder.registry((event) => { + event.create([ + 'mekanismgenerators:fusion_reactor_frame', + 'mekanismgenerators:fusion_reactor_port', + 'mekanismgenerators:fusion_reactor_controller', + 'mekanismgenerators:fusion_reactor_logic_adapter' + ]) + .scene('fusion_reactor','Mekanism Fusion Reactor', 'kubejs:fusion_mek', + + (scene, util) => { + + + scene.world.showSection([0, 0, 0, 4, 4, 4], Facing.down); + scene.idle(10); + + scene.text(60, 'The Fusion Reactor can be used to generate millions of RF per tick.', [0, 2.5, 4.5]).placeNearTarget().attachKeyFrame(); + scene.idle(80) + + scene.text(60, 'Ports Can Be Changed Using A Configurator', [1.5, 2.5, 0]).placeNearTarget().attachKeyFrame(); + scene.showControls(60, [1.5, 3.5, 0], 'down').rightClick().withItem('mekanism:configurator').whileSneaking(); + scene.idle(10); + scene.world.modifyBlock([1, 2, 0], (curState) => curState.with("active", "true"), true); + scene.idle(20); + scene.world.modifyBlock([1, 2, 0], (curState) => curState.with("active", "false"), true); + scene.idle(40); + + //hide front + scene.world.hideSection([0, 0, 0, 4, 4, 3], Facing.up); + scene.idle(10); + + scene.text(80, 'The Fusion Reactor is built using this pattern for each face.', [2.5, 2, 4.5]).attachKeyFrame(); + scene.idle(90); + + //east face + scene.world.showSection([4, 0, 0, 4, 4, 3], Facing.down); + scene.idle(10); + + //power port + scene.text(60, 'You will need a port for exporting power.', [4, 2.5, 2.5]).placeNearTarget().attachKeyFrame(); + scene.idle(70); + + //west face + scene.world.showSection([0, 0, 0, 0, 4, 3], Facing.down); + scene.idle(30); + + //Laser + scene.text(60, 'The Laser Matrix is used to kickstart the reactor.', [0, 2.5, 2.5]).placeNearTarget().attachKeyFrame(); + scene.idle(70); + + //bottom face + scene.world.showSection([1, 0, 0, 3, 0, 3], Facing.down); + scene.idle(30); + + //top face + scene.world.showSection([0, 4, 0, 3, 4, 3], Facing.down); + scene.idle(30); + + //controller + scene.text(60, 'The Fusion Reactor Controller must be placed in the middle of the top face.', [2.5, 4.5, 3.5]).placeNearTarget().attachKeyFrame(); + scene.idle(70); + + //north face + scene.world.showSection([1, 1, 0, 3, 3, 0], Facing.down); + scene.idle(30); + + //fuel input + + scene.text(30, 'You will need two ports for inputting Deuterium', [3.5, 2.5, 0]).placeNearTarget().attachKeyFrame(); + scene.idle(40); + scene.text(40, 'and Tritium.', [1.5, 2.5, 0]).placeNearTarget().attachKeyFrame(); + scene.idle(50); + + + + + + }); +}); \ No newline at end of file diff --git a/src/kubejs/client_scripts/ponder/induction_mek.js b/src/kubejs/client_scripts/ponder/induction_mek.js new file mode 100644 index 0000000..64432b6 --- /dev/null +++ b/src/kubejs/client_scripts/ponder/induction_mek.js @@ -0,0 +1,135 @@ +Ponder.registry((event) => { + event.create([ + 'mekanism:induction_casing', + 'mekanism:induction_port' + ]) + + .scene('induction_mek','Mekanism: Induction Matrix', 'kubejs:induction_matrix', + + (scene, util) => { + + //Show main build + + + scene.world.showSection([0, 0, 0, 4, 4, 4], Facing.down); + scene.idle(10); + + scene.text(80, 'The Induction Matrix is used to store tons of Power.', [0, 4.5, 4.5]).placeNearTarget().attachKeyFrame(); + scene.idle(85); + + //Hide and build + + scene.world.hideSection([0, 0, 0, 4, 4, 4], Facing.up); + scene.idle(10); + + scene.world.showSection([4, 0, 4], Facing.down); + scene.idle(5); + + + [1, 2, 3, 4].forEach(num => { + scene.world.showSection([4, num, 4], Facing.down); + scene.world.showSection([4, 0, 4 - num], Facing.down); + scene.world.showSection([4 - num, 0, 4], Facing.down); + scene.idle(5) + }); + + [1, 2, 3].forEach(num => { + + scene.world.showSection([4, 4, 4 - num], Facing.down); + scene.world.showSection([4 - num, 4, 4], Facing.down); + scene.world.showSection([0, 0, 4 - num], Facing.down); + scene.world.showSection([4 - num, 0, 0], Facing.down); + scene.world.showSection([0, num, 4], Facing.down); + scene.world.showSection([4, num, 0], Facing.down); + scene.idle(5); + }); + + scene.text(80, 'The Edges Must Be Casings', [0, 4.5, 4.5]).placeNearTarget().attachKeyFrame(); + scene.idle(5); + + scene.world.showSection([4, 4, 0], Facing.down); + scene.world.showSection([0, 4, 4], Facing.down); + scene.world.showSection([0, 0, 0], Facing.down); + scene.idle(5); + + [1, 2, 3].forEach(num => { + + scene.world.showSection([0, num, 0], Facing.down); + scene.world.showSection([0, 4, 4 - num], Facing.down); + scene.world.showSection([4 - num, 4, 0], Facing.down); + scene.idle(5) + }); + + scene.world.showSection([0, 4, 0], Facing.down); + scene.idle(60); + + + scene.text(80, 'The Faces Can Be Either Casings Or Structural Glass.', [0, 2.5, 2.5]).placeNearTarget().attachKeyFrame(); + + //Side Sections + + //top glass + scene.world.showSection([1, 4, 1, 3, 4, 3], Facing.down); + scene.idle(5) + + // bottom glass + scene.world.showSection([1, 0, 1, 3, 0, 3], Facing.up); + scene.idle(5) + + // north glass + scene.world.showSection([1, 1, 0, 3, 3, 0], Facing.south); + scene.idle(5) + + // south glass + scene.world.showSection([1, 1, 4, 3, 3, 4], Facing.north); + scene.idle(5) + + // west glass + scene.world.showSection([0, 1, 1, 0, 3, 3], Facing.east); + scene.idle(5) + + // east glass + scene.world.showSection([4, 1, 1, 4, 3, 3], Facing.west); + scene.idle(80); + + //Talk about Ports + + scene.text(60, 'Ports Are Used To Transfer Power.', [1.5, 1.5, 0]).placeNearTarget().attachKeyFrame(); + scene.idle(80); + + scene.text(80, 'Ports Can Be Changed Using A Configurator.', [1.5, 1.5, 0]).placeNearTarget().attachKeyFrame(); + scene.showControls(80, [1.5, 2.5, 0], 'down').rightClick().withItem('mekanism:configurator').whileSneaking(); + scene.world.modifyBlock([1, 1, 0], (curState) => curState.with("active", "false"), true); + scene.idle(20); + scene.world.modifyBlock([1, 1, 0], (curState) => curState.with("active", "true"), true); + scene.idle(60); + + // Inside Part + + scene.world.hideSection([0, 1, 0, 3, 4, 0], Facing.up) + scene.world.hideSection([0, 1, 0, 0, 4, 3], Facing.up) + scene.world.hideSection([1, 4, 1, 3, 4, 3], Facing.up) + scene.idle(20); + + scene.text(60, 'Induction Cells Are Used To Increase Power Storage.', [2.5, 1.5, 2.5]).placeNearTarget().attachKeyFrame(); + scene.world.setBlock([2, 1, 2], 'mekanism:basic_induction_cell', false); + scene.world.showSection([2, 1, 2], Facing.down) + scene.idle(65); + scene.text(60, 'Induction Providers Are Used To Increase Power Transfer Rate.', [2.5, 2.5, 2.5]).placeNearTarget().attachKeyFrame(); + scene.world.setBlock([2, 2, 2], 'mekanism:basic_induction_provider', false); + scene.world.showSection([2, 2, 2], Facing.down) + scene.idle(65) + + scene.text(60, 'The Matrix Must Have One Cell and One Provider.', [2, 2.5, 2.5]).placeNearTarget().attachKeyFrame(); + scene.idle(65) + + + + //Show All + + scene.world.showSection([0, 1, 0, 3, 4, 0], Facing.up) + scene.world.showSection([0, 1, 0, 0, 4, 3], Facing.up) + scene.world.showSection([1, 4, 1, 3, 4, 3], Facing.up) + scene.idle(10); + }); +}); \ No newline at end of file diff --git a/src/kubejs/client_scripts/ponder/pylons.js b/src/kubejs/client_scripts/ponder/pylons.js new file mode 100644 index 0000000..7c38483 --- /dev/null +++ b/src/kubejs/client_scripts/ponder/pylons.js @@ -0,0 +1,88 @@ +Ponder.registry((event) => { + event.create("pylons:harvester_pylon") + .scene("harvest1", "Using the Harvester Pylon", "farm", (scene, util) => { + scene.showBasePlate() + scene.overlay.showText(40).text("The Harvester Pylon").independent(20).placeNearTarget() + scene.idle(10) + scene.overlay.showText(40).text("is placed in the water").independent(36).placeNearTarget() + scene.idle(10) + scene.overlay.showText(40).text("block for the farm").independent(52).placeNearTarget() + scene.idle(10) + scene.world.hideSection([0, 0, 0, 9, 0, 3], Facing.DOWN) + scene.idle(10) + scene.showControls(20, [4.5, 1, 4.5], "down") + .rightClick() + .withItem("pylons:harvester_pylon") + scene.idle(10) + scene.world.modifyBlock([4, 0, 4], () => Block.id("pylons:harvester_pylon").with("waterlogged", "true"), false) + scene.idle(20) + scene.addLazyKeyframe() + scene.overlay.showText(40).text("The Harvester Pylon").independent(20).placeNearTarget() + scene.idle(10) + scene.overlay.showText(40).text("needs a hoe in it's").independent(36).placeNearTarget() + scene.idle(10) + scene.overlay.showText(40).text("inventory to operate").independent(52).placeNearTarget() + scene.idle(10) + scene.showControls(20, [4.5, 1, 4.5], "down") + .withItem("minecraft:stone_hoe") + scene.idle(10) + scene.overlay.showText(40).text("it's durability will be").independent(68).placeNearTarget() + scene.idle(10) + scene.overlay.showText(40).text("used during harvesting").independent(84).placeNearTarget() + scene.idle(30) + scene.addLazyKeyframe() + scene.overlay.showText(40).text("The Harvester Pylon").independent(20).placeNearTarget() + scene.idle(10) + scene.overlay.showText(40).text("needs storage above it").independent(36).placeNearTarget() + scene.idle(10) + scene.overlay.showText(40).text("to place harvested items into").independent(52).placeNearTarget() + scene.idle(10) + scene.showControls(20, [4.5, 2, 4.5], "down") + .rightClick() + .withItem("minecraft:barrel") + scene.idle(10) + scene.world.showSection([4, 1, 4], Facing.down) + scene.idle(20) + scene.addLazyKeyframe() + scene.world.showSection([0, 0, 0, 9, 0, 3], Facing.UP) + scene.idle(10) + let threeby = util.select.fromTo(3, 1, 3, 5, 1, 5).substract(util.select.position(4,1,4)) + let fiveby = util.select.fromTo(2, 1, 2, 6, 1, 6).substract(util.select.position(4,1,4)) + let sevenby = util.select.fromTo(1, 1, 1, 7, 1, 7).substract(util.select.position(4,1,4)) + let nineby = util.select.fromTo(0, 1, 0, 8, 1, 8).substract(util.select.position(4,1,4)) + scene.world.setBlocks(nineby, Block.id("minecraft:wheat",{age:"7"}),false) + scene.world.showSection(nineby, Facing.UP) + scene.idle(10) + scene.overlay.showText(60).text("The Harvester Pylon").independent(20).placeNearTarget() + scene.idle(10) + scene.overlay.showText(60).text("can be set to harvest").independent(36).placeNearTarget() + scene.idle(10) + scene.overlay.showText(60).text("in an area of:").independent(52).placeNearTarget() + scene.idle(10) + scene.overlay.showText(20).text("3x3").independent(68).placeNearTarget() + scene.idle(10) + scene.overlay.showOutline(PonderPalette.GREEN, "threeby", threeby, 30) + scene.idle(10) + scene.world.modifyBlocks(threeby, (curState) => curState.with("age",0), false) + scene.idle(10) + scene.overlay.showText(20).text("5x5").independent(68).placeNearTarget() + scene.idle(10) + scene.overlay.showOutline(PonderPalette.GREEN, "fiveby", fiveby, 30) + scene.idle(10) + scene.world.modifyBlocks(fiveby, (curState) => curState.with("age",0), false) + scene.idle(10) + scene.overlay.showText(20).text("7x7").independent(68).placeNearTarget() + scene.idle(10) + scene.overlay.showOutline(PonderPalette.GREEN, "sevenby", sevenby, 30) + scene.idle(10) + scene.world.modifyBlocks(sevenby, (curState) => curState.with("age",0), false) + scene.idle(10) + scene.overlay.showText(20).text("9x9").independent(68).placeNearTarget() + scene.idle(10) + scene.overlay.showOutline(PonderPalette.GREEN, "nineby", nineby, 30) + scene.idle(10) + scene.world.modifyBlocks(nineby, (curState) => curState.with("age",0), false) + scene.idle(10) + }) + +}) \ No newline at end of file diff --git a/src/kubejs/client_scripts/ponder/sps.js b/src/kubejs/client_scripts/ponder/sps.js new file mode 100644 index 0000000..61f0363 --- /dev/null +++ b/src/kubejs/client_scripts/ponder/sps.js @@ -0,0 +1,76 @@ +Ponder.registry((event) => { + event.create([ + 'mekanism:sps_casing', + 'mekanism:sps_port', + 'mekanism:supercharged_coil']) + .scene('sps','Mekanism Supercritical Phase Shifter (SPS)', 'kubejs:sps', + + (scene, util) => { + + + scene.world.showSection([0, 0, 0, 6, 7, 6], Facing.down); + scene.setSceneOffsetY(-1); + scene.idle(20); + + scene.text(60, 'The SPS converts Polonium into Antimatter Gas using a large amount of power', [0, 3.5, 6.5]).placeNearTarget(); + scene.addKeyframe(); + scene.idle(80) + + scene.addKeyframe() + + scene.text(60, 'Ports Can Be Changed Using A Configurator', [2.5, 1.5, 0]).placeNearTarget(); + scene.showControls(60, [2.5, 2.5, 0], 'down').rightClick().withItem('mekanism:configurator').whileSneaking(); + scene.idle(10); + scene.world.modifyBlock([2, 1, 0], (curState) => curState.with("active", "true"), false); + scene.idle(20); + scene.world.modifyBlock([2, 1, 0], (curState) => curState.with("active", "false"), false); + scene.idle(40); + + scene.world.hideSection([0, 0, 0, 6, 6, 5], Facing.up); + scene.idle(10); + + scene.text(60, 'The SPS is built using this pattern for each face.', [2.5, 4, 5]).placeNearTarget().attachKeyFrame(); + scene.idle(60); + + //east face + scene.world.showSection([6, 0, 0, 6, 7, 5], Facing.down); + scene.idle(10); + + scene.text(60, 'On one side, you will need a Port in the middle to input power.', [5.5, 4, 3]).placeNearTarget().attachKeyFrame(); + scene.idle(70); + + scene.world.showSection([5, 3, 3], Facing.down); + scene.text(60, 'On the inside, place a Supercharged Coil on the Port.', [5, 4, 3]).placeNearTarget().attachKeyFrame(); + scene.idle(80); + + //west face + scene.world.showSection([0, 0, 0, 0, 6, 5], Facing.down); + scene.idle(30); + + scene.world.showSection([1, 3, 3], Facing.down); + scene.text(60, 'You can also use two Supercharged Coils for max power usage.', [0, 4, 3]).placeNearTarget().attachKeyFrame(); + scene.idle(80); + + //bottom face + scene.world.showSection([1, 0, 0, 5, 0, 5], Facing.down); + scene.idle(30); + + //top face + scene.world.showSection([1, 6, 0, 5, 6, 5], Facing.down); + scene.idle(30); + + //north face + scene.world.showSection([1, 1, 0, 5, 5, 0], Facing.down); + scene.idle(30); + + + scene.text(60, 'You will need one Port for inputting Polonium.', [4.5, 1.5, 0]).placeNearTarget().attachKeyFrame(); + scene.idle(70); + + scene.world.modifyBlock([2, 1, 0], (curState) => curState.with("active", "true"), true); + scene.text(60, 'And another for exporting Antimatter Gas.', [2.5, 1.5, 0]).placeNearTarget().attachKeyFrame(); + scene.idle(70); + + + }); +}); \ No newline at end of file diff --git a/src/kubejs/client_scripts/ponder/turbine_mek.js b/src/kubejs/client_scripts/ponder/turbine_mek.js new file mode 100644 index 0000000..e12377b --- /dev/null +++ b/src/kubejs/client_scripts/ponder/turbine_mek.js @@ -0,0 +1,141 @@ +Ponder.registry((event) => { + event.create([ + 'mekanismgenerators:turbine_casing', + 'mekanismgenerators:turbine_valve', + 'mekanismgenerators:turbine_vent', + 'mekanismgenerators:turbine_rotor', + 'mekanismgenerators:turbine_blade', + 'mekanismgenerators:rotational_complex', + 'mekanismgenerators:saturating_condenser', + 'mekanism:pressure_disperser', + 'mekanismgenerators:electromagnetic_coil', + ]) + .scene('turbine_mek','Mekanism: Industrial Turbine', 'kubejs:turbine_mek', + + (scene, util) => { + + + scene.showStructure(); + scene.idle(5); + + scene.text(60, 'The Industrial Turbine uses Heated Coolant to create Power.', [0, 4.5, 4.5]).placeNearTarget().attachKeyFrame(); + scene.idle(65); + + scene.text(60, 'The edges must be made of Turbine Casings.', [0, 4.5, 4.5]).placeNearTarget().attachKeyFrame(); + scene.idle(65); + + scene.text(60, 'The faces can be Turbine Casings, Structural Glass, Valves, or Vents.', [0, 2.5, 2.5]).placeNearTarget().attachKeyFrame(); + scene.idle(65); + + scene.text(60, 'Turbine Valves pump in Steam, or export Power.', [0, 1.5, 2.5]).placeNearTarget().attachKeyFrame(); + scene.idle(65); + + //hide top + scene.world.hideSection([0, 4, 0, 4, 6, 4], Facing.up); + scene.idle(5); + + //hide walls + scene.world.hideSection([0, 4, 0, 4, 6, 4], Facing.up); + scene.world.hideSection([0, 1, 0, 3, 6, 0], Facing.up); + scene.world.hideSection([0, 1, 0, 0, 6, 3], Facing.up); + scene.idle(10); + + //Turbine Rotor + + scene.text(80, 'Turbine Rotors must be placed in the middle. Each Rotor uses 2 Turbine Blades.', [2, 3.5, 2.5]).placeNearTarget().attachKeyFrame(); + scene.idle(85); + + //show next layer + scene.world.showSection([2, 4, 2], Facing.up); + scene.idle(10); + + scene.text(80, 'A Rotational Complex must be placed on top of the Turbine Rotor.', [2, 4.5, 2.5]).placeNearTarget().attachKeyFrame(); + scene.idle(85); + + scene.world.showSection([1, 4, 1, 3, 4, 1], Facing.up); + scene.world.showSection([3, 4, 2], Facing.up); + scene.world.showSection([1, 4, 2], Facing.up); + scene.world.showSection([1, 4, 3, 3, 4, 3], Facing.up); + scene.idle(10); + + scene.text(80, 'Pressure Dispersers must fill the layer around the Rotational Complex.', [1, 4.5, 2.5]).placeNearTarget().attachKeyFrame(); + scene.idle(85); + + //Show Layer Vents + + scene.world.showSection([0, 4, 0, 4, 4, 0], Facing.up); + scene.world.showSection([0, 4, 4, 4, 4, 4], Facing.up); + scene.world.showSection([0, 4, 1, 0, 4, 3], Facing.up); + scene.world.showSection([4, 4, 0, 4, 4, 4], Facing.up); + + scene.world.showSection([0, 1, 0, 3, 3, 0], Facing.up); + scene.world.showSection([0, 1, 1, 0, 3, 3], Facing.up); + + scene.text(120, 'Starting on this layer, Turbine Vents can be used for the outer faces. These also export Water from the Turbine.', [0, 4.5, 3.5]).placeNearTarget().attachKeyFrame(); + scene.idle(125); + + //Show Electromagnetic Coil + + scene.world.showSection([2, 5, 2], Facing.up); + scene.idle(5); + + scene.text(60, 'Electromagnetic Coils are placed on top of the Rotational Complex.', [2, 5.5, 2.5]).placeNearTarget().attachKeyFrame(); + scene.idle(65); + + scene.world.setBlock([2, 5, 1], 'mekanismgenerators:electromagnetic_coil', true); + scene.world.setBlock([1, 5, 2], 'mekanismgenerators:electromagnetic_coil', true); + scene.world.setBlock([2, 5, 3], 'mekanismgenerators:electromagnetic_coil', true); + scene.world.setBlock([3, 5, 2], 'mekanismgenerators:electromagnetic_coil', true); + scene.world.showSection([2, 5, 1], Facing.up); + scene.world.showSection([1, 5, 2], Facing.up); + scene.world.showSection([2, 5, 3], Facing.up); + scene.world.showSection([3, 5, 2], Facing.up); + scene.idle(10); + + scene.text(100, 'A max of 5 can be placed. They either must connect to each other, or be touching the Rotational Complex.', [2, 5.5, 2.5]).placeNearTarget().attachKeyFrame(); + scene.idle(105); + + //Saturating Condensers + + scene.world.showSection([3, 5, 3], Facing.up); + scene.world.showSection([1, 5, 1], Facing.up); + scene.world.showSection([1, 5, 3], Facing.up); + scene.world.showSection([3, 5, 1], Facing.up); + + scene.text(120, 'Saturating Condensers are used to convert Steam back into Water. These are not required, but must be placed on or above the Coil Layer.', [1, 5.5, 1.5]).placeNearTarget().attachKeyFrame(); + scene.idle(130); + + //Show other layers + + scene.world.showSection([0, 5, 0, 4, 5, 0], Facing.up); + scene.world.showSection([0, 5, 4, 4, 5, 4], Facing.up); + scene.world.showSection([0, 5, 1, 0, 5, 3], Facing.up); + scene.world.showSection([4, 5, 0, 4, 5, 3], Facing.up); + scene.idle(5); + + scene.world.showSection([0, 6, 0, 4, 6, 4], Facing.up); + scene.idle(20); + + scene.world.hideSection([1, 6, 1, 3, 6, 3], Facing.up); + scene.idle(15); + scene.world.setBlock([1, 6, 1], 'mekanismgenerators:turbine_vent', false); + scene.world.setBlock([2, 6, 1], 'mekanismgenerators:turbine_vent', false); + scene.world.setBlock([3, 6, 1], 'mekanismgenerators:turbine_vent', false); + scene.world.setBlock([1, 6, 2], 'mekanismgenerators:turbine_vent', false); + scene.world.setBlock([2, 6, 2], 'mekanismgenerators:turbine_vent', false); + scene.world.setBlock([3, 6, 2], 'mekanismgenerators:turbine_vent', false); + scene.world.setBlock([1, 6, 3], 'mekanismgenerators:turbine_vent', false); + scene.world.setBlock([2, 6, 3], 'mekanismgenerators:turbine_vent', false); + scene.world.setBlock([3, 6, 3], 'mekanismgenerators:turbine_vent', false); + scene.idle(10); + + scene.world.showSection([1, 6, 1, 3, 6, 3], Facing.down); + scene.idle(10); + + scene.text(80, 'The Top Face can be replaced with Turbine Vents, if needed.', [2.5, 6.5, 2.5]).placeNearTarget().attachKeyFrame(); + scene.idle(85); + + + + }); +}); \ No newline at end of file