From 866086fa877dc933521cfa9fab8bb026c28217aa Mon Sep 17 00:00:00 2001 From: Aleks Kuznetsov Date: Sun, 1 Nov 2026 17:42:10 +0300 Subject: [PATCH] Fix Fabric placeholders throwing when resolved without a player (#4321) --- .../FabricPlaceholderApiIntegration.java | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/fabric/src/main/java/me/lucko/luckperms/fabric/placeholder/FabricPlaceholderApiIntegration.java b/fabric/src/main/java/me/lucko/luckperms/fabric/placeholder/FabricPlaceholderApiIntegration.java index b5b9deabe..7ce4e2f73 100644 --- a/fabric/src/main/java/me/lucko/luckperms/fabric/placeholder/FabricPlaceholderApiIntegration.java +++ b/fabric/src/main/java/me/lucko/luckperms/fabric/placeholder/FabricPlaceholderApiIntegration.java @@ -62,6 +62,10 @@ public class FabricPlaceholderApiIntegration { @Override public PlaceholderResult onPlaceholderRequest(ServerPlaceholderContext context, String argument) { ServerPlayer player = context.serverPlayer(); + if (player == null) { + return PlaceholderResult.invalid("No player!"); + } + User user = this.plugin.getUserManager().getIfLoaded(player.getUUID()); if (user == null) { return PlaceholderResult.invalid("Unable to find corresponding user for UUID: " + player.getUUID()); @@ -71,12 +75,16 @@ public class FabricPlaceholderApiIntegration { PlaceholderContext ctx = new PlaceholderContext(this.plugin.getApiProvider(), user.getApiProxy(), queryOptions); String result; - if (this.placeholder instanceof Placeholder.Basic basic) { - result = basic.resolve(ctx); - } else if (this.placeholder instanceof Placeholder.UsingArgument usingArg) { - result = usingArg.resolve(ctx.withArgument(argument == null ? "" : argument)); - } else { - throw new IllegalStateException("Unknown placeholder type: " + this.placeholder.getClass()); + try { + if (this.placeholder instanceof Placeholder.Basic basic) { + result = basic.resolve(ctx); + } else if (this.placeholder instanceof Placeholder.UsingArgument usingArg) { + result = usingArg.resolve(ctx.withArgument(argument == null ? "" : argument)); + } else { + throw new IllegalStateException("Unknown placeholder type: " + this.placeholder.getClass()); + } + } catch (IllegalArgumentException e) { + return PlaceholderResult.invalid(e.getMessage()); } return toResult(parseText(result));