SuggestionProviders.java
net.minecraft.commands.synchronization.SuggestionProviders
信息
- 全限定名:net.minecraft.commands.synchronization.SuggestionProviders
- 类型:public class
- 包:net.minecraft.commands.synchronization
- 源码路径:src/main/java/net/minecraft/commands/synchronization/SuggestionProviders.java
- 起始行号:L16
- 职责:
TODO
字段/常量
-
PROVIDERS_BY_NAME- 类型:
Map<Identifier,SuggestionProvider<SharedSuggestionProvider>> - 修饰符:
private static final - 源码定位:
L17 - 说明:
TODO
- 类型:
-
ID_ASK_SERVER- 类型:
Identifier - 修饰符:
private static final - 源码定位:
L18 - 说明:
TODO
- 类型:
-
ASK_SERVER- 类型:
SuggestionProvider<SharedSuggestionProvider> - 修饰符:
public static final - 源码定位:
L19 - 说明:
TODO
- 类型:
-
AVAILABLE_SOUNDS- 类型:
SuggestionProvider<SharedSuggestionProvider> - 修饰符:
public static final - 源码定位:
L20 - 说明:
TODO
- 类型:
-
SUMMONABLE_ENTITIES- 类型:
SuggestionProvider<SharedSuggestionProvider> - 修饰符:
public static final - 源码定位:
L23 - 说明:
TODO
- 类型:
内部类/嵌套类型
net.minecraft.commands.synchronization.SuggestionProviders.RegisteredSuggestion- 类型:
record - 修饰符:
private - 源码定位:
L54 - 说明:
TODO
- 类型:
构造器
- 无
方法
下面的方法块按源码顺序生成。
public static <S extends SharedSuggestionProvider> SuggestionProvider<S> register(Identifier name, SuggestionProvider<SharedSuggestionProvider> provider) @ L33
- 方法名:register
- 源码定位:L33
- 返回类型:
SuggestionProvider - 修饰符:public static
参数:
- name: Identifier
- provider: SuggestionProvider
说明:
TODO
public static <S extends SharedSuggestionProvider> SuggestionProvider<S> cast(SuggestionProvider<SharedSuggestionProvider> provider) @ L42
- 方法名:cast
- 源码定位:L42
- 返回类型:
SuggestionProvider - 修饰符:public static
参数:
- provider: SuggestionProvider
说明:
TODO
public static <S extends SharedSuggestionProvider> SuggestionProvider<S> getProvider(Identifier name) @ L46
- 方法名:getProvider
- 源码定位:L46
- 返回类型:
SuggestionProvider - 修饰符:public static
参数:
- name: Identifier
说明:
TODO
public static Identifier getName(SuggestionProvider<?> provider) @ L50
- 方法名:getName
- 源码定位:L50
- 返回类型:Identifier
- 修饰符:public static
参数:
- provider: SuggestionProvider<?>
说明:
TODO
代码
public class SuggestionProviders {
private static final Map<Identifier, SuggestionProvider<SharedSuggestionProvider>> PROVIDERS_BY_NAME = new HashMap<>();
private static final Identifier ID_ASK_SERVER = Identifier.withDefaultNamespace("ask_server");
public static final SuggestionProvider<SharedSuggestionProvider> ASK_SERVER = register(ID_ASK_SERVER, (c, p) -> c.getSource().customSuggestion(c));
public static final SuggestionProvider<SharedSuggestionProvider> AVAILABLE_SOUNDS = register(
Identifier.withDefaultNamespace("available_sounds"), (c, p) -> SharedSuggestionProvider.suggestResource(c.getSource().getAvailableSounds(), p)
);
public static final SuggestionProvider<SharedSuggestionProvider> SUMMONABLE_ENTITIES = register(
Identifier.withDefaultNamespace("summonable_entities"),
(c, p) -> SharedSuggestionProvider.suggestResource(
BuiltInRegistries.ENTITY_TYPE.stream().filter(entityType -> entityType.isEnabled(c.getSource().enabledFeatures()) && entityType.canSummon()),
p,
EntityType::getKey,
EntityType::getDescription
)
);
public static <S extends SharedSuggestionProvider> SuggestionProvider<S> register(Identifier name, SuggestionProvider<SharedSuggestionProvider> provider) {
SuggestionProvider<SharedSuggestionProvider> previous = PROVIDERS_BY_NAME.putIfAbsent(name, provider);
if (previous != null) {
throw new IllegalArgumentException("A command suggestion provider is already registered with the name '" + name + "'");
} else {
return (SuggestionProvider<S>)new SuggestionProviders.RegisteredSuggestion(name, provider);
}
}
public static <S extends SharedSuggestionProvider> SuggestionProvider<S> cast(SuggestionProvider<SharedSuggestionProvider> provider) {
return (SuggestionProvider<S>)provider;
}
public static <S extends SharedSuggestionProvider> SuggestionProvider<S> getProvider(Identifier name) {
return cast(PROVIDERS_BY_NAME.getOrDefault(name, ASK_SERVER));
}
public static Identifier getName(SuggestionProvider<?> provider) {
return provider instanceof SuggestionProviders.RegisteredSuggestion registeredProvider ? registeredProvider.name : ID_ASK_SERVER;
}
private record RegisteredSuggestion(Identifier name, SuggestionProvider<SharedSuggestionProvider> delegate)
implements SuggestionProvider<SharedSuggestionProvider> {
@Override
public CompletableFuture<Suggestions> getSuggestions(CommandContext<SharedSuggestionProvider> context, SuggestionsBuilder builder) throws CommandSyntaxException {
return this.delegate.getSuggestions(context, builder);
}
}
}引用的其他类
-
- 引用位置:
参数/字段/方法调用/返回值 - 关联成员:
SharedSuggestionProvider.suggestResource()
- 引用位置:
-
- 引用位置:
参数/字段/方法调用/返回值 - 关联成员:
Identifier.withDefaultNamespace()
- 引用位置: