Tags
Creators
Details
0.8.0
Compatibility
Required content
Changes
Interactions like dialogue or cinematics have gained many new capabilities.
Interaction Bounds
Interaction bounds confine interactions to an action or space, such as canceling dialogue when the player walks away.
Interaction bounds can be in 2 modes: Interrupting and Blocking.
Interruption Mode means that if the player breaks the bounding condition, the interaction will be canceled.
Blocking Mode means the player is not allowed to violate the bounding condition, ensuring players see the dialogue through.
The mode is determined by the priority of the interaction versus the priority of the bound. If the interaction has a higher priority, it is in Blocking Mode; if it is the same or lower priority, it is in Interruption Mode.
Entries inherit their priority from the page.
Some examples of Interaction Bounds are:
PlayerRadiusInteractionBound: Player stays within a certain radius from when the bound started.LookAtNpcInteractionBound: Similar toPlayerRadiusInteractionBoundbut forces the player to look at the entity.LockInteractionBound: Completely locks the player's camera from moving and rotating.CommandInteractionBound: Triggered when the player runs a command other than the/twcommand.
Interaction Context
The second new concept is Interaction Context. This allows you to pass variables to subsequent entries in a sequence, allowing for more flexible interactions, such as asking the user for input and using that later, or spawning something on the block the player clicked on.
Custom Commands
Though you could already have Typewriter create a custom command, you can now have arguments for this command and use the input of the arguments in subsequent entries.
InputDialogue
NPCs can now ask more open-ended questions, like how many cookies 🍪 you want to have baked, or asking for a certain phrase like a password.
Other Features
This is not the only thing we added. Some noteworthy new features:
- Speed Data: You can now specify how fast/slow an NPC should walk.
- Replace With … Button: Now in the web panel, you can replace an existing entry with a different one. This is particularly useful!
- Improved Navigation for long cinematic content modes
- Allow glowing effect data to have colors
- And 70+ more new features!
To see all the changes, look at the full changelogs
Developer Changes
This new version comes with many breaking changes for developers! A full migration guide is provided to help you migrate your extensions to the new version.
If you find Typewriter valuable for your server, please consider Sponsoring the Project
Supplementary resources
| File | Type | Size | |
|---|---|---|---|
| BasicExtension.jar | Unknown | 1.11 MiB | |
| CitizensExtension.jar | Unknown | 13.94 KiB | |
| EntityExtension.jar | Unknown | 1.03 MiB | |
| MythicMobsExtension.jar | Unknown | 56.28 KiB | |
| QuestExtension.jar | Unknown | 111.99 KiB | |
| RPGRegionsExtension.jar | Unknown | 22.62 KiB | |
| RoadNetworkExtension.jar | Unknown | 1,021.14 KiB | |
| SuperiorSkyblockExtension.jar | Unknown | 47.64 KiB | |
| VaultExtension.jar | Unknown | 51.84 KiB | |
| WorldGuardExtension.jar | Unknown | 36.62 KiB |
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:Vm7B3ymm:6zRHSEd6"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:Vm7B3ymm:6zRHSEd6"
}

