TypeWriter Extensions

๐Ÿงฌ MythicMob NPC Extension

Seamlessly use MythicMobs as cinematic NPCs in TypeWriter.

โœจ Overview

This extension integrates MythicMobs as NPCs inside TypeWriter. It focuses on definition, control, and cinematic usage of MythicMob-based NPCs.

  • ๐ŸŽญ Turn MythicMobs into reusable NPC definitions and instances.
  • ๐ŸŽฅ Drive camera focus, look-at interactions and scripted cinematics.
  • ๐Ÿง  Read NPC facts & variables for conditions, UI and logic.
  • โš™๏ธ Control speed, stance, skills and behavior within quests.

๐ŸŽญ NPC Control

  • Spawn / hide MythicMob NPCs when entering a scene.
  • Attach interactions when the player clicks on them.
  • Use NPCs as persistent โ€œstory charactersโ€.

๐ŸŽฅ Cinematic Integration

  • Focus the camera on a specific MythicMob.
  • Force the player to look at the NPC at key moments.
  • Cast MythicMob skills during cutscenes.

๐Ÿ“Š Gameplay Logic

  • Check NPC presence, distance and visibility.
  • Read health, level, faction, stance, animations.
  • Build conditions based on combat or threat table.

๐Ÿงฉ Core Entries

๐Ÿ“ NPC Definitions & Visibility

  • mythicmob_npc_definition โ€“ Defines a MythicMob that can be used as an NPC.
  • mythicmob_npc_instance โ€“ Represents a concrete instance of a MythicMob NPC.
  • mythicmob_npc_show โ€“ Shows a MythicMob NPC.
  • mythicmob_npc_hide โ€“ Hides a MythicMob NPC.

๐Ÿค Interactions & Camera

  • mythicmob_npc_interact โ€“ Triggered when a player interacts with a MythicMob NPC.
  • mythicmob_npc_look_at_interaction_bound โ€“ Forces the player to look at a specific MythicMob NPC.
  • mythicmob_look_at_interaction_bound โ€“ Forces the player to look at a specific MythicMob around the player.
  • mythicmob_npc_camera_cinematic โ€“ Focuses the camera on a MythicMob NPC during a cinematic.
  • mythicmob_npc_skill_cinematic (v0.4) โ€“ Casts a MythicMob skill from a specific position in a cinematic.

๐Ÿƒโ€โ™‚๏ธ Movement, Stance & Skills

  • mythicmob_speed_data (v0.3) โ€“ Speed data of a MythicMob NPC.
  • modelengine_stance_data (v0.6) โ€“ Configure MythicMob NPC stances (idle, walk, etc.) with day/night variants for idle and walk.
  • mythicmob_skill_objective (v2.5) โ€“ Objective focused on skills from mobs (breed, interact, etc.).

๐Ÿ“Œ Facts (v2.0)

Facts are used in conditions to query the current state of a MythicMob NPC.

Fact Description
mythicmob_npc_presence_fact Checks if a specific MythicMob NPC is present within a defined radius.
mythicmob_npc_distance_fact Returns the distance between the player and a MythicMob NPC (optionally limited by a radius).
mythicmob_npc_visibility_fact Determines whether a MythicMob NPC is visible to the player.
mythicmob_npc_health_percentage_fact Checks the current health percentage of a MythicMob NPC.
mythicmob_npc_animation_playing_fact Checks if a MythicMob NPC is currently playing a specific ModelEngine animation.
mythicmob_npc_threat_table_size_fact Returns the size of the NPCโ€™s threat table; can optionally require the NPC to be in combat.

๐Ÿ“Š Variables (v2.0)

Variables expose dynamic data about MythicMob NPCs to dialogs, conditions and UI.

Variable Description
mythicmob_npc_health_variable Returns the current health of a MythicMob NPC (Double).
mythicmob_npc_max_health_variable Returns the maximum health of a MythicMob NPC (Double).
mythicmob_npc_health_percentage_variable Returns the health percentage of a MythicMob NPC (Int, 0โ€“100).
mythicmob_npc_level_variable Returns the level of a MythicMob NPC (Double).
mythicmob_npc_power_variable Returns the power value of a MythicMob NPC (Float).
mythicmob_npc_faction_variable Returns the faction name of a MythicMob NPC (String).
mythicmob_npc_stance_variable Returns the current stance of a MythicMob NPC (String).
mythicmob_npc_active_animations_variable Returns the list of active animations currently playing on the NPC (String, supports separator).
mythicmob_npc_variable Generic variable getter for MythicMob NPC custom data. Supports String, Int, Float or Double.

๐ŸŽฌ Cinematics & TypeWriter Integration

For everything related to artifact capture, camera paths, and other cinematic logic, you can keep using the existing TypeWriter entries. This extension is designed to plug MythicMob NPCs into that system:

  • Use mythicmob_npc_definition and mythicmob_npc_instance as targets for your cinematics.
  • Combine with TypeWriterโ€™s artifact system for advanced camera work.
  • Drive narrative by syncing NPC presence, stance and skills with dialog pages.

๐ŸŽฅ Demo

A short preview in action:

๐Ÿ”— Watch the demo on YouTube

๐Ÿ’พ Download

๐Ÿ”— Click to Download

๐Ÿ’ฌ TextDisplay Dialogue Extension

Use Minecraft TextDisplay entities as immersive dialogues inside TypeWriter.

โœจ Overview

This extension adds support for TextDisplay-based dialogues in TypeWriter. Instead of using only chat or classic UI, you can render dialogues directly in the world using TextDisplay entities โ€“ perfect for in-world captions, holograms, and cinematic subtitles.

  • ๐Ÿชง Show in-world dialogue lines via TextDisplay.
  • ๐ŸŽ› Configure options, spoken lines and cinematic flows.
  • โฑ Control display duration via a TypeWriter placeholder.
  • ๐ŸŽฌ Combine with cinematics for fully diegetic story moments.

๐Ÿชง World-Space Dialogues

  • Show text directly above NPCs, objects or locations.
  • Keep the player immersed without relying on chat spam.
  • Use it for signs, floating captions, holograms, and more.

๐ŸŽ™ Spoken & Cinematic Lines

  • Display spoken lines during a dialogue sequence.
  • Time your text with camera movements and sounds.
  • Perfect for cutscenes and key story beats.

โฑ Timer Integration

  • Control how long text remains visible.
  • Drive pacing with a dedicated timer placeholder.
  • Keep multi-line dialogues clean and readable.

๐Ÿงฉ Entries

These entries expose different ways to use TextDisplay dialogues in your TypeWriter flows.

  • textdisplay_option โ€“ Add an Option TextDisplay Dialogue.
    Use this to show choice-based or menu-like options via TextDisplay.
  • textdisplay_spoken โ€“ Add a Spoken TextDisplay Dialogue.
    Ideal for character lines, short speech bubbles or NPC โ€œtalkingโ€ text.
  • textdisplay_cinematic โ€“ Add a Cinematic TextDisplay Dialogue.
    Designed for cutscenes and scripted sequences, synchronized with camera and events.

โฑ Timer Placeholder

The extension provides a dedicated placeholder to control and/or display the dialogue timer.

Placeholder Description
%typewriter_textdisplaydialogue_timer% Represents the remaining or configured time for the current TextDisplay dialogue.

You can use this placeholder in UI elements or other text fields to show a countdown or simply to drive logic based on remaining time.

๐Ÿงช Usage Ideas

  • Show floating subtitles during boss fights or major events.
  • Display โ€œthoughtsโ€ of the player or NPCs above their head.
  • Create tutorial panels in the world with short, readable text.
  • Combine with cinematics to sync text with camera pans and sound effects.

๐ŸŽฅ Demo

A short preview in action:

๐Ÿ”— Watch the demo on YouTube

๐Ÿ’พ Download

๐Ÿ”— Click to Download

๐Ÿงฑ ItemsAdder Integration Extension

Link TypeWriter with ItemsAdder to react to custom blocks and furniture.

โœจ Overview

This extension connects TypeWriter with ItemsAdder by introducing new node entries for custom blocks and furniture. You can now trigger quests, objectives and story events when players build, break or interact with your ItemsAdder content.

  • ๐Ÿงฑ Track placement and destruction of custom blocks.
  • ๐Ÿช‘ React when furniture is placed or broken.
  • ๐ŸŽฏ Use objectives to build progression around building / breaking actions.
  • ๐Ÿ“œ Integrate ItemsAdder blocks directly into TypeWriter quests.

๐Ÿงฑ Custom Blocks

  • Detect when players place specific ItemsAdder blocks.
  • Listen for break events on custom blocks.
  • Use block interactions as quest progression steps.

๐Ÿช‘ Furniture

  • React when furniture is placed in the world.
  • Detect when furniture is broken or removed.
  • Use furniture as decorative quest objectives (tables, chairs, props, etc.).

๐ŸŽฏ Quest Objectives

  • Create โ€œbuild this structureโ€โ€“type quests with custom blocks.
  • Require players to place or break certain furniture items.
  • Combine with other TypeWriter objectives for complex quest chains.

๐Ÿงฉ Entries

The extension adds both event triggers and objectives, covering placement and breaking of ItemsAdder blocks and furniture.

๐Ÿ“ก Events

  • on_furniture_place_event โ€“ Triggers when a furniture is placed.
    Use this to start dialogues, give rewards or update quest steps when a furniture is placed.
  • on_furniture_break_event โ€“ Triggers when a furniture is broken.
    Ideal for cleanup logic, penalties, or destruction-based events.
  • on_customblock_place_event โ€“ Triggers when a custom block is placed.
    Perfect for building quests or structure completion checks.
  • on_customblock_break_event โ€“ Triggers when a custom block is broken.
    Useful for sabotage mechanics, mining tasks or cleanup phases.

๐ŸŽฏ Objectives

  • break_customblock_objective โ€“ An objective to break custom blocks.
    Require players to mine or destroy specific ItemsAdder blocks as part of a quest.
  • place_customblock_objective โ€“ An objective to place custom blocks.
    Ideal for construction objectives, building outposts or decorating areas.
  • break_furniture_objective โ€“ An objective to break furniture.
    Can be used for โ€œcleanupโ€ tasks, raids, or destruction sequences.
  • place_furniture_objective โ€“ An objective to place furniture.
    Great for furnishing houses, decorating player rooms or setting up scenes.

๐Ÿงช Usage Ideas

  • Create a quest where players must build a custom shrine using ItemsAdder blocks.
  • Ask players to furnish an NPCโ€™s house with specific ItemsAdder furniture.
  • Track progressive construction of a town, outpost or base using custom blocks.
  • Use destruction objectives for siege events or raid-like scenarios.

๐ŸŽฅ Demo

A short preview in action:

๐Ÿ”— Watch the demo on YouTube

๐Ÿ’พ Download

๐Ÿ”— Click to Download

โš”๏ธ MMOCore Integration Extension

Link TypeWriter to MMOCore to drive classes, professions, skills, waypoints and guilds directly from your stories.

โœจ Overview

This extension connects TypeWriter with MMOCore by adding new node entries for actions, facts, groups, objectives and variables. You can read and manipulate the playerโ€™s class, professions, skills, waypoints, stats and guild as part of your quests.

  • ๐Ÿ“ˆ Control and reward professions & class levels directly from TypeWriter.
  • ๐Ÿ“ Manage waypoints (lock, unlock, warp) in quest flows.
  • ๐Ÿงช Use MMOCore facts (stats, attributes, skills) in conditions and branches.
  • ๐Ÿ‘ฅ Target parties and guilds as groups for shared events.

๐ŸŽ“ Classes & Professions

  • Grant profession experience as quest rewards.
  • Check class level and profession progress.
  • Trigger events when players reach specific levels.

๐Ÿ“ Waypoints & Travel

  • Unlock waypoints as quest milestones.
  • Lock or revoke access when needed.
  • Teleport players using stellium-based warps.

๐Ÿ‘ฅ Parties & Guilds

  • Target entire MMOCore parties or guilds at once.
  • Read party member counts for scaling encounters.
  • Use guild info for faction-based stories.

โš™๏ธ Actions

Actions modify the player's MMOCore profile or teleport them based on your quest logic.

  • add_profession_experience โ€“ Adds a quantity of experience to the specified MMOCore profession (or to the main class if empty).
  • mmocore_leave_skill_casting โ€“ Forces the player to leave MMOCore casting mode if a spell chain is in progress.
  • mmocore_lock_waypoint โ€“ Removes a player's access to a given MMOCore waypoint.
  • mmocore_unlock_waypoint โ€“ Unlocks a MMOCore waypoint for the targeted player.
  • mmocore_warp_waypoint โ€“ Teleports the player to a MMOCore waypoint, consuming the specified amount of stellium.

๐Ÿ“Œ Facts

Facts expose read-only values from the MMOCore profile for use in conditions and branching.

Fact Description
class_level_fact Returns the player's current MMOCore class level.
party_members_fact Returns the number of members in the player's MMOCore party.
mmocore_attribute_value_fact Returns the number of points invested in a specific MMOCore attribute.
mmocore_player_boolean_fact Exposes boolean states (max level reached, casting spell, etc.).
mmocore_player_number_fact Returns numerical values (level, experience, points, resources).
mmocore_skill_fact Reads the level or unlock status of an MMOCore class skill.
mmocore_stat_value_fact Returns the total or base value of an MMOCore stat.
mmocore_profession_fact Provides the level or experience of a specific MMOCore profession.
profession_level_fact Returns the MMOCore level achieved for a given profession (or the main class if empty).
mmocore_skill_slot_bound_fact Indicates whether a MMOCore skill slot currently contains a skill.
mmocore_skill_tree_node_fact Checks the level, unlock status, or maxed status of an MMOCore skill tree node.
mmocore_waypoint_unlocked_fact Checks whether a specific MMOCore waypoint is unlocked by the player.
guild_member_fact Returns the number of members in the player's MMOCore guild.
guild_online_member_fact Returns the number of online members in the player's MMOCore guild.

๐Ÿ‘ฅ Groups

Groups let you target multiple players at once based on their MMOCore party or guild.

  • party_group โ€“ Groups players by their MMOCore party to address the entire party simultaneously.
  • guild_group โ€“ Groups players by their MMOCore guild to reach the entire guild at once.

๐ŸŽฏ Objectives

Objectives track the player's MMOCore progress and fire when your conditions are met.

  • profession_level_objective โ€“ Tracks a player's progress toward reaching a given MMOCore profession (or class) level, with a trigger upon completion.
  • mmocore_skill_cast_objective โ€“ Tracks when a player casts specific MMOCore skills, then triggers on completion.

๐Ÿ“Š Variables

Variables provide string or list outputs you can display in UI, dialogues, or use in logic.

Variable Description
mmocore_active_casting_skills_variable Lists the skill IDs available in the current casting chain.
mmocore_bound_skill_variable Returns the skill ID bound to a specific MMOCore slot.
mmocore_friends_list_variable Lists the UUIDs of all of the player's MMOCore friends.
mmocore_guild_name_variable Returns the name of the player's MMOCore guild or an empty string.
player_class_variable Returns the readable name of the player's current MMOCore class.
mmocore_player_class_variable Returns the internal ID of the player's MMOCore class.
mmocore_unlocked_nodes_variable Lists the IDs of MMOCore skill tree nodes that have already been unlocked.
mmocore_unlocked_skills_variable Lists the MMOCore skills unlocked for the current class.
mmocore_waypoints_variable Returns all MMOCore waypoint IDs unlocked by the player.
mmocore_guild_id_variable Returns the internal identifier of the player's MMOCore guild.
mmocore_guild_tag_variable Returns the tag of the player's MMOCore guild.
mmocore_guild_owner_variable Returns the UUID of the owner of the player's MMOCore guild.
mmocore_guild_members_variable Lists the UUIDs of the members of the player's MMOCore guild.

๐Ÿ’พ Download

๐Ÿ”— Click to Download

๐Ÿงฟ MMOItems Integration Extension

Connect TypeWriter to MMOItems with events, objectives and variables for crafting, gems and item usage.

โœจ Overview

This extension links TypeWriter to MMOItems by adding new node entries for crafting events, gem application, item consumption, and more. You can use these entries to drive quests and logic based on how players create and use MMOItems.

  • ๐Ÿ›  Track crafting in MMOItems crafting stations.
  • ๐Ÿ’Ž React when players apply gem stones to their gear.
  • ๐Ÿงช Detect item usage/consumption for potions, scrolls and more.
  • ๐Ÿ“Š Count MMOItems and expose them via facts & variables.

๐Ÿ›  Crafting Flow

  • Trigger events when players craft specific MMOItems.
  • Open crafting stations directly from TypeWriter actions.
  • Track crafting station usage as quest objectives.

๐Ÿ’Ž Gem & Upgrade Logic

  • Detect when players apply gem stones to MMOItems.
  • Use gem application as progression or unlock gates.
  • Reward players for fully socketed or upgraded gear.

๐Ÿงช Item Usage & Checks

  • Track when players use or consume MMOItems.
  • Count items in hand or inventory for conditions.
  • Use a variable to check for specific MMOItems on players.

๐Ÿงฉ Entries

๐Ÿ“ก Events

  • mmoitems_item_craft_event โ€“ Triggered when a player crafts an MMOItem using a crafting station.
  • mmoitems_gem_stone_apply_event โ€“ Triggered when a player applies a gem stone to an MMOItem.
  • use_mmoitem_event โ€“ Triggered when a player uses/consumes specific MMOItems.
  • open_crafting_table_event (via open_crafting_table_action) โ€“ Can be used to react when a player opens a crafting station.

๐ŸŽฏ Objectives

  • mmoitems_craft_objective โ€“ Tracks crafting of specific MMOItems.
  • use_mmoitem_objective โ€“ Tracks the usage/consumption of specific MMOItems.
  • mmoitems_gem_stone_apply_objective โ€“ Tracks applying gem stones to MMOItems.
  • open_crafting_table_objective โ€“ Tracks how often players open crafting stations.

โš™๏ธ Actions

  • open_crafting_table_action โ€“ Opens an MMOItems crafting station for the player.
  • give_mmoitem_action โ€“ Gives MMOItems to a player (e.g. quest rewards, starting gear).

๐Ÿ“Œ Facts

  • mmoitems_count_fact โ€“ Counts the number of one or multiple MMOItems in hand or in inventory.
    Useful for โ€œbring X itemsโ€ objectives or inventory checks.

๐Ÿ“Š Variables

  • mmoitem_variable (v0.8) โ€“ Variable to check MMOItems for a player.
    For example, to verify which item is in hand, or to check if a revision/specific item is present.

๐Ÿงช Usage Ideas

  • Create crafting quests where players must forge specific MMOItems in crafting stations.
  • Require players to socket gems into their weapons/armor to advance the story.
  • Track potion or scroll consumption as part of rituals, trials or boss preparations.
  • Use mmoitems_count_fact to validate that a player collected enough special items.
  • Use mmoitem_variable to branch dialogues based on the item currently held by the player.

๐Ÿ’พ Download

๐Ÿ”— Click to Download

๐Ÿ›’ Shops Extension

Dynamic marketplace system for TypeWriter with real-time economy, stock and smart pricing.

โœจ Overview

The Shops Extension allows creation of fully dynamic, interactive marketplaces integrated into TypeWriter. It introduces a living economy with real-time stock tracking, dynamic price variations and multi-currency support.

  • ๐Ÿ“ˆ Dynamic pricing based on supply & demand
  • ๐Ÿ“ฆ Real-time stock persistence & scheduled resets
  • ๐Ÿ’ฐ Multi-currency support (Vault, PlayerPoints, Placeholder)
  • ๐Ÿง  Fully customizable GUI & dialogues
  • ๐ŸŽ› Deep TypeWriter action & trigger integration

๐Ÿ“Š Dynamic Economy

  • Prices rise as stock decreases
  • Player-driven demand system
  • Fully configurable price strategies

๐Ÿ–ฅ Custom GUI

  • Dynamic buttons & navigation
  • Dialog-based amount input
  • Fully themed interfaces

๐Ÿ”„ Reset & Limits

  • Daily / weekly / interval resets
  • Per-player purchase limits
  • Anti-monopoly protection

๐Ÿ“ˆ Dynamic Pricing System

Each shop item uses a PriceStrategy which calculates buy & sell prices based on current stock.

soldRatio = (stockMax - currentStock) / stockMax
steppedRatio = (soldRatio / step) * step
finalPrice = basePrice + (maxPrice - basePrice) * steppedRatio
    
  • ๐Ÿ’ธ Price increases as items become rare
  • ๐Ÿ“‰ Price drops when stock refills
  • โš™๏ธ Fully configurable limits & rounding

๐Ÿ’ฐ Multi-Currency Support

  • VAULT โ€“ Standard economy plugin integration
  • PLAYERPOINTS โ€“ Point-based economy
  • PLACEHOLDER โ€“ Custom currency via PlaceholderAPI

Custom currencies are managed through commands: addCommand / removeCommand with placeholders.

๐Ÿงฉ Shop Definition

  • title โ€“ GUI name
  • rows โ€“ Slot rows (1-6)
  • items โ€“ Shop item configs
  • currency โ€“ Economy type
  • strategy โ€“ Price rules
  • resetPolicy โ€“ Auto-restock system
  • limitPerPlayer โ€“ Purchase limits

Over 40+ configuration fields available for fine-tuned behavior.

๐Ÿ”„ Transaction Flow

  1. Player selects item
  2. Checks: stock, balance, permissions
  3. Dialog confirmation (custom amount)
  4. Currency deducted / added
  5. Stock updated & saved

๐Ÿ”— TypeWriter Integration

  • Open shops via open_shop action
  • Trigger from NPCs, Regions, Dialogue or Events
  • Full Placeholder support
  • Commandless architecture

๐ŸŽฅ Demo

A short preview in action:

๐Ÿ”— Watch the demo on YouTube

๐Ÿ’พ Download

๐Ÿ”— Click to Download

โœจ EnchantmentCreator Extension

Design, balance and distribute custom enchantments directly through TypeWriter.

๐Ÿ”ฎ Overview

The EnchantmentCreator extension provides a complete system for defining custom enchantments inside TypeWriter. Each enchantment is fully configurable: name, lore, icon, applicable items, cost, max level, weight, triggers, conditions and cooldowns.

  • ๐ŸŽจ Custom enchantment names, colors, lore and icons.
  • โš™๏ธ Control max level, cost, weight and eligible items.
  • โšก activeTriggers, conditions & cooldowns for in-depth behavior.
  • ๐Ÿ“š Distribute enchanted books via TypeWriter actions.
  • ๐Ÿงฑ Restrict or remove vanilla enchantments for full control.

๐ŸŽจ Custom Enchantment Design

  • Unique names with color formatting.
  • Custom lore to explain effects and rarity.
  • Icon configuration for books and tooltips.

โš”๏ธ Behavior & Balance

  • Choose which items the enchantment applies to.
  • Configure max level, cost curves and weight.
  • Use triggers, conditions and cooldowns to tune power level.

๐Ÿ“š Distribution & Vanilla Control

  • Give enchanted books as quest rewards or loot.
  • Style each book (name & lore) per enchantment/level.
  • Disable vanilla enchantments to enforce your custom system.

๐Ÿงฉ Available Entries

๐Ÿ“œ enchantment_definition

enchantment_definition โ€“ Defines a new custom enchantment and all its properties.

  • Name & color โ€“ Custom formatted enchantment name.
  • Lore โ€“ Descriptive lines to explain the effect and flavor.
  • Applicable items โ€“ Which tools, weapons, armor or items can receive it.
  • Cost & max level โ€“ Enchantment cost rules and maximum attainable level.
  • Weight โ€“ Controls rarity and roll chances in your system.
  • activeTriggers โ€“ When the enchantment should activate (e.g. on hit, on damage, on move).
  • Conditions โ€“ Extra requirements for activation (player state, target, region, etc.).
  • Cooldowns โ€“ Defines how frequently the effect can trigger.

๐Ÿ“š give_enchantment_book

give_enchantment_book โ€“ Gives the player an enchanted book containing a specified custom enchantment.

  • Select which custom enchantment to embed.
  • Set a specific enchantment level.
  • Override book name and book lore for cosmetic or contextual reasons.
  • Use in loot tables, quest rewards, NPC shops or event chests.

๐Ÿงฑ vanilla_enchantment_restriction

vanilla_enchantment_restriction โ€“ Removes or restricts vanilla enchantment(s).

  • Disable specific vanilla enchantments globally.
  • Prevent conflicts with your custom enchantment system.
  • Enforce a curated progression fully built with EnchantmentCreator.

๐Ÿงช Usage Ideas

  • Create legendary enchants tied to boss drops or long questlines.
  • Build class- or element-based enchant trees (fire, frost, void, etc.).
  • Replace vanilla enchanting with a fully scripted system controlled by TypeWriter.
  • Use unique enchanted books as collectible artifacts with lore and story hooks.

๐ŸŽฅ Demo

A short preview in action:

๐Ÿ”— Watch the demo on YouTube

๐Ÿ’พ Download

๐Ÿ”— Click to Download

๐Ÿ“ Player Tracking Extension

Advanced session recording and visualization system for TypeWriter.

โœจ Overview

This extension introduces a complete player movement tracking system for TypeWriter. It automatically records player positions into distinct sessions and allows admins to replay or visualize these paths both in-game (via particles) and on the web (via BlueMap).

  • ๐Ÿงญ Automatic session management (Join/Quit)
  • ๐Ÿงฌ High-precision coordinate & timestamp logging
  • ๐Ÿ—บ๏ธ Native BlueMap Integration
  • โœจ In-game animated particle inspection
  • ๐Ÿ’พ JSON-based Artifact storage

๐Ÿ’พ Data Recording

  • Records X, Y, Z, World, and Time.
  • Configurable recording interval (default: 20s).
  • Smart session handling (persists across restarts).

๐ŸŽจ Visual Inspection

  • Visualize past movement with /tracking.
  • Animated "moving dot" particle effects.
  • Color-coded path segments.

๐ŸŒ Web Integration

  • Draws player paths directly on BlueMap.
  • Toggle points and path lines via manifest.
  • Real-time updates during inspection.

๐Ÿงฉ Entries & Artifacts

  • tracking_manifest โ€“ Master configuration (interval, BlueMap settings, particle types).
  • tracking_artifact โ€“ Database artifact storing all player sessions and points.

๐Ÿ–ฅ Commands

/tracking <player> <session_id>  - Start visualizing a specific session
/tracking                        - Stop current inspection
    

๐Ÿงช Usage Scenarios

  • Moderation: Review suspicious player movement or verify "I was at X" claims.
  • Analysis: Understand player flow in cities or dungeons (heatmaps).
  • Debugging: Trace exact paths taken during testing sessions.

๐Ÿ’พ Download

๐Ÿ”— Click to Download

๐Ÿงญ Companion Extension

Sidekick NPCs that follow, react, and animate alongside players โ€“ fully compatible with ModelEngine.

โœจ Overview

The Companion Extension adds smart, scriptable companions to TypeWriter. Each player can have a dedicated sidekick (NPC or ModelEngine entity) that follows them, reacts to interactions, and stays synchronized with their movement and animations.

  • ๐Ÿ‘ค One companion per player, controlled through a dedicated invocation entry.
  • ๐Ÿง  Smart following logic with min/max distance, teleport failsafe and world-change handling.
  • ๐ŸŽญ Optional ModelEngine integration to keep idle/walk animations in sync with movement.
  • ๐Ÿ–ฑ Interaction events when the player right/left-clicks their own companion.

๐Ÿงฉ Entries

๐Ÿ“ก companion_invocation (Audience filter)

companion_invocation โ€“ Spawns or removes a companion for players inside the audience filter.

  • Summons a companion when a player enters the filter, despawns it when they leave.
  • Automatically re-summons after teleports or world changes.
  • Accepts:
    • definition โ€“ Entity definition tagged as npc_definition or modelengine_definition.
    • activity โ€“ Activity/behavior to use (movement, idle logic, etc.).
    • minDistance, maxDistance โ€“ Following distance thresholds.

๐Ÿ” companion_follow_mode (Action)

companion_follow_mode โ€“ Toggles the companionโ€™s follow mode.

  • Switches between Follow and Wait.
  • Updates internal distance logic to either keep following or hold position.
  • Perfect for โ€œstay here / follow meโ€ style interactions.

๐Ÿ–ฑ companion_interact (Event)

companion_interact โ€“ Fired when a player interacts with their own companion using their main hand.

  • Triggers configured TypeWriter actions (dialogues, menus, effects, etc.).
  • Ensures that only the ownerโ€™s clicks on their companion invoke the event.

๐Ÿ“Š companion_active (Fact)

companion_active โ€“ Returns whether the player currently has an active companion.

  • Returns 1 if the playerโ€™s companion is active, 0 otherwise.
  • Useful for conditions such as โ€œsummon only if none activeโ€, or gating dialogues/quests on companion presence.

โš™๏ธ Control & Animation

Companion behavior is driven by a server-side tick loop handled by the extensionโ€™s manager.

  • ๐Ÿšถ Movement:
    • Moves toward the target follow position each tick.
    • Speeds up when lagging behind the player.
    • Attempts to climb simple block steps and applies basic gravity.
  • ๐ŸŽž ModelEngine Animation (optional):
    • Automatically switches between idle and walk animations based on movement state.
    • Can be expanded with custom stances through your ModelEngine configuration.
  • ๐ŸŒ€ Teleport & World Handling:
    • Teleports the companion if it is too far from the player or cannot catch up.
    • Re-summons or relocates companions after PlayerTeleport and PlayerChangedWorld events.
  • ๐Ÿšซ Cleanup:
    • Companions are properly despawned when the player disconnects.

๐Ÿ’ก Usage Ideas

  • ๐Ÿพ Pet Quest โ€“ A pet companion that follows the player and reacts to quest steps.
  • ๐Ÿง™ Guide NPC โ€“ A guide that starts dialogues or opens menus when clicked, leading players through tutorials or story arcs.
  • ๐ŸŒŸ Cosmetic Companions โ€“ Animated ModelEngine companions as VIP perks or event rewards.
  • ๐Ÿ›ก Bodyguard Mode โ€“ A guard that follows in dangerous zones, and switches to Wait in safe hubs.

Prerequisites: depends on the Entity, Basic, Quest and RoadNetwork extensions. ModelEngine is optional but fully supported when present.

๐ŸŽฅ Demo

A short preview in action:

๐Ÿ”— Watch the demo on YouTube

๐Ÿ’พ Download

๐Ÿ”— Click to Download

๐Ÿ—จ๏ธ DialogMenu Extension

Native GUI & Dialog system for TypeWriter powered by PaperMCโ€™s Dialog API.

โœจ Overview

The DialogMenu extension allows TypeWriter to leverage the modern Paper Dialog API (introduced in Minecraft 1.21.6) to create rich, interactive in-game windows with zero client modifications.

  • ๐Ÿ–ผ Native Minecraft UI dialogs (no resource pack required)
  • โœ… Yes / No confirmation boxes
  • ๐Ÿ“‹ Multi-choice selection menus
  • โœ Text input windows with validation
  • ๐ŸŽฏ Ideal for quests, interactions & narrative flows

๐Ÿ“ฆ Dialog Types

  • Simple message dialogs
  • Yes / No confirmations
  • Choice-based menus
  • Text input prompts

๐ŸŽฎ Player Interaction

  • Clickable buttons with actions
  • Multiple response paths
  • Custom labels & formatting

๐Ÿ”— TypeWriter Triggering

  • Invoke from dialogues & nodes
  • Triggered via events or actions
  • Full narrative integration

๐Ÿงฉ Available Entry

๐Ÿ—‚ paper_dialog

paper_dialog โ€“ Opens a configured dialog or menu for the player.

  • Displays dialog windows using Paperโ€™s native GUI system.
  • Supports configurable buttons and actions.
  • Allows multiple layout types: choices, confirmations, text input.
  • Can be used within quests, story nodes, NPC interactions or automated events.

๐Ÿงช Usage Ideas

  • Ask players to confirm important choices (faction, class, destiny).
  • Create immersive quest decisions with branching paths.
  • Use text input to name items, characters or locations.
  • Display tutorial prompts with guided buttons.
  • Replace traditional chat commands with visual menus.

๐ŸŽฅ Demo

A short preview in action:

๐Ÿ”— Watch the demo on YouTube

๐Ÿ’พ Download

๐Ÿ”— Click to Download

๐Ÿ›ก๏ธ Region Protection Extension

Advanced region system for TypeWriter, inspired by WorldGuard and built natively for Paper.

โœจ Overview

This extension introduces a complete region protection framework for TypeWriter with full control over flags, members, groups, priorities and global regions. It allows server owners to define precise behavioral rules per zone, replacing traditional WorldGuard usage.

  • ๐Ÿงญ Hierarchical priority & inheritance system
  • ๐Ÿ“œ Fully scriptable via TypeWriter manifests
  • ๐ŸŒ Support for global & world-spanning regions
  • ๐Ÿšซ Dynamic message control & visual inspection UI
  • ๐Ÿง  Flag-driven behavior engine

๐Ÿ“ Region Logic

  • Region shape, parent, priority & ownership
  • Dynamic flags and inheritance behavior
  • Global region overlays

๐ŸŽฎ Player Interaction

  • Entry/exit restrictions
  • Teleport on region entry
  • Dynamic bossbar/actionbar overlays

โš™๏ธ Administrative Tools

  • Live inspection via /tw protection inspect
  • In-game selection & WorldEdit imports
  • Priority debugging & visual indicator stack

๐Ÿงฉ Entries & Artifacts

  • region_definition โ€“ Defines a protected region.
  • protection_region_artifact โ€“ Stores region data (flags, shape, priority).
  • global_protection_region_artifact โ€“ Region spanning multiple worlds.
  • in_protection_region_fact โ€“ Returns 1 if the player is inside.
  • protection_region_group โ€“ Links players to the region stack.
  • protection_settings โ€“ Controls UI messages and inspection display.

๐Ÿ”— PlaceholderAPI Integration

Using the %typewriter_regions: prefix, multiple placeholders allow full access to live region data:

  • %typewriter_regions:count% โ€“ Active region count
  • %typewriter_regions:list% โ€“ Active region IDs
  • %primary:priority% โ€“ Highest region priority
  • %primary:flags_list% โ€“ Effective flags
  • %typewriter_regions:has:<ids>% โ€“ Boolean region presence

๐Ÿšฉ Flag System

  • Boolean โ€“ build, pvp, mob-spawning, item-drop, godmode, entry...
  • Location-based โ€“ teleport, spawn-location...
  • Numeric โ€“ heal-amount, walk-speed...
  • Commands โ€“ console-command-on-entry...
  • Text โ€“ message-on-entry, chat-prefix...

๐Ÿ–ฅ Administration Commands

/tw protection list
/tw protection select <manifest>
/tw protection import-we
/tw protection apply
/tw protection info <region>
/tw protection inspect
    

๐Ÿงช Usage Scenarios

  • Protect cities, dungeons, PvP zones or holy sanctuaries.
  • Define safe zones immune to damage or building.
  • Create scripted teleport gates and message-driven entry logic.
  • Use inspection mode to debug region conflicts visually.

๐ŸŽฅ Demo

A short preview in action:

๐Ÿ”— Watch the demo on YouTube

๐Ÿ’พ Download

๐Ÿ”— Click to Download

๐ŸŒ CommunityExtension

The complete bridge for your Minecraft & Discord community.

๐Ÿ‘‹ Welcome

Stop struggling with complex configurations. this guide will walk you through setting up Account Linking, Bug Reports, and Chat Sync step-by-step.

We have removed the complex technical docs to focus on what you actually need to do.

๐Ÿš€ 1. The Basics (Bot Setup)

Before configuring the extension, you need a Discord Bot.

  1. Go to the Discord Developer Portal.
  2. Click New Application and give it a name (e.g., "ServerBot").
  3. Go to the Bot tab and click Add Bot.
  4. Important: Under "Privileged Gateway Intents", enable Presence Intent, Server Members Intent, and Message Content Intent.
  5. Copy the Token (Reset it if you can't see it). You will need this for the config.
  6. Invite the bot to your server using the OAuth2 tab (Select 'bot' and 'Administrator' for easiest setup).

๐Ÿ”‘ 2. How to find IDs?

You will often need a Channel ID or Role ID. Here is the trick:

  • Open Discord User Settings (the cogwheel).
  • Go to Advanced.
  • Enable Developer Mode.

Now you can Right Click on any Channel, Role, or User and select Copy ID.

๐Ÿ”— 3. Setting up Account Linking

This module links a Minecraft player to a Discord User.

How it works for players:

  1. Player types /DiscordLink in-game.
  2. They get a code (e.g., 123456).
  3. They send this code in your specific Discord Channel.
  4. Done! They get their roles.

Key Configuration:

  • Role Mappings: Decide which Minecraft Group gets which Discord Role ID.
  • Channel: Ensure the bot can see the channel where players send codes.

๐Ÿ“ 4. Creating Report Forms

You can create multiple forms (e.g., one for Bugs, one for Suggestions).

Important Change:

We no longer use a fixed /report command. You MUST define a commandName for each form.

  • Example: Set commandName: "bug" โ†’ Players uses /bug.
  • Categories: These are the clickable options in the menu (e.g., "Glitch", "Typos").

๐Ÿ’ฌ 5. Chat Bridges

Want Minecraft chat to appear in Discord?

  • Copy the Channel ID of your Discord chat channel.
  • Paste it into the discordChannelIds list in the config.
  • Tip: You can have multiple bridges (e.g., one for global chat, one for staff chat).

๐Ÿ–ฅ๏ธ 6. Remote Console (Optional)

Execute standard console commands (like /kick, /whitelist) from a private Discord channel.

โš ๏ธ Security Warning:

  • Create a Private Channel visible ONLY to you.
  • Copy that Channel ID into the config.
  • Add your Role ID to the allowedRoles list.
  • Only these roles in this channel can send commands.

โ“ Still stuck?

If you followed the "Finding IDs" section and still have issues, check your server logs for "CommunityExtension" errors.

๐ŸŽฅ Demo

A short preview in action:

๐Ÿ”— Watch the demo on YouTube

๐Ÿ’พ Download

๐Ÿ”— Click to Download

๐Ÿ“– Quest Codex Extension

Category-based quest browser for TypeWriter with menus, sorting and full progress tracking.

โœจ Overview

The Quest Codex extension adds a category-based quest system to TypeWriter. It lets you organize quests into categories and sub-categories, and provides dedicated GUIs for browsing, sorting and tracking progress.

  • ๐Ÿ“‚ Group quests into categories and sub-categories.
  • ๐Ÿงญ In-game inventories to browse, filter and sort quests.
  • ๐Ÿ“Š Built-in progress tracking and status-based lores.
  • ๐ŸŽจ Fully configurable GUIs, sounds and snippets.
  • ๐Ÿ”— PlaceholderAPI integration for stats and category progress.

๐Ÿ“‚ Category Structure

  • Create main categories and sub-categories.
  • Assign quests to one or more categories.
  • Use custom icons and titles per category.

๐Ÿ–ผ Quest Menus

  • Open inventories to browse quest lists.
  • Display quest status, rewards and details.
  • Customize look & feel via snippets and settings.

๐Ÿ“Š Progress & Placeholders

  • Track total, completed, in progress and not started quests.
  • Get per-category statistics via PlaceholderAPI.
  • Show formatted progress in menus, scoreboards and HUDs.

๐Ÿงฉ Entries

๐Ÿ“ quest_category_definition

quest_category_definition โ€“ Adds a new quest category.

  • Configure menu icon for the category.
  • Set menu title (supports formatting).
  • Define rows and layout for the category inventory.

๐Ÿ“‚ quest_category

quest_category โ€“ Assigns quests to a category.

  • Link existing quests into category or sub-category lists.
  • Drives which quests appear in the codex menus.

๐Ÿ“œ quest_additional_lore

quest_additional_lore โ€“ Adds extra lore lines for quests in the menu.

  • Show reward information or hints.
  • Customize lore per quest status (not started, in progress, completed).

๐Ÿ”’ quest_category_restriction

quest_category_restriction โ€“ Adds lore for not-started/locked quests inside a category.

  • Display locked messages when quests are unavailable.
  • Perfect for gated content or requirement-based categories.

โš™๏ธ quest_codex_settings

quest_codex_settings โ€“ Central configuration for the Quest Codex.

  • Controls GUIs layout (titles, size, icons).
  • Defines default lores, sounds and visual behavior.
  • Mandatory: this entry must be configured or the extension will not function properly.

๐Ÿ”— PlaceholderAPI Integration

Quest Codex registers multiple placeholders under the %typewriter_...% namespace. Note: category names in placeholders use underscores instead of spaces.

Placeholder Description
%typewriter_total_quests% Total number of quests.
%typewriter_total_completed% Number of completed quests.
%typewriter_total_in_progress% Number of active quests.
%typewriter_total_not_started% Number of inactive quests.
%typewriter_total_progress% Formatted completed/total value.
%typewriter_category_<name>% Quests in the given category.
%typewriter_category_<name>_completed% Completed quests in the category.
%typewriter_category_<name>_in_progress% Active quests in the category.
%typewriter_category_<name>_not_started% Inactive quests in the category.
%typewriter_category_<name>_progress% Formatted progress for the category.

Replace spaces in <name> with _. Sub-categories use the same convention.

๐Ÿงฑ Snippets & Command

Visual behavior of quest menus is controlled by snippets.yml. These snippets define how items, borders and status indicators are rendered.

Default player command:

/tw questcodex (category) (sort)
    

Optional category and sort parameters let players jump directly to a specific category or apply a predefined sorting mode.

๐Ÿงช Usage Ideas

  • Group quests into Main Story, Side Quests, Daily, Events, etc.
  • Use additional lore to show rewards, difficulty or recommended level.
  • Lock entire categories behind story progression or permissions.
  • Expose overall quest progress on scoreboards, menus or HUDs via placeholders.

๐ŸŽฅ Demo

A short preview in action:

๐Ÿ”— Watch the demo on YouTube

๐Ÿ’พ Download

๐Ÿ”— Click to Download

๐Ÿน Archery Minigame Extension

Fully configurable archery arena system for TypeWriter with lobbies, scoreboards and persistent stats.

โœจ Overview

The Archery Minigame extension adds a complete, reusable archery game framework to TypeWriter. It lets you define arenas, manage lobbies, control game modes, and track persistent player statistics per definition and mode.

  • ๐Ÿ“ Arena definitions with targets, shooting zones and teleports.
  • โฑ Two game modes: MAX_TARGET & TIME_ATTACK.
  • ๐Ÿ“Š Scoreboards (none / solo / multi) + optional hardcore one-life mode.
  • ๐Ÿงญ Lobby & countdown handling with inventory management.
  • ๐Ÿ’พ Persistent stats stored per arena definition and mode.

๐ŸŽฏ Arena System

  • Define target positions and spawn points.
  • Configure shooting zones and safe areas.
  • Custom messages per arena (join, start, end).

โฑ Game Modes

  • MAX_TARGET โ€“ hit a fixed number of targets as fast as possible.
  • TIME_ATTACK โ€“ hit as many targets as possible within a time limit.
  • Optional hardcore mode (one life, stricter rules).

๐Ÿงญ Lobbies & Stats

  • Lobby join/quit flow with auto-start countdown.
  • Player limit per arena, inventory save/restore.
  • Persistent per-definition statistics for leaderboards.

๐Ÿงฉ Entries & Artifacts

The archery minigame is primarily driven by an arena definition entry and its persistent artifacts.

๐Ÿน Arena Definition

archery_game_definition โ€“ Defines an archery arena and its behavior.

  • Targets positions and hit zones.
  • Teleport locations for lobby, game start and end.
  • Game mode configuration (MAX_TARGET / TIME_ATTACK).
  • Scoreboard display mode (none / solo / multi).
  • Optional hardcore settings (one-life behavior).
  • Local messages for join/start/finish and failure states.

๐Ÿ’พ Persistent Artifacts

Dedicated artifacts store:

  • Arena configuration (internal serialized data for each definition).
  • Per-definition and per-mode player statistics (scores / times).
  • Historical bests used by PlaceholderAPI expansions.

๐Ÿšช Join / Quit Actions

The extension also provides actions to:

  • Add players to a lobby or running match.
  • Handle leaving mid-game or at the end of a run.
  • Restore inventories and teleport players back safely.

๐Ÿ”— TypeWriter Placeholders

These placeholders can be used inside TypeWriter entries (dialogs, HUDs, messages, etc.) to reflect live game state:

Placeholder Description
archery_score Current score of the player in the ongoing match.
archery_time_remaining Time left in the current match (for TIME_ATTACK or timed modes).

๐Ÿ“Š PlaceholderAPI Expansions

The extension exposes leaderboard-related placeholders via PlaceholderAPI:

Placeholder Description
%typewriter_archery_top_<definitionId>_<mode>% Global top score for the given arena definition and mode.
%typewriter_archery_player_top_<definitionId>_<mode>% The requesting player's best score for that arena definition and mode.

Replace <definitionId> with the internal definition ID and <mode> with the configured game mode (for example: MAX_TARGET or TIME_ATTACK).

๐Ÿงช Usage Ideas

  • Create training ranges where players race to hit a fixed number of targets.
  • Organize timed tournaments using TIME_ATTACK arenas.
  • Display top scores in spawn or hub using PlaceholderAPI leaderboards.
  • Attach join actions to NPCs, signs or regions to make entry seamless.
  • Use hardcore mode for high-stakes, one-life archery challenges.

Combine the archery minigame with other TypeWriter extensions (regions, dialogs, quests) to integrate it into storylines, events or training sequences.

๐Ÿ’พ Download

๐Ÿ”— Click to Download

๐Ÿฆ Numerical Storage Extension

Configurable virtual storage & banking systems for TypeWriter with leveling, interest, and interactive menus.

โœจ Overview

The Numerical Storage extension provides a fully configurable virtual currency/value storage system with leveling, cron-based interest, and interactive GUI menus powered by TypeWriter and the Dialog API (Minecraft 1.21.7).

  • ๐Ÿ’ฐ Flexible deposit & withdraw with fixed, percentage, or custom amounts.
  • ๐Ÿ“ˆ Interest system with cron scheduling and permission-based rates.
  • ๐ŸŽฏ Leveling with criteria (PLACEHOLDER or FACT mode) and manual/auto upgrades.
  • ๐Ÿ–ฅ๏ธ Fully customizable inventory menus with transaction buttons.
  • ๐Ÿ’ฌ Custom amount input via Dialog API (1.21.7).
  • ๐Ÿง  Full PlaceholderAPI integration.
  • ๐Ÿ’พ Persistent player data via artifacts.

๐Ÿ’ฐ Transaction System

  • FIXED, PERCENTAGE, or CUSTOM amount modes.
  • Configurable success/error messages with placeholders.
  • Execute commands after successful transactions.
  • Dialog-based custom amount input (1.21.7).

๐Ÿ“ˆ Interest & Cron

  • Enable real-time interest with configurable rates.
  • Cron expressions for precise scheduling.
  • Permission-based rates (VIP players earn more).
  • Customizable interest notification messages.

๐ŸŽฏ Leveling System

  • Define levels with limits, costs, and criteria.
  • PLACEHOLDER or FACT mode for unlock requirements.
  • Manual level-up button or automatic progression.
  • Execute triggers on level up.

๐Ÿ–ฅ๏ธ Interactive Menu

  • Fully customizable inventory GUI.
  • Transaction buttons (deposit/withdraw).
  • Optional display-only info buttons.
  • Level-up button with available/max templates.

๐Ÿงฉ Entries

๐Ÿ“ numericalstorage_definition

numericalstorage_definition โ€“ Defines a Numerical Storage "type".

  • Configures display name, prefix, interest, levels, menu, and transactions.
  • Supports cron-based interest with permission-based rates.
  • Full transaction configuration (messages, commands, placeholders).

๐Ÿ’พ numericalstorage_artifact

numericalstorage_artifact โ€“ Persistent storage for a numericalstorage_definition.

  • Saves per-player data (balance, level, last interest time).
  • Ensures values are preserved across restarts.

๐Ÿ“‹ Menu Configuration

Each storage definition includes a fully configurable menu:

  • Title & Rows: Customize inventory title and size.
  • Fill Items: Background items for empty slots.
  • Transaction Buttons: DEPOSIT/WITHDRAW with FIXED, PERCENTAGE, or CUSTOM amounts.
  • Level Button: Available/MaxLevel templates with cost placeholders.
  • Dialog Config: Custom amount input via Dialog API (title, labels, validation).
  • Messages: Max level, criteria not met, not enough funds messages.

๐Ÿ”— PlaceholderAPI Integration

Replace <definitionId> with the ID of your storage definition.

Placeholder Description
%typewriter_ns_balance_<definitionId>% Player balance for the given definition.
%typewriter_ns_level_<definitionId>% Player level for the given definition.
%typewriter_ns_limit_<definitionId>% Current storage limit based on level.
%typewriter_ns_name_<definitionId>% Display name of the Numerical Storage.
%typewriter_ns_interest_<definitionId>% Interest rate for the player.
%typewriter_ns_prefix_<definitionId>% Prefix for the given definition.

๐Ÿ–ฅ๏ธ Commands

Player and administrative commands:

/numericalstorage <definitionId> open
  - Opens the storage menu for the player.

/numericalstorage <definitionId> add <amount> [target]
  - Add amount to a specific NumericalStorage definition.

/numericalstorage <definitionId> remove <amount> [target]
  - Remove amount from a specific NumericalStorage definition.

/numericalstorage <definitionId> level <amount> [target]
  - Set the level for a specific NumericalStorage definition.

/numericalstorage <definitionId> reset [target]
  - Reset a specific NumericalStorage definition for a player.
    

๐Ÿงช Usage Ideas

  • Create a bank system where level determines storage capacity and interest rates.
  • Design custom currencies (honor, reputation, tokens) with interactive menus.
  • Use Dialog API for custom amount deposits/withdrawals.
  • Combine FACT-based criteria with quests for unlock requirements.
  • Drive GUI elements (progress bars, balances) using placeholders.
  • Create VIP banking with permission-based interest rates.

๐Ÿ’พ Download

๐Ÿ”— Click to Download

๐Ÿงฉ Vanilla Events & Objectives Extension

Adds a large collection of triggers and objectives for vanilla interactions in TypeWriter (stonecutter, smelting, trading, lectern, jukebox, anvils, recipes, and more).

โœจ Overview

This extension brings a comprehensive set of event entries and matching objectives for many core Minecraft actions. You can react to player interactions (crafting, trading, enchanting, smelting, etc.) and track them as progress objectives inside TypeWriter quests and systems.

  • โš™๏ธ Event entries for detecting vanilla actions.
  • ๐ŸŽฏ Objective entries for tracking counts/progress of those actions.
  • ๐Ÿงช Ideal for achievements, tutorials, minigames and progression systems.
  • ๐Ÿงฑ Structured by domain: crafting, combat, trading, machines, lecterns, jukeboxes, etc.

All entries below follow the same pattern: EventEntry = trigger you can listen to, ObjectiveEntry = progression objective you can use in quests or systems.

๐Ÿ“œ Advancement & Recipe System

Track vanilla advancement completion and recipe unlocks for progression or achievements.

  • AdvancementGrantEventEntry โ€“ Trigger when a player completes an advancement.
  • AdvancementGrantObjectiveEntry โ€“ Objective for โ€œcomplete specific advancement(s)โ€.
  • RecipeUnlockEventEntry โ€“ Trigger when a recipe is unlocked.
  • RecipeRevokeEventEntry โ€“ Trigger when a recipe is revoked.
  • RecipeObjectiveEntry โ€“ Objective for recipe-related tasks (unlocking, owning, etc.).

๐Ÿ›  Anvil & Enchanting

React to repairs, combinations, grindstone usage and enchanting table interactions.

  • AnvilRepairEventEntry / AnvilRepairObjectiveEntry โ€“ Track item repairs or combinations in anvils.
  • GrindstoneRepairEventEntry / GrindstoneRepairObjectiveEntry โ€“ Track grindstone repairs and enchantment removal.
  • EnchantEventEntry / EnchantObjectiveEntry โ€“ Track enchanting table usage and related objectives.

โš™๏ธ Block & Machine Operations

Hooks for barrels, beacons, brewing stands, campfires, cartography tables and cauldrons.

  • BarrelOpenEventEntry / BarrelCloseEventEntry โ€“ Track barrel opening and closing.
  • BarrelObjectiveEntry โ€“ Objective for barrel-related tasks.
  • BeaconPowerEventEntry / BeaconPowerObjectiveEntry โ€“ Track beacon activation or power changes.
  • BrewingStandBrewEventEntry / BrewingStandBrewObjectiveEntry โ€“ Track potion brewing operations.
  • CampfireCookEventEntry / CampfireCookObjectiveEntry โ€“ Track cooking food on campfires.
  • CampfireExtinguishEventEntry โ€“ Trigger when campfires are extinguished.
  • CartographyMapCopyEventEntry โ€“ Track map copying or scaling in cartography tables.
  • CauldronFillEventEntry / CauldronEmptyEventEntry โ€“ Track cauldron water level changes.
  • CauldronObjectiveEntry โ€“ Objective for cauldron-based interactions.

๐Ÿงต Crafting & Processing

Track banner patterns, smithing, stonecutting and smelting tasks.

  • LoomBannerPatternApplyEventEntry / LoomBannerPatternApplyObjectiveEntry โ€“ Track banner pattern application on looms.
  • SmithingTableUpgradeEventEntry / SmithingTableUpgradeObjectiveEntry โ€“ Track smithing table upgrades.
  • StonecutterCutEventEntry / StonecutterCutObjectiveEntry โ€“ Track stonecutter usage and cuts.
  • SmeltEventEntry / SmeltObjectiveEntry โ€“ Track furnace/smelting operations.

๐Ÿ“š Lectern & ๐ŸŽต Jukebox

Perfect for story-heavy servers, libraries, music halls and lore systems.

  • LecternPlaceBookEventEntry โ€“ Track when a book is placed on a lectern.
  • LecternTakeBookEventEntry โ€“ Track when a book is removed from a lectern.
  • LecternPageTurnEventEntry โ€“ Track page turns on lecterns.
  • LecternObjectiveEntry โ€“ Objective for lectern reading/interaction tasks.
  • JukeboxPlayEventEntry / JukeboxPlayObjectiveEntry โ€“ Track playing music discs.
  • JukeboxStopEventEntry / JukeboxStopObjectiveEntry โ€“ Track stopping jukebox playback.

๐Ÿง Player & Entity Interactions

Trigger on XP pickup, cake consumption, item frames, blocking and more.

  • ExperienceOrbPickupEventEntry / ExperienceOrbPickupObjectiveEntry โ€“ Track experience orb collection.
  • CakeSliceEventEntry / CakeSliceObjectiveEntry โ€“ Track cake slice consumption.
  • CrossbowReloadEventEntry / CrossbowReloadObjectiveEntry โ€“ Track crossbow reloading.
  • ShieldBlockEventEntry / ShieldBlockObjectiveEntry โ€“ Track shield blocking actions.
  • ItemFramePlaceEventEntry / ItemFrameRemoveEventEntry โ€“ Track item frame placement and removal.
  • ItemFrameRotateEventEntry โ€“ Track rotation changes on item frames.
  • ItemFrameObjectiveEntry โ€“ Objective for item frame-related interactions.
  • TotemUsedObjectiveEntry โ€“ Objective to track totem of undying usage.

โš”๏ธ Combat & Weapons

Focused on trident usage and related challenges.

  • TridentThrowEventEntry / TridentThrowObjectiveEntry โ€“ Track trident throws.
  • TridentRecallEventEntry / TridentRecallObjectiveEntry โ€“ Track trident recall events.

๐Ÿ’ฑ Trading & Bartering

Useful for economy and progression systems centered around villagers and piglins.

  • VillagerTradeEventEntry / VillagerTradeObjectiveEntry โ€“ Track villager trading operations.
  • PiglinBarterEventEntry / PiglinBarterObjectiveEntry โ€“ Track piglin bartering events.

โญ Special Features

Extra utility entries for generic tracking logic.

  • FactCheckEventEntry / FactCheckObjectiveEntry โ€“ Generic โ€œfactโ€ related trigger/objective pair, useful as a flexible hook for custom conditions or checks inside your systems.

๐Ÿ’พ Download

๐Ÿ”— Click to Download

๐Ÿงณ PocketMenu Extension

Open vanilla utility GUIs anywhere, anytime in TypeWriter โ€“ no block interaction required.

โœจ Overview

The PocketMenu extension allows players to open various vanilla Minecraft GUIs directly via command, without needing to interact with a physical block. It is ideal for RPG servers, lobbies or quest hubs where convenience and flow are more important than block placement.

  • ๐Ÿ“ฆ Open workbench, anvil, enchanting and more from anywhere.
  • ๐Ÿงญ Great for menus, NPC interactions, or quest rewards.
  • โš™๏ธ Simple command usage, easy to integrate with TypeWriter dialogs and actions.

๐Ÿ–ฅ๏ธ Command

Main command provided by the extension:

/tw pocketmenu <TYPE>
    

Replace <TYPE> with one of the supported GUI types listed below. This can also be wired into dialogs, buttons, regions or other TypeWriter actions for a seamless experience.

๐Ÿงฐ Supported GUI Types

The following TYPE values are available:

TYPE Opens Usage Example
WORKBENCH Crafting table GUI /tw pocketmenu WORKBENCH
ENCHANTING Enchanting table GUI /tw pocketmenu ENCHANTING
ANVIL Anvil repair/rename GUI /tw pocketmenu ANVIL
SMITHING Smithing table GUI /tw pocketmenu SMITHING
GRINDSTONE Grindstone GUI /tw pocketmenu GRINDSTONE
STONECUTTER Stonecutter GUI /tw pocketmenu STONECUTTER
CARTOGRAPHY Cartography table GUI /tw pocketmenu CARTOGRAPHY
LOOM Loom GUI /tw pocketmenu LOOM
BREWING Brewing stand GUI /tw pocketmenu BREWING

๐Ÿงช Usage Ideas

  • Attach /tw pocketmenu calls to NPC dialogues for service-style characters (blacksmith, enchanter, cartographer, etc.).
  • Use in spawn or lobbies where you do not want functional blocks placed.
  • Combine with permissions to offer pocket utilities as donor or rank perks.
  • Integrate into quest steps where players must use a specific GUI without hunting for a block.

๐Ÿ’พ Download

๐Ÿ”— Click to Download

๐Ÿ—ณ๏ธ Vote System Extension

Create configurable votes and polls in TypeWriter, with persistence, placeholders and action-driven outcomes.

โœจ Overview

The Vote System extension adds a fully configurable poll & voting system to TypeWriter. You can define polls with an optional end date/time, connect them to dialogue options, store results in artifacts, and execute custom actions based on the votes obtained.

  • ๐Ÿ—ณ๏ธ Multiple polls with options, labels and display names.
  • โฐ Optional end date/time per poll (ISO-8601).
  • ๐ŸŽญ Integration with TypeWriter dialogues via vote_action.
  • ๐Ÿ’พ Persistent storage of votes using artifacts.
  • ๐Ÿ“Š PlaceholderAPI support for displaying options, stats and player choices.

๐Ÿ“‹ Poll Management

  • Define polls with multiple options.
  • Attach a human-readable display name.
  • Set an optional endDate (closing time).

๐ŸŽฎ Player Experience

  • Vote via dedicated actions or commands.
  • Show live results in GUIs, dialogs or chat.
  • Send feedback messages when a vote is cast.

โš™๏ธ System Integration

  • Artifacts for persistent poll data.
  • Placeholders for options, stats and player choice.
  • Perfect for events, governance and content feedback.

๐Ÿงฉ Entries

๐Ÿ“ vote_definition

vote_definition โ€“ Defines a vote/poll.

  • Entry id is used as the pollId for placeholders and commands.
  • Contains display name, options and configuration.
  • Can include an endDate field (ISO-8601 format) to automatically close the poll:
    2024-05-01T12:00:00Z

๐Ÿ’พ vote_data

vote_data โ€“ Artifact to store data of a vote/poll.

  • Persists votes across restarts.
  • Stores per-option vote counts and per-player choices.
  • Backs all statistics used by placeholders and commands.

โœ… vote_action

vote_action โ€“ Registers a vote for a specific option in a specific poll.

  • Designed to be used from dialogue options or other TypeWriter actions.
  • Links a playerโ€™s choice to a given pollId and option index.
  • Can be combined with conditions and follow-up actions based on results.

โœ‰๏ธ vote_message

vote_message โ€“ Sends a message when a player votes.

  • Feedback confirmation for the voting player.
  • Can be used to notify staff or broadcast a vote event.

๐Ÿ”— PlaceholderAPI Integration

Replace <pollId> with the id of your vote_definition entry. These placeholders let you render poll information anywhere (menus, scoreboards, chat, web UIs, etc.).

Placeholder Description
%typewriter_vote_display_<pollId>% Display name of the poll.
%typewriter_vote_option_<pollId>_<index>% Text of the option at index for the poll.
%typewriter_vote_stats_<pollId>_<index>% Number of votes for the option at index.
%typewriter_vote_stats_<pollId>% Comma-separated statistics for all options in the poll.
%typewriter_vote_player_<pollId>% Option chosen by the requesting player.
%typewriter_vote_votes_<pollId>_<index>% Legacy alias for vote_stats with an index.
%typewriter_vote_total_<pollId>% Total number of votes cast in the poll.

๐Ÿ–ฅ๏ธ Commands

The extension exposes a simple /vote command suite for managing and inspecting polls:

/vote reset <pollId>
  โ€“ Clears all votes for the given poll.

/vote stats <pollId>
  โ€“ Prints vote counts for the given poll.

/vote <pollId> <option> [target]
  โ€“ Registers or prints a vote for the given poll (depending on configuration/usage).

/vote stats
  โ€“ Prints vote counts for all polls.
    

Tip: Combine admin commands with placeholders to quickly debug or calibrate new polls during events.

๐Ÿงช Defining Polls

Polls are configured via vote_definition entries. The poll ID is the entryโ€™s id field, and the endDate field uses ISO-8601 format for closing time, for example:

endDate: "2024-05-01T12:00:00Z"
    

Once the endDate is reached, the poll can be considered closed for further voting and used strictly for result-based actions (rewards, decisions, announcements, etc.).

๐Ÿ’พ Download

๐Ÿ”— Click to Download

๐Ÿ”€ Dual Text Display Extension

Add a second text display and dynamically shift focus between two points in your TypeWriter scenes.

โœจ Overview

The Dual Text Display extension extends the standard text display system by introducing a secondary display that can be shown and targeted alongside your main dialogue display. This is ideal when you want to:

  • ๐Ÿ“ Highlight a second point of interest (e.g. an object, NPC, or location) while text is shown.
  • ๐ŸŽฌ Create more cinematic scenes by splitting focus between two text displays.
  • ๐Ÿงญ Guide the player's attention by forcing them to look toward the secondary display.

๐Ÿงพ Dual Display Logic

  • Use a definition to describe how the two displays work together.
  • Instantiate dual displays per scene or per player when needed.
  • Mix with existing TypeWriter dialogues and cinematics.

๐ŸŽฅ Focus Control

  • Force the player to look at the secondary display during key moments.
  • Direct attention to an alternate angle, object, or character.
  • Combine with cinematics and movement for dynamic storytelling.

๐Ÿงฉ Entries

๐Ÿ“ dual_text_display_definition

dual_text_display_definition โ€“ Defines the configuration of a dual text display.

  • Describes how the primary and secondary text displays are related.
  • Can include positions, offsets or references used by your scenes.
  • Acts as a reusable template for multiple instances.

๐Ÿ“ฆ dual_text_display_instance

dual_text_display_instance โ€“ Creates a dual display instance from a definition.

  • Represents a concrete dual display currently active in the world.
  • Typically tied to a player, scene, or scripted moment.
  • Used alongside your usual text display/dialogue flows.

๐ŸŽฏ look_at_secondary_text_display_bound

look_at_secondary_text_display_bound โ€“ Forces the player to look at the secondary text display.

  • Bind this interaction to guide the camera toward the secondary display.
  • Perfect to emphasize an object, NPC or direction mentioned in the text.
  • Can be triggered during dialogues, cinematics or scripted events.

๐Ÿงช Usage Ideas

  • Display dialogue above an NPC while a secondary display highlights a key object or door.
  • Use the secondary display to show side notes, hints or warnings during a main conversation.
  • Chain dual displays in a cinematic to alternate focus between two points of interest.
  • Combine with camera paths and look-at bindings for a more cinematic cutscene experience.

๐ŸŽฅ Demo

A short preview in action:

๐Ÿ”— Watch the demo on YouTube

๐Ÿ’พ Download

๐Ÿ”— Click to Download

โœจ AdvancedEnchantments Integration

Connect AdvancedEnchantments to TypeWriter with dedicated triggers and objectives for enchantment-based gameplay.

๐Ÿ”ฎ Overview

This extension allows TypeWriter to react to events produced by the AdvancedEnchantments plugin. It provides specific entries to detect when players enchant items using custom enchantments and lets you integrate this directly into quests, conditions or scripts.

  • โšก Detect when a player applies an AdvancedEnchantment.
  • ๐ŸŽฏ Track enchantment usage in objectives.
  • ๐Ÿ“œ Build quests or progression systems around enchanted items.

๐Ÿงฉ Available Entries

๐ŸŽฏ advancedenchants_objective

Objective triggered when a player enchants an item using AdvancedEnchantments. Useful for tracking quest progression, achievements or unlock systems based on enchantment actions.

โšก advancedenchants_trigger

Trigger executed when a player enchants an item with an AdvancedEnchantment. Designed to activate scripts, dialogue flows or custom logic in response to enchantment events.

๐Ÿ’ก Example Use Cases

  • Require players to enchant a weapon before completing a quest.
  • Unlock new dialogue options after enchanting with a specific tier.
  • Create achievement systems triggered by AdvancedEnchantments usage.
  • Trigger cinematic or UI feedback when a rare enchant is applied.

๐Ÿ’พ Download

๐Ÿ”— Click to Download