Skip to content

Commit 462581e

Browse files
committed
Stop debugging mode when the client terminates/disconnects
1 parent 0527110 commit 462581e

File tree

5 files changed

+33
-10
lines changed

5 files changed

+33
-10
lines changed

src/main/java/net/gunivers/sniffer/Utils.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
package net.gunivers.sniffer;
22

33
import net.minecraft.server.function.ExpandedMacro;
4+
import net.minecraft.text.Text;
5+
import net.minecraft.util.Formatting;
46
import net.minecraft.util.Identifier;
57

8+
import static net.minecraft.text.Text.literal;
9+
610
/**
711
* Utility class providing helper methods for the Datapack Debugger.
812
* Contains various utility functions to work with Minecraft's internal classes
@@ -22,4 +26,15 @@ public static Identifier getId(ExpandedMacro<?> function) {
2226
return (Identifier) EncapsulationBreaker.getAttribute(function, "functionIdentifier").orElse(Identifier.of("foo:bar"));
2327
}
2428

29+
private static final String MESSAGE_PREFIX = "[Sniffer] ";
30+
31+
public static Text addSnifferPrefix(Text text) {
32+
var header = Text.literal(MESSAGE_PREFIX).formatted(Formatting.AQUA);
33+
return header.append(text);
34+
}
35+
36+
public static Text addSnifferPrefix(String text) {
37+
return addSnifferPrefix(Text.literal(text).formatted(Formatting.WHITE));
38+
}
39+
2540
}

src/main/java/net/gunivers/sniffer/command/BreakPointCommand.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import com.mojang.brigadier.arguments.*;
55
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback;
66
import net.minecraft.command.CommandExecutionContext;
7+
8+
import static net.gunivers.sniffer.Utils.addSnifferPrefix;
79
import static net.minecraft.server.command.CommandManager.literal;
810
import static net.minecraft.server.command.CommandManager.argument;
911

@@ -12,6 +14,7 @@
1214
import net.minecraft.server.command.ServerCommandSource;
1315
import net.minecraft.text.MutableText;
1416
import net.minecraft.text.Text;
17+
import net.minecraft.util.Formatting;
1518
import net.minecraft.util.Pair;
1619
import org.jetbrains.annotations.NotNull;
1720
import org.jetbrains.annotations.Nullable;
@@ -257,7 +260,7 @@ public static void step(int steps, ServerCommandSource source) {
257260
break;
258261
}
259262
} else {
260-
source.sendFeedback(() -> Text.translatable("sniffer.commands.breakpoint.step.over"), false);
263+
source.sendFeedback(() -> addSnifferPrefix(Text.translatable("sniffer.commands.breakpoint.step.over").formatted(Formatting.WHITE)), false);
261264
continueExec(source);
262265
}
263266
}

src/main/java/net/gunivers/sniffer/dap/DapServer.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22

33
import net.gunivers.sniffer.command.StepType;
44
import net.minecraft.server.command.ServerCommandSource;
5-
import net.minecraft.text.Text;
6-
import net.minecraft.util.Formatting;
75
import net.minecraft.util.Identifier;
86
import org.eclipse.lsp4j.debug.*;
97
import org.eclipse.lsp4j.debug.Thread;
@@ -17,6 +15,9 @@
1715
import java.util.*;
1816
import java.util.concurrent.CompletableFuture;
1917

18+
import static net.gunivers.sniffer.Utils.addSnifferPrefix;
19+
import static net.gunivers.sniffer.command.BreakPointCommand.continueExec;
20+
2021
/**
2122
* A DAP (Debug Adapter Protocol) server implementation using LSP4J.
2223
* Provides debugging capabilities for Minecraft datapacks.
@@ -26,11 +27,10 @@
2627
public class DapServer implements IDebugProtocolServer {
2728

2829
private static final Logger LOGGER = LoggerFactory.getLogger("sniffer");
29-
private static final String MESSAGE_PREFIX = "[Sniffer]";
3030

3131
// Constants for messages
32-
private static final String ATTACHED_MESSAGE = " Attached to VSCode!";
33-
private static final String DISCONNECTED_MESSAGE = " Disconnected from VSCode.";
32+
private static final String ATTACHED_MESSAGE = "Attached to VSCode!";
33+
private static final String DISCONNECTED_MESSAGE = "Disconnected from VSCode.";
3434
private static final String BREAKPOINT_DESCRIPTION = "Breakpoint reached";
3535
private static final String MAIN_THREAD_NAME = "Main Thread";
3636

@@ -117,6 +117,7 @@ public CompletableFuture<Void> disconnect(DisconnectArguments args) {
117117
LOGGER.debug("Disconnect request received with arguments: {}", args);
118118

119119
sendMessageToAllPlayers(DISCONNECTED_MESSAGE);
120+
continueExec(DebuggerState.get().getCommandSource());
120121
return CompletableFuture.completedFuture(null);
121122
}
122123

@@ -261,7 +262,7 @@ public CompletableFuture<ContinueResponse> continue_(ContinueArguments args) {
261262
LOGGER.debug("Continue request received with arguments: {}", args);
262263

263264
try {
264-
BreakPointCommand.continueExec(getCommandSource());
265+
continueExec(getCommandSource());
265266
} catch (Exception e) {
266267
LOGGER.warn( "Error during continue execution", e);
267268
}
@@ -591,8 +592,7 @@ private void sendExitedEvent() {
591592
private void sendMessageToAllPlayers(String message) {
592593
try {
593594
debuggerState.getServer().getPlayerManager().getPlayerList().forEach(player -> {
594-
var header = Text.literal(MESSAGE_PREFIX).formatted(Formatting.AQUA);
595-
player.sendMessage(header.append(Text.literal(message).formatted(Formatting.WHITE)));
595+
player.sendMessage(addSnifferPrefix(message));
596596
});
597597
} catch (Exception e) {
598598
LOGGER.warn("Error sending message to players", e);

src/main/java/net/gunivers/sniffer/dap/WebSocketServer.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
import java.util.concurrent.LinkedBlockingQueue;
2020
import java.util.HashSet;
2121

22+
import static net.gunivers.sniffer.command.BreakPointCommand.continueExec;
23+
2224
/**
2325
* WebSocket server implementation for the Debug Adapter Protocol.
2426
* This class handles the communication between the debugging client (IDE) and the Minecraft server,
@@ -91,6 +93,7 @@ public void onMessage(byte[] message) {
9193
public void onClose(Session session, CloseReason closeReason) {
9294
logger.info("WebSocket closed: {}", closeReason);
9395
BreakPointCommand.clear();
96+
continueExec(DebuggerState.get().getCommandSource());
9497
cleanup();
9598
}
9699

src/main/java/net/gunivers/sniffer/mixin/FixCommandActionMixin.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import net.minecraft.server.command.AbstractServerCommandSource;
77
import net.minecraft.server.command.ServerCommandSource;
88
import net.minecraft.text.Text;
9+
import net.minecraft.util.Formatting;
910
import org.spongepowered.asm.mixin.Final;
1011
import org.spongepowered.asm.mixin.Mixin;
1112
import org.spongepowered.asm.mixin.Shadow;
@@ -14,6 +15,7 @@
1415
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
1516
import net.gunivers.sniffer.command.BreakPointCommand;
1617

18+
import static net.gunivers.sniffer.Utils.addSnifferPrefix;
1719
import static net.gunivers.sniffer.command.StepType.isStepOut;
1820

1921
/**
@@ -52,7 +54,7 @@ private void execute(T abstractServerCommandSource, CommandExecutionContext<T> c
5254
// We send to each player the executing command
5355
var players = serverCommandSource.getServer().getPlayerManager().getPlayerList();
5456
for(var player : players) {
55-
player.sendMessage(Text.translatable("sniffer.commands.breakpoint.run", this.command));
57+
player.sendMessage(addSnifferPrefix(Text.translatable("sniffer.commands.breakpoint.run", this.command).formatted(Formatting.WHITE)));
5658
}
5759
}
5860
}

0 commit comments

Comments
 (0)