--- a/net/minecraft/util/datafix/DataFixers.java +++ b/net/minecraft/util/datafix/DataFixers.java @@ -515,6 +_,24 @@ Schema schema44 = builder.addSchema(1456, SAME_NAMESPACED); builder.addFixer(new EntityItemFrameDirectionFix(schema44, false)); Schema schema45 = builder.addSchema(1458, V1458::new); + // CraftBukkit start + // API allows setting player custom names, so we need to convert them. + // This does *not* handle upgrades in any other version, but generally those shouldn't need conversion. + builder.addFixer(new DataFix(schema45, false) { + @Override + protected TypeRewriteRule makeRule() { + return this.fixTypeEverywhereTyped("Player CustomName", this.getInputSchema().getType(References.PLAYER), typed -> { + return typed.update(DSL.remainderFinder(), dynamic -> { + final String customName = dynamic.get("CustomName").asString(""); + if (customName.isEmpty()) { + return dynamic.remove("CustomName"); + } + return dynamic.set("CustomName", LegacyComponentDataFixUtils.createPlainTextComponent(dynamic.getOps(), customName)); + }); + }); + } + }); + // CraftBukkit end builder.addFixer(new EntityCustomNameToComponentFix(schema45)); builder.addFixer(new ItemCustomNameToComponentFix(schema45)); builder.addFixer(new BlockEntityCustomNameToComponentFix(schema45));