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 adq
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 Ladq;a:Lorg/slf4j/Logger;
      intermediary field_25326 Lnet/minecraft/class_5349;field_25326:Lorg/slf4j/Logger;
      named LOGGER Lnet/minecraft/server/function/FunctionLoader;LOGGER:Lorg/slf4j/Logger;
    • FINDER

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

      private volatile Map<Identifier,CommandFunction> functions
      Mappings:
      Namespace Name Mixin selector
      official c Ladq;c: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 d Ladq;d:Lanw;
      intermediary field_25330 Lnet/minecraft/class_5349;field_25330:Lnet/minecraft/class_3503;
      named tagLoader Lnet/minecraft/server/function/FunctionLoader;tagLoader:Lnet/minecraft/registry/tag/TagGroupLoader;
    • tags

      private volatile Map<Identifier,Collection<CommandFunction>> tags
      Mappings:
      Namespace Name Mixin selector
      official e Ladq;e:Ljava/util/Map;
      intermediary field_25801 Lnet/minecraft/class_5349;field_25801:Ljava/util/Map;
      named tags Lnet/minecraft/server/function/FunctionLoader;tags:Ljava/util/Map;
    • level

      private final int level
      Mappings:
      Namespace Name Mixin selector
      official f Ladq;f: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 g Ladq;g: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> Ladq;<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 Ladq;a(Ladd;)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 Ladq;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;
    • getTagOrEmpty

      public Collection<CommandFunction> getTagOrEmpty(Identifier id)
      Mappings:
      Namespace Name Mixin selector
      official b Ladq;b(Ladd;)Ljava/util/Collection;
      intermediary method_29459 Lnet/minecraft/class_5349;method_29459(Lnet/minecraft/class_2960;)Ljava/util/Collection;
      named getTagOrEmpty Lnet/minecraft/server/function/FunctionLoader;getTagOrEmpty(Lnet/minecraft/util/Identifier;)Ljava/util/Collection;
    • getTags

      public Iterable<Identifier> getTags()
      Mappings:
      Namespace Name Mixin selector
      official b Ladq;b()Ljava/lang/Iterable;
      intermediary method_29458 Lnet/minecraft/class_5349;method_29458()Ljava/lang/Iterable;
      named getTags Lnet/minecraft/server/function/FunctionLoader;getTags()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:
      Mappings:
      Namespace Name Mixin selector
      official a Lalb;a(Lalb$a;Lalh;Lbao;Lbao;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(Resource resource)
      Mappings:
      Namespace Name Mixin selector
      official a Ladq;a(Lalf;)Ljava/util/List;
      intermediary method_29450 Lnet/minecraft/class_5349;method_29450(Lnet/minecraft/class_3298;)Ljava/util/List;
      named readLines Lnet/minecraft/server/function/FunctionLoader;readLines(Lnet/minecraft/resource/Resource;)Ljava/util/List;