SpriteSourceList.java
net.minecraft.client.renderer.texture.atlas.SpriteSourceList
信息
- 全限定名:net.minecraft.client.renderer.texture.atlas.SpriteSourceList
- 类型:public class
- 包:net.minecraft.client.renderer.texture.atlas
- 源码路径:src/main/java/net/minecraft/client/renderer/texture/atlas/SpriteSourceList.java
- 起始行号:L29
- 职责:
TODO
字段/常量
-
LOGGER- 类型:
Logger - 修饰符:
private static final - 源码定位:
L30 - 说明:
TODO
- 类型:
-
ATLAS_INFO_CONVERTER- 类型:
FileToIdConverter - 修饰符:
private static final - 源码定位:
L31 - 说明:
TODO
- 类型:
-
sources- 类型:
List<SpriteSource> - 修饰符:
private final - 源码定位:
L32 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
private SpriteSourceList(List<SpriteSource> sources) @ L34
- 构造器名:SpriteSourceList
- 源码定位:L34
- 修饰符:private
参数:
- sources: List
说明:
TODO
方法
下面的方法块按源码顺序生成。
public List<SpriteSource.Loader> list(ResourceManager resourceManager) @ L38
- 方法名:list
- 源码定位:L38
- 返回类型:List<SpriteSource.Loader>
- 修饰符:public
参数:
- resourceManager: ResourceManager
说明:
TODO
public static SpriteSourceList load(ResourceManager resourceManager, Identifier atlasId) @ L73
- 方法名:load
- 源码定位:L73
- 返回类型:SpriteSourceList
- 修饰符:public static
参数:
- resourceManager: ResourceManager
- atlasId: Identifier
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class SpriteSourceList {
private static final Logger LOGGER = LogUtils.getLogger();
private static final FileToIdConverter ATLAS_INFO_CONVERTER = new FileToIdConverter("atlases", ".json");
private final List<SpriteSource> sources;
private SpriteSourceList(List<SpriteSource> sources) {
this.sources = sources;
}
public List<SpriteSource.Loader> list(ResourceManager resourceManager) {
final Map<Identifier, SpriteSource.DiscardableLoader> sprites = new HashMap<>();
SpriteSource.Output output = new SpriteSource.Output() {
{
Objects.requireNonNull(SpriteSourceList.this);
}
@Override
public void add(Identifier id, SpriteSource.DiscardableLoader sprite) {
SpriteSource.DiscardableLoader previous = sprites.put(id, sprite);
if (previous != null) {
previous.discard();
}
}
@Override
public void removeAll(Predicate<Identifier> predicate) {
Iterator<Entry<Identifier, SpriteSource.DiscardableLoader>> it = sprites.entrySet().iterator();
while (it.hasNext()) {
Entry<Identifier, SpriteSource.DiscardableLoader> entry = it.next();
if (predicate.test(entry.getKey())) {
entry.getValue().discard();
it.remove();
}
}
}
};
this.sources.forEach(s -> s.run(resourceManager, output));
Builder<SpriteSource.Loader> result = ImmutableList.builder();
result.add(loader -> MissingTextureAtlasSprite.create());
result.addAll(sprites.values());
return result.build();
}
public static SpriteSourceList load(ResourceManager resourceManager, Identifier atlasId) {
Identifier resourceId = ATLAS_INFO_CONVERTER.idToFile(atlasId);
List<SpriteSource> loaders = new ArrayList<>();
for (Resource entry : resourceManager.getResourceStack(resourceId)) {
try (BufferedReader reader = entry.openAsReader()) {
Dynamic<JsonElement> contents = new Dynamic<>(JsonOps.INSTANCE, StrictJsonParser.parse(reader));
loaders.addAll(SpriteSources.FILE_CODEC.parse(contents).getOrThrow());
} catch (Exception var11) {
LOGGER.error("Failed to parse atlas definition {} in pack {}", resourceId, entry.sourcePackId(), var11);
}
}
return new SpriteSourceList(loaders);
}
}引用的其他类
-
- 引用位置:
方法调用 - 关联成员:
MissingTextureAtlasSprite.create()
- 引用位置:
-
- 引用位置:
参数/字段/方法调用/构造调用/返回值 - 关联成员:
Output(), SpriteSource.Output()
- 引用位置:
-
- 引用位置:
字段/构造调用 - 关联成员:
FileToIdConverter()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
StrictJsonParser.parse()
- 引用位置: