TimeArgument.java
net.minecraft.commands.arguments.TimeArgument
信息
- 全限定名:net.minecraft.commands.arguments.TimeArgument
- 类型:public class
- 包:net.minecraft.commands.arguments
- 源码路径:src/main/java/net/minecraft/commands/arguments/TimeArgument.java
- 起始行号:L24
- 实现:ArgumentType
- 职责:
TODO
字段/常量
-
EXAMPLES- 类型:
Collection<String> - 修饰符:
private static final - 源码定位:
L25 - 说明:
TODO
- 类型:
-
ERROR_INVALID_UNIT- 类型:
SimpleCommandExceptionType - 修饰符:
private static final - 源码定位:
L26 - 说明:
TODO
- 类型:
-
ERROR_TICK_COUNT_TOO_LOW- 类型:
Dynamic2CommandExceptionType - 修饰符:
private static final - 源码定位:
L27 - 说明:
TODO
- 类型:
-
UNITS- 类型:
Object2IntMap<String> - 修饰符:
private static final - 源码定位:
L30 - 说明:
TODO
- 类型:
-
minimum- 类型:
int - 修饰符:
private final - 源码定位:
L31 - 说明:
TODO
- 类型:
内部类/嵌套类型
-
net.minecraft.commands.arguments.TimeArgument.Info- 类型:
class - 修饰符:
public static - 源码定位:
L86 - 说明:
TODO
- 类型:
-
net.minecraft.commands.arguments.TimeArgument.Info.Template- 类型:
class - 修饰符:
public final - 源码定位:
L104 - 说明:
TODO
- 类型:
构造器
private TimeArgument(int minimum) @ L33
- 构造器名:TimeArgument
- 源码定位:L33
- 修饰符:private
参数:
- minimum: int
说明:
TODO
方法
下面的方法块按源码顺序生成。
public static TimeArgument time() @ L37
- 方法名:time
- 源码定位:L37
- 返回类型:TimeArgument
- 修饰符:public static
参数:
- 无
说明:
TODO
public static TimeArgument time(int minimum) @ L41
- 方法名:time
- 源码定位:L41
- 返回类型:TimeArgument
- 修饰符:public static
参数:
- minimum: int
说明:
TODO
public Integer parse(StringReader reader) @ L45
- 方法名:parse
- 源码定位:L45
- 返回类型:Integer
- 修饰符:public
参数:
- reader: StringReader
说明:
TODO
public <S> CompletableFuture<Suggestions> listSuggestions(CommandContext<S> context, SuggestionsBuilder builder) @ L61
- 方法名:listSuggestions
- 源码定位:L61
- 返回类型:
CompletableFuture - 修饰符:public
参数:
- context: CommandContext
- builder: SuggestionsBuilder
说明:
TODO
public Collection<String> getExamples() @ L74
- 方法名:getExamples
- 源码定位:L74
- 返回类型:Collection
- 修饰符:public
参数:
- 无
说明:
TODO
代码
public class TimeArgument implements ArgumentType<Integer> {
private static final Collection<String> EXAMPLES = Arrays.asList("0d", "0s", "0t", "0");
private static final SimpleCommandExceptionType ERROR_INVALID_UNIT = new SimpleCommandExceptionType(Component.translatable("argument.time.invalid_unit"));
private static final Dynamic2CommandExceptionType ERROR_TICK_COUNT_TOO_LOW = new Dynamic2CommandExceptionType(
(value, limit) -> Component.translatableEscape("argument.time.tick_count_too_low", limit, value)
);
private static final Object2IntMap<String> UNITS = new Object2IntOpenHashMap<>();
private final int minimum;
private TimeArgument(int minimum) {
this.minimum = minimum;
}
public static TimeArgument time() {
return new TimeArgument(0);
}
public static TimeArgument time(int minimum) {
return new TimeArgument(minimum);
}
public Integer parse(StringReader reader) throws CommandSyntaxException {
float value = reader.readFloat();
String unit = reader.readUnquotedString();
int factor = UNITS.getOrDefault(unit, 0);
if (factor == 0) {
throw ERROR_INVALID_UNIT.createWithContext(reader);
} else {
int ticks = Math.round(value * factor);
if (ticks < this.minimum) {
throw ERROR_TICK_COUNT_TOO_LOW.createWithContext(reader, ticks, this.minimum);
} else {
return ticks;
}
}
}
@Override
public <S> CompletableFuture<Suggestions> listSuggestions(CommandContext<S> context, SuggestionsBuilder builder) {
StringReader reader = new StringReader(builder.getRemaining());
try {
reader.readFloat();
} catch (CommandSyntaxException var5) {
return builder.buildFuture();
}
return SharedSuggestionProvider.suggest(UNITS.keySet(), builder.createOffset(builder.getStart() + reader.getCursor()));
}
@Override
public Collection<String> getExamples() {
return EXAMPLES;
}
static {
UNITS.put("d", 24000);
UNITS.put("s", 20);
UNITS.put("t", 1);
UNITS.put("", 1);
}
public static class Info implements ArgumentTypeInfo<TimeArgument, TimeArgument.Info.Template> {
public void serializeToNetwork(TimeArgument.Info.Template template, FriendlyByteBuf out) {
out.writeInt(template.min);
}
public TimeArgument.Info.Template deserializeFromNetwork(FriendlyByteBuf in) {
int min = in.readInt();
return new TimeArgument.Info.Template(min);
}
public void serializeToJson(TimeArgument.Info.Template template, JsonObject out) {
out.addProperty("min", template.min);
}
public TimeArgument.Info.Template unpack(TimeArgument argument) {
return new TimeArgument.Info.Template(argument.minimum);
}
public final class Template implements ArgumentTypeInfo.Template<TimeArgument> {
private final int min;
private Template(int min) {
Objects.requireNonNull(Info.this);
super();
this.min = min;
}
public TimeArgument instantiate(CommandBuildContext context) {
return TimeArgument.time(this.min);
}
@Override
public ArgumentTypeInfo<TimeArgument, ?> type() {
return Info.this;
}
}
}
}引用的其他类
-
- 引用位置:
方法调用 - 关联成员:
SharedSuggestionProvider.suggest()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Component.translatable(), Component.translatableEscape()
- 引用位置: