PlayerSocialManager.java

net.minecraft.client.gui.screens.social.PlayerSocialManager

信息

  • 全限定名:net.minecraft.client.gui.screens.social.PlayerSocialManager
  • 类型:public class
  • 包:net.minecraft.client.gui.screens.social
  • 源码路径:src/main/java/net/minecraft/client/gui/screens/social/PlayerSocialManager.java
  • 起始行号:L18
  • 职责:

    TODO

字段/常量

  • minecraft

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

      TODO

  • hiddenPlayers

    • 类型: Set<UUID>
    • 修饰符: private final
    • 源码定位: L20
    • 说明:

      TODO

  • service

    • 类型: UserApiService
    • 修饰符: private final
    • 源码定位: L21
    • 说明:

      TODO

  • discoveredNamesToUUID

    • 类型: Map<String,UUID>
    • 修饰符: private final
    • 源码定位: L22
    • 说明:

      TODO

  • onlineMode

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

      TODO

  • pendingBlockListRefresh

    • 类型: CompletableFuture<?>
    • 修饰符: private
    • 源码定位: L24
    • 说明:

      TODO

内部类/嵌套类型

构造器

public PlayerSocialManager(Minecraft minecraft, UserApiService service) @ L26

  • 构造器名:PlayerSocialManager
  • 源码定位:L26
  • 修饰符:public

参数:

  • minecraft: Minecraft
  • service: UserApiService

说明:

TODO

方法

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

public void hidePlayer(UUID id) @ L31

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

参数:

  • id: UUID

说明:

TODO

public void showPlayer(UUID id) @ L35

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

参数:

  • id: UUID

说明:

TODO

public boolean shouldHideMessageFrom(UUID id) @ L39

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

参数:

  • id: UUID

说明:

TODO

public boolean isHidden(UUID id) @ L43

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

参数:

  • id: UUID

说明:

TODO

public void startOnlineMode() @ L47

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

参数:

说明:

TODO

public void stopOnlineMode() @ L52

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

参数:

说明:

TODO

public boolean isBlocked(UUID id) @ L56

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

参数:

  • id: UUID

说明:

TODO

public Set<UUID> getHiddenPlayers() @ L65

  • 方法名:getHiddenPlayers
  • 源码定位:L65
  • 返回类型:Set
  • 修饰符:public

参数:

说明:

TODO

public UUID getDiscoveredUUID(String name) @ L69

  • 方法名:getDiscoveredUUID
  • 源码定位:L69
  • 返回类型:UUID
  • 修饰符:public

参数:

  • name: String

说明:

TODO

public void addPlayer(PlayerInfo info) @ L73

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

参数:

  • info: PlayerInfo

说明:

TODO

public void removePlayer(UUID id) @ L81

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

参数:

  • id: UUID

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class PlayerSocialManager {
    private final Minecraft minecraft;
    private final Set<UUID> hiddenPlayers = Sets.newHashSet();
    private final UserApiService service;
    private final Map<String, UUID> discoveredNamesToUUID = Maps.newHashMap();
    private boolean onlineMode;
    private CompletableFuture<?> pendingBlockListRefresh = CompletableFuture.completedFuture(null);
 
    public PlayerSocialManager(Minecraft minecraft, UserApiService service) {
        this.minecraft = minecraft;
        this.service = service;
    }
 
    public void hidePlayer(UUID id) {
        this.hiddenPlayers.add(id);
    }
 
    public void showPlayer(UUID id) {
        this.hiddenPlayers.remove(id);
    }
 
    public boolean shouldHideMessageFrom(UUID id) {
        return this.isHidden(id) || this.isBlocked(id);
    }
 
    public boolean isHidden(UUID id) {
        return this.hiddenPlayers.contains(id);
    }
 
    public void startOnlineMode() {
        this.onlineMode = true;
        this.pendingBlockListRefresh = this.pendingBlockListRefresh.thenRunAsync(this.service::refreshBlockList, Util.ioPool());
    }
 
    public void stopOnlineMode() {
        this.onlineMode = false;
    }
 
    public boolean isBlocked(UUID id) {
        if (!this.onlineMode) {
            return false;
        } else {
            this.pendingBlockListRefresh.join();
            return this.service.isBlockedPlayer(id);
        }
    }
 
    public Set<UUID> getHiddenPlayers() {
        return this.hiddenPlayers;
    }
 
    public UUID getDiscoveredUUID(String name) {
        return this.discoveredNamesToUUID.getOrDefault(name, Util.NIL_UUID);
    }
 
    public void addPlayer(PlayerInfo info) {
        GameProfile gameProfile = info.getProfile();
        this.discoveredNamesToUUID.put(gameProfile.name(), gameProfile.id());
        if (this.minecraft.screen instanceof SocialInteractionsScreen screen) {
            screen.onAddPlayer(info);
        }
    }
 
    public void removePlayer(UUID id) {
        if (this.minecraft.screen instanceof SocialInteractionsScreen screen) {
            screen.onRemovePlayer(id);
        }
    }
}

引用的其他类

  • Minecraft

    • 引用位置: 参数/字段
  • PlayerInfo

    • 引用位置: 参数
  • Util

    • 引用位置: 方法调用
    • 关联成员: Util.ioPool()