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
Manifesting Stories Update
Since this update is so big, it is almost impossible to list every change. Therefore, only the biggest changes are listed.
With 729 commits, 1,438 changed files, with 60,258 additions and 33,483 deletions, this is by far the biggest update in the history of Typewriter.
Manifest Entries
Manifest entries are entries that automatically do stuff based on the environment. Think of showing NPCs based on filters (such as quest status) and having NPC holograms. Boss bars, Creating scoreboards, Interaction zones, and much more!
For the programmers under us, where sequence entries are like imperative programming. Manifest entries are declarative programming. They can be linked in an acyclic-directional graph.
Audience Entries
The first subclass of Manifest Entries are Audience Entries. They display anything to the player, Such as a boss bar. There is a special variety of audience entries, which are AudienceFilterEntries. They filter out players, such as regions, if they are in a certain part of a quest, if they are in a cinematic... These types of filters can be chained to have extreme customizability and flexibility.
Entity Adapter
Say goodbye to the old NPC adapters like Citizens, FancyNpcs, and ZNPCs. The Entity Adapter allows you to define entities directly within Typewriter, empowering you to use them in cinematics, control their visibility based on conditions (like during a quest segment), and even have them navigate and exhibit complex behaviors. With full control, the sky is the limit!
Road Network
You can now create Road Networks in Typewriter. These allow NPCs to navigate through the world and show Path Streams to guide the players.
Grouped Facts
The value of a fact can now be set for a group of players. For example, you can now check if a party of players have killed a certain number of enemies.
Documentation Improvements
Some of you may have already looked at the new documentation. We've made major improvements to the documentation. All to make it easier to use and understand Typewriter.
Switched from ProtocolLib to PacketEvents
This switch has allowed many new features in Typewriter, like the new buttery smooth camera cinematics. It means that now you need to install PacketEvents in order for Typewriter to work.
Made some breaking API changes
There are various breaking API changes for Adapters. To view the migration, take a look at the Migration Guide
Deprecation Warning
With this release, we're marking the old NPC adapters, such as ZNPCs and FancyNpcs, as deprecated. This means that while they will still function in the current version, this will be the last release where they are supported. Going forward, we'll only be providing bug fixes for the Citizens NPC adapter. It will remain updated primarily to assist new users in getting started, but we strongly encourage everyone to transition to the Entity Adapter for the best Typewriter experience.