Allow changing the extensions folder via a system property

This commit is contained in:
Kieran Wallbanks 2022-07-06 15:34:40 +01:00
parent 0309d12540
commit 8b789e0f30
No known key found for this signature in database
GPG Key ID: 7C7D0F1614BCAACE
2 changed files with 16 additions and 1 deletions

View File

@ -7,6 +7,7 @@ import net.minestom.dependencies.maven.MavenRepository;
import net.minestom.server.ServerProcess; import net.minestom.server.ServerProcess;
import net.minestom.server.event.Event; import net.minestom.server.event.Event;
import net.minestom.server.event.EventNode; import net.minestom.server.event.EventNode;
import net.minestom.server.utils.PropertyUtils;
import net.minestom.server.utils.validate.Check; import net.minestom.server.utils.validate.Check;
import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@ -39,7 +40,7 @@ public class ExtensionManager {
private final Map<String, Extension> extensions = new LinkedHashMap<>(); private final Map<String, Extension> extensions = new LinkedHashMap<>();
private final Map<String, Extension> immutableExtensions = Collections.unmodifiableMap(extensions); private final Map<String, Extension> 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 final File dependenciesFolder = new File(extensionFolder, ".libs");
private Path extensionDataRoot = extensionFolder.toPath(); private Path extensionDataRoot = extensionFolder.toPath();

View File

@ -1,6 +1,9 @@
package net.minestom.server.utils; package net.minestom.server.utils;
import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@ApiStatus.Internal @ApiStatus.Internal
public final class PropertyUtils { public final class PropertyUtils {
@ -15,4 +18,15 @@ public final class PropertyUtils {
} }
return result; 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;
}
}
} }