Class FunctionLoader

java.lang.Object
net.minecraft.server.function.FunctionLoader
All Implemented Interfaces:
ResourceReloader

public class FunctionLoader extends Object implements ResourceReloader
The function loader holds the functions and function tags for a CommandFunctionManager to use. In the reloads, it loads the tags in one completable future and each function in a completable future for all functions.

The functions are stored in .mcfunction files; each line is one Minecraft command, with blank lines and contents starting with a trailing hash # sign ignored.

The function tags are ordered, unlike other tags. Each function's order in the collection of functions from the tag is determined by the order it is listed in the JSON files; if it appears multiple times through tag nesting, only its first appearance will be considered.

See Also:
Mappings:
Namespace Name
named net/minecraft/server/function/FunctionLoader
intermediary net/minecraft/class_5349
official aky
  • Field Details

    • LOGGER

      private static final Logger LOGGER
      Mappings:
      Namespace Name Mixin selector
      named LOGGER Lnet/minecraft/server/function/FunctionLoader;LOGGER:Lorg/slf4j/Logger;
      intermediary field_25326 Lnet/minecraft/class_5349;field_25326:Lorg/slf4j/Logger;
      official a Laky;a:Lorg/slf4j/Logger;
    • FINDER

      private static final ResourceFinder FINDER
      Mappings:
      Namespace Name Mixin selector
      named FINDER Lnet/minecraft/server/function/FunctionLoader;FINDER:Lnet/minecraft/resource/ResourceFinder;
      intermediary field_39978 Lnet/minecraft/class_5349;field_39978:Lnet/minecraft/class_7654;
      official b Laky;b:Lakd;
    • functions

      private volatile Map<Identifier,CommandFunction<ServerCommandSource>> functions
      Mappings:
      Namespace Name Mixin selector
      named functions Lnet/minecraft/server/function/FunctionLoader;functions:Ljava/util/Map;
      intermediary field_25329 Lnet/minecraft/class_5349;field_25329:Ljava/util/Map;
      official c Laky;c:Ljava/util/Map;
    • tagLoader

      Mappings:
      Namespace Name Mixin selector
      named tagLoader Lnet/minecraft/server/function/FunctionLoader;tagLoader:Lnet/minecraft/registry/tag/TagGroupLoader;
      intermediary field_25330 Lnet/minecraft/class_5349;field_25330:Lnet/minecraft/class_3503;
      official d Laky;d:Lawn;
    • tags

      Mappings:
      Namespace Name Mixin selector
      named tags Lnet/minecraft/server/function/FunctionLoader;tags:Ljava/util/Map;
      intermediary field_25801 Lnet/minecraft/class_5349;field_25801:Ljava/util/Map;
      official e Laky;e:Ljava/util/Map;
    • level

      private final int level
      Mappings:
      Namespace Name Mixin selector
      named level Lnet/minecraft/server/function/FunctionLoader;level:I
      intermediary field_25331 Lnet/minecraft/class_5349;field_25331:I
      official f Laky;f:I
    • commandDispatcher

      private final com.mojang.brigadier.CommandDispatcher<ServerCommandSource> commandDispatcher
      Mappings:
      Namespace Name Mixin selector
      named commandDispatcher Lnet/minecraft/server/function/FunctionLoader;commandDispatcher:Lcom/mojang/brigadier/CommandDispatcher;
      intermediary field_25332 Lnet/minecraft/class_5349;field_25332:Lcom/mojang/brigadier/CommandDispatcher;
      official g Laky;g:Lcom/mojang/brigadier/CommandDispatcher;
  • Constructor Details

    • FunctionLoader

      public FunctionLoader(int level, com.mojang.brigadier.CommandDispatcher<ServerCommandSource> commandDispatcher)
      Mappings:
      Namespace Name Mixin selector
      named <init> Lnet/minecraft/server/function/FunctionLoader;<init>(ILcom/mojang/brigadier/CommandDispatcher;)V
      intermediary <init> Lnet/minecraft/class_5349;<init>(ILcom/mojang/brigadier/CommandDispatcher;)V
      official <init> Laky;<init>(ILcom/mojang/brigadier/CommandDispatcher;)V
  • Method Details

    • get

      Mappings:
      Namespace Name Mixin selector
      named get Lnet/minecraft/server/function/FunctionLoader;get(Lnet/minecraft/util/Identifier;)Ljava/util/Optional;
      intermediary method_29456 Lnet/minecraft/class_5349;method_29456(Lnet/minecraft/class_2960;)Ljava/util/Optional;
      official a Laky;a(Lakk;)Ljava/util/Optional;
    • getFunctions

      Mappings:
      Namespace Name Mixin selector
      named getFunctions Lnet/minecraft/server/function/FunctionLoader;getFunctions()Ljava/util/Map;
      intermediary method_29447 Lnet/minecraft/class_5349;method_29447()Ljava/util/Map;
      official a Laky;a()Ljava/util/Map;
    • getTagOrEmpty

      Mappings:
      Namespace Name Mixin selector
      named getTagOrEmpty Lnet/minecraft/server/function/FunctionLoader;getTagOrEmpty(Lnet/minecraft/util/Identifier;)Ljava/util/Collection;
      intermediary method_29459 Lnet/minecraft/class_5349;method_29459(Lnet/minecraft/class_2960;)Ljava/util/Collection;
      official b Laky;b(Lakk;)Ljava/util/Collection;
    • getTags

      public Iterable<Identifier> getTags()
      Mappings:
      Namespace Name Mixin selector
      named getTags Lnet/minecraft/server/function/FunctionLoader;getTags()Ljava/lang/Iterable;
      intermediary method_29458 Lnet/minecraft/class_5349;method_29458()Ljava/lang/Iterable;
      official b Laky;b()Ljava/lang/Iterable;
    • reload

      public 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:
      • invalid reference
        ReloadableResourceManagerImpl#reload(Executor, Executor, CompletableFuture, List)
      Mappings:
      Namespace Name Mixin selector
      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;
      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;
      official a Latq;a(Latq$a;Latw;Lbmv;Lbmv;Ljava/util/concurrent/Executor;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;
    • readLines

      private static List<String> readLines(Resource resource)
      Mappings:
      Namespace Name Mixin selector
      named readLines Lnet/minecraft/server/function/FunctionLoader;readLines(Lnet/minecraft/resource/Resource;)Ljava/util/List;
      intermediary method_29450 Lnet/minecraft/class_5349;method_29450(Lnet/minecraft/class_3298;)Ljava/util/List;
      official a Laky;a(Latu;)Ljava/util/List;