Class SinglePreparationResourceReloader<T>

java.lang.Object
net.minecraft.resource.SinglePreparationResourceReloader<T>
Type Parameters:
T - the intermediate object type
All Implemented Interfaces:
ResourceReloader
Direct Known Subclasses:
FoliageColormapResourceSupplier, GrassColormapResourceSupplier, JsonDataLoader, PeriodicNotificationManager, SoundManager, SplashTextResourceSupplier, VideoWarningManager

public abstract class SinglePreparationResourceReloader<T> extends Object implements ResourceReloader
A base resource reloader implementation that prepares an object in a single call (as opposed to in multiple concurrent tasks) and handles the prepared object in the apply stage.
Mappings:
Namespace Name
official akj
intermediary net/minecraft/class_4080
named net/minecraft/resource/SinglePreparationResourceReloader
  • Constructor Details

    • SinglePreparationResourceReloader

      public SinglePreparationResourceReloader()
  • Method Details

    • reload

      public final CompletableFuture<Void> reload(ResourceReloader.Synchronizer synchronizer, ResourceManager manager, Profiler prepareProfiler, Profiler applyProfiler, Executor prepareExecutor, Executor applyExecutor)
      Performs a reload. Returns a future that is completed when the reload is completed.

      In a reload, there is a prepare stage and an apply stage. For the prepare stage, you should create completable futures with CompletableFuture.supplyAsync(..., prepareExecutor) to ensure the prepare actions are done with the prepare executor. Then, you should have a completable future for all the prepared actions, and call combinedPrepare.thenCompose(synchronizer::waitFor) to notify the synchronizer. Finally, you should run CompletableFuture.thenAcceptAsync(..., applyExecutor) for apply actions. In the end, returns the result of thenAcceptAsync.

      Specified by:
      reload in interface ResourceReloader
      Parameters:
      synchronizer - the synchronizer
      manager - the resource manager
      prepareProfiler - the profiler for prepare stage
      applyProfiler - the profiler for apply stage
      prepareExecutor - the executor for prepare stage
      applyExecutor - the executor for apply stage
      Returns:
      a future for the reload
      See Also:
      Mappings:
      Namespace Name Mixin selector
      official a Lajy;a(Lajy$a;Lake;Lazc;Lazc;Ljava/util/concurrent/Executor;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;
      intermediary method_25931 Lnet/minecraft/class_3302;method_25931(Lnet/minecraft/class_3302$class_4045;Lnet/minecraft/class_3300;Lnet/minecraft/class_3695;Lnet/minecraft/class_3695;Ljava/util/concurrent/Executor;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;
      named reload Lnet/minecraft/resource/ResourceReloader;reload(Lnet/minecraft/resource/ResourceReloader$Synchronizer;Lnet/minecraft/resource/ResourceManager;Lnet/minecraft/util/profiler/Profiler;Lnet/minecraft/util/profiler/Profiler;Ljava/util/concurrent/Executor;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;
    • prepare

      protected abstract T prepare(ResourceManager manager, Profiler profiler)
      Prepares the intermediate object.

      This method is called in the prepare executor in a reload.

      Parameters:
      manager - the resource manager
      profiler - the prepare profiler
      Returns:
      the prepared object
      Mappings:
      Namespace Name Mixin selector
      official b Lakj;b(Lake;Lazc;)Ljava/lang/Object;
      intermediary method_18789 Lnet/minecraft/class_4080;method_18789(Lnet/minecraft/class_3300;Lnet/minecraft/class_3695;)Ljava/lang/Object;
      named prepare Lnet/minecraft/resource/SinglePreparationResourceReloader;prepare(Lnet/minecraft/resource/ResourceManager;Lnet/minecraft/util/profiler/Profiler;)Ljava/lang/Object;
    • apply

      protected abstract void apply(T prepared, ResourceManager manager, Profiler profiler)
      Handles the prepared intermediate object.

      This method is called in the apply executor, or the game engine, in a reload.

      Parameters:
      prepared - the prepared object
      manager - the resource manager
      profiler - the apply profiler
      Mappings:
      Namespace Name Mixin selector
      official a Lakj;a(Ljava/lang/Object;Lake;Lazc;)V
      intermediary method_18788 Lnet/minecraft/class_4080;method_18788(Ljava/lang/Object;Lnet/minecraft/class_3300;Lnet/minecraft/class_3695;)V
      named apply Lnet/minecraft/resource/SinglePreparationResourceReloader;apply(Ljava/lang/Object;Lnet/minecraft/resource/ResourceManager;Lnet/minecraft/util/profiler/Profiler;)V