TelemetryPropertyMap.java
net.minecraft.client.telemetry.TelemetryPropertyMap
信息
- 全限定名:net.minecraft.client.telemetry.TelemetryPropertyMap
- 类型:public class
- 包:net.minecraft.client.telemetry
- 源码路径:src/main/java/net/minecraft/client/telemetry/TelemetryPropertyMap.java
- 起始行号:L18
- 职责:
TODO
字段/常量
entries- 类型:
Map<TelemetryProperty<?>,Object> - 修饰符:
private final - 源码定位:
L19 - 说明:
TODO
- 类型:
内部类/嵌套类型
net.minecraft.client.telemetry.TelemetryPropertyMap.Builder- 类型:
class - 修饰符:
public static - 源码定位:
L90 - 说明:
TODO
- 类型:
构造器
private TelemetryPropertyMap(Map<TelemetryProperty<?>,Object> entries) @ L21
- 构造器名:TelemetryPropertyMap
- 源码定位:L21
- 修饰符:private
参数:
- entries: Map<TelemetryProperty<?>,Object>
说明:
TODO
方法
下面的方法块按源码顺序生成。
public static TelemetryPropertyMap.Builder builder() @ L25
- 方法名:builder
- 源码定位:L25
- 返回类型:TelemetryPropertyMap.Builder
- 修饰符:public static
参数:
- 无
说明:
TODO
public static MapCodec<TelemetryPropertyMap> createCodec(List<TelemetryProperty<?>> properties) @ L29
- 方法名:createCodec
- 源码定位:L29
- 返回类型:MapCodec
- 修饰符:public static
参数:
- properties: List<TelemetryProperty<?>>
说明:
TODO
public <T> T get(TelemetryProperty<T> property) @ L76
- 方法名:get
- 源码定位:L76
- 返回类型:
T - 修饰符:public
参数:
- property: TelemetryProperty
说明:
TODO
public String toString() @ L80
- 方法名:toString
- 源码定位:L80
- 返回类型:String
- 修饰符:public
参数:
- 无
说明:
TODO
public Set<TelemetryProperty<?>> propertySet() @ L85
- 方法名:propertySet
- 源码定位:L85
- 返回类型:Set<TelemetryProperty<?>>
- 修饰符:public
参数:
- 无
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class TelemetryPropertyMap {
private final Map<TelemetryProperty<?>, Object> entries;
private TelemetryPropertyMap(Map<TelemetryProperty<?>, Object> entries) {
this.entries = entries;
}
public static TelemetryPropertyMap.Builder builder() {
return new TelemetryPropertyMap.Builder();
}
public static MapCodec<TelemetryPropertyMap> createCodec(List<TelemetryProperty<?>> properties) {
return new MapCodec<TelemetryPropertyMap>() {
public <T> RecordBuilder<T> encode(TelemetryPropertyMap input, DynamicOps<T> ops, RecordBuilder<T> prefix) {
RecordBuilder<T> result = prefix;
for (TelemetryProperty<?> property : properties) {
result = this.encodeProperty(input, result, property);
}
return result;
}
private <T, V> RecordBuilder<T> encodeProperty(TelemetryPropertyMap input, RecordBuilder<T> result, TelemetryProperty<V> property) {
V value = input.get(property);
return value != null ? result.add(property.id(), value, property.codec()) : result;
}
@Override
public <T> DataResult<TelemetryPropertyMap> decode(DynamicOps<T> ops, MapLike<T> input) {
DataResult<TelemetryPropertyMap.Builder> result = DataResult.success(new TelemetryPropertyMap.Builder());
for (TelemetryProperty<?> property : properties) {
result = this.decodeProperty(result, ops, input, property);
}
return result.map(TelemetryPropertyMap.Builder::build);
}
private <T, V> DataResult<TelemetryPropertyMap.Builder> decodeProperty(
DataResult<TelemetryPropertyMap.Builder> result, DynamicOps<T> ops, MapLike<T> input, TelemetryProperty<V> property
) {
T value = input.get(property.id());
if (value != null) {
DataResult<V> parse = property.codec().parse(ops, value);
return result.apply2stable((b, v) -> b.put(property, (V)v), parse);
} else {
return result;
}
}
@Override
public <T> Stream<T> keys(DynamicOps<T> ops) {
return properties.stream().map(TelemetryProperty::id).map(ops::createString);
}
};
}
public <T> @Nullable T get(TelemetryProperty<T> property) {
return (T)this.entries.get(property);
}
@Override
public String toString() {
return this.entries.toString();
}
public Set<TelemetryProperty<?>> propertySet() {
return this.entries.keySet();
}
@OnlyIn(Dist.CLIENT)
public static class Builder {
private final Map<TelemetryProperty<?>, Object> entries = new Reference2ObjectOpenHashMap<>();
private Builder() {
}
public <T> TelemetryPropertyMap.Builder put(TelemetryProperty<T> property, T value) {
this.entries.put(property, value);
return this;
}
public <T> TelemetryPropertyMap.Builder putIfNotNull(TelemetryProperty<T> property, @Nullable T value) {
if (value != null) {
this.entries.put(property, value);
}
return this;
}
public TelemetryPropertyMap.Builder putAll(TelemetryPropertyMap properties) {
this.entries.putAll(properties.entries);
return this;
}
public TelemetryPropertyMap build() {
return new TelemetryPropertyMap(this.entries);
}
}
}引用的其他类
- TelemetryProperty
- 引用位置:
参数/字段/返回值
- 引用位置: