enfusion-mcp 0.4.4 → 0.4.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/data/patterns/admin-tool.json +1 -1
- package/data/patterns/custom-action.json +1 -1
- package/data/patterns/custom-component.json +1 -1
- package/data/patterns/custom-faction.json +1 -1
- package/data/patterns/custom-vehicle.json +1 -1
- package/data/patterns/game-mode.json +1 -1
- package/data/patterns/hud-widget.json +1 -1
- package/data/patterns/modded-behavior.json +1 -1
- package/data/patterns/spawn-system.json +1 -1
- package/data/patterns/weapon-reskin.json +1 -1
- package/dist/index.js +1 -1
- package/dist/prompts/create-mod.d.ts.map +1 -1
- package/dist/prompts/create-mod.js +19 -3
- package/dist/prompts/create-mod.js.map +1 -1
- package/dist/prompts/modify-mod.d.ts.map +1 -1
- package/dist/prompts/modify-mod.js +5 -4
- package/dist/prompts/modify-mod.js.map +1 -1
- package/dist/templates/prefab.d.ts.map +1 -1
- package/dist/templates/prefab.js +2 -1
- package/dist/templates/prefab.js.map +1 -1
- package/dist/tools/prefab-create.d.ts.map +1 -1
- package/dist/tools/prefab-create.js +5 -2
- package/dist/tools/prefab-create.js.map +1 -1
- package/dist/tools/wb-launch.d.ts.map +1 -1
- package/dist/tools/wb-launch.js +21 -18
- package/dist/tools/wb-launch.js.map +1 -1
- package/dist/workbench/client.d.ts +7 -12
- package/dist/workbench/client.d.ts.map +1 -1
- package/dist/workbench/client.js +56 -128
- package/dist/workbench/client.js.map +1 -1
- package/package.json +1 -1
|
@@ -20,5 +20,5 @@
|
|
|
20
20
|
],
|
|
21
21
|
"prefabs": [],
|
|
22
22
|
"configs": [],
|
|
23
|
-
"instructions": "
|
|
23
|
+
"instructions": "CRITICAL: Use api_search to verify EVERY method you call. Never guess Enfusion API method names — they are non-standard and many obvious-sounding methods don't exist.\n1. Use api_search to look up SCR_PlayerController, InputManager, and any other classes you need — verify methods exist before using them\n2. Edit the AdminComponent to implement your admin commands — only call methods confirmed by api_search\n3. Add keybind checks in the AdminKeyHandler — verify input handling methods via api_search\n4. IMPORTANT: Add authority checks — verify the player has admin privileges before executing commands\n5. Use Rpc methods for server-authoritative commands (teleport, spawn)\n6. Attach the AdminComponent to the player controller prefab\n7. Test with host player in a local server"
|
|
24
24
|
}
|
|
@@ -21,5 +21,5 @@
|
|
|
21
21
|
}
|
|
22
22
|
],
|
|
23
23
|
"configs": [],
|
|
24
|
-
"instructions": "
|
|
24
|
+
"instructions": "CRITICAL: Use api_search to verify EVERY method you call on Enfusion classes. Never guess method names.\n1. Use api_search to find ScriptedUserAction methods and any other classes your action interacts with (e.g., damage managers, inventory, etc.)\n2. Edit the InteractAction script to define what happens on interaction — ONLY use methods confirmed by api_search\n3. Customize CanBePerformedScript to control when the action is available\n4. Customize CanBeShownScript to control visibility\n5. Create the interactive prefab — the MeshObject component MUST reference a base game .xob model or the entity will be invisible\n6. Add the action to the ActionsManagerComponent in the prefab\n7. Place the prefab in a world and test interaction"
|
|
25
25
|
}
|
|
@@ -13,5 +13,5 @@
|
|
|
13
13
|
],
|
|
14
14
|
"prefabs": [],
|
|
15
15
|
"configs": [],
|
|
16
|
-
"instructions": "
|
|
16
|
+
"instructions": "CRITICAL: Use api_search to verify EVERY method you call. Never guess Enfusion API method names — they are non-standard and many obvious-sounding methods don't exist.\n1. Use api_search to look up ScriptComponent and any classes your component interacts with — verify methods exist before using them\n2. Edit the component script to add your member variables and logic — only call methods confirmed by api_search\n3. Use [Attribute()] to expose configuration in Workbench\n4. Override EOnInit for initialization, OnPostInit for post-setup — verify these exist on your parent class via api_search\n5. Override OnDelete for cleanup\n6. Attach the component to entity prefabs via their 'components' block\n7. Access the component at runtime: entity.FindComponent(YourComponent)"
|
|
17
17
|
}
|
|
@@ -33,5 +33,5 @@
|
|
|
33
33
|
"content": "SCR_Faction {\n m_sKey \"{PREFIX}_faction\"\n m_sName \"{PREFIX} Faction\"\n m_Color \"0,100,200,255\"\n m_sFlagPath \"\"\n}"
|
|
34
34
|
}
|
|
35
35
|
],
|
|
36
|
-
"instructions": "
|
|
36
|
+
"instructions": "CRITICAL: Use api_search to verify EVERY method you call. Never guess Enfusion API method names — they are non-standard and many obvious-sounding methods don't exist.\n1. Use api_search to look up SCR_Faction, SCR_BaseGameMode, SCR_LoadoutManager, and any faction/loadout classes — verify methods exist before using them\n2. Edit the FactionInit script to set your faction key, name, and color — only call methods confirmed by api_search\n3. Edit the LoadoutConfig to define weapons and equipment\n4. Create the character prefab with prefab_create — characters MUST inherit from a base game character prefab for animations and physics\n5. Add your faction to the game mode's faction list in a modded SCR_BaseGameMode — verify the override method exists first\n6. Test in Game Master by placing faction spawn points"
|
|
37
37
|
}
|
|
@@ -21,5 +21,5 @@
|
|
|
21
21
|
}
|
|
22
22
|
],
|
|
23
23
|
"configs": [],
|
|
24
|
-
"instructions": "
|
|
24
|
+
"instructions": "CRITICAL: Use api_search to verify EVERY method you call. Never guess Enfusion API method names — they are non-standard and many obvious-sounding methods don't exist.\n1. Use api_search to look up VehicleControllerComponent, CarControllerComponent, and any vehicle-related classes — verify methods exist before using them\n2. Find a base vehicle prefab to inherit from (e.g., M151A2, UAZ469)\n3. Create your vehicle prefab inheriting from the base — vehicles MUST inherit from a base game vehicle prefab or they won't have physics/driving setup\n4. Modify vehicle properties (speed, armor, fuel capacity) in the prefab\n5. Add the custom VehicleController component for special behavior — only call methods confirmed by api_search\n6. Place the vehicle in a world or use Game Master to spawn it\n7. Test driving, collision, and vehicle entry/exit"
|
|
25
25
|
}
|
|
@@ -33,5 +33,5 @@
|
|
|
33
33
|
"content": "SCR_MissionHeader {\n m_sName \"{PREFIX} Scenario\"\n m_sDescription \"Custom game mode scenario\"\n m_sWorldFile \"\"\n m_sIcon \"\"\n m_bIsModded 1\n}"
|
|
34
34
|
}
|
|
35
35
|
],
|
|
36
|
-
"instructions": "
|
|
36
|
+
"instructions": "CRITICAL: Use api_search to verify EVERY method you call. Never guess Enfusion API method names.\n1. Use api_search to look up SCR_BaseGameMode, SCR_RespawnSystemComponent, and any other classes you need — verify methods exist before using them\n2. Edit the GameMode script to define round logic, win conditions, and player flow\n3. Edit the ScoringSystem to implement your scoring rules\n4. Create the game mode prefab and attach both components\n5. Create a test world with the game mode prefab placed\n6. Add spawn points for each faction\n7. Test with 'Play' in Workbench"
|
|
37
37
|
}
|
|
@@ -13,5 +13,5 @@
|
|
|
13
13
|
],
|
|
14
14
|
"prefabs": [],
|
|
15
15
|
"configs": [],
|
|
16
|
-
"instructions": "
|
|
16
|
+
"instructions": "CRITICAL: Use api_search to verify EVERY method you call. Never guess Enfusion API method names — they are non-standard.\n1. Use api_search to look up HUD-related classes and verify available methods before writing code\n2. Create a .layout file using layout_create for the widget visual design\n3. Edit the HudComponent to load and manage the layout\n4. Implement UpdateDisplay to show dynamic content\n5. Attach the component to the player controller prefab\n6. Test by joining a game and verifying the widget appears"
|
|
17
17
|
}
|
|
@@ -13,5 +13,5 @@
|
|
|
13
13
|
],
|
|
14
14
|
"prefabs": [],
|
|
15
15
|
"configs": [],
|
|
16
|
-
"instructions": "
|
|
16
|
+
"instructions": "CRITICAL: Use api_search to verify EVERY method you call or override. Never guess Enfusion API method names.\nThis pattern scaffolds a config constants class. You need to add the actual modded scripts yourself:\n1. Use api_search to find the class you want to modify — read its full method list\n2. Verify the method you want to override actually exists in the search results\n3. Use script_create with scriptType 'modded' and the target class as parentClass\n4. Reference constants from the {PREFIX}_Config class for tunable values\n5. ALWAYS call super.MethodName() in overrides unless you want to completely replace the behavior\n6. Use [Attribute()] for values you want editable in Workbench\n7. IMPORTANT: modded classes apply globally — they affect ALL instances of the base class\n8. Only ONE modded class per target class — do not create multiple files modding the same parent"
|
|
17
17
|
}
|
|
@@ -28,5 +28,5 @@
|
|
|
28
28
|
}
|
|
29
29
|
],
|
|
30
30
|
"configs": [],
|
|
31
|
-
"instructions": "
|
|
31
|
+
"instructions": "CRITICAL: Use api_search to verify EVERY method you call. Never guess Enfusion API method names — they are non-standard and many obvious-sounding methods don't exist.\n1. Use api_search to look up SCR_RespawnSystemComponent, SCR_SpawnPoint, and any other spawn-related classes — verify methods exist before using them\n2. Edit SpawnManager to implement spawn point selection logic — only call methods confirmed by api_search\n3. Edit SpawnPointComponent to define availability rules\n4. Create the spawn point prefab with prefab_create\n5. Attach SpawnManager to your game mode prefab\n6. Mod the SCR_RespawnSystemComponent to use your custom manager — verify the override method exists first\n7. Place spawn point prefabs in the world\n8. Test with multiple players connecting and respawning"
|
|
32
32
|
}
|
|
@@ -21,5 +21,5 @@
|
|
|
21
21
|
}
|
|
22
22
|
],
|
|
23
23
|
"configs": [],
|
|
24
|
-
"instructions": "
|
|
24
|
+
"instructions": "CRITICAL: Use api_search to verify EVERY method you call. Never guess Enfusion API method names — they are non-standard and many obvious-sounding methods don't exist.\n1. Use api_search to look up SCR_WeaponAttachmentsStorageComponent, BaseWeaponComponent, and weapon-related classes — verify methods exist before using them\n2. Find the base weapon prefab you want to modify\n3. Create a new weapon prefab inheriting from the base weapon — weapons MUST inherit from a base game weapon prefab or they won't function\n4. Modify weapon properties (damage, rate of fire, recoil) in the prefab\n5. Optionally add the modded script for runtime behavior changes — only override methods confirmed by api_search\n6. Add the weapon to a loadout or spawn it in Game Master for testing"
|
|
25
25
|
}
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-mod.d.ts","sourceRoot":"","sources":["../../src/prompts/create-mod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"create-mod.d.ts","sourceRoot":"","sources":["../../src/prompts/create-mod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI,CAsJzF"}
|
|
@@ -66,15 +66,30 @@ Before writing any code, assess the scope of what the user is asking for. Think
|
|
|
66
66
|
|
|
67
67
|
This file is the handoff document. A future Claude instance with zero context will read this file and know exactly what the mod is, what's done, and what to build next. Be specific — list actual file names, class names, and system relationships. The user can then use \`/modify-mod\` to continue with subsequent phases.
|
|
68
68
|
|
|
69
|
+
## CRITICAL: API VERIFICATION RULE
|
|
70
|
+
|
|
71
|
+
**NEVER guess, assume, or invent Enfusion API method names.** The Enfusion scripting API is non-standard and poorly documented. Methods that seem obvious often do not exist (e.g., \`HitZone.SetHealth()\`, \`IEntity.GetVelocity()\`, \`AIWorld.GetAIGroups()\`).
|
|
72
|
+
|
|
73
|
+
Before writing ANY script that calls an Enfusion API method, you MUST:
|
|
74
|
+
1. Use **api_search** to find the class
|
|
75
|
+
2. Read the method list in the results
|
|
76
|
+
3. Only use methods that appear in the search results
|
|
77
|
+
4. If the method you need doesn't exist, search for alternative classes or approaches
|
|
78
|
+
5. For damage/health: use \`SCR_CharacterDamageManagerComponent.FullHeal()\`, NOT per-hitzone SetHealth
|
|
79
|
+
6. For any class interaction: search the class first, read its methods, then write code
|
|
80
|
+
|
|
81
|
+
If you cannot find a method via api_search, it probably does not exist. Do NOT write code that calls unverified methods — it will fail to compile silently in Workbench.
|
|
82
|
+
|
|
69
83
|
## STEP 1: BUILD
|
|
70
84
|
|
|
71
|
-
1. Use **api_search** to find the relevant Enfusion API classes
|
|
85
|
+
1. Use **api_search** to find the relevant Enfusion API classes AND verify that the methods you plan to use actually exist. Search every class you intend to call methods on. Do this BEFORE writing any scripts.
|
|
72
86
|
|
|
73
87
|
2. Use **mod_create** to scaffold the addon project. Pick a good name, class prefix, and pattern based on the description.
|
|
74
88
|
|
|
75
89
|
3. Use **script_create** for each script:
|
|
76
90
|
- Correct scriptType (component, gamemode, action, modded, etc.)
|
|
77
91
|
- Proper method stubs and description comments
|
|
92
|
+
- ONLY call methods verified via api_search
|
|
78
93
|
|
|
79
94
|
4. Use **prefab_create** for any prefabs needed (spawn points, entities, game mode, etc.)
|
|
80
95
|
|
|
@@ -87,18 +102,19 @@ This file is the handoff document. A future Claude instance with zero context wi
|
|
|
87
102
|
8. Use **mod_validate** to check for structural issues.
|
|
88
103
|
|
|
89
104
|
9. **Workbench Setup** (MANDATORY — do not skip, do not tell the user to do this):
|
|
90
|
-
a. **wb_launch** with \`gprojPath\` set to the addon's .gproj file — this
|
|
105
|
+
a. **wb_launch** with \`gprojPath\` set to the addon's .gproj file — this copies handler scripts into the mod, skips the launcher, and opens the project in the World Editor with full NET API access
|
|
91
106
|
b. **wb_reload** (target: "scripts") — Compile all scripts
|
|
92
107
|
c. **wb_resources** (action: "register") — Register every new prefab, config, and layout file
|
|
93
108
|
d. If compilation fails, fix with **project_write** and reload again
|
|
94
109
|
|
|
95
110
|
10. **wb_play** — Launch the mod in-game to test. Use **wb_stop** to return to editor.
|
|
96
111
|
|
|
97
|
-
11. **wb_cleanup** with the addon's
|
|
112
|
+
11. **wb_cleanup** with the addon's root directory path — Remove the temporary handler scripts before the user publishes. NEVER skip this step.
|
|
98
113
|
|
|
99
114
|
## STEP 2: SUMMARIZE
|
|
100
115
|
|
|
101
116
|
Enfusion rules:
|
|
117
|
+
- NEVER guess API methods — if you didn't find it via api_search, it doesn't exist
|
|
102
118
|
- All scripts go in Scripts/Game/ (other folders are silently ignored)
|
|
103
119
|
- Use a consistent class prefix (e.g., ZS_ for Zombie Survival)
|
|
104
120
|
- modded classes affect ALL instances globally
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-mod.js","sourceRoot":"","sources":["../../src/prompts/create-mod.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,UAAU,uBAAuB,CAAC,MAAiB,EAAE,QAAwB;IACjF,MAAM,WAAW,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAC;IAE1C,MAAM,CAAC,cAAc,CACnB,YAAY,EACZ;QACE,KAAK,EAAE,gCAAgC;QACvC,WAAW,EACT,mHAAmH;QACrH,UAAU,EAAE;YACV,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,CAAC,gGAAgG,CAAC;SAC9G;KACF,EACD,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;QACpB,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAe;gBACrB,OAAO,EAAE;oBACP,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,0CAA0C,WAAW
|
|
1
|
+
{"version":3,"file":"create-mod.js","sourceRoot":"","sources":["../../src/prompts/create-mod.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,UAAU,uBAAuB,CAAC,MAAiB,EAAE,QAAwB;IACjF,MAAM,WAAW,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAC;IAE1C,MAAM,CAAC,cAAc,CACnB,YAAY,EACZ;QACE,KAAK,EAAE,gCAAgC;QACvC,WAAW,EACT,mHAAmH;QACrH,UAAU,EAAE;YACV,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,CAAC,gGAAgG,CAAC;SAC9G;KACF,EACD,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;QACpB,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAe;gBACrB,OAAO,EAAE;oBACP,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,0CAA0C,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2HrE,WAAW,EAAE;iBACJ;aACF;SACF;KACF,CAAC,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modify-mod.d.ts","sourceRoot":"","sources":["../../src/prompts/modify-mod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"modify-mod.d.ts","sourceRoot":"","sources":["../../src/prompts/modify-mod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAgG/D"}
|
|
@@ -34,9 +34,9 @@ Follow this workflow — every step is mandatory:
|
|
|
34
34
|
- Read existing scripts, prefabs, configs, and layouts
|
|
35
35
|
- Identify the class prefix convention in use
|
|
36
36
|
|
|
37
|
-
3. **Research the API** — Use **api_search** to find relevant classes and methods.
|
|
37
|
+
3. **Research the API** — Use **api_search** to find relevant classes and methods. **CRITICAL: NEVER guess or assume Enfusion API method names.** The API is non-standard — methods that seem obvious often don't exist (e.g., \`HitZone.SetHealth()\`, \`IEntity.GetVelocity()\`). You MUST search every class you plan to call methods on and verify the methods exist in the search results. If a method isn't listed, it does not exist — find an alternative.
|
|
38
38
|
|
|
39
|
-
4. **Plan the changes** — Determine what to modify, create, or remove. For phased projects, verify your plan aligns with the MODPLAN.
|
|
39
|
+
4. **Plan the changes** — Determine what to modify, create, or remove. For phased projects, verify your plan aligns with the MODPLAN. Only use API methods verified via api_search.
|
|
40
40
|
|
|
41
41
|
5. **Implement** — Make all modifications:
|
|
42
42
|
- Existing files: **project_read** then **project_write**
|
|
@@ -48,14 +48,14 @@ Follow this workflow — every step is mandatory:
|
|
|
48
48
|
6. **Validate** — Use **mod_validate** to check for issues.
|
|
49
49
|
|
|
50
50
|
7. **Workbench Setup** (MANDATORY — do not skip, do not tell the user to do this):
|
|
51
|
-
a. **wb_launch** with \`gprojPath\` set to the addon's .gproj file — this
|
|
51
|
+
a. **wb_launch** with \`gprojPath\` set to the addon's .gproj file — this copies handler scripts into the mod, skips the launcher, and opens the project in the World Editor with full NET API access
|
|
52
52
|
b. **wb_reload** (target: "scripts") — Compile all scripts
|
|
53
53
|
c. **wb_resources** (action: "register") — Register any new prefabs, configs, or layouts
|
|
54
54
|
d. If compilation fails, fix and reload again
|
|
55
55
|
|
|
56
56
|
8. **wb_play** — Test the changes in-game. Use **wb_stop** to return to editor.
|
|
57
57
|
|
|
58
|
-
9. **wb_cleanup** with the addon's
|
|
58
|
+
9. **wb_cleanup** with the addon's root directory path — Remove the temporary handler scripts before the user publishes. NEVER skip this step.
|
|
59
59
|
|
|
60
60
|
10. **Update the plan** — If a \`MODPLAN.md\` exists, use **project_read** then **project_write** to update it:
|
|
61
61
|
- Mark completed phases as \`COMPLETE\` with a list of files created/modified
|
|
@@ -66,6 +66,7 @@ Follow this workflow — every step is mandatory:
|
|
|
66
66
|
11. Summarize what changed and how the mod works now.
|
|
67
67
|
|
|
68
68
|
Enfusion rules:
|
|
69
|
+
- NEVER guess API methods — if you didn't verify it via api_search, assume it doesn't exist
|
|
69
70
|
- Read existing code BEFORE modifying it. Understand what's there first.
|
|
70
71
|
- Match existing code style, class prefix, and naming conventions.
|
|
71
72
|
- All scripts go in Scripts/Game/ (other folders are silently ignored)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modify-mod.js","sourceRoot":"","sources":["../../src/prompts/modify-mod.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,UAAU,uBAAuB,CAAC,MAAiB;IACvD,MAAM,CAAC,cAAc,CACnB,YAAY,EACZ;QACE,KAAK,EAAE,uCAAuC;QAC9C,WAAW,EACT,mHAAmH;QACrH,UAAU,EAAE;YACV,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,CAAC,0EAA0E,CAAC;YACvF,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,CAAC,2HAA2H,CAAC;SACzI;KACF,EACD,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1B,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAe;gBACrB,OAAO,EAAE;oBACP,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,4CAA4C,WAAW;;aAE5D,IAAI
|
|
1
|
+
{"version":3,"file":"modify-mod.js","sourceRoot":"","sources":["../../src/prompts/modify-mod.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,UAAU,uBAAuB,CAAC,MAAiB;IACvD,MAAM,CAAC,cAAc,CACnB,YAAY,EACZ;QACE,KAAK,EAAE,uCAAuC;QAC9C,WAAW,EACT,mHAAmH;QACrH,UAAU,EAAE;YACV,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,CAAC,0EAA0E,CAAC;YACvF,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,CAAC,2HAA2H,CAAC;SACzI;KACF,EACD,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1B,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAe;gBACrB,OAAO,EAAE;oBACP,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,4CAA4C,WAAW;;aAE5D,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8IAkE6H;iBACnI;aACF;SACF;KACF,CAAC,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefab.d.ts","sourceRoot":"","sources":["../../src/templates/prefab.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,UAAU,GAClB,WAAW,GACX,SAAS,GACT,QAAQ,GACR,YAAY,GACZ,UAAU,GACV,aAAa,GACb,SAAS,CAAC;AAEd,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,aAAa;IAC5B,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,UAAU,EAAE,UAAU,CAAC;IACvB,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mCAAmC;IACnC,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;IAC5B,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;
|
|
1
|
+
{"version":3,"file":"prefab.d.ts","sourceRoot":"","sources":["../../src/templates/prefab.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,UAAU,GAClB,WAAW,GACX,SAAS,GACT,QAAQ,GACR,YAAY,GACZ,UAAU,GACV,aAAa,GACb,SAAS,CAAC;AAEd,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,aAAa;IAC5B,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,UAAU,EAAE,UAAU,CAAC;IACvB,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mCAAmC;IACnC,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;IAC5B,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA4ED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CA4D1D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAEpE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD"}
|
package/dist/templates/prefab.js
CHANGED
|
@@ -50,7 +50,8 @@ const PREFAB_CONFIGS = {
|
|
|
50
50
|
defaultParent: "",
|
|
51
51
|
subdirectory: "Prefabs/Props",
|
|
52
52
|
defaultComponents: [
|
|
53
|
-
{ type: "MeshObject", properties: {} },
|
|
53
|
+
{ type: "MeshObject", properties: { Object: "" } },
|
|
54
|
+
{ type: "RigidBody", properties: { ModelGeometry: "1" } },
|
|
54
55
|
{ type: "ActionsManagerComponent", properties: {} },
|
|
55
56
|
],
|
|
56
57
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefab.js","sourceRoot":"","sources":["../../src/templates/prefab.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAqB,MAAM,6BAA6B,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAwClD,MAAM,cAAc,GAAyC;IAC3D,SAAS,EAAE;QACT,UAAU,EAAE,sBAAsB;QAClC,aAAa,EAAE,EAAE;QACjB,YAAY,EAAE,oBAAoB;QAClC,iBAAiB,EAAE;YACjB,EAAE,IAAI,EAAE,kCAAkC,EAAE,UAAU,EAAE,EAAE,EAAE;YAC5D,EAAE,IAAI,EAAE,kCAAkC,EAAE,UAAU,EAAE,EAAE,EAAE;SAC7D;KACF;IACD,OAAO,EAAE;QACP,UAAU,EAAE,SAAS;QACrB,aAAa,EAAE,EAAE;QACjB,YAAY,EAAE,kBAAkB;QAChC,iBAAiB,EAAE;YACjB,EAAE,IAAI,EAAE,4BAA4B,EAAE,UAAU,EAAE,EAAE,EAAE;YACtD,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,EAAE;SACvC;KACF;IACD,MAAM,EAAE;QACN,UAAU,EAAE,aAAa;QACzB,aAAa,EAAE,EAAE;QACjB,YAAY,EAAE,iBAAiB;QAC/B,iBAAiB,EAAE;YACjB,EAAE,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,EAAE,EAAE;YAC3C,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,EAAE;SACvC;KACF;IACD,UAAU,EAAE;QACV,UAAU,EAAE,eAAe;QAC3B,aAAa,EAAE,EAAE;QACjB,YAAY,EAAE,iBAAiB;QAC/B,iBAAiB,EAAE;YACjB,EAAE,IAAI,EAAE,gBAAgB,EAAE,UAAU,EAAE,EAAE,EAAE;SAC3C;KACF;IACD,QAAQ,EAAE;QACR,UAAU,EAAE,eAAe;QAC3B,aAAa,EAAE,EAAE;QACjB,YAAY,EAAE,iBAAiB;QAC/B,iBAAiB,EAAE;YACjB,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,EAAE,EAAE;YAC5C,EAAE,IAAI,EAAE,4BAA4B,EAAE,UAAU,EAAE,EAAE,EAAE;SACvD;KACF;IACD,WAAW,EAAE;QACX,UAAU,EAAE,eAAe;QAC3B,aAAa,EAAE,EAAE;QACjB,YAAY,EAAE,eAAe;QAC7B,iBAAiB,EAAE;YACjB,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"prefab.js","sourceRoot":"","sources":["../../src/templates/prefab.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefab-create.d.ts","sourceRoot":"","sources":["../../src/tools/prefab-create.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAU3C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"prefab-create.d.ts","sourceRoot":"","sources":["../../src/tools/prefab-create.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAU3C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAuH5E"}
|
|
@@ -5,7 +5,7 @@ import { generatePrefab, getPrefabSubdirectory, getPrefabFilename, } from "../te
|
|
|
5
5
|
import { validateFilename } from "../utils/safe-path.js";
|
|
6
6
|
export function registerPrefabCreate(server, config) {
|
|
7
7
|
server.registerTool("prefab_create", {
|
|
8
|
-
description: "Create a new Entity Template (.et) prefab file for an Arma Reforger mod. Generates a properly structured prefab with components in valid Enfusion text serialization format.",
|
|
8
|
+
description: "Create a new Entity Template (.et) prefab file for an Arma Reforger mod. Generates a properly structured prefab with components in valid Enfusion text serialization format. IMPORTANT: For 'interactive' and other visible prefabs, the MeshObject component MUST have its 'Object' property set to a base game .xob model path (e.g., '{5F4C4181F065B447}Assets/Props/Military/Barrels/BarrelGreen_01.xob') or the entity will be invisible in-game. Use api_search to find model paths.",
|
|
9
9
|
inputSchema: {
|
|
10
10
|
name: z
|
|
11
11
|
.string()
|
|
@@ -73,11 +73,14 @@ export function registerPrefabCreate(server, config) {
|
|
|
73
73
|
};
|
|
74
74
|
}
|
|
75
75
|
writeFileSync(targetPath, content, "utf-8");
|
|
76
|
+
const meshWarning = (prefabType === "interactive" || prefabType === "generic")
|
|
77
|
+
? "\n\n⚠️ IMPORTANT: The MeshObject 'Object' property is empty. You MUST set it to a base game .xob model path (e.g., '{5F4C4181F065B447}Assets/Props/Military/Barrels/BarrelGreen_01.xob') or the entity will be INVISIBLE in-game. Use project_write to update the prefab."
|
|
78
|
+
: "";
|
|
76
79
|
return {
|
|
77
80
|
content: [
|
|
78
81
|
{
|
|
79
82
|
type: "text",
|
|
80
|
-
text: `Prefab created: ${subdir}/${filename}\n\n\`\`\`\n${content}\n
|
|
83
|
+
text: `Prefab created: ${subdir}/${filename}\n\n\`\`\`\n${content}\n\`\`\`${meshWarning}`,
|
|
81
84
|
},
|
|
82
85
|
],
|
|
83
86
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefab-create.js","sourceRoot":"","sources":["../../src/tools/prefab-create.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,iBAAiB,GAGlB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,MAAc;IACpE,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"prefab-create.js","sourceRoot":"","sources":["../../src/tools/prefab-create.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wb-launch.d.ts","sourceRoot":"","sources":["../../src/tools/wb-launch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"wb-launch.d.ts","sourceRoot":"","sources":["../../src/tools/wb-launch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,eAAe,GACtB,IAAI,CA+GN"}
|
package/dist/tools/wb-launch.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
import { dirname } from "node:path";
|
|
2
3
|
export function registerWbLaunch(server, client) {
|
|
3
4
|
server.registerTool("wb_launch", {
|
|
4
|
-
description: "Launch Arma Reforger Workbench (Arma Reforger Tools). Automatically
|
|
5
|
-
"
|
|
6
|
-
"
|
|
5
|
+
description: "Launch Arma Reforger Workbench (Arma Reforger Tools). Automatically copies handler scripts " +
|
|
6
|
+
"into the target mod's Scripts/WorkbenchGame/ directory (so NET API handlers compile as part " +
|
|
7
|
+
"of the mod), starts the Workbench executable, and waits for the NET API to become available. " +
|
|
7
8
|
"All other wb_* tools call this automatically if Workbench is not running, so you rarely need to " +
|
|
8
9
|
"call this directly. IMPORTANT: When done working with Workbench, call wb_cleanup to remove the " +
|
|
9
|
-
"
|
|
10
|
+
"handler scripts from the mod before the user publishes.",
|
|
10
11
|
inputSchema: {
|
|
11
12
|
timeoutSeconds: z
|
|
12
13
|
.number()
|
|
@@ -18,8 +19,8 @@ export function registerWbLaunch(server, client) {
|
|
|
18
19
|
.string()
|
|
19
20
|
.optional()
|
|
20
21
|
.describe("Path to a .gproj file to open directly. Skips the Workbench launcher screen and goes straight " +
|
|
21
|
-
"into the World Editor.
|
|
22
|
-
"
|
|
22
|
+
"into the World Editor. Handler scripts are copied into the mod so all wb_* tools work. " +
|
|
23
|
+
"If omitted, Workbench opens to its launcher."),
|
|
23
24
|
},
|
|
24
25
|
}, async ({ gprojPath }) => {
|
|
25
26
|
try {
|
|
@@ -35,9 +36,10 @@ export function registerWbLaunch(server, client) {
|
|
|
35
36
|
};
|
|
36
37
|
}
|
|
37
38
|
await client.ensureRunning(gprojPath);
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
const modDir = gprojPath ? dirname(gprojPath) : null;
|
|
40
|
+
const note = modDir
|
|
41
|
+
? `\n\nNote: Handler scripts were copied to ${modDir}/Scripts/WorkbenchGame/EnfusionMCP/. ` +
|
|
42
|
+
`Call **wb_cleanup** with the mod directory path when done to remove them before publishing.`
|
|
41
43
|
: "";
|
|
42
44
|
return {
|
|
43
45
|
content: [
|
|
@@ -60,24 +62,25 @@ export function registerWbLaunch(server, client) {
|
|
|
60
62
|
};
|
|
61
63
|
}
|
|
62
64
|
});
|
|
63
|
-
// Cleanup tool to remove
|
|
65
|
+
// Cleanup tool to remove handler scripts after Workbench work is done
|
|
64
66
|
server.registerTool("wb_cleanup", {
|
|
65
|
-
description: "Remove the temporary EnfusionMCP handler
|
|
67
|
+
description: "Remove the temporary EnfusionMCP handler scripts from a mod's directory. " +
|
|
68
|
+
"Deletes Scripts/WorkbenchGame/EnfusionMCP/ from the mod. " +
|
|
66
69
|
"Call this after finishing Workbench work and before the user publishes their mod. " +
|
|
67
|
-
"
|
|
70
|
+
"Safe to call even if scripts were never installed.",
|
|
68
71
|
inputSchema: {
|
|
69
|
-
|
|
72
|
+
modDir: z
|
|
70
73
|
.string()
|
|
71
|
-
.describe("Path to the mod's
|
|
74
|
+
.describe("Path to the mod's root directory (the folder containing the .gproj file)."),
|
|
72
75
|
},
|
|
73
|
-
}, async ({
|
|
74
|
-
const removed = client.
|
|
76
|
+
}, async ({ modDir }) => {
|
|
77
|
+
const removed = client.cleanupHandlerScripts(modDir);
|
|
75
78
|
if (removed) {
|
|
76
79
|
return {
|
|
77
80
|
content: [
|
|
78
81
|
{
|
|
79
82
|
type: "text",
|
|
80
|
-
text: "**Cleanup Complete** — EnfusionMCP handler
|
|
83
|
+
text: "**Cleanup Complete** — EnfusionMCP handler scripts removed from the mod. The mod is ready to publish.",
|
|
81
84
|
},
|
|
82
85
|
],
|
|
83
86
|
};
|
|
@@ -86,7 +89,7 @@ export function registerWbLaunch(server, client) {
|
|
|
86
89
|
content: [
|
|
87
90
|
{
|
|
88
91
|
type: "text",
|
|
89
|
-
text: "**No Cleanup Needed** —
|
|
92
|
+
text: "**No Cleanup Needed** — Handler scripts were not present in the mod directory.",
|
|
90
93
|
},
|
|
91
94
|
],
|
|
92
95
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wb-launch.js","sourceRoot":"","sources":["../../src/tools/wb-launch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"wb-launch.js","sourceRoot":"","sources":["../../src/tools/wb-launch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,MAAM,UAAU,gBAAgB,CAC9B,MAAiB,EACjB,MAAuB;IAEvB,MAAM,CAAC,YAAY,CACjB,WAAW,EACX;QACE,WAAW,EACT,6FAA6F;YAC7F,8FAA8F;YAC9F,+FAA+F;YAC/F,kGAAkG;YAClG,iGAAiG;YACjG,yDAAyD;QAC3D,WAAW,EAAE;YACX,cAAc,EAAE,CAAC;iBACd,MAAM,EAAE;iBACR,GAAG,CAAC,EAAE,CAAC;iBACP,GAAG,CAAC,GAAG,CAAC;iBACR,OAAO,CAAC,EAAE,CAAC;iBACX,QAAQ,CACP,qFAAqF,CACtF;YACH,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,gGAAgG;gBAChG,yFAAyF;gBACzF,8CAA8C,CAC/C;SACJ;KACF,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QACtB,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAC3C,IAAI,cAAc,EAAE,CAAC;gBACnB,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,wFAAwF;yBAC/F;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YAEtC,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACrD,MAAM,IAAI,GAAG,MAAM;gBACjB,CAAC,CAAC,4CAA4C,MAAM,uCAAuC;oBACzF,6FAA6F;gBAC/F,CAAC,CAAC,EAAE,CAAC;YAEP,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,mHAAmH,IAAI,EAAE;qBAChI;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACvD,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,wBAAwB,GAAG,EAAE;qBACpC;iBACF;aACF,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,sEAAsE;IACtE,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,WAAW,EACT,2EAA2E;YAC3E,2DAA2D;YAC3D,oFAAoF;YACpF,oDAAoD;QACtD,WAAW,EAAE;YACX,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,CAAC,2EAA2E,CAAC;SACzF;KACF,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QACnB,MAAM,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,uGAAuG;qBAC9G;iBACF;aACF,CAAC;QACJ,CAAC;QACD,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,gFAAgF;iBACvF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -44,17 +44,18 @@ export declare class WorkbenchClient {
|
|
|
44
44
|
*/
|
|
45
45
|
ping(): Promise<boolean>;
|
|
46
46
|
/**
|
|
47
|
-
* Remove
|
|
47
|
+
* Remove injected handler scripts from a mod's directory.
|
|
48
48
|
* Call this after Workbench work is done, before publishing the mod.
|
|
49
|
-
*
|
|
49
|
+
* Deletes Scripts/WorkbenchGame/EnfusionMCP/ from the mod.
|
|
50
|
+
* Safe to call even if scripts were never injected.
|
|
50
51
|
*/
|
|
51
|
-
|
|
52
|
+
cleanupHandlerScripts(modDir: string): boolean;
|
|
52
53
|
toString(): string;
|
|
53
54
|
private launchWorkbench;
|
|
54
55
|
private findWorkbenchExe;
|
|
55
56
|
/**
|
|
56
57
|
* Find a .gproj to pass via -gproj so Workbench skips the launcher.
|
|
57
|
-
*
|
|
58
|
+
* Looks for any .gproj in the default project path.
|
|
58
59
|
*/
|
|
59
60
|
private findFallbackGproj;
|
|
60
61
|
/**
|
|
@@ -64,15 +65,9 @@ export declare class WorkbenchClient {
|
|
|
64
65
|
*/
|
|
65
66
|
private findGameDir;
|
|
66
67
|
/**
|
|
67
|
-
*
|
|
68
|
+
* Copy handler scripts into a mod directory so they compile as part of that mod.
|
|
69
|
+
* If no modDir given, installs to default project path (standalone, less useful).
|
|
68
70
|
*/
|
|
69
|
-
private getHandlerGuid;
|
|
70
|
-
/**
|
|
71
|
-
* Add the EnfusionMCP handler addon as a dependency of the target mod's .gproj.
|
|
72
|
-
* This makes Workbench compile the handler scripts when opening the target mod,
|
|
73
|
-
* enabling all wb_* NET API tools.
|
|
74
|
-
*/
|
|
75
|
-
private injectHandlerDependency;
|
|
76
71
|
private installHandlerScripts;
|
|
77
72
|
/**
|
|
78
73
|
* Raw TCP call — no auto-launch, no retry.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/workbench/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/workbench/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAU3C,MAAM,WAAW,oBAAoB;IACnC,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,qBAAa,cAAe,SAAQ,KAAK;aAGrB,IAAI,EAChB,oBAAoB,GACpB,SAAS,GACT,gBAAgB,GAChB,WAAW,GACX,eAAe;gBANnB,OAAO,EAAE,MAAM,EACC,IAAI,GAChB,oBAAoB,GACpB,SAAS,GACT,gBAAgB,GAChB,WAAW,GACX,eAA6B;CAKpC;AAED,qBAAa,eAAe;IAKxB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAP3B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAA8B;gBAGhC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,YAAA,EACf,QAAQ,GAAE,MAA0B;IAGvD;;;OAGG;IACG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACpC,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,CAAC,CAAC;IAkBb;;;;OAIG;IACG,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBtD;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAS9B;;;;;OAKG;IACH,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAkB9C,QAAQ,IAAI,MAAM;YAQJ,eAAe;IAkE7B,OAAO,CAAC,gBAAgB;IAUxB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAgBzB;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAoBnB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IA2B7B;;OAEG;IACH,OAAO,CAAC,OAAO;CA0HhB"}
|
package/dist/workbench/client.js
CHANGED
|
@@ -9,8 +9,7 @@
|
|
|
9
9
|
* and retries the original call.
|
|
10
10
|
*/
|
|
11
11
|
import { Socket } from "node:net";
|
|
12
|
-
import { existsSync, mkdirSync, copyFileSync, readdirSync,
|
|
13
|
-
import { generateGproj } from "../templates/gproj.js";
|
|
12
|
+
import { existsSync, mkdirSync, copyFileSync, readdirSync, rmSync } from "node:fs";
|
|
14
13
|
import { join, resolve, dirname } from "node:path";
|
|
15
14
|
import { fileURLToPath } from "node:url";
|
|
16
15
|
import { spawn } from "node:child_process";
|
|
@@ -100,15 +99,29 @@ export class WorkbenchClient {
|
|
|
100
99
|
}
|
|
101
100
|
}
|
|
102
101
|
/**
|
|
103
|
-
* Remove
|
|
102
|
+
* Remove injected handler scripts from a mod's directory.
|
|
104
103
|
* Call this after Workbench work is done, before publishing the mod.
|
|
105
|
-
*
|
|
104
|
+
* Deletes Scripts/WorkbenchGame/EnfusionMCP/ from the mod.
|
|
105
|
+
* Safe to call even if scripts were never injected.
|
|
106
106
|
*/
|
|
107
|
-
|
|
108
|
-
const
|
|
109
|
-
if (!
|
|
107
|
+
cleanupHandlerScripts(modDir) {
|
|
108
|
+
const handlerDir = join(modDir, "Scripts", "WorkbenchGame", HANDLER_FOLDER);
|
|
109
|
+
if (!existsSync(handlerDir))
|
|
110
110
|
return false;
|
|
111
|
-
|
|
111
|
+
try {
|
|
112
|
+
rmSync(handlerDir, { recursive: true, force: true });
|
|
113
|
+
logger.info(`Removed handler scripts from ${handlerDir}`);
|
|
114
|
+
// Clean up empty parent dirs
|
|
115
|
+
const wbGameDir = join(modDir, "Scripts", "WorkbenchGame");
|
|
116
|
+
if (existsSync(wbGameDir) && readdirSync(wbGameDir).length === 0) {
|
|
117
|
+
rmSync(wbGameDir);
|
|
118
|
+
}
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
121
|
+
catch (e) {
|
|
122
|
+
logger.warn(`Failed to clean up handler scripts: ${e}`);
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
112
125
|
}
|
|
113
126
|
toString() {
|
|
114
127
|
return `WorkbenchClient(${this.host}:${this.port})`;
|
|
@@ -117,13 +130,23 @@ export class WorkbenchClient {
|
|
|
117
130
|
// Private
|
|
118
131
|
// ---------------------------------------------------------------------------
|
|
119
132
|
async launchWorkbench(gprojPath) {
|
|
120
|
-
// 1.
|
|
121
|
-
this.installHandlerScripts();
|
|
122
|
-
// 2. Check if already running (maybe it came up between the failed call and now)
|
|
133
|
+
// 1. Check if already running (maybe it came up between the failed call and now)
|
|
123
134
|
if (await this.ping()) {
|
|
124
135
|
logger.info("Workbench is already running.");
|
|
125
136
|
return;
|
|
126
137
|
}
|
|
138
|
+
// 2. Resolve the target .gproj and inject handler scripts into that mod
|
|
139
|
+
const resolvedGproj = gprojPath || this.findFallbackGproj();
|
|
140
|
+
if (resolvedGproj) {
|
|
141
|
+
// Copy handler scripts directly into the target mod so they compile
|
|
142
|
+
// as part of the mod — no separate addon or dependency needed.
|
|
143
|
+
const modDir = dirname(resolvedGproj);
|
|
144
|
+
this.installHandlerScripts(modDir);
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
// Fallback: install to default project path as a standalone addon
|
|
148
|
+
this.installHandlerScripts();
|
|
149
|
+
}
|
|
127
150
|
// 3. Find executable
|
|
128
151
|
const exePath = this.findWorkbenchExe();
|
|
129
152
|
if (!exePath) {
|
|
@@ -132,12 +155,7 @@ export class WorkbenchClient {
|
|
|
132
155
|
` - ${join(this.config.workbenchPath, WORKBENCH_SUBDIR, WORKBENCH_EXE)}\n` +
|
|
133
156
|
` - ${join(this.config.workbenchPath, WORKBENCH_EXE)}`, "LAUNCH_FAILED");
|
|
134
157
|
}
|
|
135
|
-
// 4.
|
|
136
|
-
const resolvedGproj = gprojPath || this.findFallbackGproj();
|
|
137
|
-
if (resolvedGproj) {
|
|
138
|
-
this.injectHandlerDependency(resolvedGproj);
|
|
139
|
-
}
|
|
140
|
-
// 5. Spawn with -gproj to skip the launcher
|
|
158
|
+
// 4. Spawn with -gproj to skip the launcher
|
|
141
159
|
const args = [];
|
|
142
160
|
if (resolvedGproj) {
|
|
143
161
|
args.push("-gproj", resolvedGproj);
|
|
@@ -152,7 +170,7 @@ export class WorkbenchClient {
|
|
|
152
170
|
cwd,
|
|
153
171
|
});
|
|
154
172
|
proc.unref();
|
|
155
|
-
//
|
|
173
|
+
// 5. Wait for NET API
|
|
156
174
|
const deadline = Date.now() + LAUNCH_TIMEOUT_MS;
|
|
157
175
|
while (Date.now() < deadline) {
|
|
158
176
|
if (await this.ping()) {
|
|
@@ -175,14 +193,24 @@ export class WorkbenchClient {
|
|
|
175
193
|
}
|
|
176
194
|
/**
|
|
177
195
|
* Find a .gproj to pass via -gproj so Workbench skips the launcher.
|
|
178
|
-
*
|
|
196
|
+
* Looks for any .gproj in the default project path.
|
|
179
197
|
*/
|
|
180
198
|
findFallbackGproj() {
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
199
|
+
try {
|
|
200
|
+
const addonsDir = this.config.projectPath;
|
|
201
|
+
if (!existsSync(addonsDir))
|
|
202
|
+
return null;
|
|
203
|
+
for (const entry of readdirSync(addonsDir, { withFileTypes: true })) {
|
|
204
|
+
if (!entry.isDirectory())
|
|
205
|
+
continue;
|
|
206
|
+
const gprojPath = join(addonsDir, entry.name, `${entry.name}.gproj`);
|
|
207
|
+
if (existsSync(gprojPath)) {
|
|
208
|
+
logger.info(`Using fallback gproj to skip launcher: ${gprojPath}`);
|
|
209
|
+
return gprojPath;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
185
212
|
}
|
|
213
|
+
catch { /* ignore */ }
|
|
186
214
|
return null;
|
|
187
215
|
}
|
|
188
216
|
/**
|
|
@@ -210,38 +238,18 @@ export class WorkbenchClient {
|
|
|
210
238
|
return null;
|
|
211
239
|
}
|
|
212
240
|
/**
|
|
213
|
-
*
|
|
241
|
+
* Copy handler scripts into a mod directory so they compile as part of that mod.
|
|
242
|
+
* If no modDir given, installs to default project path (standalone, less useful).
|
|
214
243
|
*/
|
|
215
|
-
|
|
216
|
-
const handlerGproj = join(this.config.projectPath, HANDLER_FOLDER, `${HANDLER_FOLDER}.gproj`);
|
|
217
|
-
if (!existsSync(handlerGproj))
|
|
218
|
-
return null;
|
|
219
|
-
return readGprojGuid(handlerGproj);
|
|
220
|
-
}
|
|
221
|
-
/**
|
|
222
|
-
* Add the EnfusionMCP handler addon as a dependency of the target mod's .gproj.
|
|
223
|
-
* This makes Workbench compile the handler scripts when opening the target mod,
|
|
224
|
-
* enabling all wb_* NET API tools.
|
|
225
|
-
*/
|
|
226
|
-
injectHandlerDependency(targetGproj) {
|
|
227
|
-
const handlerGuid = this.getHandlerGuid();
|
|
228
|
-
if (!handlerGuid) {
|
|
229
|
-
logger.warn("Cannot inject handler dependency — handler GUID not found.");
|
|
230
|
-
return;
|
|
231
|
-
}
|
|
232
|
-
if (addGprojDependency(targetGproj, handlerGuid)) {
|
|
233
|
-
logger.info(`Injected EnfusionMCP dependency (${handlerGuid}) into ${targetGproj}`);
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
installHandlerScripts() {
|
|
244
|
+
installHandlerScripts(modDir) {
|
|
237
245
|
const packageRoot = resolve(dirname(fileURLToPath(import.meta.url)), "..", "..");
|
|
238
246
|
const bundledDir = join(packageRoot, "mod", "Scripts", "WorkbenchGame", HANDLER_FOLDER);
|
|
239
247
|
if (!existsSync(bundledDir)) {
|
|
240
248
|
logger.warn("Bundled handler scripts not found in package.");
|
|
241
249
|
return;
|
|
242
250
|
}
|
|
243
|
-
const
|
|
244
|
-
const targetScriptsDir = join(
|
|
251
|
+
const targetBase = modDir || join(this.config.projectPath, HANDLER_FOLDER);
|
|
252
|
+
const targetScriptsDir = join(targetBase, "Scripts", "WorkbenchGame", HANDLER_FOLDER);
|
|
245
253
|
// Already installed?
|
|
246
254
|
if (existsSync(join(targetScriptsDir, "EMCP_WB_Ping.c"))) {
|
|
247
255
|
return;
|
|
@@ -252,14 +260,6 @@ export class WorkbenchClient {
|
|
|
252
260
|
for (const file of files) {
|
|
253
261
|
copyFileSync(join(bundledDir, file), join(targetScriptsDir, file));
|
|
254
262
|
}
|
|
255
|
-
// Create .gproj in proper Enfusion GameProject format
|
|
256
|
-
const gprojPath = join(targetAddon, `${HANDLER_FOLDER}.gproj`);
|
|
257
|
-
if (!existsSync(gprojPath)) {
|
|
258
|
-
writeFileSync(gprojPath, generateGproj({
|
|
259
|
-
name: HANDLER_FOLDER,
|
|
260
|
-
title: "EnfusionMCP Handler Scripts",
|
|
261
|
-
}), "utf-8");
|
|
262
|
-
}
|
|
263
263
|
logger.info(`Installed ${files.length} handler scripts.`);
|
|
264
264
|
}
|
|
265
265
|
/**
|
|
@@ -350,76 +350,4 @@ export class WorkbenchClient {
|
|
|
350
350
|
});
|
|
351
351
|
}
|
|
352
352
|
}
|
|
353
|
-
// ---------------------------------------------------------------------------
|
|
354
|
-
// Module-level helpers for .gproj dependency management
|
|
355
|
-
// ---------------------------------------------------------------------------
|
|
356
|
-
/** Extract the GUID from a .gproj file via regex. */
|
|
357
|
-
function readGprojGuid(gprojPath) {
|
|
358
|
-
try {
|
|
359
|
-
const content = readFileSync(gprojPath, "utf-8");
|
|
360
|
-
const match = content.match(/^\s*GUID\s+"([A-Fa-f0-9]+)"/m);
|
|
361
|
-
return match ? match[1] : null;
|
|
362
|
-
}
|
|
363
|
-
catch {
|
|
364
|
-
return null;
|
|
365
|
-
}
|
|
366
|
-
}
|
|
367
|
-
/** Add a dependency GUID to a .gproj's Dependencies block. Returns true if added. */
|
|
368
|
-
function addGprojDependency(gprojPath, guid) {
|
|
369
|
-
try {
|
|
370
|
-
let content = readFileSync(gprojPath, "utf-8");
|
|
371
|
-
// Already present?
|
|
372
|
-
if (content.includes(`"${guid}"`))
|
|
373
|
-
return false;
|
|
374
|
-
// Find the Dependencies block and insert the GUID
|
|
375
|
-
const depsMatch = content.match(/(Dependencies\s*\{)([\s\S]*?)(\})/);
|
|
376
|
-
if (depsMatch) {
|
|
377
|
-
const [fullMatch, open, body, close] = depsMatch;
|
|
378
|
-
const newBody = body.trimEnd() + `\n "${guid}"\n `;
|
|
379
|
-
content = content.replace(fullMatch, open + newBody + close);
|
|
380
|
-
}
|
|
381
|
-
else {
|
|
382
|
-
// No Dependencies block — insert one before Configurations
|
|
383
|
-
const configMatch = content.match(/(\s*Configurations\s*\{)/);
|
|
384
|
-
if (configMatch) {
|
|
385
|
-
const insertion = ` Dependencies {\n "${guid}"\n }\n`;
|
|
386
|
-
content = content.replace(configMatch[1], insertion + configMatch[1]);
|
|
387
|
-
}
|
|
388
|
-
else {
|
|
389
|
-
// Last resort: insert before closing brace
|
|
390
|
-
const lastBrace = content.lastIndexOf("}");
|
|
391
|
-
if (lastBrace === -1)
|
|
392
|
-
return false;
|
|
393
|
-
content =
|
|
394
|
-
content.slice(0, lastBrace) +
|
|
395
|
-
` Dependencies {\n "${guid}"\n }\n` +
|
|
396
|
-
content.slice(lastBrace);
|
|
397
|
-
}
|
|
398
|
-
}
|
|
399
|
-
writeFileSync(gprojPath, content, "utf-8");
|
|
400
|
-
return true;
|
|
401
|
-
}
|
|
402
|
-
catch {
|
|
403
|
-
return false;
|
|
404
|
-
}
|
|
405
|
-
}
|
|
406
|
-
/** Remove a dependency GUID from a .gproj's Dependencies block. Returns true if removed. */
|
|
407
|
-
function removeGprojDependency(gprojPath, guid) {
|
|
408
|
-
try {
|
|
409
|
-
let content = readFileSync(gprojPath, "utf-8");
|
|
410
|
-
if (!content.includes(`"${guid}"`))
|
|
411
|
-
return false;
|
|
412
|
-
// Remove the GUID line from the Dependencies block
|
|
413
|
-
const guidLine = new RegExp(`\\s*"${guid}"\\s*\\n?`);
|
|
414
|
-
content = content.replace(guidLine, "\n");
|
|
415
|
-
// Clean up any double-newlines in Dependencies block
|
|
416
|
-
content = content.replace(/(Dependencies\s*\{)\n\n+/g, "$1\n");
|
|
417
|
-
writeFileSync(gprojPath, content, "utf-8");
|
|
418
|
-
logger.info(`Removed EnfusionMCP dependency (${guid}) from ${gprojPath}`);
|
|
419
|
-
return true;
|
|
420
|
-
}
|
|
421
|
-
catch {
|
|
422
|
-
return false;
|
|
423
|
-
}
|
|
424
|
-
}
|
|
425
353
|
//# sourceMappingURL=client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/workbench/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/workbench/client.ts"],"names":[],"mappings":"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"}
|