diff --git a/core/src/main/java/org/geysermc/geyser/extension/GeyserExtensionLoader.java b/core/src/main/java/org/geysermc/geyser/extension/GeyserExtensionLoader.java index ecb756017..d3f40e6d2 100644 --- a/core/src/main/java/org/geysermc/geyser/extension/GeyserExtensionLoader.java +++ b/core/src/main/java/org/geysermc/geyser/extension/GeyserExtensionLoader.java @@ -165,27 +165,31 @@ public class GeyserExtensionLoader extends ExtensionLoader { Pattern[] extensionFilters = this.extensionFilters(); - List extensionUpdatePaths = Files.list(extensionsDirectory.resolve("update")).toList(); - extensionUpdatePaths.forEach(path -> { - if (Files.isDirectory(path)) { - return; - } - - for (Pattern filter : extensionFilters) { - if (!filter.matcher(path.getFileName().toString()).matches()) { + Path updateDirectory = extensionsDirectory.resolve("update"); + if (Files.isDirectory(updateDirectory)) { + List extensionUpdatePaths = Files.list(updateDirectory).toList(); + extensionUpdatePaths.forEach(path -> { + if (Files.isDirectory(path)) { return; } - } - try { - // Try load the description, so we know it's a valid extension - GeyserExtensionDescription description = this.extensionDescription(path); + for (Pattern filter : extensionFilters) { + if (!filter.matcher(path.getFileName().toString()).matches()) { + return; + } + } - Files.move(path, extensionsDirectory.resolve(path.getFileName()), StandardCopyOption.REPLACE_EXISTING); - } catch (Throwable e) { - GeyserImpl.getInstance().getLogger().error(GeyserLocale.getLocaleStringLog("geyser.extensions.update.failed", path.getFileName()), e); - } - }); + try { + // Try load the description, so we know it's a valid extension + GeyserExtensionDescription description = this.extensionDescription(path); + + // Overwrite the extension with the new jar + Files.move(path, extensionsDirectory.resolve(path.getFileName()), StandardCopyOption.REPLACE_EXISTING); + } catch (Throwable e) { + GeyserImpl.getInstance().getLogger().error(GeyserLocale.getLocaleStringLog("geyser.extensions.update.failed", path.getFileName()), e); + } + }); + } List extensionPaths = Files.list(extensionsDirectory).toList(); extensionPaths.forEach(path -> {