implement PlayerArgumentType

implement OfflinePlayerArgumentType
This commit is contained in:
kento2 2026-04-16 10:19:27 +02:00
parent d936a9246a
commit dc5dd62b6e
2 changed files with 45 additions and 2 deletions

View file

@ -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<OfflinePlayer> {
@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<CommandContext<OfflinePlayer>>) context -> Set.of();
}
}

View file

@ -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<Player> {
@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<Player> {
@Override
public SuggestionProvider<?> defaultSuggestionProvider() {
return (SuggestionProvider<CommandContext>) context -> Set.of();
return (SuggestionProvider<CommandContext<Player>>) context -> Set.of();
}
}