GameProfileArgument.java
net.minecraft.commands.arguments.GameProfileArgument
信息
- 全限定名:net.minecraft.commands.arguments.GameProfileArgument
- 类型:public class
- 包:net.minecraft.commands.arguments
- 源码路径:src/main/java/net/minecraft/commands/arguments/GameProfileArgument.java
- 起始行号:L26
- 实现:ArgumentType<GameProfileArgument.Result>
- 职责:
TODO
字段/常量
-
EXAMPLES- 类型:
Collection<String> - 修饰符:
private static final - 源码定位:
L27 - 说明:
TODO
- 类型:
-
ERROR_UNKNOWN_PLAYER- 类型:
SimpleCommandExceptionType - 修饰符:
public static final - 源码定位:
L28 - 说明:
TODO
- 类型:
内部类/嵌套类型
-
net.minecraft.commands.arguments.GameProfileArgument.Result- 类型:
interface - 修饰符:
public - 源码定位:
L94 - 说明:
TODO
- 类型:
-
net.minecraft.commands.arguments.GameProfileArgument.SelectorResult- 类型:
class - 修饰符:
public static - 源码定位:
L98 - 说明:
TODO
- 类型:
构造器
- 无
方法
下面的方法块按源码顺序生成。
public static Collection<NameAndId> getGameProfiles(CommandContext<CommandSourceStack> source, String name) @ L30
- 方法名:getGameProfiles
- 源码定位:L30
- 返回类型:Collection
- 修饰符:public static
参数:
- source: CommandContext
- name: String
说明:
TODO
public static GameProfileArgument gameProfile() @ L34
- 方法名:gameProfile
- 源码定位:L34
- 返回类型:GameProfileArgument
- 修饰符:public static
参数:
- 无
说明:
TODO
public <S> GameProfileArgument.Result parse(StringReader reader, S source) @ L38
- 方法名:parse
- 源码定位:L38
- 返回类型:
GameProfileArgument.Result - 修饰符:public
参数:
- reader: StringReader
- source: S
说明:
TODO
public GameProfileArgument.Result parse(StringReader reader) @ L42
- 方法名:parse
- 源码定位:L42
- 返回类型:GameProfileArgument.Result
- 修饰符:public
参数:
- reader: StringReader
说明:
TODO
private static GameProfileArgument.Result parse(StringReader reader, boolean allowSelectors) @ L46
- 方法名:parse
- 源码定位:L46
- 返回类型:GameProfileArgument.Result
- 修饰符:private static
参数:
- reader: StringReader
- allowSelectors: boolean
说明:
TODO
public <S> CompletableFuture<Suggestions> listSuggestions(CommandContext<S> contextBuilder, SuggestionsBuilder builder) @ L70
- 方法名:listSuggestions
- 源码定位:L70
- 返回类型:
CompletableFuture - 修饰符:public
参数:
- contextBuilder: CommandContext
- builder: SuggestionsBuilder
说明:
TODO
public Collection<String> getExamples() @ L88
- 方法名:getExamples
- 源码定位:L88
- 返回类型:Collection
- 修饰符:public
参数:
- 无
说明:
TODO
代码
public class GameProfileArgument implements ArgumentType<GameProfileArgument.Result> {
private static final Collection<String> EXAMPLES = Arrays.asList("Player", "0123", "dd12be42-52a9-4a91-a8a1-11c01849e498", "@e");
public static final SimpleCommandExceptionType ERROR_UNKNOWN_PLAYER = new SimpleCommandExceptionType(Component.translatable("argument.player.unknown"));
public static Collection<NameAndId> getGameProfiles(CommandContext<CommandSourceStack> source, String name) throws CommandSyntaxException {
return source.getArgument(name, GameProfileArgument.Result.class).getNames(source.getSource());
}
public static GameProfileArgument gameProfile() {
return new GameProfileArgument();
}
public <S> GameProfileArgument.Result parse(StringReader reader, S source) throws CommandSyntaxException {
return parse(reader, EntitySelectorParser.allowSelectors(source));
}
public GameProfileArgument.Result parse(StringReader reader) throws CommandSyntaxException {
return parse(reader, true);
}
private static GameProfileArgument.Result parse(StringReader reader, boolean allowSelectors) throws CommandSyntaxException {
if (reader.canRead() && reader.peek() == '@') {
EntitySelectorParser parser = new EntitySelectorParser(reader, allowSelectors);
EntitySelector parse = parser.parse();
if (parse.includesEntities()) {
throw EntityArgument.ERROR_ONLY_PLAYERS_ALLOWED.createWithContext(reader);
} else {
return new GameProfileArgument.SelectorResult(parse);
}
} else {
int start = reader.getCursor();
while (reader.canRead() && reader.peek() != ' ') {
reader.skip();
}
String name = reader.getString().substring(start, reader.getCursor());
return c -> {
Optional<NameAndId> result = c.getServer().services().nameToIdCache().get(name);
return Collections.singleton(result.orElseThrow(ERROR_UNKNOWN_PLAYER::create));
};
}
}
@Override
public <S> CompletableFuture<Suggestions> listSuggestions(CommandContext<S> contextBuilder, SuggestionsBuilder builder) {
if (contextBuilder.getSource() instanceof SharedSuggestionProvider source) {
StringReader reader = new StringReader(builder.getInput());
reader.setCursor(builder.getStart());
EntitySelectorParser parser = new EntitySelectorParser(reader, source.permissions().hasPermission(Permissions.COMMANDS_ENTITY_SELECTORS));
try {
parser.parse();
} catch (CommandSyntaxException var7) {
}
return parser.fillSuggestions(builder, suggestions -> SharedSuggestionProvider.suggest(source.getOnlinePlayerNames(), suggestions));
} else {
return Suggestions.empty();
}
}
@Override
public Collection<String> getExamples() {
return EXAMPLES;
}
@FunctionalInterface
public interface Result {
Collection<NameAndId> getNames(final CommandSourceStack sender) throws CommandSyntaxException;
}
public static class SelectorResult implements GameProfileArgument.Result {
private final EntitySelector selector;
public SelectorResult(EntitySelector selector) {
this.selector = selector;
}
@Override
public Collection<NameAndId> getNames(CommandSourceStack sender) throws CommandSyntaxException {
List<ServerPlayer> players = this.selector.findPlayers(sender);
if (players.isEmpty()) {
throw EntityArgument.NO_PLAYERS_FOUND.create();
} else {
List<NameAndId> result = new ArrayList<>();
for (ServerPlayer entity : players) {
result.add(entity.nameAndId());
}
return result;
}
}
}
}引用的其他类
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
SharedSuggestionProvider.suggest()
- 引用位置:
-
- 引用位置:
方法调用/构造调用 - 关联成员:
EntitySelectorParser(), EntitySelectorParser.allowSelectors()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Component.translatable()
- 引用位置:
-
- 引用位置:
返回值
- 引用位置: