implement PlayerArgumentType
implement OfflinePlayerArgumentType
This commit is contained in:
parent
d936a9246a
commit
dc5dd62b6e
2 changed files with 45 additions and 2 deletions
|
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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.ArgumentType;
|
||||||
import de.kentoj.kencommandapi.api.structure.argument.SuggestionProvider;
|
import de.kentoj.kencommandapi.api.structure.argument.SuggestionProvider;
|
||||||
import lombok.AccessLevel;
|
import lombok.AccessLevel;
|
||||||
|
import lombok.Getter;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
// TODO
|
|
||||||
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
||||||
public class PlayerArgumentType implements ArgumentType<Player> {
|
public class PlayerArgumentType implements ArgumentType<Player> {
|
||||||
|
|
||||||
|
@Getter(lazy = true)
|
||||||
|
private static final PlayerArgumentType instance = new PlayerArgumentType();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Player parseInput(String string) {
|
public Player parseInput(String string) {
|
||||||
var player = Bukkit.getPlayer(string);
|
var player = Bukkit.getPlayer(string);
|
||||||
|
|
@ -23,6 +26,6 @@ public class PlayerArgumentType implements ArgumentType<Player> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SuggestionProvider<?> defaultSuggestionProvider() {
|
public SuggestionProvider<?> defaultSuggestionProvider() {
|
||||||
return (SuggestionProvider<CommandContext>) context -> Set.of();
|
return (SuggestionProvider<CommandContext<Player>>) context -> Set.of();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue