Changelog β v1.8.0
v1.8.0 focuses on session hygiene, extensibility, and UX polish β a full memory reset on pack close, a custom material type system, a shared loot component, a Language right-click menu, and a sweep of important behavioural fixes.
New Features
| Area | Change |
|---|---|
| Core | Full memory reset on pack close β closing the last edit pack clears PackContext, PackIndexer, DynamicOptions (all lists), LangRegistry, and FileUtil.lastDir; session is completely fresh without restarting; same reset fires when promoting a reference pack to edit |
| Core | DynamicOptions.clearAll() β clears all dynamic lists and re-seeds built-in MDK defaults (craft types, skill categories, quest types, material types); all registered live combos refresh automatically |
| Materials | Custom material type combo β type field converted to liveCombo; type any custom folder name (e.g. wire) for new categories; routes saves to data/items/materials/wires/; custom types persist for the session and are pushed back on save; PackIndexer infers type from parent folder on pack open; smart pluralisation (wireβwires, alloyβalloys, already-plural types unchanged) |
| UI | Shared LootPanel component β loot entry UI extracted from EnemyEditor and RoomEditor into ui/LootPanel.java; Item ID field uses liveCombo(ITEM_IDS) showing all indexed materials and equipment; single fix point for both editors going forward |
| Languages | Language tab right-click context menu β right-click any key row for a themed popup with two actions: Remove Row (table only) and Remove & Unregister Key (table + LangRegistry); only appears on key/value rows, not section headers |
| Quests | Quest description field removed from form β now a hidden auto-derived lang key (displayName + ".desc"); both display name and description registered to Quests section on save automatically |
| Manifest | Manifest live lang key push removed β category row lang keys are only pushed to LangRegistry on Save/Create, not on every keystroke; eliminates phantom language entries appearing while typing |
| Core | PackIndexer improvements β indexes quest displayName to LangRegistry; handles both new quest (singular) and old quests root keys; category detected from top-level field first with meta.category as fallback |
| Enemies | Enemy loot Item ID converted to liveCombo(ITEM_IDS) β all indexed materials and equipment available in the dropdown; eliminates spelling errors in loot table entries |
Changes
- Enemy resistance spinners range changed from
0β1to-1β10β negative values represent vulnerability (enemy takes amplified damage of that type) - Equipment save path now uses
deriveCatPath()andisShipCategory()β correctly routesoriginal:personal_suittodata/items/equipment/personal/suit/instead of the raw MDK ID string EquipmentEditorgainslastSavedDispEquip/lastSavedDescEquiptracking, matching the pattern used by all other editorsPackIndexer.setPackRoot(null)now cancels a pending background scan instead of triggering a new one
Fixes
- Manifest tab no longer sends keystrokes to Language tab β
autoRegisterLangKeyremoved fromDocumentListenerandrefreshPreview; keys only fire on save - Quest
displayNamelang key tracked withlastSavedDispQuest;LangRegistry.replace()called on re-save to rename rather than duplicate PackBrowserEditortab bar reliable βaddRefBtnandleftPanelstored as instance fields; revalidation propagated up ancestor chain viaSwingUtilities.invokeLater