ReloadableResourceManager.java

net.minecraft.server.packs.resources.ReloadableResourceManager

信息

  • 全限定名:net.minecraft.server.packs.resources.ReloadableResourceManager
  • 类型:public class
  • 包:net.minecraft.server.packs.resources
  • 源码路径:src/main/java/net/minecraft/server/packs/resources/ReloadableResourceManager.java
  • 起始行号:L20
  • 实现:AutoCloseable, ResourceManager
  • 职责:

    TODO

字段/常量

  • LOGGER

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

      TODO

  • resources

    • 类型: CloseableResourceManager
    • 修饰符: private
    • 源码定位: L22
    • 说明:

      TODO

  • listeners

    • 类型: List<PreparableReloadListener>
    • 修饰符: private final
    • 源码定位: L23
    • 说明:

      TODO

  • type

    • 类型: PackType
    • 修饰符: private final
    • 源码定位: L24
    • 说明:

      TODO

内部类/嵌套类型

构造器

public ReloadableResourceManager(PackType type) @ L26

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

参数:

  • type: PackType

说明:

TODO

方法

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

public void close() @ L31

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

参数:

说明:

TODO

public void registerReloadListener(PreparableReloadListener listener) @ L36

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

参数:

  • listener: PreparableReloadListener

说明:

TODO

public ReloadInstance createReload(Executor backgroundExecutor, Executor mainThreadExecutor, CompletableFuture<Unit> initialTask, List<PackResources> resourcePacks) @ L40

  • 方法名:createReload
  • 源码定位:L40
  • 返回类型:ReloadInstance
  • 修饰符:public

参数:

  • backgroundExecutor: Executor
  • mainThreadExecutor: Executor
  • initialTask: CompletableFuture
  • resourcePacks: List

说明:

TODO

public Optional<Resource> getResource(Identifier location) @ L49

  • 方法名:getResource
  • 源码定位:L49
  • 返回类型:Optional
  • 修饰符:public

参数:

  • location: Identifier

说明:

TODO

public Set<String> getNamespaces() @ L54

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

参数:

说明:

TODO

public List<Resource> getResourceStack(Identifier location) @ L59

  • 方法名:getResourceStack
  • 源码定位:L59
  • 返回类型:List
  • 修饰符:public

参数:

  • location: Identifier

说明:

TODO

public Map<Identifier,Resource> listResources(String directory, Predicate<Identifier> filenameFilter) @ L64

  • 方法名:listResources
  • 源码定位:L64
  • 返回类型:Map<Identifier,Resource>
  • 修饰符:public

参数:

  • directory: String
  • filenameFilter: Predicate

说明:

TODO

public Map<Identifier,List<Resource>> listResourceStacks(String directory, Predicate<Identifier> filter) @ L69

  • 方法名:listResourceStacks
  • 源码定位:L69
  • 返回类型:Map<Identifier,List>
  • 修饰符:public

参数:

  • directory: String
  • filter: Predicate

说明:

TODO

public Stream<PackResources> listPacks() @ L74

  • 方法名:listPacks
  • 源码定位:L74
  • 返回类型:Stream
  • 修饰符:public

参数:

说明:

TODO

代码

public class ReloadableResourceManager implements AutoCloseable, ResourceManager {
    private static final Logger LOGGER = LogUtils.getLogger();
    private CloseableResourceManager resources;
    private final List<PreparableReloadListener> listeners = Lists.newArrayList();
    private final PackType type;
 
    public ReloadableResourceManager(PackType type) {
        this.type = type;
        this.resources = new MultiPackResourceManager(type, List.of());
    }
 
    @Override
    public void close() {
        this.resources.close();
    }
 
    public void registerReloadListener(PreparableReloadListener listener) {
        this.listeners.add(listener);
    }
 
    public ReloadInstance createReload(
        Executor backgroundExecutor, Executor mainThreadExecutor, CompletableFuture<Unit> initialTask, List<PackResources> resourcePacks
    ) {
        LOGGER.info("Reloading ResourceManager: {}", LogUtils.defer(() -> resourcePacks.stream().map(PackResources::packId).collect(Collectors.joining(", "))));
        this.resources.close();
        this.resources = new MultiPackResourceManager(this.type, resourcePacks);
        return SimpleReloadInstance.create(this.resources, this.listeners, backgroundExecutor, mainThreadExecutor, initialTask, LOGGER.isDebugEnabled());
    }
 
    @Override
    public Optional<Resource> getResource(Identifier location) {
        return this.resources.getResource(location);
    }
 
    @Override
    public Set<String> getNamespaces() {
        return this.resources.getNamespaces();
    }
 
    @Override
    public List<Resource> getResourceStack(Identifier location) {
        return this.resources.getResourceStack(location);
    }
 
    @Override
    public Map<Identifier, Resource> listResources(String directory, Predicate<Identifier> filenameFilter) {
        return this.resources.listResources(directory, filenameFilter);
    }
 
    @Override
    public Map<Identifier, List<Resource>> listResourceStacks(String directory, Predicate<Identifier> filter) {
        return this.resources.listResourceStacks(directory, filter);
    }
 
    @Override
    public Stream<PackResources> listPacks() {
        return this.resources.listPacks();
    }
}

引用的其他类