diff --git a/CHANGELOG.md b/CHANGELOG.md
index ff3822f..fbede00 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -27,3 +27,7 @@
 ## Version 0.5.0 (September 2022)
 
 - Changes to the source path location in Minecraft require that localRoot points to a directory with sources, not the pack root. Update your launch.json 'localRoot'.
+
+## Version 0.6.0 (September 2022)
+
+- Add support for external modules while debugging. For JS modules built into Minecraft, stack will be visible but listed as "unknown". Add configuration support for module name mapping.
diff --git a/package-lock.json b/package-lock.json
index 39e9392..7bc08c9 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
 {
 	"name": "minecraft-debugger",
-	"version": "0.1.2",
+	"version": "0.6.0",
 	"lockfileVersion": 2,
 	"requires": true,
 	"packages": {
 		"": {
 			"name": "minecraft-debugger",
-			"version": "0.1.2",
+			"version": "0.6.0",
 			"license": "MIT",
 			"dependencies": {
 				"source-map": "^0.7.3",
diff --git a/package.json b/package.json
index 7ed8ebf..1c4bdc2 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
 	"name": "minecraft-debugger",
 	"displayName": "Minecraft Bedrock Edition Debugger",
 	"description": "Debug your JavaScript code running as part of the GameTest Framework experimental feature in Minecraft Bedrock Edition.",
-	"version": "0.5.0",
+	"version": "0.6.0",
 	"publisher": "mojang-studios",
 	"author": {
 		"name": "Mojang Studios"
@@ -84,6 +84,10 @@
 							"inputPort": {
 								"type": "string",
 								"description": "Prompts for a port at launch."
+							},
+							"moduleMapping": {
+								"type": "object",
+								"description": "Module mapping for imports. Each key is an import name that will be mapped to the provided value. Used if modules are external (i.e. included as part of minecraft). Defaults to an empty object."
 							}
 						}
 					}
@@ -149,4 +153,4 @@
 		"vsce": "^1.93.0",
 		"vscode-test": "^1.5.0"
 	}
-}
+}
\ No newline at end of file
diff --git a/src/Session.ts b/src/Session.ts
index ee56eb2..7f9cd7f 100644
--- a/src/Session.ts
+++ b/src/Session.ts
@@ -16,6 +16,11 @@ interface PendingResponse {
 	reject: Function;
 }
 
+// Module mapping for getting line numbers for a given module
+interface ModuleMapping {
+	[moduleName: string]: string;
+}
+
 // Interface for specific launch arguments.
 // See package.json for schema.
 interface IAttachRequestArguments extends DebugProtocol.AttachRequestArguments {
@@ -26,6 +31,7 @@ interface IAttachRequestArguments extends DebugProtocol.AttachRequestArguments {
 	host: string;
 	port: number;
 	inputPort: string;
+	moduleMapping: ModuleMapping;
 }
 
 // The Debug Adapter for 'minecraft-js'
@@ -46,6 +52,7 @@ export class Session extends DebugSession {
 	private _localRoot: string = "";
 	private _sourceMapRoot?: string;	
 	private _generatedSourceRoot?: string;
+	private _moduleMapping?: ModuleMapping;
 
 	public constructor() {
 		super();
@@ -88,6 +95,7 @@ export class Session extends DebugSession {
 		this._localRoot = args.localRoot ? path.normalize(args.localRoot) : "";
 		this._sourceMapRoot = args.sourceMapRoot ? path.normalize(args.sourceMapRoot) : undefined;
 		this._generatedSourceRoot = args.generatedSourceRoot ? path.normalize(args.generatedSourceRoot) : undefined;
+		this._moduleMapping = args.moduleMapping;
 
 		// Listen or connect (default), depending on mode.
 		// Attach makes more sense to use connect, but some MC platforms require using listen.
@@ -191,9 +199,10 @@ export class Session extends DebugSession {
 
 		const stackFrames: StackFrame[] = [];
 		for (const { id, name, filename, line, column } of stacksBody) {
+			const mappedFilename = this._moduleMapping?.[filename] ?? filename;
 			try {
 				const originalLocation = await this._sourceMaps.getOriginalPositionFor({
-					source: filename,
+					source: mappedFilename,
 					line: line || 0,
 					column: column || 0
 				});
@@ -201,9 +210,7 @@ export class Session extends DebugSession {
 				stackFrames.push(new StackFrame(id, name, source, originalLocation.line, originalLocation.column));
 			}
 			catch (e) {
-				this.log((e as Error).message, LogLevel.Error);
-				this.sendErrorResponse(response, 1003, `Failed to get stack trace for ${filename} at line ${line}.`);
-				return;
+				stackFrames.push(new StackFrame(id, name));
 			}
 		}