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