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
official xh
intermediary net/minecraft/class_5349
named net/minecraft/server/function/FunctionLoader
  • Field Details

    • LOGGER

      private static final Logger LOGGER
      Mappings:
      Namespace Name Mixin selector
      official a Lxh;a:Lorg/apache/logging/log4j/Logger;
      intermediary field_25326 Lnet/minecraft/class_5349;field_25326:Lorg/apache/logging/log4j/Logger;
      named LOGGER Lnet/minecraft/server/function/FunctionLoader;LOGGER:Lorg/apache/logging/log4j/Logger;
    • EXTENSION

      private static final String EXTENSION
      See Also:
      Mappings:
      Namespace Name Mixin selector
      official b Lxh;b:Ljava/lang/String;
      intermediary field_33385 Lnet/minecraft/class_5349;field_33385:Ljava/lang/String;
      named EXTENSION Lnet/minecraft/server/function/FunctionLoader;EXTENSION:Ljava/lang/String;
    • PATH_PREFIX_LENGTH

      private static final int PATH_PREFIX_LENGTH
      Mappings:
      Namespace Name Mixin selector
      official c Lxh;c:I
      intermediary field_25327 Lnet/minecraft/class_5349;field_25327:I
      named PATH_PREFIX_LENGTH Lnet/minecraft/server/function/FunctionLoader;PATH_PREFIX_LENGTH:I
    • EXTENSION_LENGTH

      private static final int EXTENSION_LENGTH
      Mappings:
      Namespace Name Mixin selector
      official d Lxh;d:I
      intermediary field_25328 Lnet/minecraft/class_5349;field_25328:I
      named EXTENSION_LENGTH Lnet/minecraft/server/function/FunctionLoader;EXTENSION_LENGTH:I
    • functions

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

      private final TagGroupLoader<CommandFunction> tagLoader
      Mappings:
      Namespace Name Mixin selector
      official f Lxh;f:Lagd;
      intermediary field_25330 Lnet/minecraft/class_5349;field_25330:Lnet/minecraft/class_3503;
      named tagLoader Lnet/minecraft/server/function/FunctionLoader;tagLoader:Lnet/minecraft/tag/TagGroupLoader;
    • tags

      private volatile TagGroup<CommandFunction> tags
      Mappings:
      Namespace Name Mixin selector
      official g Lxh;g:Lagb;
      intermediary field_25801 Lnet/minecraft/class_5349;field_25801:Lnet/minecraft/class_5414;
      named tags Lnet/minecraft/server/function/FunctionLoader;tags:Lnet/minecraft/tag/TagGroup;
    • level

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

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

    • FunctionLoader

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

    • get

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

      public Map<Identifier,CommandFunction> getFunctions()
      Mappings:
      Namespace Name Mixin selector
      official a Lxh;a()Ljava/util/Map;
      intermediary method_29447 Lnet/minecraft/class_5349;method_29447()Ljava/util/Map;
      named getFunctions Lnet/minecraft/server/function/FunctionLoader;getFunctions()Ljava/util/Map;
    • getTags

      public TagGroup<CommandFunction> getTags()
      Mappings:
      Namespace Name Mixin selector
      official b Lxh;b()Lagb;
      intermediary method_29458 Lnet/minecraft/class_5349;method_29458()Lnet/minecraft/class_5414;
      named getTags Lnet/minecraft/server/function/FunctionLoader;getTags()Lnet/minecraft/tag/TagGroup;
    • getTagOrEmpty

      public Tag<CommandFunction> getTagOrEmpty(Identifier id)
      Mappings:
      Namespace Name Mixin selector
      official b Lxh;b(Lww;)Laga;
      intermediary method_29459 Lnet/minecraft/class_5349;method_29459(Lnet/minecraft/class_2960;)Lnet/minecraft/class_3494;
      named getTagOrEmpty Lnet/minecraft/server/function/FunctionLoader;getTagOrEmpty(Lnet/minecraft/util/Identifier;)Lnet/minecraft/tag/Tag;
    • 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:
      Mappings:
      Namespace Name Mixin selector
      official a Lado;a(Lado$a;Ladt;Lapu;Lapu;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;
    • readLines

      private static List<String> readLines(ResourceManager resourceManager, Identifier id)
      Mappings:
      Namespace Name Mixin selector
      official a Lxh;a(Ladt;Lww;)Ljava/util/List;
      intermediary method_29450 Lnet/minecraft/class_5349;method_29450(Lnet/minecraft/class_3300;Lnet/minecraft/class_2960;)Ljava/util/List;
      named readLines Lnet/minecraft/server/function/FunctionLoader;readLines(Lnet/minecraft/resource/ResourceManager;Lnet/minecraft/util/Identifier;)Ljava/util/List;