Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>nonkitNew to Visual Studio Code? Get it now.
nonkit

nonkit

Rodrigo Laneth

|
2 installs
| (0) | Free
Development environment for NONMP (The NOexistenceN of Morphean Paradox) mods with live testing via nonkit-plugin
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

nonkit-vsc

License: Unlicense

nonkit is a non-official mod development kit for the RPG game The NOexistenceN of Morphean Paradox : The Forest of Silver Shallots.

⚠️ Disclaimer: This is a fan project and is not affiliated with the developers or team behind NONMP. It's maintained to the best of my capacities, but keep in mind that NONMP is a new game currently in Early Access and rapidly changing, sometimes receiving more than one update per day as of writing. This project should be considered experimental.

What is this?

nonkit-vsc is a Visual Studio Code extension created as a helper tool for the developmnent of mods for the game. It integrates with nonkit-plugin to enable runtime modification of the game's storyline and injection of entirely new scenes, making the iteration cycle much faster than the traditional "edit, compile, replace files, restart game" workflow.

Building

To build the extension from source:

  1. Clone this repository
  2. Run npm install to install dependencies
  3. Build the Yarn compiler shim:
    cd nonkit-yarn-shim
    dotnet build -c Release
    
  4. Compile the extension with npm run compile (or npm run watch for development)
  5. To package the extension as a .vsix, run npm run package:vsix

The extension requires the .NET SDK to build the Yarn compiler shim.

Installation

Prerequisites

Windows only: This extension currently only supports Windows, as it bundles a Windows-native Yarn Spinner compiler.

This extension is designed to work alongside the official Yarn Spinner extension, which provides syntax highlighting, node graph visualization, and Yarn-specific editing features. Install it first for the best experience.

You'll also need nonkit-plugin installed in your game to use the live testing features. nonkit-plugin requires BepInEx:

BepInEx Installation: NONMP is an IL2CPP game, which requires BepInEx 6.x (not 5.x). Refer to the official installation instructions at https://github.com/BepInEx/BepInEx for the correct version and setup procedure.

Installing nonkit-vsc

From the Visual Studio Marketplace: available here.
From source: Build the extension (see above), then install the generated .vsix from the project root using the same method.

Getting Started

  1. Open a folder in VS Code where you want to create your mod
  2. Open the nonkit panel in the Activity Bar (look for the nonkit icon)
  3. Click "Initialize Project" to set up the project structure
  4. The extension creates a starter Main.yarn file, a localization template, and a Default.ysls.json containing NONMP's Yarn command definitions (used by the Yarn Spinner extension for autocomplete)

Versioning

This project follows SemVer.

Architecture

nonkit-vsc is organized into these main components:

  • Extension Core (src/extension.ts) - Entry point that registers commands, views, and wires everything together
  • Project Management (src/project/) - Handles project files, loading and saving .yarn scripts and .csv localization files
  • IPC Client (src/ipc/) - Named pipe communication with nonkit-plugin running inside the game
  • Yarn Compiler (src/compiler/) - Wraps the .NET-based Yarn Spinner compiler (nonkit-yarn-shim/) to compile scripts on demand
  • Views (src/views/) - Tree view providers for the project files and node explorer panels
  • UI (src/ui/) - Status bar and output console

How Live Testing Works

When you run a node:

  1. nonkit-vsc compiles all .yarn files in your project using the bundled Yarn compiler
  2. The compiled bytecode, localization strings, and config tables are sent to nonkit-plugin via named pipe
  3. nonkit-plugin injects the dialogue and config data into the running game and starts the specified node
  4. Status messages and errors are displayed in VS Code's output panel

Loading Content

The extension provides several load commands:

  • Load Scripts - Compile and load only Yarn scripts (without running)
  • Load Localization - Load only localization CSV files
  • Load Config - Load only Luban config tables (quests, conditions, etc.)
  • Load All - Load everything from the project

These commands let you inject content into the running game without starting a dialogue node. Useful for testing quests that need to appear in the game's map.

Project Structure

A nonkit project contains:

  • Project.nonkit.json - Project metadata and file mappings
  • scripts/*.yarn - Yarn Spinner dialogue scripts
  • localization/*.csv - Translation files keyed by line IDs (e.g., #line:example)
  • config/*.json - Luban configuration tables (quests, conditions, localization)
  • Default.ysls.json - Yarn command definitions for NONMP (enables references in the Yarn Spinner extension)

Creating Custom Quests

nonkit supports creating custom quests that appear in the game's map event system. This requires three config files working together:

Config Files

When you initialize a new project, nonkit creates example config files in the config/ folder:

TbMapEvent.json

Defines the quest itself:

[
  {
    "ID": 900001,
    "PlaceID": 9,
    "Title": "Example Quest",
    "Subtitle": "Custom Quest Demo",
    "BannerPath": "BG-4",
    "Desc": "This is a demonstration quest.",
    "MapEventType": "Special",
    "UnlockCondition": 900001,
    "LockCondition": 0,
    "DialogID": "ModQuest_Example",
    "Nonkit": {
      "IconSourceId": 10084
    }
  }
]

Key fields:

  • ID - Unique identifier (use 900000+ to avoid conflicts with base game)
  • PlaceID - Which location the quest appears in (9 = player's home)
  • DialogID - The Yarn node name to run when the quest starts
  • UnlockCondition - ID of a condition in TbCondition that controls when this quest appears
  • Nonkit.IconSourceId - Borrow an icon from an existing event (since custom events don't have icon assets)

TbCondition.json

Defines when the quest appears:

[
  {
    "ID": 900001,
    "Name": "ModQuest_Example_Unlock",
    "Day": "",
    "InWar": "",
    "Period": "",
    "Event": "",
    "YarnVariable": "",
    "Talent": [],
    "Lv": "",
    "PrimeAttribute": [],
    "Affection": "",
    "Item": []
  }
]

An empty condition (like above) means the quest is always available. You can add requirements like specific days, levels, or items.

TbLocalizationAutoGenerated.json

Provides localized text for the quest UI:

[
  {
    "Key": "MapEvent_900001_Title",
    "CH": "示例任务",
    "EN": "Example Quest",
    "Handled": true
  },
  {
    "Key": "MapEvent_900001_Desc",
    "CH": "这是使用nonkit创建的演示任务。",
    "EN": "This is a demonstration quest created with nonkit.",
    "Handled": true
  }
]

The game looks up quest titles and descriptions using the pattern MapEvent_{ID}_Title and MapEvent_{ID}_Desc.

ID Conventions

The default templates use ID range 900000+ to avoid accidental conflicts with base game IDs. However, you can deliberately use an existing game ID to override that entry, which is a valid use case for patching game content.

License

nonkit-vsc is published under the Unlicense.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft