diff --git a/src/main/java/net/kyori/adventure/text/minimessage/transformation/inbuild/FontTransformation.java b/src/main/java/net/kyori/adventure/text/minimessage/transformation/inbuild/FontTransformation.java index 697b5cca5..9fa45d0de 100644 --- a/src/main/java/net/kyori/adventure/text/minimessage/transformation/inbuild/FontTransformation.java +++ b/src/main/java/net/kyori/adventure/text/minimessage/transformation/inbuild/FontTransformation.java @@ -65,17 +65,15 @@ public void load(final String name, final List args) { super.load(name, args); if (args.size() == 1) { - @Subst("minecraft:empty") final String fontKey = args.get(0).value(); + @Subst("empty") final String fontKey = args.get(0).value(); this.font = Key.key(fontKey); + } else if (args.size() == 2) { + @Subst(Key.MINECRAFT_NAMESPACE) final String namespaceKey = args.get(0).value(); + @Subst("empty") final String fontKey = args.get(1).value(); + this.font = Key.key(namespaceKey, fontKey); + } else { + throw new ParsingException("Don't know how to turn " + args + " into a font", this.argTokenArray()); } - - if (args.size() != 2) { - throw new ParsingException("Doesn't know how to turn " + args + " into a click event", this.argTokenArray()); - } - - @Subst(Key.MINECRAFT_NAMESPACE) final String namespaceKey = args.get(0).value(); - @Subst("empty") final String fontKey = args.get(1).value(); - this.font = Key.key(namespaceKey, fontKey); } @Override diff --git a/src/test/java/net/kyori/adventure/text/minimessage/MiniMessageParserTest.java b/src/test/java/net/kyori/adventure/text/minimessage/MiniMessageParserTest.java index 4d61ab158..c03e27e15 100644 --- a/src/test/java/net/kyori/adventure/text/minimessage/MiniMessageParserTest.java +++ b/src/test/java/net/kyori/adventure/text/minimessage/MiniMessageParserTest.java @@ -1112,6 +1112,32 @@ void testFont() { this.assertParsedEquals(expected, input); } + @Test + void testCustomFont() { + final String input = "Default Custom font Another custom font Back to previous font"; + final Component expected = text("Default ") + .append(empty().style(s -> s.font(key("myfont", "best_font"))) + .append(text("Custom font ")) + .append(text("Another custom font ").style(s -> s.font(key("custom", "worst_font")))) + .append(text("Back to previous font")) + ); + + this.assertParsedEquals(expected, input); + } + + @Test + void testFontNoNamespace() { + final String input = "Nothing Uniform Alt Uniform"; + final Component expected = text("Nothing ") + .append(empty().style(s -> s.font(key("uniform"))) + .append(text("Uniform ")) + .append(text("Alt ").style(s -> s.font(key("alt")))) + .append(text(" Uniform")) + ); + + this.assertParsedEquals(expected, input); + } + // GH-37 @Test void testPhil() {