Skip to content

Commit e2d95cf

Browse files
committed
fix(text-minimessage): support all uuid versions in head tag
1 parent e2f7a35 commit e2d95cf

1 file changed

Lines changed: 8 additions & 5 deletions

File tree

text-minimessage/src/main/java/net/kyori/adventure/text/minimessage/tag/standard/SequentialHeadTag.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import java.util.Objects;
2727
import java.util.UUID;
2828
import java.util.function.Function;
29-
import java.util.regex.Pattern;
3029
import net.kyori.adventure.key.Key;
3130
import net.kyori.adventure.text.Component;
3231
import net.kyori.adventure.text.ObjectComponent;
@@ -52,8 +51,6 @@
5251
*/
5352
final class SequentialHeadTag {
5453
static final String HEAD = "head";
55-
// TODO: Move this to HeadTag
56-
private static final Pattern UUIDv4_PATTERN = Pattern.compile("[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ABCD][0-9a-f]{3}-[0-9a-f]{12}", Pattern.CASE_INSENSITIVE);
5754

5855
static final TagResolver RESOLVER = SerializableResolver.claimingComponent(
5956
HEAD,
@@ -92,10 +89,16 @@ static Tag create(final ArgumentQueue args, final Context ctx) throws ParsingExc
9289
throw ctx.newException("Too many arguments present", args);
9390
}
9491

95-
if (SequentialHeadTag.UUIDv4_PATTERN.matcher(argument).matches()) {
92+
UUID uuid = null;
93+
try {
94+
uuid = UUID.fromString(argument);
95+
} catch (final IllegalArgumentException ignored) {
96+
// If UUID parsing fails, try other options
97+
}
98+
if (uuid != null) {
9699
return Tag.selfClosingInserting(Component.object(
97100
ObjectContents.playerHead()
98-
.id(UUID.fromString(argument))
101+
.id(uuid)
99102
.hat(outerLayer.toBooleanOrElse(PlayerHeadObjectContents.DEFAULT_HAT))
100103
.build()
101104
));

0 commit comments

Comments
 (0)