The file has one property, serverJar, whose value is 'server.jar' by default, which is used to configure the path to the minecraft server jar.įabric Loader can also be launched with LegacyLauncher/LaunchWrapper using the tweakers .FabricClientTweaker and .FabricServerTweaker for clients and servers respectively. It can be configured with the fabric-server-launcher.properties placed in the current working directory. When launching a server using Knot in a production environment, the .server.FabricServerLauncher main class must be used, which is a main class that wraps the launch of KnotServer. Knot has the main classes .knot.KnotClient and .knot.KnotServer for clients and servers respectively. Knot is the default launcher included in Fabric Loader, designed specifically for Fabric Loader's features with support for modern versions of Java. Knot and LegacyLauncher/LaunchWrapper are the current supported launchers. A launcher must provide a few features to support Fabric Loader's functionality such as class transformation and dynamic class loading. Note that this transformation is applied at runtime, which means it is not visible in the source.Ī launcher (not to be confused with the game launcher) is something provides a method to use Fabric Loader in a Java process. Outside a development environment we know that the package structure is flat, so the package access hack is not needed.
Therefore, in a development environment where such access issues are expected to exist, Minecraft classes are transformed so that package-private and protected members are made public. However, Yarn mappings place classes in various packages which sometimes creates illegal access violations due to the access rules of protected and package-private members. With official (obfuscated) names and intermediary names, most classes are placed in the same package. Package access hacks might be applied to Minecraft classes depending on the mappings in the current environment.
#THE FOREST MODS 0.29 MOD#
The annotation can be applied to mod classes to avoid class loading issues. On Minecraft classes, this is used to simulate which classes and members that are available in the targeted runtime development environment. It also involves removing interface implementations on classes annotated with where the environment does not match. This involves completely removing classes, methods and fields annotated with annotations where the environment does not match. With Knot, these classes are delegated to the default classloader for isolation and performance.įabric Loader will perform side stripping on mod classes and Minecraft classes depending on the physical side that is launched. Other classes, those belonging to other libraries, cannot be transformed. Classes belonging to a mod or Minecraft are loaded with a class loader that applies transformations to classes before they are loaded. Fabric Loader depends on a custom class loader to transform some classes at runtime.