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_definitionandmythicmob_npc_instanceas 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.
๐พ 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.
๐พ 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.
๐พ 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(viaopen_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_factto validate that a player collected enough special items. - Use
mmoitem_variableto 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
- Player selects item
- Checks: stock, balance, permissions
- Dialog confirmation (custom amount)
- Currency deducted / added
- Stock updated & saved
๐ TypeWriter Integration
- Open shops via
open_shopaction - Trigger from NPCs, Regions, Dialogue or Events
- Full Placeholder support
- Commandless architecture
๐พ 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.
๐พ 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_definitionormodelengine_definition. - activity โ Activity/behavior to use (movement, idle logic, etc.).
- minDistance, maxDistance โ Following distance thresholds.
- definition โ Entity definition tagged as
๐ 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.
๐พ 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.
๐พ 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.
๐พ 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.
- Go to the Discord Developer Portal.
- Click New Application and give it a name (e.g., "ServerBot").
- Go to the Bot tab and click Add Bot.
- Important: Under "Privileged Gateway Intents", enable Presence Intent, Server Members Intent, and Message Content Intent.
- Copy the Token (Reset it if you can't see it). You will need this for the config.
- 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:
- Player types
/DiscordLinkin-game. - They get a code (e.g.,
123456). - They send this code in your specific Discord Channel.
- 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
discordChannelIdslist 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
allowedRoleslist. - 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.
๐พ 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.
๐พ 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 pocketmenucalls 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
pollIdfor 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
pollIdand 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.
๐พ 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