--- a/net/minecraft/server/players/UserBanListEntry.java
+++ b/net/minecraft/server/players/UserBanListEntry.java
@@ -17,7 +_,7 @@
     }
 
     public UserBanListEntry(JsonObject entryData) {
-        super(NameAndId.fromJson(entryData), entryData);
+        super(parseNameAndId(entryData), entryData);
     }
 
     @Override
@@ -33,4 +_,31 @@
         NameAndId nameAndId = this.getUser();
         return (Component)(nameAndId != null ? Component.literal(nameAndId.name()) : MESSAGE_UNKNOWN_USER);
     }
+
+    // Spigot start
+    // This is a modified version of NameAndId.fromJson specifically for UserBanListEntry
+    @Nullable
+    private static NameAndId parseNameAndId(JsonObject json) {
+        // this whole method has to be reworked to account for the fact Bukkit only accepts UUID bans and gives no way for usernames to be stored!
+        java.util.UUID uuid = null;
+        String name = null;
+        if (json.has("uuid")) {
+            String asString = json.get("uuid").getAsString();
+
+            try {
+                uuid = java.util.UUID.fromString(asString);
+            } catch (Throwable var4) {
+            }
+
+        }
+        if (json.has("name")) {
+            name = json.get("name").getAsString();
+        }
+        if (uuid != null || name != null) {
+            return new NameAndId(uuid, name);
+        } else {
+            return null;
+        }
+    }
+    // Spigot end
 }
