What are Dynamic Variables
Before, all fields on an entry needed to be filled in with valid values during configuration time. With Dynamic variables, fields can now be substituted with runtime values.
To give you some inspiration of what you can now do:
- Have cinematics in the world the player is in, instead of in a fixed world. Which is useful for playing cinematics in generated dungeons.
- Have the skin of a NPC be determined from a placeholder. For making leaderboard NPCs.
- Having the strength of a potion effect be the value of a fact. For "upgradable skills."
- Making launch pads shoot the player in the direction where they are looking.
Placeholder Parameters
Sometimes you want to know different details of an entry. Like the time it last got updated. The remaining time until the fact resets. Entries now support parameterized placeholders for more detailed information:
%typewriter_<entry id>:remaining:10% // Items left to collect
%typewriter_<entry id>:time:expires:relative% // Time until daily quest is active
New Entries
- Entity types: ArmorStand, EnderDragon, Parrot, Wolf, BlockDisplay
CalculatedFact
for complex expressionsWeightedRandomTriggerGate
for probability-based triggers- World and potion effect audience filters
Breaking Changes
- Extension developers: PlaceholderEntry API updated
Random...DialogueEntry
deprecated (useRandomVariable
instead)
If you find Typewriter valuable for your server, please consider Sponsoring the Project
There are also some critical bug fixes:
- The option dialogue now makes sure it always displays all options, instead of only the first
- Fixed an issue with actions not being able to trigger any following entries
- Staging folder, not saving except for when shutting down the server. (Broken since beta-133)
- Recalculating the road network creates 1 snapshot per world instead of 1 per node.
Typewriter v0.6 – The Extensions Update
This release brings a foundational shift in Typewriter’s core structure and a major update to the item system, along with new features and important usability improvements. Below are the highlights:
Critical Changes
-
From Adapters to Extensions
Typewriter has transitioned from usingAdapters
toExtensions
, marking a significant evolution in how custom functionality is integrated. Key improvements with this change include:- Gradle Plugin for Extensions: A new Gradle plugin simplifies the process of developing Extensions, making setup and management easier for developers.
- Compile-Time Discovery: Discovery of Extension internals, such as entries, now occurs at compile-time instead of runtime. This not only future-proofs Typewriter but also lays the groundwork for the upcoming marketplace, where entries in each Extension will be viewable without running the Extension.
- Hot Reloading: Extensions can now be reloaded on-the-fly using
/tw reload
, enabling real-time updates without the need for a server restart. - Optimized Loading: Only the necessary classes are loaded from Extensions. For example, if an Extension contains thousands of entries but only one is used, Typewriter loads only that specific entry, enhancing memory and processing efficiency.
- Extension Validators: Built-in validators now check Extensions against Typewriter’s standards, helping to ensure reliability and consistency across user-created Extensions.
-
New Item System
Typewriter introduces a completely new item system, which is incompatible with previously defined items. Users will need to recreate items to align with the new structure. Based on user feedback, no migrator will be provided, as the majority found it unnecessary. Please test this update on a development server before upgrading your production environment.
Important Features
-
Skip Cinematic Segments
A newSkipCinematicEntry
gives players the option to skip sections of cinematics by pressing a configured key, offering more control over in-game cinematic experiences. -
UI and Web Panel Upgrades
Improvements to the web panel and UI components provide a smoother experience. These upgrades include the ability to unselect Sound IDs, layout enhancements, compatibility improvements behind reverse proxies, and visual indicators for empty fields, all of which contribute to a more intuitive and flexible panel.
New Entries
- Cinematic Entries:
GameTimeCinematicEntry
,WeatherCinematicEntry
,SkipCinematicEntry
,BlockCommandCinematicEntry
- Dialogue:
ActionbarDialogueEntry
,SimpleMessageActionEntry
- Entity and Activity Entries:
MythicMobKillPlayerEventEntry
,RemovePotionEffectActionEntry
,LookAtBlockActivity
,LookAtPitchYawActivity
,RandomPatrolActivity
,AmbientSoundActivity
,ScaleData
,InteractionEntity
,PillagerEntity
,VindicatorEntity
,Llama Entity
- Miscellaneous:
WeatherAudienceEntry
,FireworkActionEntry
(withflight duration
setting)
As always, please make sure you have a backup before updating and enjoy the new features!
If you consider Typewriter to be valuable to your server, please consider Sponsoring the Project