@@ -12,12 +12,18 @@ import com.typewritermc.engine.paper.entry.entries.CinematicAction
1212import com.typewritermc.engine.paper.entry.entries.CinematicEntry
1313import com.typewritermc.engine.paper.entry.entries.EventTrigger
1414import com.typewritermc.engine.paper.entry.matches
15- import com.typewritermc.engine.paper.entry.temporal.TemporalState.*
15+ import com.typewritermc.engine.paper.entry.temporal.TemporalState.ENDING
16+ import com.typewritermc.engine.paper.entry.temporal.TemporalState.PLAYING
17+ import com.typewritermc.engine.paper.entry.temporal.TemporalState.STARTING
1618import com.typewritermc.engine.paper.entry.triggerFor
1719import com.typewritermc.engine.paper.events.AsyncCinematicEndEvent
1820import com.typewritermc.engine.paper.events.AsyncCinematicStartEvent
1921import com.typewritermc.engine.paper.events.AsyncCinematicTickEvent
2022import com.typewritermc.engine.paper.interaction.*
23+ import com.typewritermc.engine.paper.utils.GenericPlayerStateProvider
24+ import com.typewritermc.engine.paper.utils.PlayerState
25+ import com.typewritermc.engine.paper.utils.restore
26+ import com.typewritermc.engine.paper.utils.state
2127import kotlinx.coroutines.Dispatchers
2228import kotlinx.coroutines.coroutineScope
2329import kotlinx.coroutines.joinAll
@@ -37,6 +43,7 @@ class TemporalInteraction(
3743 private set
3844 private var playTime = Duration .ofMillis(- 1 )
3945 val frame: Int get() = (playTime.toMillis() / 50 ).toInt()
46+ private var savedVelocityState: PlayerState ? = null
4047
4148 override val priority by lazy { Query .findPageById(pageId)?.priority ? : 0 }
4249
@@ -54,6 +61,7 @@ class TemporalInteraction(
5461
5562 if (settings.blockChatMessages) player.startBlockingMessages()
5663 if (settings.blockActionBarMessages) player.startBlockingActionBar()
64+ if (settings.restoreVelocity) savedVelocityState = player.state(GenericPlayerStateProvider .VELOCITY )
5765
5866 actions = Query .findWhereFromPage<CinematicEntry >(pageId) {
5967 it.criteria.matches(player, context)
@@ -113,6 +121,7 @@ class TemporalInteraction(
113121 player.chatHistory.resendMessages(player)
114122 }
115123 if (settings.blockActionBarMessages) player.stopBlockingActionBar()
124+ if (settings.restoreVelocity) player.restore(savedVelocityState)
116125
117126 actions.forEach {
118127 try {
@@ -164,6 +173,7 @@ data class TemporalStartTrigger(
164173data class TemporalSettings (
165174 val blockChatMessages : Boolean = true ,
166175 val blockActionBarMessages : Boolean = true ,
176+ val restoreVelocity : Boolean = false ,
167177)
168178
169179data object TemporalStopTrigger : EventTrigger {
0 commit comments