Improve standard messenger logging

This commit is contained in:
Nassim Jahnke 2024-08-12 18:42:08 +02:00
parent 1798e949e5
commit 7c9240f4a6
No known key found for this signature in database
GPG Key ID: EF6771C01F6EF02F
2 changed files with 58 additions and 2 deletions

View File

@ -0,0 +1,56 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Nassim Jahnke <nassim@njahnke.dev>
Date: Mon, 12 Aug 2024 18:38:19 +0200
Subject: [PATCH] Improve StandardMessenger exception messages
diff --git a/src/main/java/org/bukkit/plugin/messaging/ChannelNameTooLongException.java b/src/main/java/org/bukkit/plugin/messaging/ChannelNameTooLongException.java
index 80ef8a2a342ff9dc16c98b5254cadd539f6ea0d9..ea73d9cd9d9d84731c083089d0b9913b4b1f92b6 100644
--- a/src/main/java/org/bukkit/plugin/messaging/ChannelNameTooLongException.java
+++ b/src/main/java/org/bukkit/plugin/messaging/ChannelNameTooLongException.java
@@ -9,7 +9,9 @@ public class ChannelNameTooLongException extends RuntimeException {
super("Attempted to send a Plugin Message to a channel that was too large. The maximum length a channel may be is " + Messenger.MAX_CHANNEL_SIZE + " chars.");
}
- public ChannelNameTooLongException(String channel) {
- super("Attempted to send a Plugin Message to a channel that was too large. The maximum length a channel may be is " + Messenger.MAX_CHANNEL_SIZE + " chars (attempted " + channel.length() + " - '" + channel + ".");
+ // Paper start
+ public ChannelNameTooLongException(int length, String shortenedChannel) {
+ super("Attempted to send a Plugin Message to a channel that was too large. The maximum length a channel may be is " + Messenger.MAX_CHANNEL_SIZE + " chars (attempted " + length + " - '" + shortenedChannel + ".");
+ // Paper end
}
}
diff --git a/src/main/java/org/bukkit/plugin/messaging/StandardMessenger.java b/src/main/java/org/bukkit/plugin/messaging/StandardMessenger.java
index 6fda7f3aa68e76af64362e9afed70fc6a5e92986..230ecf9f9752b0369da3ba7aa6ce68b34a0814c5 100644
--- a/src/main/java/org/bukkit/plugin/messaging/StandardMessenger.java
+++ b/src/main/java/org/bukkit/plugin/messaging/StandardMessenger.java
@@ -496,19 +496,26 @@ public class StandardMessenger implements Messenger {
if (channel.equals("bungeecord:main")) {
return "BungeeCord";
}
+ // Paper start - improve error message
if (channel.length() > Messenger.MAX_CHANNEL_SIZE) {
- throw new ChannelNameTooLongException(channel);
+ throw new ChannelNameTooLongException(channel.length(), shortened(channel));
}
if (channel.indexOf(':') == -1) {
- throw new IllegalArgumentException("Channel must contain : separator (attempted to use " + channel + ")");
+ throw new IllegalArgumentException("Channel must contain : separator (attempted to use " + shortened(channel) + ")");
}
if (!channel.toLowerCase(Locale.ROOT).equals(channel)) {
// TODO: use NamespacedKey validation here
- throw new IllegalArgumentException("Channel must be entirely lowercase (attempted to use " + channel + ")");
+ throw new IllegalArgumentException("Channel must be entirely lowercase (attempted to use " + shortened(channel) + ")");
}
return channel;
}
+ private static String shortened(String channel) {
+ channel = org.apache.commons.lang3.StringUtils.normalizeSpace(channel);
+ return channel.length() > 32 ? channel.substring(0, 32) + "..." : channel;
+ }
+ // Paper end - improve error message
+
/**
* Validates the input of a Plugin Message, ensuring the arguments are all
* valid.

View File

@ -9,7 +9,7 @@ e.g. servers which allow and support the usage of mod packs.
provide an optional flag to disable this check, at your own risk. provide an optional flag to disable this check, at your own risk.
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 19f644442eb7ae352d655d5e62f47f261b7b1b0a..db79201906e231b13c6f237193c3e8597bce9106 100644 index 422c25577a0d95b31b5528fad8fc9b3ae97fa7f0..4e5dba1da323f12d77a36635c9227b1239856254 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -209,6 +209,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -209,6 +209,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@ -25,7 +25,7 @@ index 19f644442eb7ae352d655d5e62f47f261b7b1b0a..db79201906e231b13c6f237193c3e859
public void addChannel(String channel) { public void addChannel(String channel) {
- Preconditions.checkState(this.channels.size() < 128, "Cannot register channel '%s'. Too many channels registered!", channel); - Preconditions.checkState(this.channels.size() < 128, "Cannot register channel '%s'. Too many channels registered!", channel);
+ Preconditions.checkState(DISABLE_CHANNEL_LIMIT || this.channels.size() < 128, "Cannot register channel '%s'. Too many channels registered!", channel); // Paper - flag to disable channel limit + Preconditions.checkState(DISABLE_CHANNEL_LIMIT || this.channels.size() < 128, "Cannot register channel. Too many channels registered!"); // Paper - flag to disable channel limit
channel = StandardMessenger.validateAndCorrectChannel(channel); channel = StandardMessenger.validateAndCorrectChannel(channel);
if (this.channels.add(channel)) { if (this.channels.add(channel)) {
this.server.getPluginManager().callEvent(new PlayerRegisterChannelEvent(this, channel)); this.server.getPluginManager().callEvent(new PlayerRegisterChannelEvent(this, channel));