ð§ BetterModel Integration
Animated Blockbench models as TypeWriter NPCs, with a different look for each player.
A TypeWriter extension by BTC Studio
Vanilla mobs limit your NPCs to a handful of shapes, and a model you built in Blockbench is useless if quests and dialogues cannot use it.
BetterModel Integration places your animated BetterModel models as TypeWriter entities, plays their animations from triggers and cinematics, and lets each player see a different state of the same NPC.
âĻ What it does
You design a model and its animations in Blockbench and install it in BetterModel. In TypeWriter, a definition says which model to use and an instance places it in the world.
The usual TypeWriter entity machinery then works on it: audiences, activities, interactions and dialogue speakers.
Models are rendered with packets, per player. Two players can look at the same NPC and see other bones, another glow or another tint.
ð§ Model entities
- Definition and instance: the definition holds what is shared (model, animation names, hitboxes, data). The instance holds the position and an activity. An instance can override data from its definition.
- Automatic animations: idle, walk, strafe, jump, fly, attack, hurt and interact animations play from the entity state. You can change the animation names to match your model.
- Named NPCs: a model with a display name shows an interaction indicator above it, driven by interact objectives and interaction entries.
- Dialogue speaker: use the model as the speaker of any TypeWriter dialogue.
ðĶī Per-player bone control
- Show or hide bones: hide a hat or a weapon from players who do not match your criteria, for example until a quest step is done.
- Bone appearance: set glow, tint, enchant glint and brightness per bone, depending on criteria.
- Attachment: swap a bone with one from another model, to change an outfit without making a second model.
- Passenger: attach a passenger entity to a bone.
- Per-player rendering: because each player gets their own packets, one NPC can show different states to different audiences.
ðąïļ Hitboxes
- Click areas on bones: a Hitbox entry binds an interaction box to a bone, so players click the part of the model you choose.
- Automatic hitboxes: bones named
hitbox in Blockbench become click areas with no extra entry. - Fallback box: without either, one box covers the whole model, so the NPC can always be clicked.
⥠Animation actions
- Play an animation on a placed model from any trigger, for example a wave when the player clicks the NPC.
- Stop an animation when the moment has passed.
- Player animations: play a BetterModel player-limb animation on the player, such as a custom emote.
ðŽ Cinematics
- Entity cinematic: drive an animated model from a recording on the cinematic timeline.
- Animation cinematic: play a model animation at a precise moment of a cutscene.
- Player animation cinematic: animate the player's limbs during a cinematic.
- Bone camera: attach the cinematic camera to a bone of a model, so the audience watches the scene from the creature's point of view.
ð§Đ Entries
All 15 entries
Entities
bettermodel_definition: a BetterModel entity definitionbettermodel_instance: an instance of a BetterModel entity
Entity data
bettermodel_bone_visibility: show or hide bones with criteriabettermodel_bone_appearance: per-bone glow, tint, glint and brightnessbettermodel_hitbox_data: hitbox on a specific bonebettermodel_attachment: replace a bone with one from another modelbettermodel_passenger: attach a passenger entity to a bonebettermodel_indicator_config: interaction indicator of a model entity
Actions
play_bettermodel_animation: play an animation on a BetterModel entitystop_bettermodel_animation: stop an animation on a BetterModel entityplay_player_animation: play a player animation from the BetterModel players folder
Cinematics
bettermodel_entity_cinematic: use an animated BetterModel entity in a cinematicbettermodel_animation_cinematic: play a model animation during a cinematicplayer_animation_cinematic: play a player animation during a cinematicbettermodel_bone_camera_cinematic: attach the cinematic camera to a bone of a model
ð Set up in a few minutes
- Install BetterModel with your models, install the TypeWriter Quest, Basic, Entity and RoadNetwork extensions, drop the jar in
plugins/Typewriter/extensions/ and restart. - On a static page, add a BetterModel Definition: set
modelId to your model name, enable named and set a display name. - On a manifest page, add a BetterModel Instance that uses the definition, and capture its spawn location with the position tool.
- Add a Play Entity Animation action behind an entity interact event, publish, and click the NPC. The full walkthrough is in the documentation.
ð Requirements
- TypeWriter 0.9.0-beta-177 or newer, with the Quest, Basic, Entity and RoadNetwork extensions
- Paper server
- BetterModel (built against 3.3.0; the bone camera needs 2.1.0 or newer)
- Players must accept the resource pack generated by BetterModel to see the models