Skip to content

Commit 10ac5f5

Browse files
MostCromulentclaude
andcommitted
Fix chat warnings PR: serialization compat and guidelines cleanup
MessageEvent: store type as String not enum — unknown enum constants cause InvalidObjectException on older clients even for skipped fields. Remove ILobbyListener default overload, dead isSystemMessage(), inline imports in test files, trailing periods on comments. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent f7bea33 commit 10ac5f5

6 files changed

Lines changed: 20 additions & 19 deletions

File tree

forge-gui-desktop/src/main/java/forge/gui/FNetOverlay.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ public FTextField getTxtInput(){
135135
Color playerColor = (skinTextColor != null) ? skinTextColor.getColor() : Color.WHITE;
136136
StyleConstants.setForeground(playerStyle, playerColor);
137137

138-
// Warning style: amber/caution color, distinct from blue system / white player.
138+
// Warning style: amber/caution color, distinct from blue system / white player
139139
StyleConstants.setForeground(warningStyle, new Color(230, 160, 50));
140140

141141
window.setTitle(Localizer.getInstance().getMessage("lblChat"));

forge-gui-desktop/src/test/java/forge/net/HeadlessNetworkClient.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import forge.game.GameView;
44
import forge.gamemodes.net.DeltaPacket;
5+
import forge.gamemodes.net.ChatMessage;
56
import forge.util.IHasForgeLog;
67
import forge.gamemodes.match.GameLobby.GameLobbyData;
78
import forge.gamemodes.net.client.ClientGameLobby;
@@ -237,7 +238,7 @@ public void update(GameLobbyData state, int slot) {
237238
}
238239

239240
@Override
240-
public void message(String source, String message, forge.gamemodes.net.ChatMessage.MessageType type) {
241+
public void message(String source, String message, ChatMessage.MessageType type) {
241242
netLog.info("Chat: {}: {}", source, message);
242243
}
243244

forge-gui-desktop/src/test/java/forge/net/UnifiedNetworkHarness.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import forge.gamemodes.match.HostedMatch;
1212
import forge.gamemodes.match.LobbySlot;
1313
import forge.gamemodes.match.LobbySlotType;
14+
import forge.gamemodes.net.ChatMessage;
1415
import forge.util.IHasForgeLog;
1516
import forge.gamemodes.net.NetworkByteTracker;
1617
import forge.gamemodes.net.NetworkLogConfig;
@@ -496,7 +497,7 @@ public void update(GameLobbyData state, int slot) {
496497
}
497498

498499
@Override
499-
public void message(String source, String message, forge.gamemodes.net.ChatMessage.MessageType type) {
500+
public void message(String source, String message, ChatMessage.MessageType type) {
500501
netLog.info("Lobby message from {}: {}", source, message);
501502
}
502503

forge-gui/src/main/java/forge/gamemodes/net/ChatMessage.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,6 @@ public boolean isLocal() {
4242
return source == null || source.equals(prefs.getPref(FPref.PLAYER_NAME));
4343
}
4444

45-
public boolean isSystemMessage() {
46-
return type == MessageType.SYSTEM;
47-
}
48-
4945
public MessageType getType() {
5046
return type;
5147
}

forge-gui/src/main/java/forge/gamemodes/net/event/MessageEvent.java

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,19 @@ public final class MessageEvent implements NetEvent {
77
private static final long serialVersionUID = 1700060210647684186L;
88

99
private final String source, message;
10-
// Null for backwards compat with pre-WARNING-tag senders; getType() normalizes.
11-
private final ChatMessage.MessageType type;
10+
// String not enum — unknown enum constants cause InvalidObjectException on older clients
11+
private final String type;
1212

1313
public MessageEvent(final String message) {
14-
this(null, message, null);
14+
this(null, message, (String) null);
1515
}
1616
public MessageEvent(final String source, final String message) {
17-
this(source, message, null);
17+
this(source, message, (String) null);
1818
}
1919
public MessageEvent(final String source, final String message, final ChatMessage.MessageType type) {
20+
this(source, message, type != null ? type.name() : null);
21+
}
22+
private MessageEvent(final String source, final String message, final String type) {
2023
this.source = source;
2124
this.message = message;
2225
this.type = type;
@@ -39,8 +42,14 @@ public String getMessage() {
3942
}
4043

4144
public ChatMessage.MessageType getType() {
42-
if (type != null) return type;
43-
return source == null ? ChatMessage.MessageType.SYSTEM : ChatMessage.MessageType.PLAYER;
45+
if (type == null) {
46+
return source == null ? ChatMessage.MessageType.SYSTEM : ChatMessage.MessageType.PLAYER;
47+
}
48+
try {
49+
return ChatMessage.MessageType.valueOf(type);
50+
} catch (IllegalArgumentException e) {
51+
return ChatMessage.MessageType.SYSTEM;
52+
}
4453
}
4554

4655
@Override

forge-gui/src/main/java/forge/interfaces/ILobbyListener.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,7 @@
55
import forge.gamemodes.net.client.ClientGameLobby;
66

77
public interface ILobbyListener {
8-
// type may be null from older peers — implementations should fall back to source-based inference.
98
void message(String source, String message, ChatMessage.MessageType type);
10-
11-
default void message(String source, String message) {
12-
message(source, message, null);
13-
}
14-
159
void update(GameLobbyData state, int slot);
1610
void close();
1711
ClientGameLobby getLobby();

0 commit comments

Comments
 (0)