From bc2b5169c857476aff0c1dc1e445e7e543a83db3 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Fri, 18 Jun 2021 22:13:34 +0200 Subject: [PATCH] The forgotten Keyframes - Added Keyframes to scenes created before the feature existed --- .../ponder/content/BearingScenes.java | 17 +++++++++++++++++ .../foundation/ponder/content/BeltScenes.java | 11 +++++++++++ .../ponder/content/ChainDriveScenes.java | 8 ++++++++ .../foundation/ponder/content/FanScenes.java | 10 +++++++++- .../foundation/ponder/content/FunnelScenes.java | 11 +++++++++++ .../ponder/content/KineticsScenes.java | 10 ++++++++++ .../ponder/content/MovementActorScenes.java | 5 +++++ .../foundation/ponder/content/PistonScenes.java | 7 +++++++ .../foundation/ponder/content/PulleyScenes.java | 6 ++++++ 9 files changed, 84 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/BearingScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/BearingScenes.java index 436faf4d9..9861455e2 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/BearingScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/BearingScenes.java @@ -46,6 +46,7 @@ public class BearingScenes { scene.overlay.showSelectionWithText(util.select.position(anchorPos), 60) .colored(PonderPalette.GREEN) .pointAt(util.vector.blockSurface(windmill, Direction.WEST)) + .attachKeyFrame() .placeNearTarget() .text("Windmill Bearings attach to the block in front of them"); scene.idle(50); @@ -88,6 +89,7 @@ public class BearingScenes { scene.overlay.showText(60) .pointAt(util.vector.blockSurface(anchorPos, Direction.NORTH)) + .attachKeyFrame() .placeNearTarget() .text("If enough Sail-like blocks are attached to the block, it can act as a Windmill"); scene.idle(70); @@ -109,6 +111,7 @@ public class BearingScenes { scene.overlay.showText(60) .pointAt(util.vector.topOf(windmill)) .placeNearTarget() + .attachKeyFrame() .text("Activated with Right-Click, the Windmill Bearing will start providing Rotational Force"); scene.idle(70); @@ -125,6 +128,7 @@ public class BearingScenes { scene.overlay.showCenteredScrollInput(windmill, Direction.WEST, 50); scene.overlay.showText(60) .pointAt(surface) + .attachKeyFrame() .placeNearTarget() .text("Use a Wrench to configure its rotation direction"); scene.idle(36); @@ -184,6 +188,7 @@ public class BearingScenes { scene.overlay.showOutline(PonderPalette.BLUE, bearingPos, util.select.fromTo(3, 2, 1, 3, 3, 2), 80); scene.overlay.showSelectionWithText(util.select.fromTo(3, 2, 4, 3, 3, 5), 80) .colored(PonderPalette.BLUE) + .attachKeyFrame() .text("Any Structure can count as a valid Windmill, as long as it contains at least 8 sail-like Blocks."); scene.idle(90); @@ -225,6 +230,7 @@ public class BearingScenes { .colored(PonderPalette.GREEN) .pointAt(util.vector.blockSurface(bearingPos, Direction.WEST)) .placeNearTarget() + .attachKeyFrame() .text("Mechanical Bearings attach to the block in front of them"); scene.idle(50); @@ -245,6 +251,7 @@ public class BearingScenes { scene.overlay.showText(80) .pointAt(util.vector.topOf(bearingPos.up())) .placeNearTarget() + .attachKeyFrame() .text("Upon receiving Rotational Force, it will assemble it into a Rotating Contraption"); scene.idle(37 * 2); scene.world.setKineticSpeed(all, 0); @@ -273,6 +280,7 @@ public class BearingScenes { scene.overlay.showText(120) .pointAt(util.vector.topOf(bearingPos.up())) .placeNearTarget() + .attachKeyFrame() .sharedText("movement_anchors"); scene.idle(37 * 4); @@ -331,6 +339,7 @@ public class BearingScenes { .pointAt(util.vector.blockSurface(bearingPos, Direction.WEST)) .placeNearTarget() .colored(PonderPalette.RED) + .attachKeyFrame() .text("When Stopped, the Bearing will place the structure at the nearest grid-aligned Angle"); scene.idle(110); @@ -343,6 +352,7 @@ public class BearingScenes { scene.overlay.showText(60) .pointAt(util.vector.blockSurface(bearingPos, Direction.WEST)) .placeNearTarget() + .attachKeyFrame() .sharedText("behaviour_modify_wrench"); scene.idle(70); @@ -389,6 +399,7 @@ public class BearingScenes { scene.overlay.showSelectionWithText(util.select.position(bearingPos), 60) .text("Whenever Mechanical Bearings are themselves part of a moving Structure..") + .attachKeyFrame() .placeNearTarget(); scene.idle(70); @@ -410,6 +421,7 @@ public class BearingScenes { scene.overlay.showSelectionWithText(util.select.position(bearingPos.north()), 60) .colored(PonderPalette.GREEN) .text("Once again, the bearing will attach to the block in front of it") + .attachKeyFrame() .placeNearTarget(); scene.idle(70); @@ -455,6 +467,7 @@ public class BearingScenes { .colored(PonderPalette.GREEN) .pointAt(util.vector.blockSurface(bearingPos, Direction.WEST)) .placeNearTarget() + .attachKeyFrame() .text("Clockwork Bearings attach to blocks in front of them"); scene.idle(50); @@ -472,6 +485,7 @@ public class BearingScenes { scene.overlay.showText(80) .pointAt(util.vector.blockSurface(bearingPos.north(), Direction.NORTH)) .placeNearTarget() + .attachKeyFrame() .text("Upon receiving Rotational Force, the structure will be rotated according to the hour of the day"); scene.idle(90); @@ -501,6 +515,7 @@ public class BearingScenes { scene.overlay.showText(60) .pointAt(util.vector.blockSurface(bearingPos, Direction.WEST)) .placeNearTarget() + .attachKeyFrame() .text("Right-Click the bearing to start or stop animating the structure"); scene.idle(70); @@ -513,6 +528,7 @@ public class BearingScenes { scene.idle(15); scene.overlay.showSelectionWithText(util.select.fromTo(3, 3, 1, 3, 4, 2), 80) .placeNearTarget() + .attachKeyFrame() .sharedText("movement_anchors"); scene.idle(90); @@ -525,6 +541,7 @@ public class BearingScenes { scene.overlay.showSelectionWithText(util.select.position(bearingPos.north(3)), 80) .placeNearTarget() .colored(PonderPalette.BLUE) + .attachKeyFrame() .text("In front of the Hour Hand, a second structure can be added"); scene.idle(90); scene.overlay.showControls(clickTheBearingSide.rightClick(), 20); diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/BeltScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/BeltScenes.java index dbaeb1718..a2d45e769 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/BeltScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/BeltScenes.java @@ -87,6 +87,7 @@ public class BeltScenes { scene.overlay.showText(80) .text("Right-Clicking two shafts with a belt item will connect them together") + .attachKeyFrame() .placeNearTarget() .pointAt(util.vector.topOf(2, 1, 2)); scene.idle(90); @@ -100,6 +101,7 @@ public class BeltScenes { scene.overlay.showText(80) .colored(PonderPalette.RED) .text("Accidental selections can be canceled with Right-Click while Sneaking") + .attachKeyFrame() .placeNearTarget() .pointAt(util.vector.centerOf(backEnd.south(1))); scene.idle(43); @@ -118,6 +120,7 @@ public class BeltScenes { scene.overlay.showText(43) .text("Additional Shafts can be added throughout the Belt") + .attachKeyFrame() .placeNearTarget() .pointAt(util.vector.blockSurface(shaftLocation, Direction.NORTH)); scene.idle(50); @@ -146,6 +149,7 @@ public class BeltScenes { scene.idle(10); scene.overlay.showText(50) .text("Added shafts can be removed using the wrench") + .attachKeyFrame() .placeNearTarget() .pointAt(util.vector.blockSurface(shaftLocation, Direction.NORTH)); scene.idle(70); @@ -212,6 +216,7 @@ public class BeltScenes { .colored(PonderPalette.GREEN) .placeNearTarget() .pointAt(to) + .attachKeyFrame() .text("1. They can connect horizontally"); scene.idle(20); @@ -236,6 +241,7 @@ public class BeltScenes { .colored(PonderPalette.GREEN) .placeNearTarget() .pointAt(to) + .attachKeyFrame() .text("2. They can connect diagonally"); scene.idle(20); @@ -258,6 +264,7 @@ public class BeltScenes { .colored(PonderPalette.GREEN) .placeNearTarget() .pointAt(to) + .attachKeyFrame() .text("3. They can connect vertically"); scene.idle(20); @@ -282,6 +289,7 @@ public class BeltScenes { .colored(PonderPalette.GREEN) .placeNearTarget() .pointAt(to) + .attachKeyFrame() .text("4. And they can connect vertical shafts horizontally"); scene.idle(20); @@ -375,6 +383,7 @@ public class BeltScenes { scene.overlay.showText(60) .placeNearTarget() .pointAt(topOf.subtract(0, 0.1, 0)) + .attachKeyFrame() .text("Right-Click with an empty hand to take items off a belt"); scene.idle(20); scene.world.removeItemsFromBelt(util.grid.at(3, 2, 2)); @@ -425,6 +434,7 @@ public class BeltScenes { scene.overlay.showText(80) .text("Brass or Andesite Casing can be used to decorate Mechanical Belts") + .attachKeyFrame() .pointAt(util.vector.centerOf(beltPos2)); scene.idle(40); @@ -455,6 +465,7 @@ public class BeltScenes { scene.world.modifyBlock(pos, s -> s.with(BeltBlock.CASING, true), true); } scene.idle(30); + scene.addKeyframe(); scene.overlay .showControls(new InputWindowElement(util.vector.topOf(beltPos.south()), Pointing.DOWN).rightClick() diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/ChainDriveScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/ChainDriveScenes.java index da86c0954..b20d88216 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/ChainDriveScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/ChainDriveScenes.java @@ -50,6 +50,7 @@ public class ChainDriveScenes { scene.idle(20); scene.overlay.showText(60) .text("Chain Drives relay rotation to each other in a row") + .attachKeyFrame() .placeNearTarget() .pointAt(util.vector.blockSurface(util.grid.at(3, 1, 4), Direction.WEST)); scene.idle(60); @@ -65,12 +66,14 @@ public class ChainDriveScenes { scene.idle(20); scene.overlay.showText(60) .text("All shafts connected like this will rotate in the same direction") + .attachKeyFrame() .placeNearTarget() .pointAt(util.vector.blockSurface(util.grid.at(2, 1, 1), Direction.WEST)); scene.idle(50); scene.world.hideSection(shafts, Direction.WEST); scene.idle(25); + scene.addKeyframe(); scene.overlay.showControls(new InputWindowElement(util.vector.topOf(rotatedECD), Pointing.DOWN).rightClick() .withWrench(), 30); scene.idle(7); @@ -117,6 +120,7 @@ public class ChainDriveScenes { scene.overlay.showText(60) .text("Unpowered Chain Gearshifts behave exactly like Chain Drives") + .attachKeyFrame() .placeNearTarget() .pointAt(util.vector.blockSurface(eastDrive, Direction.NORTH)); scene.idle(60); @@ -153,6 +157,7 @@ public class ChainDriveScenes { scene.overlay.showText(80) .text("When Powered, the speed transmitted to other Chain Drives in the row is doubled") + .attachKeyFrame() .placeNearTarget() .colored(PonderPalette.FAST) .pointAt(util.vector.blockSurface(eastDrive.west(2), Direction.WEST)); @@ -197,6 +202,7 @@ public class ChainDriveScenes { scene.overlay.showText(80) .text("Whenever the Powered Gearshift is not at the source, its speed will be halved instead") + .attachKeyFrame() .placeNearTarget() .colored(PonderPalette.SLOW) .pointAt(util.vector.blockSurface(eastDrive.west(2), Direction.WEST)); @@ -215,6 +221,7 @@ public class ChainDriveScenes { scene.overlay.showText(100) .text("In both cases, Chain Drives in the row always run at 2x the speed of the Powered Gearshift") + .attachKeyFrame() .placeNearTarget() .pointAt(util.vector.blockSurface(eastDrive.west(2), Direction.WEST)); scene.idle(100); @@ -240,6 +247,7 @@ public class ChainDriveScenes { scene.overlay.showText(100) .text("Using analog signals, the ratio can be adjusted more precisely between 1 and 2") + .attachKeyFrame() .placeNearTarget() .pointAt(util.vector.blockSurface(eastDrive.west(2), Direction.WEST)); scene.idle(40); diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/FanScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/FanScenes.java index 6a22d56ed..04ac6a0fe 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/FanScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/FanScenes.java @@ -53,6 +53,7 @@ public class FanScenes { scene.overlay.showText(80) .text("Encased Fans use Rotational Force to create an Air Current") + .attachKeyFrame() .placeNearTarget() .pointAt(util.vector.topOf(fanPos)); scene.idle(90); @@ -61,6 +62,7 @@ public class FanScenes { Selection reverse = util.select.fromTo(3, 1, 5, 1, 1, 4); scene.world.toggleRedstonePower(util.select.fromTo(leverPos, leverPos.down())); scene.effects.indicateRedstone(leverPos); + scene.addKeyframe(); scene.world.modifyKineticSpeed(reverse, f -> -f); scene.effects.rotationDirectionIndicator(fanPos.south()); scene.special.rotateParrot(flappyBirb, 0, 215 * 2, 0, 30); @@ -127,6 +129,7 @@ public class FanScenes { .colored(PonderPalette.WHITE) .pointAt(itemVec) .placeNearTarget() + .attachKeyFrame() .text("Items caught in the area will be smelted"); scene.idle(60); @@ -157,6 +160,7 @@ public class FanScenes { scene.overlay.showSelectionWithText(util.select.fromTo(blockPos, blockPos.west(2)), 60) .colored(PonderPalette.BLACK) + .attachKeyFrame() .text("Instead, a setup for Smoking using Fire should be used for them"); scene.idle(80); @@ -173,6 +177,7 @@ public class FanScenes { scene.overlay.showSelectionWithText(util.select.fromTo(blockPos, blockPos.west(2)), 60) .colored(PonderPalette.MEDIUM) + .attachKeyFrame() .text("Air Flows passing through water create a Washing Setup"); scene.idle(70); @@ -204,6 +209,7 @@ public class FanScenes { .colored(PonderPalette.RED) .pointAt(util.vector.topOf(blockPos.east())) .placeNearTarget() + .attachKeyFrame() .text("The Speed of the Fan does NOT affect the processing speed, only its range"); scene.world.destroyBlock(util.grid.at(1, 1, 2)); scene.idle(110); @@ -237,6 +243,7 @@ public class FanScenes { scene.effects.emitParticles(depotTop, Emitter.simple(ParticleTypes.SPIT, Vector3d.ZERO), .5f, 30); scene.overlay.showText(90) .pointAt(depotTop) + .attachKeyFrame() .text("Fan Processing can also be applied to Items on Depots and Belts"); scene.idle(100); @@ -272,11 +279,12 @@ public class FanScenes { scene.world.showSection(util.select.layersFrom(2), Direction.DOWN); scene.idle(10); BlockPos rightFan = util.grid.at(1, 2, 2); - scene.overlay.showText(80) + scene.overlay.showText(70) .text("Fans facing down into a source of heat can provide Rotational Force") .placeNearTarget() .pointAt(util.vector.blockSurface(rightFan, Direction.WEST)); scene.idle(80); + scene.addKeyframe(); for (BlockPos pos : new BlockPos[] { rightFan, util.grid.at(3, 2, 2) }) { scene.idle(10); diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/FunnelScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/FunnelScenes.java index 030f0ce6e..366547173 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/FunnelScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/FunnelScenes.java @@ -130,6 +130,7 @@ public class FunnelScenes { scene.world.showSection(topFunnelSelection, Direction.DOWN); scene.overlay.showText(80) .text("Placed normally, it pulls items from the inventory.") + .attachKeyFrame() .pointAt(topCenter) .placeNearTarget(); scene.idle(45); @@ -150,6 +151,7 @@ public class FunnelScenes { scene.overlay.showControls(controlsSneak, 35); scene.overlay.showText(80) .text("Placed while sneaking, it puts items into the inventory.") + .attachKeyFrame() .pointAt(topCenter) .placeNearTarget(); scene.idle(45); @@ -169,6 +171,7 @@ public class FunnelScenes { scene.idle(10); scene.overlay.showText(80) .text("Using a wrench, the funnel can be flipped after placement.") + .attachKeyFrame() .pointAt(topCenter) .placeNearTarget(); @@ -216,6 +219,7 @@ public class FunnelScenes { scene.world.showSection(beltFunnelSetup, Direction.DOWN); scene.overlay.showText(140) .text("Funnels on belts will extract/insert depending on its movement direction.") + .attachKeyFrame() .pointAt(topOfBeltFunnel); scene.idle(15); @@ -263,6 +267,7 @@ public class FunnelScenes { scene.idle(8); scene.overlay.showText(360) .text("Funnels should also interact nicely with a handful of other components.") + .attachKeyFrame() .independent(0); scene.idle(40); @@ -368,6 +373,7 @@ public class FunnelScenes { scene.overlay.showText(60) .text("Andesite Funnels can only ever extract single items.") + .attachKeyFrame() .pointAt(util.vector.topOf(andesiteFunnel)) .placeNearTarget(); scene.idle(10); @@ -378,6 +384,7 @@ public class FunnelScenes { scene.overlay.showText(60) .text("Brass Funnels can extract up to a full stack.") + .attachKeyFrame() .pointAt(util.vector.topOf(brassFunnel)) .placeNearTarget(); scene.idle(10); @@ -393,6 +400,7 @@ public class FunnelScenes { scene.idle(10); scene.overlay.showText(80) .text("Scrolling on the filter slot allows for precise control over the extracted stack size.") + .attachKeyFrame() .pointAt(filterSlot.getCenter()) .placeNearTarget(); scene.idle(90); @@ -436,6 +444,7 @@ public class FunnelScenes { scene.idle(10); scene.overlay.showText(80) .text("Using items on the filter slot will restrict the funnel to only transfer matching stacks.") + .attachKeyFrame() .pointAt(filterSlot.getCenter()) .placeNearTarget(); scene.world.setFilterData(util.select.position(brassFunnel), FunnelTileEntity.class, emerald); @@ -470,6 +479,7 @@ public class FunnelScenes { scene.overlay.showSelectionWithText(funnelSelect, 40) .colored(PonderPalette.RED) .text("Funnels cannot ever transfer between closed inventories directly.") + .attachKeyFrame() .placeNearTarget(); scene.idle(50); @@ -483,6 +493,7 @@ public class FunnelScenes { scene.overlay.showText(40) .colored(PonderPalette.GREEN) .text("Chutes or Smart chutes might be more suitable for such purposes.") + .attachKeyFrame() .pointAt(util.vector.centerOf(funnelPos)) .placeNearTarget(); scene.idle(50); diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/KineticsScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/KineticsScenes.java index b10e501a7..c4fa99df3 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/KineticsScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/KineticsScenes.java @@ -231,6 +231,7 @@ public class KineticsScenes { scene.overlay.showText(60) .text("Shifting from large to small cogs, the conveyed speed will be doubled") .colored(PonderPalette.GREEN) + .attachKeyFrame() .placeNearTarget() .pointAt(util.vector.blockSurface(util.grid.at(1, 2, 3), Direction.NORTH)); scene.idle(10); @@ -269,6 +270,7 @@ public class KineticsScenes { scene.overlay.showText(80) .text("Shifting the opposite way, the conveyed speed will be halved") .colored(PonderPalette.RED) + .attachKeyFrame() .placeNearTarget() .pointAt(util.vector.blockSurface(util.grid.at(1, 2, 3), Direction.NORTH)); scene.idle(10); @@ -339,6 +341,7 @@ public class KineticsScenes { .colored(PonderPalette.GREEN) .pointAt(util.vector.topOf(3, 2, 3)) .placeNearTarget() + .attachKeyFrame() .text("A gearbox is the more compact equivalent of this setup"); scene.idle(90); @@ -411,6 +414,7 @@ public class KineticsScenes { scene.overlay.showText(50) .colored(PonderPalette.RED) .text("When powered by Redstone, it breaks the connection") + .attachKeyFrame() .placeNearTarget() .pointAt(util.vector.topOf(clutch)); @@ -456,6 +460,7 @@ public class KineticsScenes { .colored(PonderPalette.RED) .placeNearTarget() .text("When powered by Redstone, it reverses the transmission") + .attachKeyFrame() .pointAt(util.vector.topOf(gearshift)); for (int i = 0; i < 3; i++) { @@ -503,6 +508,7 @@ public class KineticsScenes { scene.overlay.showText(50) .text("Scrolling on the back panel changes the RPM of the motors' rotational output") + .attachKeyFrame() .placeNearTarget() .pointAt(blockSurface); scene.idle(10); @@ -574,6 +580,7 @@ public class KineticsScenes { scene.rotateCameraY(-30); scene.overlay.showText(70) .text("The Wheels' blades should be oriented against the flow") + .attachKeyFrame() .placeNearTarget() .pointAt(util.vector.topOf(wheel)); scene.idle(80); @@ -599,6 +606,7 @@ public class KineticsScenes { scene.overlay.showText(70) .colored(PonderPalette.RED) .text("Facing the opposite way, they will not be as effective") + .attachKeyFrame() .placeNearTarget() .pointAt(util.vector.topOf(wheel)); scene.idle(80); @@ -674,6 +682,7 @@ public class KineticsScenes { scene.idle(10); scene.overlay.showText(50) .text("Hold Right-Click to rotate it Counter-Clockwise") + .attachKeyFrame() .placeNearTarget() .pointAt(centerOf); scene.idle(70); @@ -697,6 +706,7 @@ public class KineticsScenes { scene.idle(10); scene.overlay.showText(90) .text("Sneak and Hold Right-Click to rotate it Clockwise") + .attachKeyFrame() .placeNearTarget() .pointAt(centerOf); scene.idle(90); diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/MovementActorScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/MovementActorScenes.java index cecbcfeef..11ebe967b 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/MovementActorScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/MovementActorScenes.java @@ -49,6 +49,7 @@ public class MovementActorScenes { .pointAt(util.vector.topOf(bearing.up(2))) .colored(PonderPalette.RED) .placeNearTarget() + .attachKeyFrame() .text("Inventories on moving contraptions cannot be accessed by players."); scene.idle(70); @@ -61,6 +62,7 @@ public class MovementActorScenes { .pointAt(util.vector.topOf(psi)) .colored(PonderPalette.GREEN) .placeNearTarget() + .attachKeyFrame() .text("This component can interact with storage without the need to stop the contraption."); scene.idle(90); @@ -69,6 +71,7 @@ public class MovementActorScenes { scene.overlay.showSelectionWithText(util.select.position(psi.west()), 50) .colored(PonderPalette.RED) .placeNearTarget() + .attachKeyFrame() .text("Place a second one with a gap of 1 or 2 blocks inbetween"); scene.idle(55); @@ -97,6 +100,7 @@ public class MovementActorScenes { scene.overlay.showSelectionWithText(util.select.position(psi2), 70) .placeNearTarget() .colored(PonderPalette.GREEN) + .attachKeyFrame() .text("While engaged, the stationary interface will represent ALL inventories on the contraption"); scene.idle(80); @@ -106,6 +110,7 @@ public class MovementActorScenes { scene.overlay.showText(70) .placeNearTarget() .pointAt(util.vector.topOf(hopper)) + .attachKeyFrame() .text("Items can now be inserted..."); ItemStack itemStack = AllItems.COPPER_INGOT.asStack(); diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/PistonScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/PistonScenes.java index 28706d1fa..65e73a6cf 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/PistonScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/PistonScenes.java @@ -58,6 +58,7 @@ public class PistonScenes { scene.overlay.showText(55) .pointAt(util.vector.topOf(piston)) .placeNearTarget() + .attachKeyFrame() .text("Mechanical Pistons can move blocks in front of them"); scene.idle(65); @@ -93,6 +94,7 @@ public class PistonScenes { scene.overlay.showText(60) .pointAt(util.vector.topOf(piston)) .placeNearTarget() + .attachKeyFrame() .text("Sticky Mechanical Pistons can pull the attached blocks back"); scene.idle(20); scene.world.setBlock(util.grid.at(2, 1, 1), Blocks.OAK_PLANKS.getDefaultState(), false); @@ -108,6 +110,7 @@ public class PistonScenes { ElementLink chassis = scene.world.showIndependentSection(util.select.fromTo(2, 2, 0, 2, 3, 2), Direction.DOWN); scene.world.moveSection(chassis, util.vector.of(0, -1, 1), 0); + scene.addKeyframe(); scene.idle(5); scene.world.showSectionAndMerge(util.select.position(1, 2, 0), Direction.EAST, chassis); scene.idle(15); @@ -154,6 +157,7 @@ public class PistonScenes { scene.overlay.showSelectionWithText(util.select.position(piston), 50) .colored(PonderPalette.RED) .placeNearTarget() + .attachKeyFrame() .text("Without attached Poles, a Mechanical Piston cannot move"); scene.idle(60); @@ -172,6 +176,7 @@ public class PistonScenes { 100); scene.overlay.showSelectionWithText(util.select.fromTo(piston.west(), piston.west(2)), 100) .text("The Length of pole added at its back determines the Extension Range") + .attachKeyFrame() .placeNearTarget() .colored(PonderPalette.GREEN); scene.idle(110); @@ -238,6 +243,7 @@ public class PistonScenes { scene.idle(10); scene.overlay.showSelectionWithText(rose, 70) .text("Whenever Pistons stop moving, the moved structure reverts to blocks") + .attachKeyFrame() .colored(PonderPalette.RED); scene.idle(80); @@ -259,6 +265,7 @@ public class PistonScenes { scene.overlay.showText(70) .pointAt(util.vector.topOf(piston)) .placeNearTarget() + .attachKeyFrame() .sharedText("behaviour_modify_wrench"); scene.idle(80); diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/PulleyScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/PulleyScenes.java index 8b11d693e..b228d4f60 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/PulleyScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/PulleyScenes.java @@ -44,6 +44,7 @@ public class PulleyScenes { scene.idle(45); scene.overlay.showText(60) .pointAt(util.vector.blockSurface(pulleyPos, Direction.WEST)) + .attachKeyFrame() .text("Rope Pulleys can move blocks vertically when given Rotational Force") .placeNearTarget(); scene.idle(70); @@ -81,6 +82,7 @@ public class PulleyScenes { scene.overlay.showText(80) .pointAt(util.vector.blockSurface(util.grid.at(1, 2, 2), Direction.NORTH)) .placeNearTarget() + .attachKeyFrame() .sharedText("movement_anchors"); scene.idle(90); @@ -136,6 +138,7 @@ public class PulleyScenes { scene.idle(10); scene.overlay.showSelectionWithText(util.select.position(flowerPos), 70) .text("Whenever Pulleys stop moving, the moved structure reverts to blocks") + .attachKeyFrame() .placeNearTarget() .colored(PonderPalette.RED); scene.idle(80); @@ -157,6 +160,7 @@ public class PulleyScenes { scene.overlay.showText(70) .pointAt(util.vector.topOf(pulleyPos)) .placeNearTarget() + .attachKeyFrame() .sharedText("behaviour_modify_wrench"); scene.idle(80); @@ -202,6 +206,7 @@ public class PulleyScenes { scene.overlay.showText(50) .pointAt(util.vector.blockSurface(pulleyPos, Direction.WEST)) .placeNearTarget() + .attachKeyFrame() .text("Whenever Pulleys are themselves being moved by a Contraption..."); scene.idle(60); @@ -215,6 +220,7 @@ public class PulleyScenes { scene.overlay.showSelectionWithText(util.select.fromTo(1, 1, 1, 1, 1, 2), 50) .colored(PonderPalette.GREEN) .placeNearTarget() + .attachKeyFrame() .text("...its attached structure will be dragged with it"); scene.idle(60); scene.overlay.showText(80)