Skip to content

Commit bf84eb0

Browse files
committed
Add separate config option for text component conversion errors
1 parent 4dfc3bd commit bf84eb0

File tree

14 files changed

+91
-32
lines changed

14 files changed

+91
-32
lines changed

api/src/main/java/com/viaversion/viaversion/api/configuration/ViaVersionConfig.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,13 @@ public interface ViaVersionConfig extends Config {
285285
*/
286286
boolean isSuppressConversionWarnings();
287287

288+
/**
289+
* Should we hide errors that occur when trying to convert text components?
290+
*
291+
* @return true if enabled
292+
*/
293+
boolean isSuppressTextComponentConversionWarnings();
294+
288295
/**
289296
* Should we disable the 1.13 auto-complete feature to stop spam kicks? (for any server lower than 1.13)
290297
*

api/src/main/java/com/viaversion/viaversion/exception/InformativeException.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
package com.viaversion.viaversion.exception;
2424

2525
import com.viaversion.viaversion.api.Via;
26+
import com.viaversion.viaversion.util.StringUtil;
2627
import java.util.ArrayList;
2728
import java.util.List;
2829
import org.checkerframework.checker.nullness.qual.Nullable;
@@ -74,7 +75,7 @@ public String getMessage() {
7475
if (!Via.getManager().isDebug() && s.length() > 10 && builder.length() + s.length() > MAX_MESSAGE_LENGTH) {
7576
s = s.substring(0, MAX_MESSAGE_LENGTH - builder.length()) + "...";
7677
}
77-
builder.append(s.replaceAll("\\s", ""));
78+
builder.append(StringUtil.forLogging(s));
7879
}
7980
return builder.toString();
8081
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/*
2+
* This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion
3+
* Copyright (C) 2016-2025 ViaVersion and contributors
4+
*
5+
* Permission is hereby granted, free of charge, to any person obtaining a copy
6+
* of this software and associated documentation files (the "Software"), to deal
7+
* in the Software without restriction, including without limitation the rights
8+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
* copies of the Software, and to permit persons to whom the Software is
10+
* furnished to do so, subject to the following conditions:
11+
*
12+
* The above copyright notice and this permission notice shall be included in all
13+
* copies or substantial portions of the Software.
14+
*
15+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
* SOFTWARE.
22+
*/
23+
package com.viaversion.viaversion.util;
24+
25+
public final class StringUtil {
26+
27+
public static String forLogging(final Object o) {
28+
return forLogging(String.valueOf(o));
29+
}
30+
31+
public static String forLogging(final String s) {
32+
final StringBuilder builder = new StringBuilder(s.length());
33+
for (int i = 0, len = s.length(); i < len; i++) {
34+
final char c = s.charAt(i);
35+
if (c == '\t' || c == '\n' || c == '\r') {
36+
builder.append(' ');
37+
} else if (!Character.isISOControl(c)) {
38+
builder.append(c);
39+
}
40+
}
41+
return builder.toString();
42+
}
43+
}

common/src/main/java/com/viaversion/viaversion/configuration/AbstractViaConfig.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ public abstract class AbstractViaConfig extends Config implements ViaVersionConf
7171
private String blockedDisconnectMessage;
7272
private String reloadDisconnectMessage;
7373
private boolean suppressConversionWarnings;
74+
private boolean suppressTextComponentConversionWarnings;
7475
private boolean disable1_13TabComplete;
7576
private boolean teamColourFix;
7677
private boolean serversideBlockConnections;
@@ -138,6 +139,7 @@ protected void loadFields() {
138139
reloadDisconnectMessage = getString("reload-disconnect-msg", "Server reload, please rejoin!");
139140
teamColourFix = getBoolean("team-colour-fix", true);
140141
suppressConversionWarnings = getBoolean("suppress-conversion-warnings", false);
142+
suppressTextComponentConversionWarnings = getBoolean("suppress-text-component-conversion-warnings", true);
141143
disable1_13TabComplete = getBoolean("disable-1_13-auto-complete", false);
142144
serversideBlockConnections = getBoolean("serverside-blockconnections", true);
143145
reduceBlockStorageMemory = getBoolean("reduce-blockstorage-memory", false);
@@ -417,6 +419,11 @@ public boolean isSuppressConversionWarnings() {
417419
return suppressConversionWarnings && !Via.getManager().isDebug(); // Debug mode overrules config
418420
}
419421

422+
@Override
423+
public boolean isSuppressTextComponentConversionWarnings() {
424+
return suppressTextComponentConversionWarnings && !Via.getManager().isDebug(); // Debug mode overrules config
425+
}
426+
420427
@Override
421428
public boolean isDisable1_13AutoComplete() {
422429
return disable1_13TabComplete;

common/src/main/java/com/viaversion/viaversion/protocols/v1_11_1to1_12/data/TranslateRewriter.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import com.viaversion.viaversion.protocols.v1_9_1to1_9_3.packet.ClientboundPackets1_9_3;
2626
import com.viaversion.viaversion.rewriter.text.JsonNBTComponentRewriter;
2727
import com.viaversion.viaversion.util.SerializerVersion;
28+
import com.viaversion.viaversion.util.StringUtil;
2829
import java.util.logging.Level;
2930

3031
public class TranslateRewriter {
@@ -87,7 +88,7 @@ protected void handleHoverEvent(UserConnection connection, JsonObject hoverEvent
8788
hoverEvent.add("value", baseArray);
8889
} catch (Exception e) {
8990
if (!Via.getConfig().isSuppressConversionWarnings()) {
90-
protocol.getLogger().log(Level.WARNING, "Error rewriting show_achievement: " + hoverEvent, e);
91+
protocol.getLogger().log(Level.WARNING, "Error rewriting show_achievement: " + StringUtil.forLogging(hoverEvent), e);
9192
}
9293
JsonObject invalidText = new JsonObject();
9394
invalidText.addProperty("text", "Invalid statistic/achievement!");

common/src/main/java/com/viaversion/viaversion/protocols/v1_12_2to1_13/rewriter/ComponentRewriter1_13.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import com.viaversion.viaversion.rewriter.text.JsonNBTComponentRewriter;
3434
import com.viaversion.viaversion.util.ComponentUtil;
3535
import com.viaversion.viaversion.util.SerializerVersion;
36+
import com.viaversion.viaversion.util.StringUtil;
3637
import java.util.logging.Level;
3738

3839
public class ComponentRewriter1_13<C extends ClientboundPacketType> extends JsonNBTComponentRewriter<C> {
@@ -54,8 +55,8 @@ protected void handleHoverEvent(UserConnection connection, JsonObject hoverEvent
5455
try {
5556
tag = ComponentUtil.deserializeLegacyShowItem(value, SerializerVersion.V1_12);
5657
} catch (Exception e) {
57-
if (!Via.getConfig().isSuppressConversionWarnings()) {
58-
Protocol1_12_2To1_13.LOGGER.log(Level.WARNING, "Error reading NBT in show_item: " + value, e);
58+
if (!Via.getConfig().isSuppressTextComponentConversionWarnings()) {
59+
Protocol1_12_2To1_13.LOGGER.log(Level.WARNING, "Error reading NBT in show_item: " + StringUtil.forLogging(value), e);
5960
}
6061
return;
6162
}
@@ -86,8 +87,8 @@ protected void handleHoverEvent(UserConnection connection, JsonObject hoverEvent
8687
showItem.addProperty("text", SerializerVersion.V1_13.toSNBT(tag));
8788
hoverEvent.add("value", newValue);
8889
} catch (Exception e) {
89-
if (!Via.getConfig().isSuppressConversionWarnings()) {
90-
Protocol1_12_2To1_13.LOGGER.log(Level.WARNING, "Error writing NBT in show_item: " + value, e);
90+
if (!Via.getConfig().isSuppressTextComponentConversionWarnings()) {
91+
Protocol1_12_2To1_13.LOGGER.log(Level.WARNING, "Error writing NBT in show_item: " + StringUtil.forLogging(value), e);
9192
}
9293
}
9394
}

common/src/main/java/com/viaversion/viaversion/protocols/v1_20_2to1_20_3/rewriter/BlockItemPacketRewriter1_20_3.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
import com.viaversion.viaversion.util.ComponentUtil;
4343
import com.viaversion.viaversion.util.Key;
4444
import com.viaversion.viaversion.util.SerializerVersion;
45+
import com.viaversion.viaversion.util.StringUtil;
4546
import java.util.logging.Level;
4647
import org.checkerframework.checker.nullness.qual.Nullable;
4748

@@ -168,8 +169,8 @@ private void updatePageTag(final StringTag pageTag) {
168169
final JsonElement updatedComponent = ComponentUtil.convertJson(pageTag.getValue(), SerializerVersion.V1_19_4, SerializerVersion.V1_20_3);
169170
pageTag.setValue(updatedComponent.toString());
170171
} catch (final Exception e) {
171-
if (!Via.getConfig().isSuppressConversionWarnings()) {
172-
protocol.getLogger().log(Level.SEVERE, "Error during book conversion: " + pageTag.getValue(), e);
172+
if (!Via.getConfig().isSuppressTextComponentConversionWarnings()) {
173+
protocol.getLogger().log(Level.SEVERE, "Error during book conversion: " + StringUtil.forLogging(pageTag.getValue()), e);
173174
}
174175
}
175176
}

common/src/main/java/com/viaversion/viaversion/protocols/v1_20_3to1_20_5/rewriter/ComponentRewriter1_20_5.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@
9191
import com.viaversion.viaversion.util.Key;
9292
import com.viaversion.viaversion.util.MathUtil;
9393
import com.viaversion.viaversion.util.SerializerVersion;
94+
import com.viaversion.viaversion.util.StringUtil;
9495
import com.viaversion.viaversion.util.UUIDUtil;
9596
import com.viaversion.viaversion.util.Unit;
9697
import it.unimi.dsi.fastutil.ints.Int2IntMap;
@@ -215,8 +216,8 @@ protected void handleShowItem(final UserConnection connection, final CompoundTag
215216
try {
216217
tagTag = tag != null ? (CompoundTag) inputSerializerVersion().toTag(tag.getValue()) : null;
217218
} catch (final Exception e) {
218-
if (!Via.getConfig().isSuppressConversionWarnings()) {
219-
protocol.getLogger().log(Level.WARNING, "Error reading NBT in show_item: " + itemTag, e);
219+
if (!Via.getConfig().isSuppressTextComponentConversionWarnings()) {
220+
protocol.getLogger().log(Level.WARNING, "Error reading NBT in show_item: " + StringUtil.forLogging(itemTag), e);
220221
}
221222
return;
222223
}
@@ -249,7 +250,7 @@ protected void handleShowItem(final UserConnection connection, final CompoundTag
249250
try {
250251
components = toTag(connection, data);
251252
} catch (final Exception e) {
252-
if (!Via.getConfig().isSuppressConversionWarnings()) {
253+
if (!Via.getConfig().isSuppressTextComponentConversionWarnings()) {
253254
protocol.getLogger().log(Level.WARNING, "Error writing components in show_item!", e);
254255
}
255256
return;

common/src/main/java/com/viaversion/viaversion/protocols/v1_21_4to1_21_5/rewriter/ComponentRewriter1_21_5.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import com.viaversion.viaversion.protocols.v1_21to1_21_2.packet.ClientboundPacket1_21_2;
2929
import com.viaversion.viaversion.rewriter.text.JsonNBTComponentRewriter;
3030
import com.viaversion.viaversion.util.SerializerVersion;
31+
import com.viaversion.viaversion.util.StringUtil;
3132
import com.viaversion.viaversion.util.TagUtil;
3233
import java.net.URI;
3334
import java.net.URISyntaxException;
@@ -318,8 +319,8 @@ public Tag uglyJsonToTag(final UserConnection connection, final String value) {
318319
try {
319320
return uglyJsonToTagUncaught(connection, value);
320321
} catch (final Exception e) {
321-
if (!Via.getConfig().isSuppressConversionWarnings()) {
322-
Via.getPlatform().getLogger().log(Level.SEVERE, "Error converting json text component: " + value, e);
322+
if (!Via.getConfig().isSuppressTextComponentConversionWarnings()) {
323+
Via.getPlatform().getLogger().log(Level.SEVERE, "Error converting json text component: " + StringUtil.forLogging(value), e);
323324
}
324325
return new StringTag("<error>");
325326
}

common/src/main/java/com/viaversion/viaversion/rewriter/RecipeDisplayRewriter.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
import com.viaversion.viaversion.api.minecraft.HolderSet;
2121
import com.viaversion.viaversion.api.minecraft.item.Item;
22-
import com.viaversion.viaversion.api.minecraft.item.data.ArmorTrimPattern;
2322
import com.viaversion.viaversion.api.protocol.Protocol;
2423
import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType;
2524
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;

0 commit comments

Comments
 (0)