MMOItems
Overview
MMOItems connects the MMOItems plugin to TypeWriter. You pick an item by its MMOItems type (for example SWORD) and id, and TypeWriter can give it, take it, count it, or react when a player crafts, uses, equips or socks a gem into it.
The extension also ships an Advanced Tooltip System. It rewrites the lore of MMOItems items on the fly, as packets sent to the player, so one item can show several pages, a live "requirements met" mark and a stat comparison against another item. The stored item is never changed.
Everything is configured in the web panel: item types and ids are suggested from your MMOItems configuration.
Features
- Give and remove items — hand out or take MMOItems items, for one player or a whole group, from a list or from a fact.
- Item counting — a fact counts matching items in the inventory (armor, off hand and cursor included) and/or the main hand.
- Use event and objective — react to right-clicking or consuming an MMOItems item.
- Craft event and objective — react to items made in an MMOItems crafting station, with an optional station filter.
- Gem stone event and objective — react to a gem stone applied to an item, filtered by target item and gem.
- Equip objective — count MMOItems pieces put on in an armor slot.
- Ability cast objective — count casts of an MMOItems ability.
- Item possession objective — complete when the player holds enough of selected items, with completion modifiers.
- Item variable — use an MMOItems item anywhere an item is expected.
- Advanced tooltips — multi-page lore, requirement marks, stat comparison and category icons.
Installation
- Install MMOItems and its library MythicLib. Install MMOCore too if you want the requirement marks of the tooltip system to check class, level and professions.
- Install the official TypeWriter Quest extension (the objectives need it).
- Obtain the extension from the stores (see the buttons in the summary panel above) and put the JAR in
plugins/Typewriter/extensions/. - Restart the server. TypeWriter 0.9 relies on PacketEvents, which the tooltip system uses to rewrite item lore.
Getting started
Reward players with a sword when they craft a potion at an alchemy station:
- In the TypeWriter web panel, open a sequence page and add a Give MMOItem action.
- Leave
itemsempty. Setitemwith atype(for exampleSWORD) and anid(for exampleSTEEL_BLADE), andamountto1. - Open a static page and add a Craft Objective. Fill
quest,display,amount, and a persistent fact infactto store the progress. - In
items, add the crafted MMOItems item (empty means any item) and, if needed,stationIdswith the MMOItems station id. - Set
onCompleteto the Give MMOItem action and publish.
To only react once without tracking progress, use the Craft Event instead and link the Give action in its triggers.
Events and tooltips ignore players in Creative mode. Test with a Survival or Adventure player.
How it works
Item matching compares the MMOItems type and id, ignoring case. An empty type and id matches any MMOItems item. Items that are not MMOItems items never match.
Objectives based on the fact field (craft, use, equip, gem stone, ability cast, open crafting table) write their progress into a persistent (cachable) fact, and trigger onComplete once when amount is reached.
Advanced tooltips
Add an Advanced Tooltip System entry on a manifest page and publish. It applies to every MMOItems item in the inventory, hotbar and containers, for players in Survival and Adventure.
Pagination and the advanced lore apply only in Survival and Adventure. In Creative, the original MMOItems lore is shown as it is, tags included, because the creative client sends items back as it displays them and rewriting the lore would alter the real item.
With the system disabled, overrideDefaultLore off or no entry published, the tags are removed and the whole lore is shown on one page.
Edit the lore of your MMOItems items (in the MMOItems item editor or its configuration) and add these tags:
| Tag | Effect |
|---|---|
<page_break> | Starts a new page. Empty pages are dropped. |
<category_image> | Replaced by the icon set in categoryImages for the item type. |
<pagination_indicator> | Replaced by paginationIndicator. |
<comparison_indicator> | Replaced by comparisonIndicator. |
<requirement_met> and <requirement_not_met> | Only one of the two shows, using requirementMetSymbol or requirementNotMetSymbol. |
<comparison_value> and <comparison_sign> | The stat difference against the comparison base item, and a + when positive. |
Pages and comparison are driven by keys, set with paginationKeybind (default SWAP_OFFHAND, the F key) and comparisonKeybind (default SNEAK). Accepted values are SWAP_OFFHAND, DROP, SNEAK, SHIFT_LEFT, SHIFT_RIGHT, LEFT_CLICK, RIGHT_CLICK and MIDDLE_CLICK.
- Pressing the pagination key on an MMOItems item always cancels the vanilla action (swap, drop, click) to avoid accidents, even for single-page items. Pages wrap back to page 1, with a short cooldown between presses.
- Pressing the comparison key on an item sets it as the comparison base. Pressing it again on the same item clears it. Only items of the same MMOItems type are compared, and the base is cleared when the inventory closes.
- Requirements are checked against MMOCore data: level, class, profession level and permission. If any requirement fails, every
<requirement_not_met>shows.
Objective display format
The line of an objective in the quest tracker is not hardcoded. It is read from TypeWriter snippets, edited in plugins/Typewriter/snippets.yml. Placeholders: <display> (the display field of the objective), <current> and <required>; PlaceholderAPI placeholders are also parsed.
| Snippet | Used by | Default |
|---|---|---|
advancedQuest.display | Craft, Use, Equip, Gem Stone, Ability Cast and Open Crafting Table objectives, while in progress | <display> (<current>/<required>), in grey tones |
advancedQuest.completed | Same objectives, once amount is reached | ✔, then the struck-through <display> and the progress |
mmoitems.countObjective.display | Mmoitems Count Objective, while in progress | <display> (<current>/<required>), in grey tones |
mmoitems.countObjective.completed | Same objective, once amount is reached | Green struck-through <display>, then the progress |
The two advancedQuest.* keys are shared with the other BTC objective extensions: one edit restyles all of them.
Entries
16 entries, generated from the extension source.
Actions3
- Give Mmoitem ActionGive MMOItem
- Open Crafting Table ActionOpen Crafting Table
- Remove Mmoitem ActionRemove MMOItem
Events3
- Mmoitems Gem Stone Apply EventMMOItems Gem Stone Apply Event
- Mmoitems Item Craft EventMMOItems Item Craft Event
- Use Mmoitem EventUse MMOItem Event
Objectives7
- Mmoitems Ability Cast ObjectiveCast MMOItems abilities
- Mmoitems Count ObjectiveIdentify and count specific MMOItems from a fact
- Mmoitems Gem Stone Apply ObjectiveMMOItems Gem Stone Apply Objective
- Mmoitems Item Craft ObjectiveMMOItems Item Craft Objective
- Mmoitems Item Equip ObjectiveEquip MMOItems
- Open Crafting Table ObjectiveOpen Crafting Table Objective
- Use Mmoitem ObjectiveUse MMOItem Objective
Facts1
- Mmoitems Count FactCount MMOItems in player's inventory or hand
Variables1
- Mmoitem VariableMMOItem Identifier
Manifests1
- Advanced Tooltip ConfigAdvanced Tooltip System
Troubleshooting
The item type or id list is empty in the panel. The lists come from the MMOItems configuration of the running server. Make sure MMOItems is loaded and has at least one template of that type, then reopen the page in the panel.
Give MMOItem does nothing. The action runs mmoitems give <type> <id> <player> <amount> from the console. An unknown type skips the item silently, so check the type spelling. If fact is set, only items provided by that fact (and matching item / items when they are filled) are given, with the action's amount.
Remove MMOItem takes nothing. By default only the inventory is scanned (checkInventory is on, checkHand is off). The inventory scan includes armor, off hand and cursor. Turn on checkHand to take from the main hand first.
A craft objective never advances. Only instant recipes and the crafting queue are counted by default. detectUpgradeRecipe exists but upgrade results are never counted by the current code. Also check the station id (stationIds, merged with the legacy stationId) and that a persistent fact is linked in fact.
Events and objectives do not fire in Creative. The use, craft and gem stone events return early for Creative players, and the tooltip system is disabled for them. Test in Survival.
Tooltip tags show up as text, or pages do not change. Check first that the player is not in Creative, where the lore is left as it is. Pages only change when an Advanced Tooltip System entry is published with isEnabled and overrideDefaultLore on; otherwise the tags are removed and the lore stays on one page. If the default F key conflicts with another plugin, choose another key in paginationKeybind.
Requirement marks always show as met. The check reads MMOCore player data. Without MMOCore (or for a player without a profile) the check falls back to "met".
Related extensions
- MMOCore — classes, professions and skills of the same Phoenix Development RPG suite.
- MMO Inventory — MMOInventory integration, usable as an item-providing fact for the Give and Remove actions.