WorldLoadEvent.java

net.minecraft.client.telemetry.events.WorldLoadEvent

信息

  • 全限定名:net.minecraft.client.telemetry.events.WorldLoadEvent
  • 类型:public class
  • 包:net.minecraft.client.telemetry.events
  • 源码路径:src/main/java/net/minecraft/client/telemetry/events/WorldLoadEvent.java
  • 起始行号:L15
  • 职责:

    TODO

字段/常量

  • eventSent

    • 类型: boolean
    • 修饰符: private
    • 源码定位: L16
    • 说明:

      TODO

  • gameMode

    • 类型: TelemetryProperty.GameMode
    • 修饰符: private
    • 源码定位: L17
    • 说明:

      TODO

  • serverBrand

    • 类型: String
    • 修饰符: private
    • 源码定位: L18
    • 说明:

      TODO

  • minigameName

    • 类型: String
    • 修饰符: private final
    • 源码定位: L19
    • 说明:

      TODO

内部类/嵌套类型

构造器

public WorldLoadEvent(String minigameName) @ L21

  • 构造器名:WorldLoadEvent
  • 源码定位:L21
  • 修饰符:public

参数:

  • minigameName: String

说明:

TODO

方法

下面的方法块按源码顺序生成。

public void addProperties(TelemetryPropertyMap.Builder properties) @ L25

  • 方法名:addProperties
  • 源码定位:L25
  • 返回类型:void
  • 修饰符:public

参数:

  • properties: TelemetryPropertyMap.Builder

说明:

TODO

private TelemetryProperty.ServerType getServerType() @ L33

  • 方法名:getServerType
  • 源码定位:L33
  • 返回类型:TelemetryProperty.ServerType
  • 修饰符:private

参数:

说明:

TODO

public boolean send(TelemetryEventSender eventSender) @ L42

  • 方法名:send
  • 源码定位:L42
  • 返回类型:boolean
  • 修饰符:public

参数:

  • eventSender: TelemetryEventSender

说明:

TODO

public void setGameMode(GameType type, boolean hardcore) @ L57

  • 方法名:setGameMode
  • 源码定位:L57
  • 返回类型:void
  • 修饰符:public

参数:

  • type: GameType
  • hardcore: boolean

说明:

TODO

public void setServerBrand(String serverBrand) @ L66

  • 方法名:setServerBrand
  • 源码定位:L66
  • 返回类型:void
  • 修饰符:public

参数:

  • serverBrand: String

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class WorldLoadEvent {
    private boolean eventSent;
    private TelemetryProperty.@Nullable GameMode gameMode;
    private @Nullable String serverBrand;
    private final @Nullable String minigameName;
 
    public WorldLoadEvent(@Nullable String minigameName) {
        this.minigameName = minigameName;
    }
 
    public void addProperties(TelemetryPropertyMap.Builder properties) {
        if (this.serverBrand != null) {
            properties.put(TelemetryProperty.SERVER_MODDED, !this.serverBrand.equals("vanilla"));
        }
 
        properties.put(TelemetryProperty.SERVER_TYPE, this.getServerType());
    }
 
    private TelemetryProperty.ServerType getServerType() {
        ServerData server = Minecraft.getInstance().getCurrentServer();
        if (server != null && server.isRealm()) {
            return TelemetryProperty.ServerType.REALM;
        } else {
            return Minecraft.getInstance().hasSingleplayerServer() ? TelemetryProperty.ServerType.LOCAL : TelemetryProperty.ServerType.OTHER;
        }
    }
 
    public boolean send(TelemetryEventSender eventSender) {
        if (!this.eventSent && this.gameMode != null && this.serverBrand != null) {
            this.eventSent = true;
            eventSender.send(TelemetryEventType.WORLD_LOADED, properties -> {
                properties.put(TelemetryProperty.GAME_MODE, this.gameMode);
                if (this.minigameName != null) {
                    properties.put(TelemetryProperty.REALMS_MAP_CONTENT, this.minigameName);
                }
            });
            return true;
        } else {
            return false;
        }
    }
 
    public void setGameMode(GameType type, boolean hardcore) {
        this.gameMode = switch (type) {
            case SURVIVAL -> hardcore ? TelemetryProperty.GameMode.HARDCORE : TelemetryProperty.GameMode.SURVIVAL;
            case CREATIVE -> TelemetryProperty.GameMode.CREATIVE;
            case ADVENTURE -> TelemetryProperty.GameMode.ADVENTURE;
            case SPECTATOR -> TelemetryProperty.GameMode.SPECTATOR;
        };
    }
 
    public void setServerBrand(String serverBrand) {
        this.serverBrand = serverBrand;
    }
}

引用的其他类