diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/paper-server/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
index a1e1e3df67..4d26326854 100644
--- a/paper-server/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/paper-server/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
@@ -4,6 +4,7 @@ import ca.spottedleaf.moonrise.common.PlatformHooks;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Multimap;
 import com.google.common.io.Files;
+import com.google.gson.Gson;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonParseException;
 import com.google.gson.JsonParser;
@@ -37,6 +38,7 @@ import net.minecraft.nbt.Tag;
 import net.minecraft.resources.ResourceLocation;
 import net.minecraft.server.MinecraftServer;
 import net.minecraft.server.level.ServerLevel;
+import net.minecraft.util.ExtraCodecs;
 import net.minecraft.util.datafix.DataFixers;
 import net.minecraft.util.datafix.fixes.References;
 import net.minecraft.world.entity.player.Player;
@@ -83,6 +85,7 @@ import org.bukkit.potion.PotionType;
 public final class CraftMagicNumbers implements UnsafeValues {
     public static final CraftMagicNumbers INSTANCE = new CraftMagicNumbers();
     public static final boolean DISABLE_OLD_API_SUPPORT = Boolean.getBoolean("paper.disableOldApiSupport"); // Paper
+    private static final Gson GSON = new Gson();
 
     private final Commodore commodore = new Commodore();
 
@@ -521,7 +524,7 @@ public final class CraftMagicNumbers implements UnsafeValues {
                     ret.put("count", value.asInt().get());
                 }
                 case "components" -> {
-                    ret.put("components", new net.minecraft.nbt.SnbtPrinterTagVisitor().visit(value.asCompound().get()));
+                    ret.put("components", ExtraCodecs.converter(NbtOps.INSTANCE).encodeStart(JsonOps.INSTANCE, value).result().get().toString());
                 }
                 case "DataVersion" -> {
                     ret.put("DataVersion", value.asInt().get());
@@ -544,11 +547,9 @@ public final class CraftMagicNumbers implements UnsafeValues {
                     tag.putInt("count", ((Number) value).intValue());
                 }
                 case "components" -> {
-                    try {
-                        tag.put("components", net.minecraft.nbt.TagParser.parseCompoundFully(((String) value)));
-                    } catch (CommandSyntaxException e) {
-                        throw new RuntimeException(e);
-                    }
+                    String json = (String) value;
+                    final JsonElement jsonElement = GSON.fromJson(json, JsonElement.class);
+                    tag.put("components", ExtraCodecs.converter(JsonOps.INSTANCE).encodeStart(NbtOps.INSTANCE, jsonElement).result().get());
                 }
                 case "DataVersion" -> {
                     tag.putInt("DataVersion", ((Number) value).intValue());