TelemetryEventType.java
net.minecraft.client.telemetry.TelemetryEventType
信息
- 全限定名:net.minecraft.client.telemetry.TelemetryEventType
- 类型:public class
- 包:net.minecraft.client.telemetry
- 源码路径:src/main/java/net/minecraft/client/telemetry/TelemetryEventType.java
- 起始行号:L19
- 职责:
TODO
字段/常量
-
REGISTRY- 类型:
Map<String,TelemetryEventType> - 修饰符:
private static final - 源码定位:
L20 - 说明:
TODO
- 类型:
-
CODEC- 类型:
Codec<TelemetryEventType> - 修饰符:
public static final - 源码定位:
L21 - 说明:
TODO
- 类型:
-
GLOBAL_PROPERTIES- 类型:
List<TelemetryProperty<?>> - 修饰符:
private static final - 源码定位:
L25 - 说明:
TODO
- 类型:
-
WORLD_SESSION_PROPERTIES- 类型:
List<TelemetryProperty<?>> - 修饰符:
private static final - 源码定位:
L37 - 说明:
TODO
- 类型:
-
WORLD_LOADED- 类型:
TelemetryEventType - 修饰符:
public static final - 源码定位:
L41 - 说明:
TODO
- 类型:
-
PERFORMANCE_METRICS- 类型:
TelemetryEventType - 修饰符:
public static final - 源码定位:
L46 - 说明:
TODO
- 类型:
-
WORLD_LOAD_TIMES- 类型:
TelemetryEventType - 修饰符:
public static final - 源码定位:
L56 - 说明:
TODO
- 类型:
-
WORLD_UNLOADED- 类型:
TelemetryEventType - 修饰符:
public static final - 源码定位:
L62 - 说明:
TODO
- 类型:
-
ADVANCEMENT_MADE- 类型:
TelemetryEventType - 修饰符:
public static final - 源码定位:
L67 - 说明:
TODO
- 类型:
-
GAME_LOAD_TIMES- 类型:
TelemetryEventType - 修饰符:
public static final - 源码定位:
L73 - 说明:
TODO
- 类型:
-
id- 类型:
String - 修饰符:
private final - 源码定位:
L81 - 说明:
TODO
- 类型:
-
exportKey- 类型:
String - 修饰符:
private final - 源码定位:
L82 - 说明:
TODO
- 类型:
-
properties- 类型:
List<TelemetryProperty<?>> - 修饰符:
private final - 源码定位:
L83 - 说明:
TODO
- 类型:
-
isOptIn- 类型:
boolean - 修饰符:
private final - 源码定位:
L84 - 说明:
TODO
- 类型:
-
codec- 类型:
MapCodec<TelemetryEventInstance> - 修饰符:
private final - 源码定位:
L85 - 说明:
TODO
- 类型:
内部类/嵌套类型
net.minecraft.client.telemetry.TelemetryEventType.Builder- 类型:
class - 修饰符:
public static - 源码定位:
L151 - 说明:
TODO
- 类型:
构造器
private TelemetryEventType(String id, String exportKey, List<TelemetryProperty<?>> properties, boolean isOptIn) @ L87
- 构造器名:TelemetryEventType
- 源码定位:L87
- 修饰符:private
参数:
- id: String
- exportKey: String
- properties: List<TelemetryProperty<?>>
- isOptIn: boolean
说明:
TODO
方法
下面的方法块按源码顺序生成。
public static TelemetryEventType.Builder builder(String id, String exportKey) @ L95
- 方法名:builder
- 源码定位:L95
- 返回类型:TelemetryEventType.Builder
- 修饰符:public static
参数:
- id: String
- exportKey: String
说明:
TODO
public String id() @ L99
- 方法名:id
- 源码定位:L99
- 返回类型:String
- 修饰符:public
参数:
- 无
说明:
TODO
public List<TelemetryProperty<?>> properties() @ L103
- 方法名:properties
- 源码定位:L103
- 返回类型:List<TelemetryProperty<?>>
- 修饰符:public
参数:
- 无
说明:
TODO
public MapCodec<TelemetryEventInstance> codec() @ L107
- 方法名:codec
- 源码定位:L107
- 返回类型:MapCodec
- 修饰符:public
参数:
- 无
说明:
TODO
public boolean isOptIn() @ L111
- 方法名:isOptIn
- 源码定位:L111
- 返回类型:boolean
- 修饰符:public
参数:
- 无
说明:
TODO
public TelemetryEvent export(TelemetrySession session, TelemetryPropertyMap input) @ L115
- 方法名:export
- 源码定位:L115
- 返回类型:TelemetryEvent
- 修饰符:public
参数:
- session: TelemetrySession
- input: TelemetryPropertyMap
说明:
TODO
public <T> boolean contains(TelemetryProperty<T> property) @ L125
- 方法名:contains
- 源码定位:L125
- 返回类型:
boolean - 修饰符:public
参数:
- property: TelemetryProperty
说明:
TODO
public String toString() @ L129
- 方法名:toString
- 源码定位:L129
- 返回类型:String
- 修饰符:public
参数:
- 无
说明:
TODO
public MutableComponent title() @ L134
- 方法名:title
- 源码定位:L134
- 返回类型:MutableComponent
- 修饰符:public
参数:
- 无
说明:
TODO
public MutableComponent description() @ L138
- 方法名:description
- 源码定位:L138
- 返回类型:MutableComponent
- 修饰符:public
参数:
- 无
说明:
TODO
private MutableComponent makeTranslation(String suffix) @ L142
- 方法名:makeTranslation
- 源码定位:L142
- 返回类型:MutableComponent
- 修饰符:private
参数:
- suffix: String
说明:
TODO
public static List<TelemetryEventType> values() @ L146
- 方法名:values
- 源码定位:L146
- 返回类型:List
- 修饰符:public static
参数:
- 无
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class TelemetryEventType {
private static final Map<String, TelemetryEventType> REGISTRY = new Object2ObjectLinkedOpenHashMap<>();
public static final Codec<TelemetryEventType> CODEC = Codec.STRING.comapFlatMap(key -> {
TelemetryEventType type = REGISTRY.get(key);
return type != null ? DataResult.success(type) : DataResult.error(() -> "No TelemetryEventType with key: '" + key + "'");
}, TelemetryEventType::id);
private static final List<TelemetryProperty<?>> GLOBAL_PROPERTIES = List.of(
TelemetryProperty.USER_ID,
TelemetryProperty.CLIENT_ID,
TelemetryProperty.MINECRAFT_SESSION_ID,
TelemetryProperty.GAME_VERSION,
TelemetryProperty.OPERATING_SYSTEM,
TelemetryProperty.PLATFORM,
TelemetryProperty.CLIENT_MODDED,
TelemetryProperty.LAUNCHER_NAME,
TelemetryProperty.EVENT_TIMESTAMP_UTC,
TelemetryProperty.OPT_IN
);
private static final List<TelemetryProperty<?>> WORLD_SESSION_PROPERTIES = Stream.concat(
GLOBAL_PROPERTIES.stream(), Stream.of(TelemetryProperty.WORLD_SESSION_ID, TelemetryProperty.SERVER_MODDED, TelemetryProperty.SERVER_TYPE)
)
.toList();
public static final TelemetryEventType WORLD_LOADED = builder("world_loaded", "WorldLoaded")
.defineAll(WORLD_SESSION_PROPERTIES)
.define(TelemetryProperty.GAME_MODE)
.define(TelemetryProperty.REALMS_MAP_CONTENT)
.register();
public static final TelemetryEventType PERFORMANCE_METRICS = builder("performance_metrics", "PerformanceMetrics")
.defineAll(WORLD_SESSION_PROPERTIES)
.define(TelemetryProperty.FRAME_RATE_SAMPLES)
.define(TelemetryProperty.RENDER_TIME_SAMPLES)
.define(TelemetryProperty.USED_MEMORY_SAMPLES)
.define(TelemetryProperty.NUMBER_OF_SAMPLES)
.define(TelemetryProperty.RENDER_DISTANCE)
.define(TelemetryProperty.DEDICATED_MEMORY_KB)
.optIn()
.register();
public static final TelemetryEventType WORLD_LOAD_TIMES = builder("world_load_times", "WorldLoadTimes")
.defineAll(WORLD_SESSION_PROPERTIES)
.define(TelemetryProperty.WORLD_LOAD_TIME_MS)
.define(TelemetryProperty.NEW_WORLD)
.optIn()
.register();
public static final TelemetryEventType WORLD_UNLOADED = builder("world_unloaded", "WorldUnloaded")
.defineAll(WORLD_SESSION_PROPERTIES)
.define(TelemetryProperty.SECONDS_SINCE_LOAD)
.define(TelemetryProperty.TICKS_SINCE_LOAD)
.register();
public static final TelemetryEventType ADVANCEMENT_MADE = builder("advancement_made", "AdvancementMade")
.defineAll(WORLD_SESSION_PROPERTIES)
.define(TelemetryProperty.ADVANCEMENT_ID)
.define(TelemetryProperty.ADVANCEMENT_GAME_TIME)
.optIn()
.register();
public static final TelemetryEventType GAME_LOAD_TIMES = builder("game_load_times", "GameLoadTimes")
.defineAll(GLOBAL_PROPERTIES)
.define(TelemetryProperty.LOAD_TIME_TOTAL_TIME_MS)
.define(TelemetryProperty.LOAD_TIME_PRE_WINDOW_MS)
.define(TelemetryProperty.LOAD_TIME_BOOTSTRAP_MS)
.define(TelemetryProperty.LOAD_TIME_LOADING_OVERLAY_MS)
.optIn()
.register();
private final String id;
private final String exportKey;
private final List<TelemetryProperty<?>> properties;
private final boolean isOptIn;
private final MapCodec<TelemetryEventInstance> codec;
private TelemetryEventType(String id, String exportKey, List<TelemetryProperty<?>> properties, boolean isOptIn) {
this.id = id;
this.exportKey = exportKey;
this.properties = properties;
this.isOptIn = isOptIn;
this.codec = TelemetryPropertyMap.createCodec(properties).xmap(map -> new TelemetryEventInstance(this, map), TelemetryEventInstance::properties);
}
public static TelemetryEventType.Builder builder(String id, String exportKey) {
return new TelemetryEventType.Builder(id, exportKey);
}
public String id() {
return this.id;
}
public List<TelemetryProperty<?>> properties() {
return this.properties;
}
public MapCodec<TelemetryEventInstance> codec() {
return this.codec;
}
public boolean isOptIn() {
return this.isOptIn;
}
public TelemetryEvent export(TelemetrySession session, TelemetryPropertyMap input) {
TelemetryEvent output = session.createNewEvent(this.exportKey);
for (TelemetryProperty<?> property : this.properties) {
property.export(input, output);
}
return output;
}
public <T> boolean contains(TelemetryProperty<T> property) {
return this.properties.contains(property);
}
@Override
public String toString() {
return "TelemetryEventType[" + this.id + "]";
}
public MutableComponent title() {
return this.makeTranslation("title");
}
public MutableComponent description() {
return this.makeTranslation("description");
}
private MutableComponent makeTranslation(String suffix) {
return Component.translatable("telemetry.event." + this.id + "." + suffix);
}
public static List<TelemetryEventType> values() {
return List.copyOf(REGISTRY.values());
}
@OnlyIn(Dist.CLIENT)
public static class Builder {
private final String id;
private final String exportKey;
private final List<TelemetryProperty<?>> properties = new ArrayList<>();
private boolean isOptIn;
private Builder(String id, String exportKey) {
this.id = id;
this.exportKey = exportKey;
}
public TelemetryEventType.Builder defineAll(List<TelemetryProperty<?>> properties) {
this.properties.addAll(properties);
return this;
}
public <T> TelemetryEventType.Builder define(TelemetryProperty<T> property) {
this.properties.add(property);
return this;
}
public TelemetryEventType.Builder optIn() {
this.isOptIn = true;
return this;
}
public TelemetryEventType register() {
TelemetryEventType type = new TelemetryEventType(this.id, this.exportKey, List.copyOf(this.properties), this.isOptIn);
if (TelemetryEventType.REGISTRY.putIfAbsent(this.id, type) != null) {
throw new IllegalStateException("Duplicate TelemetryEventType with key: '" + this.id + "'");
} else {
return type;
}
}
}
}引用的其他类
-
- 引用位置:
字段/构造调用/返回值 - 关联成员:
TelemetryEventInstance()
- 引用位置:
-
- 引用位置:
参数/字段/返回值
- 引用位置:
-
- 引用位置:
参数/方法调用 - 关联成员:
TelemetryPropertyMap.createCodec()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Component.translatable()
- 引用位置:
-
- 引用位置:
返回值
- 引用位置: