ClientMannequin.java
net.minecraft.client.entity.ClientMannequin
信息
- 全限定名:net.minecraft.client.entity.ClientMannequin
- 类型:public class
- 包:net.minecraft.client.entity
- 源码路径:src/main/java/net/minecraft/client/entity/ClientMannequin.java
- 起始行号:L21
- 继承:Mannequin
- 实现:ClientAvatarEntity
- 职责:
TODO
字段/常量
-
LOGGER- 类型:
Logger - 修饰符:
private static final - 源码定位:
L22 - 说明:
TODO
- 类型:
-
DEFAULT_SKIN- 类型:
PlayerSkin - 修饰符:
public static final - 源码定位:
L23 - 说明:
TODO
- 类型:
-
avatarState- 类型:
ClientAvatarState - 修饰符:
private final - 源码定位:
L24 - 说明:
TODO
- 类型:
-
skinLookup- 类型:
CompletableFuture<Optional<PlayerSkin>> - 修饰符:
private - 源码定位:
L25 - 说明:
TODO
- 类型:
-
skin- 类型:
PlayerSkin - 修饰符:
private - 源码定位:
L26 - 说明:
TODO
- 类型:
-
skinRenderCache- 类型:
PlayerSkinRenderCache - 修饰符:
private final - 源码定位:
L27 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
public ClientMannequin(Level level, PlayerSkinRenderCache skinRenderCache) @ L33
- 构造器名:ClientMannequin
- 源码定位:L33
- 修饰符:public
参数:
- level: Level
- skinRenderCache: PlayerSkinRenderCache
说明:
TODO
方法
下面的方法块按源码顺序生成。
public static void registerOverrides(PlayerSkinRenderCache cache) @ L29
- 方法名:registerOverrides
- 源码定位:L29
- 返回类型:void
- 修饰符:public static
参数:
- cache: PlayerSkinRenderCache
说明:
TODO
public void tick() @ L38
- 方法名:tick
- 源码定位:L38
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
public void onSyncedDataUpdated(EntityDataAccessor<?> accessor) @ L52
- 方法名:onSyncedDataUpdated
- 源码定位:L52
- 返回类型:void
- 修饰符:public
参数:
- accessor: EntityDataAccessor<?>
说明:
TODO
private void updateSkin() @ L60
- 方法名:updateSkin
- 源码定位:L60
- 返回类型:void
- 修饰符:private
参数:
- 无
说明:
TODO
public ClientAvatarState avatarState() @ L70
- 方法名:avatarState
- 源码定位:L70
- 返回类型:ClientAvatarState
- 修饰符:public
参数:
- 无
说明:
TODO
public PlayerSkin getSkin() @ L75
- 方法名:getSkin
- 源码定位:L75
- 返回类型:PlayerSkin
- 修饰符:public
参数:
- 无
说明:
TODO
private void setSkin(PlayerSkin skin) @ L80
- 方法名:setSkin
- 源码定位:L80
- 返回类型:void
- 修饰符:private
参数:
- skin: PlayerSkin
说明:
TODO
public Component belowNameDisplay() @ L84
- 方法名:belowNameDisplay
- 源码定位:L84
- 返回类型:Component
- 修饰符:public
参数:
- 无
说明:
TODO
public Parrot.Variant getParrotVariantOnShoulder(boolean left) @ L89
- 方法名:getParrotVariantOnShoulder
- 源码定位:L89
- 返回类型:Parrot.Variant
- 修饰符:public
参数:
- left: boolean
说明:
TODO
public boolean showExtraEars() @ L94
- 方法名:showExtraEars
- 源码定位:L94
- 返回类型:boolean
- 修饰符:public
参数:
- 无
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class ClientMannequin extends Mannequin implements ClientAvatarEntity {
private static final Logger LOGGER = LogUtils.getLogger();
public static final PlayerSkin DEFAULT_SKIN = DefaultPlayerSkin.get(Mannequin.DEFAULT_PROFILE.partialProfile());
private final ClientAvatarState avatarState = new ClientAvatarState();
private @Nullable CompletableFuture<Optional<PlayerSkin>> skinLookup;
private PlayerSkin skin = DEFAULT_SKIN;
private final PlayerSkinRenderCache skinRenderCache;
public static void registerOverrides(PlayerSkinRenderCache cache) {
Mannequin.constructor = (type, level) -> (Mannequin)(level instanceof ClientLevel ? new ClientMannequin(level, cache) : new Mannequin(type, level));
}
public ClientMannequin(Level level, PlayerSkinRenderCache skinRenderCache) {
super(level);
this.skinRenderCache = skinRenderCache;
}
@Override
public void tick() {
super.tick();
this.avatarState.tick(this.position(), this.getDeltaMovement());
if (this.skinLookup != null && this.skinLookup.isDone()) {
try {
this.skinLookup.get().ifPresent(this::setSkin);
this.skinLookup = null;
} catch (Exception var2) {
LOGGER.error("Error when trying to look up skin", (Throwable)var2);
}
}
}
@Override
public void onSyncedDataUpdated(EntityDataAccessor<?> accessor) {
super.onSyncedDataUpdated(accessor);
if (accessor.equals(DATA_PROFILE)) {
this.updateSkin();
}
}
private void updateSkin() {
if (this.skinLookup != null) {
CompletableFuture<Optional<PlayerSkin>> future = this.skinLookup;
this.skinLookup = null;
future.cancel(false);
}
this.skinLookup = this.skinRenderCache.lookup(this.getProfile()).thenApply(info -> info.map(PlayerSkinRenderCache.RenderInfo::playerSkin));
}
@Override
public ClientAvatarState avatarState() {
return this.avatarState;
}
@Override
public PlayerSkin getSkin() {
return this.skin;
}
private void setSkin(PlayerSkin skin) {
this.skin = skin;
}
@Override
public @Nullable Component belowNameDisplay() {
return this.getDescription();
}
@Override
public Parrot.@Nullable Variant getParrotVariantOnShoulder(boolean left) {
return null;
}
@Override
public boolean showExtraEars() {
return false;
}
}引用的其他类
-
- 引用位置:
实现
- 引用位置:
-
- 引用位置:
字段/构造调用/返回值 - 关联成员:
ClientAvatarState()
- 引用位置:
-
- 引用位置:
参数/字段
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
DefaultPlayerSkin.get()
- 引用位置:
-
- 引用位置:
返回值
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
返回值
- 引用位置:
-
- 引用位置:
构造调用/继承 - 关联成员:
Mannequin()
- 引用位置:
-
- 引用位置:
参数/字段/返回值
- 引用位置:
-
- 引用位置:
参数
- 引用位置: