From 8b789e0f300991bd424b7e1daa4bda7d01080e46 Mon Sep 17 00:00:00 2001 From: Kieran Wallbanks Date: Wed, 6 Jul 2022 15:34:40 +0100 Subject: [PATCH] Allow changing the extensions folder via a system property --- .../server/extensions/ExtensionManager.java | 3 ++- .../net/minestom/server/utils/PropertyUtils.java | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/minestom/server/extensions/ExtensionManager.java b/src/main/java/net/minestom/server/extensions/ExtensionManager.java index b703ad6de..7c92fd60a 100644 --- a/src/main/java/net/minestom/server/extensions/ExtensionManager.java +++ b/src/main/java/net/minestom/server/extensions/ExtensionManager.java @@ -7,6 +7,7 @@ import net.minestom.dependencies.maven.MavenRepository; import net.minestom.server.ServerProcess; import net.minestom.server.event.Event; import net.minestom.server.event.EventNode; +import net.minestom.server.utils.PropertyUtils; import net.minestom.server.utils.validate.Check; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; @@ -39,7 +40,7 @@ public class ExtensionManager { private final Map extensions = new LinkedHashMap<>(); private final Map immutableExtensions = Collections.unmodifiableMap(extensions); - private final File extensionFolder = new File("extensions"); + private final File extensionFolder = new File(PropertyUtils.getString("minestom.extension.folder", "extensions")); private final File dependenciesFolder = new File(extensionFolder, ".libs"); private Path extensionDataRoot = extensionFolder.toPath(); diff --git a/src/main/java/net/minestom/server/utils/PropertyUtils.java b/src/main/java/net/minestom/server/utils/PropertyUtils.java index aef386e44..ec7c15e9b 100644 --- a/src/main/java/net/minestom/server/utils/PropertyUtils.java +++ b/src/main/java/net/minestom/server/utils/PropertyUtils.java @@ -1,6 +1,9 @@ package net.minestom.server.utils; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.Contract; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; @ApiStatus.Internal public final class PropertyUtils { @@ -15,4 +18,15 @@ public final class PropertyUtils { } return result; } + + @Contract("_, null -> null; _, !null -> !null") + public static String getString(@NotNull String name, @Nullable String defaultValue) { + final String value = System.getProperty(name); + + if (value == null) { + return defaultValue; + } else { + return value; + } + } }