Fix InformativeException value shuffling

This commit is contained in:
Nassim Jahnke 2024-10-26 18:55:22 +02:00
parent 009b6c810c
commit df69f1f344
No known key found for this signature in database
GPG Key ID: EF6771C01F6EF02F
2 changed files with 14 additions and 10 deletions

View File

@ -22,11 +22,12 @@
*/ */
package com.viaversion.viaversion.exception; package com.viaversion.viaversion.exception;
import java.util.HashMap; import java.util.ArrayList;
import java.util.Map; import java.util.List;
import org.checkerframework.checker.nullness.qual.Nullable;
public class InformativeException extends RuntimeException { public class InformativeException extends RuntimeException {
private final Map<String, Object> info = new HashMap<>(); private final List<DataEntry> dataEntries = new ArrayList<>();
private boolean shouldBePrinted = true; private boolean shouldBePrinted = true;
private int sources; private int sources;
@ -34,8 +35,8 @@ public class InformativeException extends RuntimeException {
super(cause); super(cause);
} }
public InformativeException set(String key, Object value) { public InformativeException set(String key, @Nullable Object value) {
info.put(key, value); dataEntries.add(new DataEntry(key, value));
return this; return this;
} }
@ -59,11 +60,11 @@ public class InformativeException extends RuntimeException {
public String getMessage() { public String getMessage() {
StringBuilder builder = new StringBuilder("Please report this on the Via support Discord or open an issue on the relevant GitHub repository\n"); StringBuilder builder = new StringBuilder("Please report this on the Via support Discord or open an issue on the relevant GitHub repository\n");
boolean first = true; boolean first = true;
for (Map.Entry<String, Object> entry : info.entrySet()) { for (DataEntry entry : dataEntries) {
if (!first) { if (!first) {
builder.append(", "); builder.append(", ");
} }
builder.append(entry.getKey()).append(": ").append(entry.getValue()); builder.append(entry.name()).append(": ").append(entry.value());
first = false; first = false;
} }
return builder.toString(); return builder.toString();
@ -74,4 +75,7 @@ public class InformativeException extends RuntimeException {
// Don't record this stack // Don't record this stack
return this; return this;
} }
private record DataEntry(String name, @Nullable Object value) {
}
} }

View File

@ -243,11 +243,11 @@ public class PacketWrapperImpl implements PacketWrapper {
private InformativeException createInformativeException(final Exception cause, final Type<?> type, final int index) { private InformativeException createInformativeException(final Exception cause, final Type<?> type, final int index) {
return new InformativeException(cause) return new InformativeException(cause)
.set("Packet Type", this.packetType)
.set("Index", index) .set("Index", index)
.set("Type", type.getTypeName()) .set("Type", type.getTypeName())
.set("Packet ID", this.id) .set("Data", this.packetValues)
.set("Packet Type", this.packetType) .set("Packet ID", this.id);
.set("Data", this.packetValues);
} }
@Override @Override