From dc5dd62b6e1c0c3da7158301fdfa8d028dfda4a9 Mon Sep 17 00:00:00 2001 From: kento2 Date: Thu, 16 Apr 2026 10:19:27 +0200 Subject: [PATCH] implement PlayerArgumentType implement OfflinePlayerArgumentType --- .../type/OfflinePlayerArgumentType.java | 40 +++++++++++++++++++ .../type/PlayerArgumentType.java | 7 +++- 2 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 kencommandapi-bukkit/src/main/java/de/kentoj/kencommandapi/type/OfflinePlayerArgumentType.java diff --git a/kencommandapi-bukkit/src/main/java/de/kentoj/kencommandapi/type/OfflinePlayerArgumentType.java b/kencommandapi-bukkit/src/main/java/de/kentoj/kencommandapi/type/OfflinePlayerArgumentType.java new file mode 100644 index 0000000..e871f64 --- /dev/null +++ b/kencommandapi-bukkit/src/main/java/de/kentoj/kencommandapi/type/OfflinePlayerArgumentType.java @@ -0,0 +1,40 @@ +package de.kentoj.kencommandapi.type; + +import de.kentoj.kencommandapi.api.processing.CommandContext; +import de.kentoj.kencommandapi.api.structure.argument.ArgumentType; +import de.kentoj.kencommandapi.api.structure.argument.SuggestionProvider; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; + +import java.util.Set; +import java.util.UUID; + +// TODO +@NoArgsConstructor(access = AccessLevel.PRIVATE) +public class OfflinePlayerArgumentType implements ArgumentType { + + @Getter(lazy = true) + private static final OfflinePlayerArgumentType instance = new OfflinePlayerArgumentType(); + + @Override + public OfflinePlayer parseInput(String string) { + OfflinePlayer player = Bukkit.getPlayer(string); + if (player == null) { + try { + player = Bukkit.getOfflinePlayer(UUID.fromString(string)); + } catch (IllegalArgumentException ex) { + throw new RuntimeException("Not a UUID or online player -- " + string); + } + } + if (!player.hasPlayedBefore()) throw new RuntimeException("Unknown player -- " + string); + return player; + } + + @Override + public SuggestionProvider defaultSuggestionProvider() { + return (SuggestionProvider>) context -> Set.of(); + } +} diff --git a/kencommandapi-bukkit/src/main/java/de/kentoj/kencommandapi/type/PlayerArgumentType.java b/kencommandapi-bukkit/src/main/java/de/kentoj/kencommandapi/type/PlayerArgumentType.java index 68b5879..5308534 100644 --- a/kencommandapi-bukkit/src/main/java/de/kentoj/kencommandapi/type/PlayerArgumentType.java +++ b/kencommandapi-bukkit/src/main/java/de/kentoj/kencommandapi/type/PlayerArgumentType.java @@ -4,16 +4,19 @@ import de.kentoj.kencommandapi.api.processing.CommandContext; import de.kentoj.kencommandapi.api.structure.argument.ArgumentType; import de.kentoj.kencommandapi.api.structure.argument.SuggestionProvider; import lombok.AccessLevel; +import lombok.Getter; import lombok.NoArgsConstructor; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import java.util.Set; -// TODO @NoArgsConstructor(access = AccessLevel.PRIVATE) public class PlayerArgumentType implements ArgumentType { + @Getter(lazy = true) + private static final PlayerArgumentType instance = new PlayerArgumentType(); + @Override public Player parseInput(String string) { var player = Bukkit.getPlayer(string); @@ -23,6 +26,6 @@ public class PlayerArgumentType implements ArgumentType { @Override public SuggestionProvider defaultSuggestionProvider() { - return (SuggestionProvider) context -> Set.of(); + return (SuggestionProvider>) context -> Set.of(); } }