ScoreContents.java
net.minecraft.network.chat.contents.ScoreContents
信息
- 全限定名:net.minecraft.network.chat.contents.ScoreContents
- 类型:public record
- 包:net.minecraft.network.chat.contents
- 源码路径:src/main/java/net/minecraft/network/chat/contents/ScoreContents.java
- 起始行号:L26
- 实现:ComponentContents
- 职责:
TODO
字段/常量
-
INNER_CODEC- 类型:
MapCodec<ScoreContents> - 修饰符:
public static final - 源码定位:
L27 - 说明:
TODO
- 类型:
-
MAP_CODEC- 类型:
MapCodec<ScoreContents> - 修饰符:
public static final - 源码定位:
L34 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
- 无
方法
下面的方法块按源码顺序生成。
public MapCodec<ScoreContents> codec() @ L36
- 方法名:codec
- 源码定位:L36
- 返回类型:MapCodec
- 修饰符:public
参数:
- 无
说明:
TODO
private ScoreHolder findTargetName(CommandSourceStack source) @ L41
- 方法名:findTargetName
- 源码定位:L41
- 返回类型:ScoreHolder
- 修饰符:private
参数:
- source: CommandSourceStack
说明:
TODO
private MutableComponent getScore(ScoreHolder name, CommandSourceStack source) @ L59
- 方法名:getScore
- 源码定位:L59
- 返回类型:MutableComponent
- 修饰符:private
参数:
- name: ScoreHolder
- source: CommandSourceStack
说明:
TODO
public MutableComponent resolve(ResolutionContext context, int recursionDepth) @ L75
- 方法名:resolve
- 源码定位:L75
- 返回类型:MutableComponent
- 修饰符:public
参数:
- context: ResolutionContext
- recursionDepth: int
说明:
TODO
public String toString() @ L88
- 方法名:toString
- 源码定位:L88
- 返回类型:String
- 修饰符:public
参数:
- 无
说明:
TODO
代码
public record ScoreContents(Either<CompilableString<EntitySelector>, String> name, String objective) implements ComponentContents {
public static final MapCodec<ScoreContents> INNER_CODEC = RecordCodecBuilder.mapCodec(
i -> i.group(
Codec.either(EntitySelector.COMPILABLE_CODEC, Codec.STRING).fieldOf("name").forGetter(ScoreContents::name),
Codec.STRING.fieldOf("objective").forGetter(ScoreContents::objective)
)
.apply(i, ScoreContents::new)
);
public static final MapCodec<ScoreContents> MAP_CODEC = INNER_CODEC.fieldOf("score");
@Override
public MapCodec<ScoreContents> codec() {
return MAP_CODEC;
}
private ScoreHolder findTargetName(CommandSourceStack source) throws CommandSyntaxException {
Optional<CompilableString<EntitySelector>> selector = this.name.left();
if (selector.isPresent()) {
List<? extends Entity> entities = selector.get().compiled().findEntities(source);
if (!entities.isEmpty()) {
if (entities.size() != 1) {
throw EntityArgument.ERROR_NOT_SINGLE_ENTITY.create();
} else {
return entities.getFirst();
}
} else {
return ScoreHolder.forNameOnly(selector.get().source());
}
} else {
return ScoreHolder.forNameOnly(this.name.right().orElseThrow());
}
}
private MutableComponent getScore(ScoreHolder name, CommandSourceStack source) {
MinecraftServer server = source.getServer();
if (server != null) {
Scoreboard scoreboard = server.getScoreboard();
Objective objective = scoreboard.getObjective(this.objective);
if (objective != null) {
ReadOnlyScoreInfo scoreInfo = scoreboard.getPlayerScoreInfo(name, objective);
if (scoreInfo != null) {
return scoreInfo.formatValue(objective.numberFormatOrDefault(StyledFormat.NO_STYLE));
}
}
}
return Component.empty();
}
@Override
public MutableComponent resolve(ResolutionContext context, int recursionDepth) throws CommandSyntaxException {
CommandSourceStack source = context.source();
if (source == null) {
return Component.empty();
} else {
ScoreHolder scoreHolder = this.findTargetName(source);
Entity entity = context.defaultScoreboardEntity();
ScoreHolder scoreName = (ScoreHolder)(entity != null && scoreHolder.equals(ScoreHolder.WILDCARD) ? entity : scoreHolder);
return this.getScore(scoreName, source);
}
}
@Override
public String toString() {
return "score{name='" + this.name + "', objective='" + this.objective + "'}";
}
}引用的其他类
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Component.empty()
- 引用位置:
-
- 引用位置:
实现
- 引用位置:
-
- 引用位置:
返回值
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数/方法调用/返回值 - 关联成员:
ScoreHolder.forNameOnly()
- 引用位置: