SnbtOperations.java
net.minecraft.nbt.SnbtOperations
信息
- 全限定名:net.minecraft.nbt.SnbtOperations
- 类型:public class
- 包:net.minecraft.nbt
- 源码路径:src/main/java/net/minecraft/nbt/SnbtOperations.java
- 起始行号:L22
- 职责:
TODO
字段/常量
-
ERROR_EXPECTED_STRING_UUID- 类型:
DelayedException<CommandSyntaxException> - 修饰符:
private static final - 源码定位:
L23 - 说明:
TODO
- 类型:
-
ERROR_EXPECTED_NUMBER_OR_BOOLEAN- 类型:
DelayedException<CommandSyntaxException> - 修饰符:
private static final - 源码定位:
L26 - 说明:
TODO
- 类型:
-
BUILTIN_TRUE- 类型:
String - 修饰符:
public static final - 源码定位:
L29 - 说明:
TODO
- 类型:
-
BUILTIN_FALSE- 类型:
String - 修饰符:
public static final - 源码定位:
L30 - 说明:
TODO
- 类型:
-
BUILTIN_OPERATIONS- 类型:
Map<SnbtOperations.BuiltinKey,SnbtOperations.BuiltinOperation> - 修饰符:
public static final public private static public - 源码定位:
L31 - 说明:
TODO
- 类型:
-
BUILTIN_IDS- 类型:
SuggestionSupplier<StringReader> - 修饰符:
public static final private final public - 源码定位:
L74 - 说明:
TODO
- 类型:
内部类/嵌套类型
-
net.minecraft.nbt.SnbtOperations.BuiltinKey- 类型:
record - 修饰符:
public - 源码定位:
L86 - 说明:
TODO
- 类型:
-
net.minecraft.nbt.SnbtOperations.BuiltinOperation- 类型:
interface - 修饰符:
public - 源码定位:
L93 - 说明:
TODO
- 类型:
构造器
- 无
方法
下面的方法块按源码顺序生成。
- 无
代码
public class SnbtOperations {
private static final DelayedException<CommandSyntaxException> ERROR_EXPECTED_STRING_UUID = DelayedException.create(
new SimpleCommandExceptionType(Component.translatable("snbt.parser.expected_string_uuid"))
);
private static final DelayedException<CommandSyntaxException> ERROR_EXPECTED_NUMBER_OR_BOOLEAN = DelayedException.create(
new SimpleCommandExceptionType(Component.translatable("snbt.parser.expected_number_or_boolean"))
);
public static final String BUILTIN_TRUE = "true";
public static final String BUILTIN_FALSE = "false";
public static final Map<SnbtOperations.BuiltinKey, SnbtOperations.BuiltinOperation> BUILTIN_OPERATIONS = Map.of(
new SnbtOperations.BuiltinKey("bool", 1), new SnbtOperations.BuiltinOperation() {
@Override
public <T> T run(DynamicOps<T> ops, List<T> arguments, ParseState<StringReader> state) {
Boolean result = convert(ops, arguments.getFirst());
if (result == null) {
state.errorCollector().store(state.mark(), SnbtOperations.ERROR_EXPECTED_NUMBER_OR_BOOLEAN);
return null;
} else {
return ops.createBoolean(result);
}
}
private static <T> @Nullable Boolean convert(DynamicOps<T> ops, T arg) {
Optional<Boolean> asBoolean = ops.getBooleanValue(arg).result();
if (asBoolean.isPresent()) {
return asBoolean.get();
} else {
Optional<Number> asNumber = ops.getNumberValue(arg).result();
return asNumber.isPresent() ? asNumber.get().doubleValue() != 0.0 : null;
}
}
}, new SnbtOperations.BuiltinKey("uuid", 1), new SnbtOperations.BuiltinOperation() {
@Override
public <T> T run(DynamicOps<T> ops, List<T> arguments, ParseState<StringReader> state) {
Optional<String> arg = ops.getStringValue(arguments.getFirst()).result();
if (arg.isEmpty()) {
state.errorCollector().store(state.mark(), SnbtOperations.ERROR_EXPECTED_STRING_UUID);
return null;
} else {
UUID uuid;
try {
uuid = UUID.fromString(arg.get());
} catch (IllegalArgumentException var7) {
state.errorCollector().store(state.mark(), SnbtOperations.ERROR_EXPECTED_STRING_UUID);
return null;
}
return ops.createIntList(IntStream.of(UUIDUtil.uuidToIntArray(uuid)));
}
}
}
);
public static final SuggestionSupplier<StringReader> BUILTIN_IDS = new SuggestionSupplier<StringReader>() {
private final Set<String> keys = Stream.concat(
Stream.of("false", "true"), SnbtOperations.BUILTIN_OPERATIONS.keySet().stream().map(SnbtOperations.BuiltinKey::id)
)
.collect(Collectors.toSet());
@Override
public Stream<String> possibleValues(ParseState<StringReader> state) {
return this.keys.stream();
}
};
public record BuiltinKey(String id, int argCount) {
@Override
public String toString() {
return this.id + "/" + this.argCount;
}
}
public interface BuiltinOperation {
<T> @Nullable T run(DynamicOps<T> ops, List<T> arguments, ParseState<StringReader> state);
}
}引用的其他类
-
- 引用位置:
方法调用 - 关联成员:
UUIDUtil.uuidToIntArray()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Component.translatable()
- 引用位置:
-
- 引用位置:
字段/方法调用 - 关联成员:
DelayedException.create()
- 引用位置:
-
- 引用位置:
字段
- 引用位置: