diff --git a/README.md b/README.md index d87657dd6..fba912aec 100644 --- a/README.md +++ b/README.md @@ -62,8 +62,8 @@ content selecting on `#minecraft:is_overworld` and friends. ## Install **Plugin (Paper/Purpur/Leaf/Canvas/Folia/Spigot):** drop the plugin jar into `plugins/` and start -the server. First boot performs no pack download. Run `/iris download overworld`, -`/iris download underworld`, or `/iris download https://host/path/pack.zip`, then restart manually. +the server. First boot performs no pack download. Run `/iris download pack=overworld`, +`/iris download pack=underworld`, or `/iris download link=https://host/path/pack.zip`, then restart manually. **Mod (Fabric/Forge/NeoForge):** drop the mod jar into `mods/` and start the server. The jar is self-contained (core, SPI, and required Fabric API modules are bundled). First boot compiles only diff --git a/adapters/bukkit/plugin/src/main/java/art/arcane/iris/core/IrisWorldGeneratorResolver.java b/adapters/bukkit/plugin/src/main/java/art/arcane/iris/core/IrisWorldGeneratorResolver.java index df7fb0296..ff4dba3f8 100644 --- a/adapters/bukkit/plugin/src/main/java/art/arcane/iris/core/IrisWorldGeneratorResolver.java +++ b/adapters/bukkit/plugin/src/main/java/art/arcane/iris/core/IrisWorldGeneratorResolver.java @@ -175,8 +175,8 @@ public final class IrisWorldGeneratorResolver { + " but its dimension failed to load; not redownloading. Fix or delete the pack folder."); return null; } - Iris.warn("Unable to find dimension type " + id + ". Install its pack with /iris download " - + id + " and restart the server."); + Iris.warn("Unable to find dimension type " + id + ". Install its pack with " + + PackDownloader.downloadCommandFor(id) + " and restart the server."); } return dimension; diff --git a/adapters/bukkit/plugin/src/main/java/art/arcane/iris/core/commands/CommandDeveloper.java b/adapters/bukkit/plugin/src/main/java/art/arcane/iris/core/commands/CommandDeveloper.java index 0f79731b1..86e7a7669 100644 --- a/adapters/bukkit/plugin/src/main/java/art/arcane/iris/core/commands/CommandDeveloper.java +++ b/adapters/bukkit/plugin/src/main/java/art/arcane/iris/core/commands/CommandDeveloper.java @@ -197,9 +197,7 @@ public class CommandDeveloper implements DirectorExecutor { @Param(description = "The pack to install into the world", descriptionKey = "iris.director.commanddeveloper.param.pack_install_into_world", contextual = true, aliases = "dimension") IrisDimension pack, @Param(description = "Make sure to make a backup & read the warnings first!", descriptionKey = "iris.director.commanddeveloper.param.make_sure_make_backup_read_warnings_first", defaultValue = "false", aliases = "c") - boolean confirm, - @Param(description = "Should Iris download the pack again for you", descriptionKey = "iris.director.commanddeveloper.param.should_iris_download_pack_again_you", defaultValue = "false", name = "fresh-download", aliases = {"fresh", "new"}) - boolean freshDownload + boolean confirm ) { if (!confirm) { sender().sendMessage(IrisLanguage.text( @@ -213,10 +211,6 @@ public class CommandDeveloper implements DirectorExecutor { File folder = world.getWorldFolder(); folder.mkdirs(); - if (freshDownload) { - Iris.service(StudioSVC.class).downloadSearch(sender(), pack.getLoadKey(), true); - } - try (LifecycleOperationCoordinator.Lease lease = LifecycleOperationCoordinator.get().acquire( LifecycleOperationCoordinator.Domain.PACK_MUTATION, LifecycleOperationCoordinator.OperationKind.PACK_PUBLISH, diff --git a/adapters/bukkit/plugin/src/main/java/art/arcane/iris/core/commands/CommandIris.java b/adapters/bukkit/plugin/src/main/java/art/arcane/iris/core/commands/CommandIris.java index ce50a765b..e342c2508 100644 --- a/adapters/bukkit/plugin/src/main/java/art/arcane/iris/core/commands/CommandIris.java +++ b/adapters/bukkit/plugin/src/main/java/art/arcane/iris/core/commands/CommandIris.java @@ -95,6 +95,7 @@ import art.arcane.iris.core.localization.BukkitCommandMessagesExtended; import art.arcane.iris.core.localization.RuntimeUiMessages; @Director(name = "iris", aliases = {"ir", "irs"}, description = "Basic Command", descriptionKey = "iris.director.commandiris.director.basic_command") public class CommandIris implements DirectorExecutor { + private static final String NO_DOWNLOAD_SOURCE = "__none__"; private static final long WORLD_UNLOAD_TIMEOUT_SECONDS = 150L; private CommandStudio studio; @@ -169,9 +170,10 @@ public class CommandIris implements DirectorExecutor { IrisDimension dimension = IrisToolbelt.getDimension(resolvedType); if (dimension == null) { - sender().sendMessage(IrisLanguage.text(BukkitCommandMessagesExtended.COMMAND_IRIS_COULD_NOT_FIND_DOWNLOAD_DIMENSION, MessageArgument.untrusted("resolvedType", resolvedType))); + sender().sendMessage("Could not find dimension '" + resolvedType + "'."); sender().sendMessage(IrisLanguage.text(BukkitCommandMessagesExtended.COMMAND_IRIS_TRY_ONE_OVERWORLD_VANILLA_FLAT_THEEND)); - sender().sendMessage(IrisLanguage.text(BukkitCommandMessagesExtended.COMMAND_IRIS_DOWNLOAD_MANUALLY_IRIS_DOWNLOAD, MessageArgument.untrusted("resolvedType", resolvedType))); + sender().sendMessage("Install its pack with " + PackDownloader.downloadCommandFor(resolvedType) + + " and restart the server."); return; } @@ -703,25 +705,28 @@ public class CommandIris implements DirectorExecutor { @Director(description = "Download a project.", descriptionKey = "iris.director.commandiris.director.download_project", aliases = "dl") public void download( - @Param(name = "pack", description = "The pack to download", descriptionKey = "iris.director.commandiris.param.pack_download", aliases = "project") + @Param(name = "pack", description = "The built-in pack to download", descriptionKey = "iris.director.commandiris.param.pack_download", defaultValue = NO_DOWNLOAD_SOURCE, customHandler = DownloadPackHandler.class) String pack, - @Param(name = "branch", description = "The branch to download from", descriptionKey = "iris.director.commandiris.param.branch_download_from", defaultValue = PackDownloader.DEFAULT_BRANCH) - String branch, - @Param(name = "overwrite", description = "Whether or not to overwrite the pack with the downloaded one", descriptionKey = "iris.director.commandiris.param.whether_not_overwrite_pack_with_downloaded_one", aliases = "force", defaultValue = "false") - boolean overwrite + @Param(name = "link", description = "A direct HTTP or HTTPS zip link", defaultValue = NO_DOWNLOAD_SOURCE) + String link ) { - if (PackDownloader.isDirectZipUrl(pack)) { - sender().sendMessage("Downloading Iris pack from " + pack - + (overwrite ? IrisLanguage.text(RuntimeUiMessages.DOWNLOAD_OVERWRITE_SUFFIX) : "") + "."); - Iris.service(StudioSVC.class).downloadUrl(sender(), pack, overwrite); - } else if (PackDownloader.isManagedPack(pack)) { - sender().sendMessage("Downloading managed Iris pack '" + pack + "' from its configured Git source" - + (overwrite ? IrisLanguage.text(RuntimeUiMessages.DOWNLOAD_OVERWRITE_SUFFIX) : "") + "."); - Iris.service(StudioSVC.class).downloadManaged(sender(), pack, overwrite); - } else { - sender().sendMessage(IrisLanguage.text(BukkitCommandMessagesExtended.COMMAND_IRIS_DOWNLOADING_PACK, MessageArgument.untrusted("pack", pack), MessageArgument.untrusted("branch", branch), MessageArgument.trusted("value", overwrite ? IrisLanguage.text(RuntimeUiMessages.DOWNLOAD_OVERWRITE_SUFFIX) : ""))); - Iris.service(StudioSVC.class).downloadSearch(sender(), "IrisDimensions/" + pack + "/" + branch, overwrite); + String builtInPack = NO_DOWNLOAD_SOURCE.equals(pack) ? null : pack; + String directLink = NO_DOWNLOAD_SOURCE.equals(link) ? null : link; + if ((builtInPack == null) == (directLink == null)) { + sender().sendMessage("Use exactly one source: /iris download pack=overworld, /iris download pack=underworld, or /iris download link=."); + return; } + if (builtInPack != null) { + sender().sendMessage("Downloading built-in Iris pack '" + builtInPack + "' from its beta release."); + Iris.service(StudioSVC.class).downloadBuiltIn(sender(), builtInPack); + return; + } + if (!PackDownloader.isDirectZipUrl(directLink)) { + sender().sendMessage("Iris requires link= to contain a valid HTTP or HTTPS .zip URL."); + return; + } + sender().sendMessage("Downloading Iris pack from " + directLink + "."); + Iris.service(StudioSVC.class).downloadUrl(sender(), directLink); } @Director(description = "Get metrics for your world", descriptionKey = "iris.director.commandiris.director.get_metrics_your_world", aliases = "measure", origin = DirectorOrigin.PLAYER) @@ -1063,6 +1068,35 @@ public class CommandIris implements DirectorExecutor { } } + public static class DownloadPackHandler implements DirectorParameterHandler { + @Override + public KList getPossibilities() { + return new KList<>(PackDownloader.builtInPacks()); + } + + @Override + public String toString(String value) { + return value == null ? "" : value; + } + + @Override + public String parse(String in, boolean force) throws DirectorParsingException { + if (NO_DOWNLOAD_SOURCE.equals(in)) { + return null; + } + String pack = in == null ? "" : in.trim().toLowerCase(Locale.ROOT); + if (!PackDownloader.isBuiltInPack(pack)) { + throw new DirectorParsingException("Pack must be 'overworld' or 'underworld'"); + } + return pack; + } + + @Override + public boolean supports(Class type) { + return type == String.class; + } + } + static final class MainWorldPublication implements AutoCloseable { private final Path target; private boolean committed; diff --git a/adapters/bukkit/plugin/src/test/java/art/arcane/iris/core/commands/CommandIrisDownloadContractTest.java b/adapters/bukkit/plugin/src/test/java/art/arcane/iris/core/commands/CommandIrisDownloadContractTest.java new file mode 100644 index 000000000..54f17d81c --- /dev/null +++ b/adapters/bukkit/plugin/src/test/java/art/arcane/iris/core/commands/CommandIrisDownloadContractTest.java @@ -0,0 +1,45 @@ +package art.arcane.iris.core.commands; + +import art.arcane.volmlib.util.director.annotations.Param; +import org.junit.Test; + +import java.lang.reflect.Method; +import java.lang.reflect.Parameter; +import java.util.Arrays; +import java.util.List; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertThrows; + +public class CommandIrisDownloadContractTest { + @Test + public void commandExposesOnlyPackAndLinkParameters() throws NoSuchMethodException { + Method method = CommandIris.class.getDeclaredMethod("download", String.class, String.class); + Parameter[] parameters = method.getParameters(); + Param pack = parameters[0].getAnnotation(Param.class); + Param link = parameters[1].getAnnotation(Param.class); + List downloadMethods = Arrays.stream(CommandIris.class.getDeclaredMethods()) + .filter((Method candidate) -> candidate.getName().equals("download")) + .toList(); + + assertEquals(1, downloadMethods.size()); + assertEquals(2, downloadMethods.getFirst().getParameterCount()); + assertEquals("pack", pack.name()); + assertEquals(0L, Arrays.stream(pack.aliases()).filter((String alias) -> !alias.isBlank()).count()); + assertEquals(CommandIris.DownloadPackHandler.class, pack.customHandler()); + assertEquals("link", link.name()); + assertEquals(0L, Arrays.stream(link.aliases()).filter((String alias) -> !alias.isBlank()).count()); + } + + @Test + public void packHandlerAcceptsOnlyTheTwoBuiltInPacks() throws Exception { + CommandIris.DownloadPackHandler handler = new CommandIris.DownloadPackHandler(); + + assertEquals("overworld", handler.parse("OVERWORLD", false)); + assertEquals("underworld", handler.parse("underworld", false)); + assertEquals(Arrays.asList("overworld", "underworld"), handler.getPossibilities()); + assertNull(handler.parse("__none__", false)); + assertThrows(Exception.class, () -> handler.parse("custom", false)); + } +} diff --git a/adapters/bukkit/plugin/src/test/java/art/arcane/iris/core/commands/CommandIrisDownloadDefaultTest.java b/adapters/bukkit/plugin/src/test/java/art/arcane/iris/core/commands/CommandIrisDownloadDefaultTest.java deleted file mode 100644 index f6c4ab284..000000000 --- a/adapters/bukkit/plugin/src/test/java/art/arcane/iris/core/commands/CommandIrisDownloadDefaultTest.java +++ /dev/null @@ -1,20 +0,0 @@ -package art.arcane.iris.core.commands; - -import org.junit.Test; - -import java.nio.file.Files; -import java.nio.file.Path; - -import static org.junit.Assert.assertTrue; - -public class CommandIrisDownloadDefaultTest { - @Test - public void downloadBranchParamDefaultsToTheCoreConstant() throws Exception { - String source = Files.readString(Path.of("src/main/java/art/arcane/iris/core/commands/CommandIris.java")); - int branchParam = source.indexOf("name = \"branch\""); - assertTrue("CommandIris must declare the branch param", branchParam >= 0); - String declaration = source.substring(branchParam, source.indexOf(')', branchParam)); - assertTrue("branch param default must be PackDownloader.DEFAULT_BRANCH, not a literal", - declaration.contains("defaultValue = PackDownloader.DEFAULT_BRANCH")); - } -} diff --git a/adapters/modded-common/src/main/java/art/arcane/iris/modded/ModdedForcedDatapack.java b/adapters/modded-common/src/main/java/art/arcane/iris/modded/ModdedForcedDatapack.java index a3acdf47d..d1de90c32 100644 --- a/adapters/modded-common/src/main/java/art/arcane/iris/modded/ModdedForcedDatapack.java +++ b/adapters/modded-common/src/main/java/art/arcane/iris/modded/ModdedForcedDatapack.java @@ -414,7 +414,7 @@ public final class ModdedForcedDatapack { } LOGGER.info("Iris forced startup datapack staged: {} pack(s), {} world preset(s), {} custom biome(s) at {}", packCount, presetIds.size(), countBiomes(seenBiomes), stagingDirectory); if (packCount == 0) { - LOGGER.warn("Iris installed NO worldgen packs into the forced datapack - custom biomes and their colors will NOT generate. Install a pack (e.g. /iris download overworld) and restart the server before creating an Iris world."); + LOGGER.warn("Iris installed NO worldgen packs into the forced datapack - custom biomes and their colors will NOT generate. Install a pack with /iris download pack=overworld, /iris download pack=underworld, or /iris download link=, then restart before creating an Iris world."); } } diff --git a/adapters/modded-common/src/main/java/art/arcane/iris/modded/ModdedPackInstaller.java b/adapters/modded-common/src/main/java/art/arcane/iris/modded/ModdedPackInstaller.java deleted file mode 100644 index 6168575f3..000000000 --- a/adapters/modded-common/src/main/java/art/arcane/iris/modded/ModdedPackInstaller.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Iris is a World Generator for Minecraft Servers - * Copyright (c) 2026 Arcane Arts (Volmit Software) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package art.arcane.iris.modded; - -import art.arcane.iris.core.localization.IrisLanguage; -import art.arcane.iris.core.localization.PackDownloadMessages; -import art.arcane.iris.core.pack.PackDownloader; -import art.arcane.volmlib.util.localization.MessageArgument; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.File; -import java.io.IOException; -import java.nio.file.Path; -import java.util.concurrent.ConcurrentHashMap; -import java.util.function.Consumer; -import java.util.regex.Pattern; - -public final class ModdedPackInstaller { - private static final Logger LOGGER = LoggerFactory.getLogger("Iris"); - private static final Pattern PACK_NAME = Pattern.compile("[a-z0-9_-]+"); - private static final Pattern BRANCH_NAME = Pattern.compile("[A-Za-z0-9._-]+"); - private static final ConcurrentHashMap INSTALL_LOCKS = new ConcurrentHashMap<>(); - - private ModdedPackInstaller() { - } - - public static boolean install(Path configDir, String pack, String branch, - boolean forceOverwrite, boolean refreshDatapack, - Consumer feedback) { - if (pack == null || !PACK_NAME.matcher(pack).matches()) { - feedback.accept(IrisLanguage.plain(PackDownloadMessages.INVALID_PACK_NAME, MessageArgument.untrusted("pack", String.valueOf(pack)))); - return false; - } - boolean managed = PackDownloader.isManagedPack(pack); - if (!acceptsBranch(pack, branch)) { - feedback.accept(IrisLanguage.plain(PackDownloadMessages.INVALID_BRANCH_NAME, MessageArgument.untrusted("branch", String.valueOf(branch)))); - return false; - } - - Object installLock = INSTALL_LOCKS.computeIfAbsent(pack, key -> new Object()); - synchronized (installLock) { - File packs = configDir.resolve("irisworldgen").resolve("packs").toFile(); - try { - PackDownloader.PackInstallResult result = managed - ? PackDownloader.downloadManaged(packs, pack, forceOverwrite, feedback) - : PackDownloader.download( - packs, - "IrisDimensions/" + pack, - branch, - forceOverwrite, - false, - pack, - feedback); - boolean installed = result != null; - if (shouldRefreshDatapack(result, refreshDatapack)) { - // Pack-install completion is one of the four forced-datapack regeneration triggers; every - // install call site already runs off the server thread, so regenerate inline here. A - // regeneration failure must never turn a successful install into a failed one. - try { - ModdedForcedDatapack.regenerateIfStale("pack install " + pack); - } catch (Throwable regenerationFailure) { - LOGGER.error("Iris installed pack '{}' but could not regenerate the forced datapack", pack, regenerationFailure); - } - } - if (result != null && result.restartRequired()) { - feedback.accept("Pack '" + pack + "' is installed on disk and requires a server restart before its active data changes."); - } - return installed; - } catch (IOException error) { - String source = managed ? "configured Git source" : "branch " + branch; - LOGGER.error("Iris pack download failed for IrisDimensions/{} ({})", pack, source, error); - feedback.accept(IrisLanguage.plain( - PackDownloadMessages.DOWNLOAD_FAILED, - MessageArgument.untrusted("type", error.getClass().getSimpleName()), - MessageArgument.trusted("errorMessage", IrisLanguage.errorDetail(error)) - )); - return false; - } - } - } - - static boolean acceptsBranch(String pack, String branch) { - return PackDownloader.isManagedPack(pack) - || (branch != null && BRANCH_NAME.matcher(branch).matches()); - } - - static boolean shouldRefreshDatapack(PackDownloader.PackInstallResult result, boolean refreshDatapack) { - return result != null && result.changed() && refreshDatapack; - } -} diff --git a/adapters/modded-common/src/main/java/art/arcane/iris/modded/ModdedStartup.java b/adapters/modded-common/src/main/java/art/arcane/iris/modded/ModdedStartup.java index 4ce95fd03..bc60b372f 100644 --- a/adapters/modded-common/src/main/java/art/arcane/iris/modded/ModdedStartup.java +++ b/adapters/modded-common/src/main/java/art/arcane/iris/modded/ModdedStartup.java @@ -133,7 +133,7 @@ public final class ModdedStartup { List packDirs = PackDirectoryResolver.listVisiblePackDirectories(packsRoot); PackValidationRegistry.clear(); if (packDirs.isEmpty()) { - LOGGER.info("Iris found no packs to validate under {}; install one with /iris download ", + LOGGER.info("Iris found no packs to validate under {}; install one with /iris download pack=overworld, /iris download pack=underworld, or /iris download link=", packsRoot.getAbsolutePath()); return; } diff --git a/adapters/modded-common/src/main/java/art/arcane/iris/modded/command/IrisModdedCommands.java b/adapters/modded-common/src/main/java/art/arcane/iris/modded/command/IrisModdedCommands.java index d31b9d41b..837a05b87 100644 --- a/adapters/modded-common/src/main/java/art/arcane/iris/modded/command/IrisModdedCommands.java +++ b/adapters/modded-common/src/main/java/art/arcane/iris/modded/command/IrisModdedCommands.java @@ -27,7 +27,6 @@ import art.arcane.iris.modded.ModdedDimensionManager; import art.arcane.iris.modded.ModdedEngineBootstrap; import art.arcane.iris.modded.ModdedForcedDatapack; import art.arcane.iris.modded.ModdedLoader; -import art.arcane.iris.modded.ModdedPackInstaller; import art.arcane.iris.modded.ModdedScheduler; import art.arcane.iris.modded.ModdedServerLevels; import art.arcane.iris.modded.ModdedWorldgenIds; @@ -53,6 +52,7 @@ import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.TreeMap; import java.util.concurrent.CompletableFuture; @@ -258,54 +258,68 @@ public final class IrisModdedCommands { return 1; } - static int download(CommandSourceStack source, String pack, - String branch, boolean forceOverwrite) { - boolean managed = PackDownloader.isManagedPack(pack); - boolean directUrl = PackDownloader.isDirectZipUrl(pack); - String baseDownloadSource = directUrl ? "direct ZIP URL" - : managed ? "configured Git source" : "branch " + branch; - String downloadSource = forceOverwrite - ? baseDownloadSource + IrisLanguage.plain(RuntimeUiMessages.DOWNLOAD_OVERWRITE_SUFFIX) - : baseDownloadSource; - ok(source, IrisLanguage.plain(ModdedCommandMessages.IRIS_MODDED_COMMANDS_DOWNLOADING_IRISDIMENSIONS, MessageArgument.untrusted("pack", pack), MessageArgument.untrusted("downloadSource", downloadSource))); + static int download(CommandSourceStack source, String rawRequest) { + DownloadRequest request = parseDownloadRequest(rawRequest); + if (request == null) { + fail(source, "Use /iris download pack=overworld, /iris download pack=underworld, or /iris download link=."); + return 0; + } + String target = request.pack() == null ? request.url() : request.pack(); + String downloadSource = request.pack() == null ? "direct ZIP URL" : "built-in beta release"; + ok(source, IrisLanguage.plain(ModdedCommandMessages.IRIS_MODDED_COMMANDS_DOWNLOADING_IRISDIMENSIONS, MessageArgument.untrusted("pack", target), MessageArgument.untrusted("downloadSource", downloadSource))); ModdedScheduler scheduler = ModdedEngineBootstrap.schedulerOrNull(); if (scheduler == null) { fail(source, IrisLanguage.plain( ModdedCommandMessages.IRIS_MODDED_COMMANDS_PACK_DOWNLOAD_FAILED_SEE_CONSOLE, - MessageArgument.untrusted("pack", pack), + MessageArgument.untrusted("pack", target), MessageArgument.untrusted("downloadSource", downloadSource))); return 0; } scheduler.async(() -> { - boolean installed; - if (directUrl) { - File packs = ModdedPackCommands.packsRoot(); - try { - PackDownloader.PackInstallResult result = PackDownloader.downloadUrl( - packs, - pack, - forceOverwrite, - (String message) -> scheduler.global(() -> ok(source, message)) - ); - installed = result != null; - } catch (IOException error) { - LOGGER.error("Iris pack download failed for direct URL {}", pack, error); - installed = false; - } - } else { - installed = ModdedPackInstaller.install( - ModdedEngineBootstrap.loader().configDir(), pack, branch, forceOverwrite, false, - (String message) -> scheduler.global(() -> ok(source, message))); + boolean installed = false; + File packs = ModdedPackCommands.packsRoot(); + try { + PackDownloader.PackInstallResult result = request.pack() == null + ? PackDownloader.downloadUrl( + packs, + request.url(), + false, + (String message) -> scheduler.global(() -> ok(source, message)) + ) + : PackDownloader.downloadBuiltIn( + packs, + request.pack(), + false, + (String message) -> scheduler.global(() -> ok(source, message)) + ); + installed = result != null; + } catch (IOException | RuntimeException error) { + LOGGER.error("Iris pack download failed for {}", target, error); } if (installed) { scheduler.global(() -> ok(source, "Pack installed on disk. Restart the server before using it.")); } else { - scheduler.global(() -> fail(source, IrisLanguage.plain(ModdedCommandMessages.IRIS_MODDED_COMMANDS_PACK_DOWNLOAD_FAILED_SEE_CONSOLE, MessageArgument.untrusted("pack", pack), MessageArgument.untrusted("downloadSource", downloadSource)))); + scheduler.global(() -> fail(source, IrisLanguage.plain(ModdedCommandMessages.IRIS_MODDED_COMMANDS_PACK_DOWNLOAD_FAILED_SEE_CONSOLE, MessageArgument.untrusted("pack", target), MessageArgument.untrusted("downloadSource", downloadSource)))); } }); return 1; } + static DownloadRequest parseDownloadRequest(String rawRequest) { + if (rawRequest == null || rawRequest.isBlank()) { + return null; + } + if (rawRequest.startsWith("pack=")) { + String pack = rawRequest.substring("pack=".length()).trim().toLowerCase(Locale.ROOT); + return PackDownloader.isBuiltInPack(pack) ? new DownloadRequest(pack, null) : null; + } + if (rawRequest.startsWith("link=")) { + String url = rawRequest.substring("link=".length()).trim(); + return PackDownloader.isDirectZipUrl(url) ? new DownloadRequest(null, url) : null; + } + return null; + } + static int metrics(CommandSourceStack source) { ServerLevel level = source.getLevel(); Engine engine = engineFor(level); @@ -371,4 +385,7 @@ public final class IrisModdedCommands { static void fail(CommandSourceStack source, String message) { ModdedCommandFeedback.fail(source, message); } + + record DownloadRequest(String pack, String url) { + } } diff --git a/adapters/modded-common/src/main/java/art/arcane/iris/modded/command/ModdedCommandHelp.java b/adapters/modded-common/src/main/java/art/arcane/iris/modded/command/ModdedCommandHelp.java index a13fb0614..254120a45 100644 --- a/adapters/modded-common/src/main/java/art/arcane/iris/modded/command/ModdedCommandHelp.java +++ b/adapters/modded-common/src/main/java/art/arcane/iris/modded/command/ModdedCommandHelp.java @@ -70,7 +70,7 @@ final class ModdedCommandHelp { Entry.command("seed", "", ModdedHelpMessages.COMMAND_SEED_PRINT_WORLD_AND_ENGINE_SEED_INFORMATION), Entry.command("debug", "", ModdedHelpMessages.COMMAND_DEBUG_TOGGLE_IRIS_DEBUG_LOGGING_AND_SAVE_SETTINGS_JSON), Entry.command("reload", "", ModdedHelpMessages.COMMAND_RELOAD_RELOAD_SETTINGS_JSON_ALSO_HOTLOADED_AUTOMATICALLY_EVERY_3S), - Entry.command("download", " [branch] [overwrite]", ModdedHelpMessages.COMMAND_DOWNLOAD_DOWNLOAD_A_PACK_PROJECT, "dl"), + Entry.command("download", ">", ModdedHelpMessages.COMMAND_DOWNLOAD_DOWNLOAD_A_PACK_PROJECT, "dl"), Entry.command("metrics", "", ModdedHelpMessages.COMMAND_METRICS_PRINT_GENERATION_METRICS_FOR_YOUR_CURRENT_IRIS_DIMENSION, "measure"), Entry.command("regen", "[radius]", ModdedHelpMessages.COMMAND_REGEN_DELETE_AND_REGENERATE_NEARBY_CHUNKS_IN_PLACE, "rg"), Entry.group("pregen", ModdedHelpMessages.GROUP_PREGEN_PREGENERATE_AN_IRIS_DIMENSION, "pregenerate"), diff --git a/adapters/modded-common/src/main/java/art/arcane/iris/modded/command/ModdedCommandTree.java b/adapters/modded-common/src/main/java/art/arcane/iris/modded/command/ModdedCommandTree.java index 3ffaa5fca..b42598754 100644 --- a/adapters/modded-common/src/main/java/art/arcane/iris/modded/command/ModdedCommandTree.java +++ b/adapters/modded-common/src/main/java/art/arcane/iris/modded/command/ModdedCommandTree.java @@ -18,8 +18,6 @@ package art.arcane.iris.modded.command; -import art.arcane.iris.core.pack.PackDownloader; -import com.mojang.brigadier.arguments.BoolArgumentType; import com.mojang.brigadier.arguments.IntegerArgumentType; import com.mojang.brigadier.arguments.LongArgumentType; import com.mojang.brigadier.arguments.StringArgumentType; @@ -27,15 +25,24 @@ import com.mojang.brigadier.builder.ArgumentBuilder; import com.mojang.brigadier.builder.LiteralArgumentBuilder; import com.mojang.brigadier.builder.RequiredArgumentBuilder; import com.mojang.brigadier.context.CommandContext; +import com.mojang.brigadier.suggestion.SuggestionProvider; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; +import net.minecraft.commands.SharedSuggestionProvider; import net.minecraft.commands.arguments.DimensionArgument; import net.minecraft.commands.arguments.EntityArgument; import net.minecraft.resources.Identifier; +import java.util.List; import java.util.function.Predicate; final class ModdedCommandTree { + private static final SuggestionProvider DOWNLOAD_SOURCES = + (context, builder) -> + SharedSuggestionProvider.suggest( + List.of("pack=overworld", "pack=underworld", "link="), + builder + ); private static final Predicate GATE = Commands.hasPermission(Commands.LEVEL_GAMEMASTERS); /** * SP-4: read-only inspection must work for an unopped player in a no-cheats singleplayer world, where the @@ -189,35 +196,11 @@ final class ModdedCommandTree { private static LiteralArgumentBuilder downloadTree(String name) { return Commands.literal(name).requires(GATE) - .then(Commands.argument("pack", StringArgumentType.word()).suggests(ModdedCommandSuggestions.PACK_NAMES) - .executes((CommandContext context) -> - IrisModdedCommands.download(context.getSource(), - StringArgumentType.getString(context, "pack"), PackDownloader.DEFAULT_BRANCH, false)) - .then(Commands.literal("force") - .executes((CommandContext context) -> - IrisModdedCommands.download(context.getSource(), - StringArgumentType.getString(context, "pack"), PackDownloader.DEFAULT_BRANCH, true))) - .then(Commands.argument("overwrite", BoolArgumentType.bool()) - .executes((CommandContext context) -> - IrisModdedCommands.download(context.getSource(), - StringArgumentType.getString(context, "pack"), PackDownloader.DEFAULT_BRANCH, - BoolArgumentType.getBool(context, "overwrite")))) - .then(Commands.argument("branch", StringArgumentType.word()) - .executes((CommandContext context) -> - IrisModdedCommands.download(context.getSource(), - StringArgumentType.getString(context, "pack"), - StringArgumentType.getString(context, "branch"), false)) - .then(Commands.literal("force") - .executes((CommandContext context) -> - IrisModdedCommands.download(context.getSource(), - StringArgumentType.getString(context, "pack"), - StringArgumentType.getString(context, "branch"), true))) - .then(Commands.argument("overwrite", BoolArgumentType.bool()) - .executes((CommandContext context) -> - IrisModdedCommands.download(context.getSource(), - StringArgumentType.getString(context, "pack"), - StringArgumentType.getString(context, "branch"), - BoolArgumentType.getBool(context, "overwrite")))))); + .then(Commands.argument("source", StringArgumentType.greedyString()).suggests(DOWNLOAD_SOURCES) + .executes((CommandContext context) -> IrisModdedCommands.download( + context.getSource(), + StringArgumentType.getString(context, "source") + ))); } private static LiteralArgumentBuilder metricsTree(String name) { diff --git a/adapters/modded-common/src/main/java/art/arcane/iris/modded/command/ModdedStudioCommands.java b/adapters/modded-common/src/main/java/art/arcane/iris/modded/command/ModdedStudioCommands.java index a573c7c08..f6f381478 100644 --- a/adapters/modded-common/src/main/java/art/arcane/iris/modded/command/ModdedStudioCommands.java +++ b/adapters/modded-common/src/main/java/art/arcane/iris/modded/command/ModdedStudioCommands.java @@ -23,7 +23,6 @@ import art.arcane.iris.core.gui.GuiHost; import art.arcane.iris.core.gui.NoiseExplorerGUI; import art.arcane.iris.core.gui.VisionGUI; import art.arcane.iris.core.loader.IrisData; -import art.arcane.iris.core.pack.PackDownloader; import art.arcane.iris.core.pack.StructurePackageClosure; import art.arcane.iris.core.project.IrisProjectCopier; import art.arcane.iris.engine.framework.Engine; @@ -40,7 +39,6 @@ import art.arcane.iris.engine.object.IrisSpawner; import art.arcane.iris.engine.object.IrisStructurePlacement; import art.arcane.iris.modded.ModdedDimensionManager; import art.arcane.iris.modded.ModdedEngineBootstrap; -import art.arcane.iris.modded.ModdedPackInstaller; import art.arcane.iris.modded.ModdedWorkspaceGenerator; import art.arcane.iris.util.common.parallel.BurstExecutor; import art.arcane.iris.util.common.parallel.MultiBurst; @@ -385,13 +383,9 @@ public final class ModdedStudioCommands { try { File packFolder = new File(ModdedPackCommands.packsRoot(), pack); if (!new File(packFolder, "dimensions/" + pack + ".json").isFile()) { - server.execute(() -> IrisModdedCommands.ok(source, IrisLanguage.plain(ModdedCommandMessages.MODDED_STUDIO_COMMANDS_PACK_MISSING_DOWNLOADING_IRISDIMENSIONS, MessageArgument.untrusted("pack", pack), MessageArgument.untrusted("pack2", pack)))); - boolean installed = ModdedPackInstaller.install(ModdedEngineBootstrap.loader().configDir(), pack, PackDownloader.DEFAULT_BRANCH, false, true, - (String line) -> server.execute(() -> IrisModdedCommands.ok(source, line))); - if (!installed || !new File(packFolder, "dimensions/" + pack + ".json").isFile()) { - server.execute(() -> IrisModdedCommands.fail(source, IrisLanguage.plain(ModdedCommandMessages.MODDED_STUDIO_COMMANDS_PACK_COULD_NOT_BE_DOWNLOADED_CHECK_NAME_TRY_IRIS_DOWNLOAD, MessageArgument.untrusted("pack", pack), MessageArgument.untrusted("pack2", pack)))); - return; - } + server.execute(() -> IrisModdedCommands.fail(source, "Pack '" + pack + + "' is not installed. Use /iris download pack=overworld or pack=underworld, then restart.")); + return; } IrisData data = IrisData.get(packFolder); IrisDimension dimension = data.getDimensionLoader().load(pack); @@ -593,13 +587,9 @@ public final class ModdedStudioCommands { try { File templateFolder = new File(packsRoot, template); if (!new File(templateFolder, "dimensions/" + template + ".json").isFile()) { - server.execute(() -> IrisModdedCommands.ok(source, IrisLanguage.plain(ModdedCommandMessages.MODDED_STUDIO_COMMANDS_TEMPLATE_IS_NOT_INSTALLED_DOWNLOADING_IRISDIMENSIONS, MessageArgument.untrusted("template", template), MessageArgument.untrusted("template2", template)))); - boolean installed = ModdedPackInstaller.install(ModdedEngineBootstrap.loader().configDir(), template, PackDownloader.DEFAULT_BRANCH, false, true, - (String line) -> server.execute(() -> IrisModdedCommands.ok(source, line))); - if (!installed || !new File(templateFolder, "dimensions/" + template + ".json").isFile()) { - server.execute(() -> IrisModdedCommands.fail(source, IrisLanguage.plain(ModdedCommandMessages.MODDED_STUDIO_COMMANDS_TEMPLATE_COULD_NOT_BE_DOWNLOADED_INSTALL_PACK_WITH_DIMENSIONS_JSON, MessageArgument.untrusted("template", template), MessageArgument.untrusted("template2", template)))); - return; - } + server.execute(() -> IrisModdedCommands.fail(source, "Template pack '" + template + + "' is not installed. Install its zip with /iris download link=, then restart.")); + return; } IrisProjectCopier.copyProject(templateFolder, target, template, name); try { diff --git a/adapters/modded-common/src/main/java/art/arcane/iris/modded/command/ModdedWorldCommands.java b/adapters/modded-common/src/main/java/art/arcane/iris/modded/command/ModdedWorldCommands.java index 3d85adffd..2150f9942 100644 --- a/adapters/modded-common/src/main/java/art/arcane/iris/modded/command/ModdedWorldCommands.java +++ b/adapters/modded-common/src/main/java/art/arcane/iris/modded/command/ModdedWorldCommands.java @@ -20,7 +20,6 @@ package art.arcane.iris.modded.command; import art.arcane.iris.core.loader.IrisData; import art.arcane.iris.core.pack.BrokenPackException; -import art.arcane.iris.core.pack.PackDownloader; import art.arcane.iris.core.pack.PackValidationRegistry; import art.arcane.iris.engine.object.IrisDimension; import art.arcane.iris.modded.IrisModdedChunkGenerator; @@ -28,7 +27,6 @@ import art.arcane.iris.modded.MainWorldService; import art.arcane.iris.modded.ModdedDimensionManager; import art.arcane.iris.modded.ModdedEngineBootstrap; import art.arcane.iris.modded.ModdedModConfig; -import art.arcane.iris.modded.ModdedPackInstaller; import art.arcane.iris.modded.ModdedPrimaryWorldRouter; import art.arcane.iris.modded.ModdedServerLevels; import art.arcane.iris.modded.ModdedStartup; @@ -176,21 +174,9 @@ public final class ModdedWorldCommands { if (packFolder.isDirectory()) { return enableInstalled(source, server, dimensionId, pack, packDimension, seed); } - IrisModdedCommands.ok(source, IrisLanguage.plain(ModdedCommandMessages.MODDED_WORLD_COMMANDS_PACK_IS_NOT_INSTALLED_DOWNLOADING_IRISDIMENSIONS, MessageArgument.untrusted("pack", pack), MessageArgument.untrusted("pack2", pack))); - Thread thread = new Thread(() -> { - boolean installed = ModdedPackInstaller.install(ModdedEngineBootstrap.loader().configDir(), pack, PackDownloader.DEFAULT_BRANCH, false, true, - (String line) -> server.execute(() -> IrisModdedCommands.ok(source, line))); - server.execute(() -> { - if (!installed || !packFolder.isDirectory()) { - IrisModdedCommands.fail(source, IrisLanguage.plain(ModdedCommandMessages.MODDED_WORLD_COMMANDS_PACK_COULD_NOT_BE_DOWNLOADED_CHECK_NAME_INSTALL_IT_WITH, MessageArgument.untrusted("pack", pack), MessageArgument.untrusted("pack2", pack))); - return; - } - enableInstalled(source, server, dimensionId, pack, packDimension, seed); - }); - }, "Iris World Pack Download"); - thread.setDaemon(true); - thread.start(); - return 1; + IrisModdedCommands.fail(source, "Pack '" + pack + + "' is not installed. Use /iris download pack=overworld or pack=underworld, then restart."); + return 0; } private static int enableInstalled(CommandSourceStack source, MinecraftServer server, String dimensionId, String pack, String packDimension, long seed) { @@ -279,21 +265,9 @@ public final class ModdedWorldCommands { if (packFolder.isDirectory()) { return applyMainWorld(source, pack, packDimension, packRaw, seed); } - IrisModdedCommands.ok(source, IrisLanguage.plain(ModdedCommandMessages.MODDED_WORLD_COMMANDS_PACK_IS_NOT_INSTALLED_DOWNLOADING_IRISDIMENSIONS_2, MessageArgument.untrusted("pack", pack), MessageArgument.untrusted("pack2", pack))); - Thread thread = new Thread(() -> { - boolean installed = ModdedPackInstaller.install(ModdedEngineBootstrap.loader().configDir(), pack, PackDownloader.DEFAULT_BRANCH, false, true, - (String line) -> server.execute(() -> IrisModdedCommands.ok(source, line))); - server.execute(() -> { - if (!installed || !packFolder.isDirectory()) { - IrisModdedCommands.fail(source, IrisLanguage.plain(ModdedCommandMessages.MODDED_WORLD_COMMANDS_PACK_COULD_NOT_BE_DOWNLOADED_CHECK_NAME_INSTALL_IT_WITH_2, MessageArgument.untrusted("pack", pack), MessageArgument.untrusted("pack2", pack))); - return; - } - applyMainWorld(source, pack, packDimension, packRaw, seed); - }); - }, "Iris Main World Pack Download"); - thread.setDaemon(true); - thread.start(); - return 1; + IrisModdedCommands.fail(source, "Pack '" + pack + + "' is not installed. Use /iris download pack=overworld or pack=underworld, then restart."); + return 0; } private static int applyMainWorld(CommandSourceStack source, String pack, String packDimension, String packRef, long seed) { diff --git a/adapters/modded-common/src/test/java/art/arcane/iris/modded/ModdedDownloadBranchParityTest.java b/adapters/modded-common/src/test/java/art/arcane/iris/modded/ModdedDownloadBranchParityTest.java deleted file mode 100644 index 815cce66e..000000000 --- a/adapters/modded-common/src/test/java/art/arcane/iris/modded/ModdedDownloadBranchParityTest.java +++ /dev/null @@ -1,31 +0,0 @@ -package art.arcane.iris.modded; - -import org.junit.Test; - -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.List; - -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -public class ModdedDownloadBranchParityTest { - private static final List DOWNLOAD_SOURCES = List.of( - "art/arcane/iris/modded/command/ModdedWorldCommands.java", - "art/arcane/iris/modded/command/ModdedStudioCommands.java", - "art/arcane/iris/modded/command/ModdedCommandTree.java"); - - @Test - public void implicitAndExplicitDownloadsShareTheCoreDefaultBranch() throws Exception { - for (String source : DOWNLOAD_SOURCES) { - Path path = Path.of(System.getProperty("iris.moddedCommonSources"), source); - String text = Files.readString(path); - assertFalse(source + " must not hardcode a \"master\" download branch", - text.contains("\"master\"")); - assertFalse(source + " must not hardcode a \"stable\" download branch", - text.contains("\"stable\"")); - assertTrue(source + " must use PackDownloader.DEFAULT_BRANCH", - text.contains("PackDownloader.DEFAULT_BRANCH")); - } - } -} diff --git a/adapters/modded-common/src/test/java/art/arcane/iris/modded/ModdedPackInstallerTest.java b/adapters/modded-common/src/test/java/art/arcane/iris/modded/ModdedPackInstallerTest.java deleted file mode 100644 index 159cae9a0..000000000 --- a/adapters/modded-common/src/test/java/art/arcane/iris/modded/ModdedPackInstallerTest.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Iris is a World Generator for Minecraft Servers - * Copyright (c) 2026 Arcane Arts (Volmit Software) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package art.arcane.iris.modded; - -import art.arcane.iris.core.pack.PackDownloader; -import org.junit.Test; - -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -public class ModdedPackInstallerTest { - @Test - public void managedPacksIgnoreTheRequestedBranch() { - assertTrue(ModdedPackInstaller.acceptsBranch("overworld", null)); - assertTrue(ModdedPackInstaller.acceptsBranch("underworld", "feature/arbitrary")); - } - - @Test - public void nonManagedPacksStillRequireAValidBranch() { - assertTrue(ModdedPackInstaller.acceptsBranch("custom", "stable")); - assertFalse(ModdedPackInstaller.acceptsBranch("custom", null)); - assertFalse(ModdedPackInstaller.acceptsBranch("custom", "feature/arbitrary")); - } - - @Test - public void startupBatchDefersDatapackRefresh() { - PackDownloader.PackInstallResult changed = new PackDownloader.PackInstallResult("underworld", true, true); - - assertFalse(ModdedPackInstaller.shouldRefreshDatapack(changed, false)); - assertTrue(ModdedPackInstaller.shouldRefreshDatapack(changed, true)); - assertFalse(ModdedPackInstaller.shouldRefreshDatapack( - new PackDownloader.PackInstallResult("underworld", false, false), - true - )); - } -} diff --git a/adapters/modded-common/src/test/java/art/arcane/iris/modded/command/IrisModdedCommandParityTest.java b/adapters/modded-common/src/test/java/art/arcane/iris/modded/command/IrisModdedCommandParityTest.java index 8fc562539..41e399e8b 100644 --- a/adapters/modded-common/src/test/java/art/arcane/iris/modded/command/IrisModdedCommandParityTest.java +++ b/adapters/modded-common/src/test/java/art/arcane/iris/modded/command/IrisModdedCommandParityTest.java @@ -10,7 +10,9 @@ import org.junit.Test; import java.util.List; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertSame; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; public class IrisModdedCommandParityTest { @@ -50,17 +52,34 @@ public class IrisModdedCommandParityTest { child(studio, "pkg"); CommandNode download = child(iris, "download"); - CommandNode pack = child(download, "pack"); - child(pack, "force"); - child(pack, "overwrite"); - CommandNode branch = child(pack, "branch"); - child(branch, "force"); - child(branch, "overwrite"); + CommandNode source = child(download, "source"); + assertTrue(source.getChildren().isEmpty()); assertSame(iris, child(dispatcher.getRoot(), "ir").getRedirect()); assertSame(iris, child(dispatcher.getRoot(), "irs").getRedirect()); } + @Test + public void downloadRequestAcceptsOnlyBuiltInsAndZipLinks() { + IrisModdedCommands.DownloadRequest overworld = IrisModdedCommands.parseDownloadRequest("pack=overworld"); + IrisModdedCommands.DownloadRequest underworld = IrisModdedCommands.parseDownloadRequest("pack=UNDERWORLD"); + IrisModdedCommands.DownloadRequest link = IrisModdedCommands.parseDownloadRequest( + "link=https://packs.example.test/custom.zip?token=a=b" + ); + + assertNotNull(overworld); + assertEquals("overworld", overworld.pack()); + assertNotNull(underworld); + assertEquals("underworld", underworld.pack()); + assertNotNull(link); + assertEquals("https://packs.example.test/custom.zip?token=a=b", link.url()); + assertNull(IrisModdedCommands.parseDownloadRequest("overworld")); + assertNull(IrisModdedCommands.parseDownloadRequest("pack=custom")); + assertNull(IrisModdedCommands.parseDownloadRequest("link=https://packs.example.test/custom.tar.gz")); + assertNull(IrisModdedCommands.parseDownloadRequest("pack=underworld branch=stable")); + assertNull(IrisModdedCommands.parseDownloadRequest("pack=underworld overwrite=true")); + } + @Test public void helpDocumentsParityCommandsAndPlatformStubs() { assertTrue(ModdedCommandHelp.documents("what", "here")); diff --git a/core/src/main/java/art/arcane/iris/core/IrisWorlds.java b/core/src/main/java/art/arcane/iris/core/IrisWorlds.java index 1984deb3e..4a69e0a42 100644 --- a/core/src/main/java/art/arcane/iris/core/IrisWorlds.java +++ b/core/src/main/java/art/arcane/iris/core/IrisWorlds.java @@ -228,8 +228,8 @@ public class IrisWorlds { + " but its dimension failed to load; not redownloading. Fix or delete the pack folder."); return null; } - IrisLogging.warn("Unable to find dimension type " + id + ". Install it with /iris download " - + id + " and restart the server."); + IrisLogging.warn("Unable to find dimension type " + id + ". Install it with " + + PackDownloader.downloadCommandFor(id) + " and restart the server."); } return dimension; } diff --git a/core/src/main/java/art/arcane/iris/core/localization/BukkitCommandMessagesExtended.java b/core/src/main/java/art/arcane/iris/core/localization/BukkitCommandMessagesExtended.java index fb1089c6d..34426e99c 100644 --- a/core/src/main/java/art/arcane/iris/core/localization/BukkitCommandMessagesExtended.java +++ b/core/src/main/java/art/arcane/iris/core/localization/BukkitCommandMessagesExtended.java @@ -171,18 +171,10 @@ public final class BukkitCommandMessagesExtended { "iris.bukkit.commandiris.that_folder_already_exists", C.RED + "That folder already exists!" ); - public static final TextKey COMMAND_IRIS_COULD_NOT_FIND_DOWNLOAD_DIMENSION = TextKey.of( - "iris.bukkit.commandiris.could_not_find_download_dimension", - C.RED + "Could not find or download dimension \"" + "{resolvedType}" + "\"." - ); public static final TextKey COMMAND_IRIS_TRY_ONE_OVERWORLD_VANILLA_FLAT_THEEND = TextKey.of( "iris.bukkit.commandiris.try_one_overworld_vanilla_flat_theend", C.YELLOW + "Try one of: overworld, vanilla, flat, theend" ); - public static final TextKey COMMAND_IRIS_DOWNLOAD_MANUALLY_IRIS_DOWNLOAD = TextKey.of( - "iris.bukkit.commandiris.download_manually_iris_download", - C.YELLOW + "Or download manually: /iris download " + "{resolvedType}" - ); public static final TextKey COMMAND_IRIS_WORLD_STAGING_COMPLETED_RESTART_SERVER_GENERATE_LOAD = TextKey.of( "iris.bukkit.commandiris.world_staging_completed_restart_server_generate_load", C.GREEN + "World staging completed. Restart the server to generate/load \"" + "{worldName}" + "\"." @@ -295,10 +287,6 @@ public final class BukkitCommandMessagesExtended { "iris.bukkit.commandiris.set_debug", C.GREEN + "Set debug to: " + "{to}" ); - public static final TextKey COMMAND_IRIS_DOWNLOADING_PACK = TextKey.of( - "iris.bukkit.commandiris.downloading_pack", - C.GREEN + "Downloading pack: " + "{pack}" + "/" + "{branch}" + "{value}" - ); public static final TextKey COMMAND_IRIS_YOU_MUST_BE_IRIS_WORLD = TextKey.of( "iris.bukkit.commandiris.you_must_be_iris_world", C.RED + "You must be in an Iris world" @@ -889,9 +877,7 @@ public final class BukkitCommandMessagesExtended { COMMAND_IRIS_YOU_CANNOT_USE_WORLD_NAME_BENCHMARK_CREATING_WORLDS_AS_IRIS, COMMAND_IRIS_MAY_WE_SUGGEST_NAME_IRISWORLD_INSTEAD_2, COMMAND_IRIS_THAT_FOLDER_ALREADY_EXISTS, - COMMAND_IRIS_COULD_NOT_FIND_DOWNLOAD_DIMENSION, COMMAND_IRIS_TRY_ONE_OVERWORLD_VANILLA_FLAT_THEEND, - COMMAND_IRIS_DOWNLOAD_MANUALLY_IRIS_DOWNLOAD, COMMAND_IRIS_WORLD_STAGING_COMPLETED_RESTART_SERVER_GENERATE_LOAD, COMMAND_IRIS_EXCEPTION_RAISED_DURING_CREATION_SEE_CONSOLE_MORE_DETAILS, COMMAND_IRIS_SUCCESSFULLY_CREATED_YOUR_WORLD, @@ -920,7 +906,6 @@ public final class BukkitCommandMessagesExtended { COMMAND_IRIS_LOOKS_LIKE_WORLD_WAS_ALREADY_REMOVED_FROM_BUKKIT_YML, COMMAND_IRIS_FAILED_SAVE_BUKKIT_YML_BECAUSE, COMMAND_IRIS_SET_DEBUG, - COMMAND_IRIS_DOWNLOADING_PACK, COMMAND_IRIS_YOU_MUST_BE_IRIS_WORLD, COMMAND_IRIS_SENDING_METRICS, COMMAND_IRIS_THIS_IS_NOT_IRIS_WORLD_IRIS_WORLDS_2, diff --git a/core/src/main/java/art/arcane/iris/core/localization/BukkitRuntimeMessages.java b/core/src/main/java/art/arcane/iris/core/localization/BukkitRuntimeMessages.java index 203331dbd..0197675f6 100644 --- a/core/src/main/java/art/arcane/iris/core/localization/BukkitRuntimeMessages.java +++ b/core/src/main/java/art/arcane/iris/core/localization/BukkitRuntimeMessages.java @@ -434,22 +434,6 @@ public final class BukkitRuntimeMessages { "iris.bukkit.runtime.studiosvc.type_installed", "{name}" + " type installed. " ); - public static final TextKey STUDIO_S_V_C_PACK_WAS_NOT_FOUND_PACK_LISTING = TextKey.of( - "iris.bukkit.runtime.studiosvc.pack_was_not_found_pack_listing", - "Pack '" + "{key}" + "' was not found in the pack listing." - ); - public static final TextKey STUDIO_S_V_C_USE_IRIS_DOWNLOAD_PACK_BRANCH_BRANCH_DOWNLOAD_MANUALLY = TextKey.of( - "iris.bukkit.runtime.studiosvc.use_iris_download_pack_branch_branch_download_manually", - "Use /iris download branch= to download manually." - ); - public static final TextKey STUDIO_S_V_C_FAILED_DOWNLOAD = TextKey.of( - "iris.bukkit.runtime.studiosvc.failed_download", - "Failed to download '" + "{key}" + "'." - ); - public static final TextKey STUDIO_S_V_C_FAILED_DOWNLOAD_BRANCH = TextKey.of( - "iris.bukkit.runtime.studiosvc.failed_download_branch", - "Failed to download '" + "{repo}" + "' (branch " + "{branch}" + ")." - ); public static final TextKey STUDIO_S_V_C_FAILED_OPEN_STUDIO_WORLD = TextKey.of( "iris.bukkit.runtime.studiosvc.failed_open_studio_world", "Failed to open studio world: " + "{error}" @@ -723,10 +707,6 @@ public final class BukkitRuntimeMessages { STUDIO_S_V_C_CAN_T_FIND_DIMENSIONS_FOLDER_THIS_PACK_FAILED, STUDIO_S_V_C_CAN_T_LOAD_DIMENSION_FAILED, STUDIO_S_V_C_TYPE_INSTALLED, - STUDIO_S_V_C_PACK_WAS_NOT_FOUND_PACK_LISTING, - STUDIO_S_V_C_USE_IRIS_DOWNLOAD_PACK_BRANCH_BRANCH_DOWNLOAD_MANUALLY, - STUDIO_S_V_C_FAILED_DOWNLOAD, - STUDIO_S_V_C_FAILED_DOWNLOAD_BRANCH, STUDIO_S_V_C_FAILED_OPEN_STUDIO_WORLD, STUDIO_S_V_C_CANNOT_OPEN_STUDIO_PACK_HAS_BLOCKING_ERRORS, STUDIO_S_V_C_MESSAGE, diff --git a/core/src/main/java/art/arcane/iris/core/localization/DirectorCommandMessages.java b/core/src/main/java/art/arcane/iris/core/localization/DirectorCommandMessages.java index e8a86de88..094c3894b 100644 --- a/core/src/main/java/art/arcane/iris/core/localization/DirectorCommandMessages.java +++ b/core/src/main/java/art/arcane/iris/core/localization/DirectorCommandMessages.java @@ -78,10 +78,6 @@ public final class DirectorCommandMessages { "iris.director.commanddeveloper.param.make_sure_make_backup_read_warnings_first", "Make sure to make a backup & read the warnings first!" ); - public static final TextKey COMMAND_DEVELOPER_PARAM_SHOULD_IRIS_DOWNLOAD_PACK_AGAIN_YOU = TextKey.of( - "iris.director.commanddeveloper.param.should_iris_download_pack_again_you", - "Should Iris download the pack again for you" - ); public static final TextKey COMMAND_DEVELOPER_DIRECTOR_TEST = TextKey.of( "iris.director.commanddeveloper.director.test", "Test" @@ -350,14 +346,6 @@ public final class DirectorCommandMessages { "iris.director.commandiris.param.pack_download", "The pack to download" ); - public static final TextKey COMMAND_IRIS_PARAM_BRANCH_DOWNLOAD_FROM = TextKey.of( - "iris.director.commandiris.param.branch_download_from", - "The branch to download from" - ); - public static final TextKey COMMAND_IRIS_PARAM_WHETHER_NOT_OVERWRITE_PACK_WITH_DOWNLOADED_ONE = TextKey.of( - "iris.director.commandiris.param.whether_not_overwrite_pack_with_downloaded_one", - "Whether or not to overwrite the pack with the downloaded one" - ); public static final TextKey COMMAND_IRIS_DIRECTOR_GET_METRICS_YOUR_WORLD = TextKey.of( "iris.director.commandiris.director.get_metrics_your_world", "Get metrics for your world" @@ -902,7 +890,6 @@ public final class DirectorCommandMessages { COMMAND_DEVELOPER_PARAM_WORLD_UPDATE, COMMAND_DEVELOPER_PARAM_PACK_INSTALL_INTO_WORLD, COMMAND_DEVELOPER_PARAM_MAKE_SURE_MAKE_BACKUP_READ_WARNINGS_FIRST, - COMMAND_DEVELOPER_PARAM_SHOULD_IRIS_DOWNLOAD_PACK_AGAIN_YOU, COMMAND_DEVELOPER_DIRECTOR_TEST, COMMAND_DEVELOPER_PARAM_DUMP_WHOLE_TECTONIC_PLATE_INSTEAD_SINGLE_SECTION, COMMAND_DEVELOPER_PARAM_DUMP_FILE_ID_UNDER_PLUGINS_IRIS_DUMP_PV_ID, @@ -970,8 +957,6 @@ public final class DirectorCommandMessages { COMMAND_IRIS_DIRECTOR_TOGGLE_DEBUG, COMMAND_IRIS_DIRECTOR_DOWNLOAD_PROJECT, COMMAND_IRIS_PARAM_PACK_DOWNLOAD, - COMMAND_IRIS_PARAM_BRANCH_DOWNLOAD_FROM, - COMMAND_IRIS_PARAM_WHETHER_NOT_OVERWRITE_PACK_WITH_DOWNLOADED_ONE, COMMAND_IRIS_DIRECTOR_GET_METRICS_YOUR_WORLD, COMMAND_IRIS_DIRECTOR_RELOAD_CONFIGURATION_FILE_THIS_IS_ALSO_DONE_AUTOMATICALLY, COMMAND_IRIS_DIRECTOR_UNLOAD_IRIS_WORLD, diff --git a/core/src/main/java/art/arcane/iris/core/localization/ModdedHelpMessages.java b/core/src/main/java/art/arcane/iris/core/localization/ModdedHelpMessages.java index 1530c208c..6b2843015 100644 --- a/core/src/main/java/art/arcane/iris/core/localization/ModdedHelpMessages.java +++ b/core/src/main/java/art/arcane/iris/core/localization/ModdedHelpMessages.java @@ -280,7 +280,7 @@ public final class ModdedHelpMessages { ); public static final TextKey COMMAND_ENABLE_CREATE_AND_INJECT_A_PERSISTENT_IRIS_DIMENSION_AT_RUNTIME_DOWNLOADS_THE_PACK = TextKey.of( "iris.modded.help.entry.command.enable", - "Create and inject a persistent Iris dimension at runtime; downloads the pack if missing, quote pack:dimensionKey to pick a specific pack dimension" + "Create and inject a persistent Iris dimension at runtime; refuses if the pack is missing, quote pack:dimensionKey to pick a specific pack dimension" ); public static final TextKey COMMAND_REPLACE_OVERWORLD_INJECT_AN_IRIS_PRIMARY_WORLD_AND_ROUTE_PLAYERS_THERE_INSTEAD_OF_THE = TextKey.of( "iris.modded.help.entry.command.replace_overworld", diff --git a/core/src/main/java/art/arcane/iris/core/localization/PackDownloadMessages.java b/core/src/main/java/art/arcane/iris/core/localization/PackDownloadMessages.java index c24712a0a..88e037860 100644 --- a/core/src/main/java/art/arcane/iris/core/localization/PackDownloadMessages.java +++ b/core/src/main/java/art/arcane/iris/core/localization/PackDownloadMessages.java @@ -9,18 +9,6 @@ import java.util.List; import java.util.Map; public final class PackDownloadMessages { - public static final TextKey INVALID_PACK_NAME = TextKey.of( - "iris.runtime.pack_download.invalid_pack_name", - "Invalid pack name '{pack}' (allowed: a-z, 0-9, _ and -)" - ); - public static final TextKey INVALID_BRANCH_NAME = TextKey.of( - "iris.runtime.pack_download.invalid_branch_name", - "Invalid branch name '{branch}' (allowed: letters, digits, . _ and -)" - ); - public static final TextKey DOWNLOAD_FAILED = TextKey.of( - "iris.runtime.pack_download.failed", - "Pack download failed: {type}{errorMessage}" - ); public static final TextKey DOWNLOADING = TextKey.of( "iris.runtime.pack_download.downloading", "Downloading {url}" @@ -29,14 +17,6 @@ public final class PackDownloadMessages { "iris.runtime.pack_download.failed_to_find", "Failed to find pack at {url}" ); - public static final TextKey CHECK_REPOSITORY_AND_BRANCH = TextKey.of( - "iris.runtime.pack_download.check_repository_and_branch", - "Make sure you specified the correct repo and branch!" - ); - public static final TextKey EXAMPLE_COMMAND = TextKey.of( - "iris.runtime.pack_download.example_command", - "For example: /iris download overworld branch=stable" - ); public static final TextKey UNPACKING = TextKey.of( "iris.runtime.pack_download.unpacking", "Unpacking {repository}" @@ -70,10 +50,6 @@ public final class PackDownloadMessages { "iris.runtime.pack_download.check_github", "Check that it is present on GitHub and report this to staff!" ); - public static final TextKey ONE_DIMENSION_REQUIRED = TextKey.of( - "iris.runtime.pack_download.one_dimension_required", - "The dimensions folder must contain exactly one file." - ); public static final TextKey INVALID_DIMENSION = TextKey.of( "iris.runtime.pack_download.invalid_dimension", "Invalid dimension folder under dimensions/." @@ -120,13 +96,8 @@ public final class PackDownloadMessages { ); private static final List KEYS = List.of( - INVALID_PACK_NAME, - INVALID_BRANCH_NAME, - DOWNLOAD_FAILED, DOWNLOADING, FAILED_TO_FIND, - CHECK_REPOSITORY_AND_BRANCH, - EXAMPLE_COMMAND, UNPACKING, UNPACK_FAILED, NO_EXTRACTED_FILES, @@ -134,7 +105,6 @@ public final class PackDownloadMessages { INVALID_ARCHIVE_FORMAT, NO_DIMENSION_FILE, CHECK_GITHUB, - ONE_DIMENSION_REQUIRED, INVALID_DIMENSION, IMPORTING, DIMENSION_KEY_CONFLICT, diff --git a/core/src/main/java/art/arcane/iris/core/localization/RuntimeUiMessages.java b/core/src/main/java/art/arcane/iris/core/localization/RuntimeUiMessages.java index 6ce205da9..e5a107420 100644 --- a/core/src/main/java/art/arcane/iris/core/localization/RuntimeUiMessages.java +++ b/core/src/main/java/art/arcane/iris/core/localization/RuntimeUiMessages.java @@ -23,7 +23,6 @@ public final class RuntimeUiMessages { public static final TextKey STATUS_TRUE = TextKey.of("iris.runtime.status.true", "true"); public static final TextKey STATUS_FALSE = TextKey.of("iris.runtime.status.false", "false"); public static final TextKey ERROR_DETAIL_SUFFIX = TextKey.of("iris.runtime.error.detail_suffix", " - {error}"); - public static final TextKey DOWNLOAD_OVERWRITE_SUFFIX = TextKey.of("iris.runtime.download.overwrite_suffix", " overwriting"); public static final TextKey DATAPACK_OVERRIDE_SUFFIX = TextKey.of("iris.runtime.datapack.override_suffix", " (world datapack override installed)"); public static final TextKey PRIMARY_PLAYERS_ROUTED_SUFFIX = TextKey.of("iris.runtime.primary_world.players_routed_suffix", " (players routed there)"); public static final TextKey PRIMARY_ROUTING_DISABLED_SUFFIX = TextKey.of("iris.runtime.primary_world.routing_disabled_suffix", " (routing disabled)"); @@ -154,7 +153,6 @@ public final class RuntimeUiMessages { STATUS_TRUE, STATUS_FALSE, ERROR_DETAIL_SUFFIX, - DOWNLOAD_OVERWRITE_SUFFIX, DATAPACK_OVERRIDE_SUFFIX, PRIMARY_PLAYERS_ROUTED_SUFFIX, PRIMARY_ROUTING_DISABLED_SUFFIX, diff --git a/core/src/main/java/art/arcane/iris/core/pack/IrisPackRepository.java b/core/src/main/java/art/arcane/iris/core/pack/IrisPackRepository.java index 33298116c..37b1b00e7 100644 --- a/core/src/main/java/art/arcane/iris/core/pack/IrisPackRepository.java +++ b/core/src/main/java/art/arcane/iris/core/pack/IrisPackRepository.java @@ -40,6 +40,8 @@ import java.util.UUID; @Data @Builder public class IrisPackRepository { + private static final String DEFAULT_BRANCH = "stable"; + @Builder.Default private String user = "IrisDimensions"; @@ -47,7 +49,7 @@ public class IrisPackRepository { private String repo = "overworld"; @Builder.Default - private String branch = PackDownloader.DEFAULT_BRANCH; + private String branch = DEFAULT_BRANCH; @Builder.Default private String tag = ""; @@ -96,7 +98,7 @@ public class IrisPackRepository { return IrisPackRepository.builder() .user("IrisDimensions") .repo(g) - .branch(PackDownloader.DEFAULT_BRANCH) + .branch(DEFAULT_BRANCH) .build(); } diff --git a/core/src/main/java/art/arcane/iris/core/pack/PackDownloader.java b/core/src/main/java/art/arcane/iris/core/pack/PackDownloader.java index 73485d022..eefe1617b 100644 --- a/core/src/main/java/art/arcane/iris/core/pack/PackDownloader.java +++ b/core/src/main/java/art/arcane/iris/core/pack/PackDownloader.java @@ -55,26 +55,17 @@ import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; public final class PackDownloader { - /** - * The branch every download path falls back to when the caller did not name one. Compile-time - * constant so Director {@code @Param(defaultValue = ...)} annotations can reference it. - */ - public static final String DEFAULT_BRANCH = "stable"; - private static final String HEAD_REF = "HEAD"; private static final String DEFAULT_OVERWORLD_PACK = "overworld"; - private static final String DEFAULT_OVERWORLD_REPOSITORY = "IrisDimensions/overworld"; - private static final String DEFAULT_OVERWORLD_REF = "master"; + private static final String DEFAULT_OVERWORLD_URL = + "https://github.com/IrisDimensions/overworld/releases/download/beta/overworld.zip"; private static final String UNDERWORLD_PACK = "underworld"; - private static final String UNDERWORLD_REPOSITORY = "IrisDimensions/underworld"; - private static final String UNDERWORLD_REF = "main"; - private static final List MANAGED_PACK_KEYS = List.of(DEFAULT_OVERWORLD_PACK, UNDERWORLD_PACK); - private static final Map MANAGED_PACKS = Map.of( - DEFAULT_OVERWORLD_PACK, new ManagedPack(DEFAULT_OVERWORLD_REPOSITORY, DEFAULT_OVERWORLD_REF), - UNDERWORLD_PACK, new ManagedPack(UNDERWORLD_REPOSITORY, UNDERWORLD_REF) + private static final String UNDERWORLD_URL = + "https://github.com/IrisDimensions/underworld/releases/download/beta/underworld.zip"; + private static final List BUILT_IN_PACK_KEYS = List.of(DEFAULT_OVERWORLD_PACK, UNDERWORLD_PACK); + private static final Map BUILT_IN_PACK_URLS = Map.of( + DEFAULT_OVERWORLD_PACK, DEFAULT_OVERWORLD_URL, + UNDERWORLD_PACK, UNDERWORLD_URL ); - private static final Pattern GITHUB_REPOSITORY = Pattern.compile("[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+"); - private static final Pattern GITHUB_REF = Pattern.compile("[A-Za-z0-9][A-Za-z0-9._/-]*"); - private static final Pattern COMMIT_SHA = Pattern.compile("[0-9a-fA-F]{40}"); private static final Pattern PACK_KEY = Pattern.compile("[a-z0-9_-]+"); private static final ArchiveLimits ARCHIVE_LIMITS = new ArchiveLimits( 512L * 1024L * 1024L, @@ -91,12 +82,18 @@ public final class PackDownloader { return DEFAULT_OVERWORLD_PACK.equals(pack); } - public static boolean isManagedPack(String pack) { - return pack != null && MANAGED_PACKS.containsKey(pack); + public static boolean isBuiltInPack(String pack) { + return pack != null && BUILT_IN_PACK_URLS.containsKey(pack); } - public static List managedPacks() { - return MANAGED_PACK_KEYS; + public static List builtInPacks() { + return BUILT_IN_PACK_KEYS; + } + + public static String downloadCommandFor(String pack) { + return isBuiltInPack(pack) + ? "/iris download pack=" + pack + : "/iris download link="; } public static boolean isDirectZipUrl(String value) { @@ -158,8 +155,8 @@ public final class PackDownloader { } } - public static boolean isManagedPackPresent(File packsFolder, String key) { - if (!isManagedPack(key) || !isPackPresent(packsFolder, key)) { + public static boolean isBuiltInPackPresent(File packsFolder, String key) { + if (!isBuiltInPack(key) || !isPackPresent(packsFolder, key)) { return false; } File resolvedPack = PackDirectoryResolver.resolveExisting(packsFolder, key); @@ -174,21 +171,19 @@ public final class PackDownloader { } public static PackInstallResult downloadDefaultOverworld(File packsFolder, boolean forceOverwrite, Consumer feedback) throws IOException { - return downloadManaged(packsFolder, DEFAULT_OVERWORLD_PACK, forceOverwrite, feedback); + return downloadBuiltIn(packsFolder, DEFAULT_OVERWORLD_PACK, forceOverwrite, feedback); } - public static PackInstallResult downloadManaged(File packsFolder, String pack, boolean forceOverwrite, + public static PackInstallResult downloadBuiltIn(File packsFolder, String pack, boolean forceOverwrite, Consumer feedback) throws IOException { - ManagedPack managed = pack == null ? null : MANAGED_PACKS.get(pack); - if (managed == null) { - throw new IllegalArgumentException("Pack '" + pack + "' has no managed Git source"); + String url = pack == null ? null : BUILT_IN_PACK_URLS.get(pack); + if (url == null) { + throw new IllegalArgumentException("Pack '" + pack + "' is not a built-in Iris download"); } - return download( + return downloadArchive( packsFolder, - managed.repository(), - managed.ref(), + url, forceOverwrite, - false, pack, feedback ); @@ -199,65 +194,49 @@ public final class PackDownloader { if (!isDirectZipUrl(url)) { throw new IllegalArgumentException("Pack URL must be an HTTP or HTTPS .zip link"); } - return download( + return downloadArchive( packsFolder, - "direct-url", url.trim(), forceOverwrite, - true, null, feedback ); } - /** - * Downloads and imports a pack. {@code expectedKey} is the pack key the caller is trying to - * obtain (null when unknown, e.g. arbitrary repo, branch, or URL downloads); when the key is - * already present on disk and {@code forceOverwrite} is false, the network is never touched. - */ - public static PackInstallResult download(File packsFolder, String repo, String ref, boolean forceOverwrite, boolean directUrl, String expectedKey, Consumer feedback) throws IOException { + private static PackInstallResult downloadArchive(File packsFolder, String url, boolean forceOverwrite, + String expectedKey, Consumer feedback) throws IOException { Objects.requireNonNull(packsFolder, "packsFolder"); Consumer output = feedback == null ? ignored -> { } : feedback; if (expectedKey != null && !expectedKey.isBlank() && !isSafePackKey(expectedKey)) { throw new IllegalArgumentException("Invalid expected pack key '" + expectedKey + "'"); } - String lockKey = expectedKey != null && !expectedKey.isBlank() ? "key:" + expectedKey : "ref:" + repo + "|" + ref; + String lockKey = expectedKey != null && !expectedKey.isBlank() ? "key:" + expectedKey : "url:" + url; return withDownloadLock(lockKey, () -> { - boolean present = isManagedPack(expectedKey) - ? isManagedPackPresent(packsFolder, expectedKey) + boolean present = isBuiltInPack(expectedKey) + ? isBuiltInPackPresent(packsFolder, expectedKey) : isPackPresent(packsFolder, expectedKey); if (!forceOverwrite && present) { sendFeedback(output, IrisLanguage.plain(PackDownloadMessages.ALREADY_INSTALLED, MessageArgument.untrusted("key", expectedKey))); return new PackInstallResult(expectedKey, false, false); } - return downloadLocked(packsFolder, repo, ref, forceOverwrite, directUrl, expectedKey, lockKey, output); + return downloadLocked(packsFolder, url, forceOverwrite, expectedKey, lockKey, output); }); } - private static PackInstallResult downloadLocked(File packsFolder, String repo, String ref, boolean forceOverwrite, boolean directUrl, + private static PackInstallResult downloadLocked(File packsFolder, String url, boolean forceOverwrite, String expectedKey, String heldLockKey, Consumer feedback) throws IOException { - String url = directUrl ? ref : resolveGithubArchiveUrl(repo, ref); sendFeedback(feedback, IrisLanguage.plain(PackDownloadMessages.DOWNLOADING, MessageArgument.untrusted("url", url)) + " "); - File zip = WebCache.getNonCachedFile("pack-" + repo, url, ARCHIVE_LIMITS.maxArchiveBytes()); - if ((zip == null || !zip.exists()) && !directUrl && DEFAULT_BRANCH.equals(ref)) { - // A repo without the shared default branch still resolves via its HEAD; one retry, never recursive. - String headUrl = resolveGithubArchiveUrl(repo, HEAD_REF); - sendFeedback(feedback, IrisLanguage.plain(PackDownloadMessages.DOWNLOADING, MessageArgument.untrusted("url", headUrl)) + " "); - zip = WebCache.getNonCachedFile("pack-" + repo, headUrl, ARCHIVE_LIMITS.maxArchiveBytes()); - url = headUrl; - } + File zip = WebCache.getNonCachedFile("pack-archive", url, ARCHIVE_LIMITS.maxArchiveBytes()); File temp = WebCache.getTemp(); File work = new File(temp, "dl-" + UUID.randomUUID()); try { if (zip == null || !zip.exists()) { sendFeedback(feedback, IrisLanguage.plain(PackDownloadMessages.FAILED_TO_FIND, MessageArgument.untrusted("url", url))); - sendFeedback(feedback, IrisLanguage.plain(PackDownloadMessages.CHECK_REPOSITORY_AND_BRANCH)); - sendFeedback(feedback, IrisLanguage.plain(PackDownloadMessages.EXAMPLE_COMMAND)); return null; } - sendFeedback(feedback, IrisLanguage.plain(PackDownloadMessages.UNPACKING, MessageArgument.untrusted("repository", repo))); + sendFeedback(feedback, IrisLanguage.plain(PackDownloadMessages.UNPACKING, MessageArgument.untrusted("repository", url))); try { unpackArchive(zip.toPath(), work.toPath(), ARCHIVE_LIMITS); } catch (IOException exception) { @@ -395,11 +374,12 @@ public final class PackDownloader { private static String selectDimensionKey(String[] dimensions, String expectedKey, Consumer feedback) throws IOException { if (expectedKey == null || expectedKey.isBlank()) { - if (dimensions.length != 1) { - sendFeedback(feedback, IrisLanguage.plain(PackDownloadMessages.ONE_DIMENSION_REQUIRED)); - return null; - } - return dimensions[0]; + return Arrays.stream(dimensions) + .min((left, right) -> { + int lengthComparison = Integer.compare(left.length(), right.length()); + return lengthComparison == 0 ? left.compareTo(right) : lengthComparison; + }) + .orElseThrow(() -> new IOException("Downloaded pack contains no dimensions")); } int matches = 0; @@ -434,8 +414,8 @@ public final class PackDownloader { )); return null; } - boolean present = isManagedPack(prepared.key()) - ? isManagedPackPresent(packsRoot.toFile(), prepared.key()) + boolean present = isBuiltInPack(prepared.key()) + ? isBuiltInPackPresent(packsRoot.toFile(), prepared.key()) : isPackPresent(packsRoot.toFile(), prepared.key()); if (!forceOverwrite && present) { sendFeedback(feedback, IrisLanguage.plain( @@ -679,82 +659,13 @@ public final class PackDownloader { )); } - static String resolveGithubArchiveUrl(String repo, String ref) { - if (repo == null || !GITHUB_REPOSITORY.matcher(repo).matches()) { - throw new IllegalArgumentException("Invalid GitHub repository '" + repo + "'"); - } - String[] repositoryParts = repo.split("/", -1); - if (repositoryParts[0].equals(".") || repositoryParts[0].equals("..") - || repositoryParts[1].equals(".") || repositoryParts[1].equals("..")) { - throw new IllegalArgumentException("Invalid GitHub repository '" + repo + "'"); - } - if (ref == null || ref.isBlank()) { - throw new IllegalArgumentException("GitHub reference cannot be empty"); - } - if (COMMIT_SHA.matcher(ref).matches()) { - return "https://github.com/" + repo + "/archive/" + ref + ".zip"; - } - if ("HEAD".equals(ref)) { - return "https://github.com/" + repo + "/archive/HEAD.zip"; - } - if (ref.startsWith("refs/") && !ref.startsWith("refs/heads/") && !ref.startsWith("refs/tags/")) { - throw new IllegalArgumentException("Unsupported GitHub reference '" + ref + "'"); - } - - String qualifiedRef; - if (ref.startsWith("refs/heads/") || ref.startsWith("refs/tags/")) { - qualifiedRef = ref; - } else { - qualifiedRef = "refs/heads/" + ref; - } - validateGithubRef(qualifiedRef); - return "https://codeload.github.com/" + repo + "/zip/" + qualifiedRef; - } - - static String defaultOverworldRepository() { - return DEFAULT_OVERWORLD_REPOSITORY; - } - - static String defaultOverworldRef() { - return DEFAULT_OVERWORLD_REF; - } - - static String underworldRepository() { - return UNDERWORLD_REPOSITORY; - } - - static String underworldRef() { - return UNDERWORLD_REF; - } - - private static void validateGithubRef(String qualifiedRef) { - String refPath = qualifiedRef.startsWith("refs/heads/") - ? qualifiedRef.substring("refs/heads/".length()) - : qualifiedRef.substring("refs/tags/".length()); - if (!GITHUB_REF.matcher(refPath).matches() - || refPath.contains("..") - || refPath.contains("//") - || refPath.contains("@{") - || refPath.endsWith("/") - || refPath.endsWith(".") - || refPath.endsWith(".lock")) { - throw new IllegalArgumentException("Invalid GitHub reference '" + qualifiedRef + "'"); - } - - String[] segments = refPath.split("/"); - for (String segment : segments) { - if (segment.startsWith(".") || segment.endsWith(".lock")) { - throw new IllegalArgumentException("Invalid GitHub reference '" + qualifiedRef + "'"); - } - } + static String builtInPackUrl(String pack) { + return BUILT_IN_PACK_URLS.get(pack); } private record PreparedPack(String key, String name, PackValidationResult validation) { } - private record ManagedPack(String repository, String ref) { - } - public record PackInstallResult(String key, boolean changed, boolean restartRequired) { } diff --git a/core/src/main/java/art/arcane/iris/core/service/StudioSVC.java b/core/src/main/java/art/arcane/iris/core/service/StudioSVC.java index 587f6a7c6..1c6ea48d8 100644 --- a/core/src/main/java/art/arcane/iris/core/service/StudioSVC.java +++ b/core/src/main/java/art/arcane/iris/core/service/StudioSVC.java @@ -18,7 +18,6 @@ package art.arcane.iris.core.service; -import com.google.gson.JsonSyntaxException; import art.arcane.iris.spi.IrisLogging; import art.arcane.iris.spi.IrisServices; import art.arcane.iris.core.IrisSettings; @@ -48,7 +47,6 @@ import art.arcane.iris.engine.data.cache.AtomicCache; import art.arcane.iris.engine.object.IrisDimension; import art.arcane.iris.engine.platform.PlatformChunkGenerator; import art.arcane.iris.platform.bukkit.BukkitPlatform; -import art.arcane.volmlib.util.collection.KMap; import art.arcane.volmlib.util.bukkit.WorldIdentity; import art.arcane.volmlib.util.exceptions.IrisException; import art.arcane.volmlib.util.io.IO; @@ -87,11 +85,9 @@ import art.arcane.iris.core.localization.IrisLanguage; import art.arcane.iris.core.localization.PackDownloadMessages; import art.arcane.volmlib.util.localization.MessageArgument; public class StudioSVC implements IrisService { - public static final String LISTING = "https://raw.githubusercontent.com/IrisDimensions/_listing/main/listing-v2.json"; public static final String WORKSPACE_NAME = "packs"; private static final Pattern PROJECT_NAME = Pattern.compile("[a-z0-9_-]+"); private static final AtomicCache counter = new AtomicCache<>(); - private final KMap cacheListing = null; private final StudioTransitionQueue studioTransitions = new StudioTransitionQueue(); private volatile IrisProject activeProject; private volatile CompletableFuture activeOpen; @@ -101,7 +97,7 @@ public class StudioSVC implements IrisService { String configuredPack = IrisSettings.get().getGenerator().getDefaultWorldType(); if (!PackDownloader.isPackPresent(getWorkspaceFolder(), configuredPack)) { IrisLogging.warn("Default pack '" + configuredPack - + "' is not installed. Please download it manually with /iris download " + configuredPack); + + "' is not installed. Install a built-in pack with /iris download pack=overworld or provide /iris download link=."); } } @@ -332,29 +328,18 @@ public class StudioSVC implements IrisService { return replaceIntoPackDirectory(sender, dimension, folder); } - public void downloadSearch(VolmitSender sender, String key) { - downloadSearch(sender, key, false); - } - - public void downloadSearch(VolmitSender sender, String key, boolean forceOverwrite) { - runPackMutation(sender, LifecycleOperationCoordinator.OperationKind.PACK_DOWNLOAD, key, () -> { - DownloadOutcome outcome = downloadSearchLocked(sender, key, forceOverwrite); - return finishStandalonePackMutation(outcome); - }, IrisLanguage.text(BukkitRuntimeMessages.STUDIO_S_V_C_FAILED_DOWNLOAD, MessageArgument.untrusted("key", String.valueOf(key)))); - } - - public void downloadManaged(VolmitSender sender, String key, boolean forceOverwrite) { - if (!PackDownloader.isManagedPack(key)) { - sender.sendMessage("Iris pack '" + key + "' does not have a managed Git source."); + public void downloadBuiltIn(VolmitSender sender, String key) { + if (!PackDownloader.isBuiltInPack(key)) { + sender.sendMessage("Iris only provides built-in downloads for 'overworld' and 'underworld'."); return; } runPackMutation(sender, LifecycleOperationCoordinator.OperationKind.PACK_DOWNLOAD, key, () -> { - DownloadOutcome outcome = downloadManagedLocked(sender, key, forceOverwrite); + DownloadOutcome outcome = downloadBuiltInLocked(sender, key); return finishStandalonePackMutation(outcome); - }, "Failed to download managed Iris pack '" + key + "'."); + }, "Failed to download built-in Iris pack '" + key + "'."); } - public void downloadUrl(VolmitSender sender, String url, boolean forceOverwrite) { + public void downloadUrl(VolmitSender sender, String url) { if (!PackDownloader.isDirectZipUrl(url)) { sender.sendMessage("Iris requires a valid HTTP or HTTPS .zip URL."); return; @@ -363,131 +348,28 @@ public class StudioSVC implements IrisService { DownloadOutcome outcome = DownloadOutcome.from(PackDownloader.downloadUrl( getWorkspaceFolder(), url, - forceOverwrite, + false, sender::sendMessage )); return finishStandalonePackMutation(outcome); }, "Failed to download Iris pack from '" + url + "'."); } - public void downloadBranch(VolmitSender sender, String repo, String branch, boolean forceOverwrite) { - runPackMutation(sender, LifecycleOperationCoordinator.OperationKind.PACK_DOWNLOAD, repo + "/" + branch, () -> { - DownloadOutcome outcome = downloadLocked(sender, repo, branch, forceOverwrite, false, null); - return finishStandalonePackMutation(outcome); - }, IrisLanguage.text(BukkitRuntimeMessages.STUDIO_S_V_C_FAILED_DOWNLOAD_BRANCH, MessageArgument.untrusted("repo", String.valueOf(repo)), MessageArgument.untrusted("branch", String.valueOf(branch)))); - } - - public void download(VolmitSender sender, String repo, String branch) throws JsonSyntaxException, IOException { - download(sender, repo, branch, false, false); - } - - public void download(VolmitSender sender, String repo, String branch, boolean forceOverwrite, boolean directUrl) throws JsonSyntaxException, IOException { - download(sender, repo, branch, forceOverwrite, directUrl, null); - } - - public void download(VolmitSender sender, String repo, String branch, boolean forceOverwrite, boolean directUrl, String expectedKey) throws JsonSyntaxException, IOException { - String target = expectedKey == null ? repo + "/" + branch : expectedKey; - runPackMutation(sender, LifecycleOperationCoordinator.OperationKind.PACK_DOWNLOAD, target, () -> { - DownloadOutcome outcome = downloadLocked(sender, repo, branch, forceOverwrite, directUrl, expectedKey); - return finishStandalonePackMutation(outcome); - }, "Failed to download Iris pack '" + target + "'."); - } - - private DownloadOutcome downloadSearchLocked(VolmitSender sender, String key, boolean forceOverwrite) throws IOException { - if (PackDownloader.isManagedPack(key)) { - return downloadManagedLocked(sender, key, forceOverwrite); - } - - String descriptor = key.contains("/") ? key : getListing(false).get(key); - if (descriptor == null) { - sender.sendMessage(IrisLanguage.text(BukkitRuntimeMessages.STUDIO_S_V_C_PACK_WAS_NOT_FOUND_PACK_LISTING, MessageArgument.untrusted("key", String.valueOf(key)))); - sender.sendMessage(IrisLanguage.text(BukkitRuntimeMessages.STUDIO_S_V_C_USE_IRIS_DOWNLOAD_PACK_BRANCH_BRANCH_DOWNLOAD_MANUALLY)); + private DownloadOutcome downloadBuiltInLocked(VolmitSender sender, String expectedKey) throws IOException { + if (PackDownloader.isBuiltInPackPresent(getWorkspaceFolder(), expectedKey)) { + sender.sendMessage(IrisLanguage.text(PackDownloadMessages.ALREADY_INSTALLED, MessageArgument.untrusted("key", expectedKey))); return DownloadOutcome.notChanged(); } - PackListingReference reference = resolvePackListingReference(key, descriptor); - IrisLogging.info("Resolved pack '" + key + "' to " + reference.repository() + "/" + reference.ref()); - return downloadLocked( - sender, - reference.repository(), - reference.ref(), - forceOverwrite, + PackDownloader.PackInstallResult result = PackDownloader.downloadBuiltIn( + getWorkspaceFolder(), + expectedKey, false, - reference.expectedKey() - ); - } - - static PackListingReference resolvePackListingReference(String key, String descriptor) { - String[] nodes = descriptor.split("\\Q/\\E"); - String repository = nodes.length == 1 ? "IrisDimensions/" + nodes[0] : nodes[0] + "/" + nodes[1]; - String ref = nodes.length > 2 ? nodes[2] : "HEAD"; - String expectedKey = key.contains("/") && nodes.length > 1 ? nodes[1] : key; - return new PackListingReference(repository, ref, expectedKey); - } - - private DownloadOutcome downloadManagedLocked( - VolmitSender sender, - String expectedKey, - boolean forceOverwrite - ) throws IOException { - if (!forceOverwrite && PackDownloader.isManagedPackPresent(getWorkspaceFolder(), expectedKey)) { - sender.sendMessage(IrisLanguage.text(PackDownloadMessages.ALREADY_INSTALLED, MessageArgument.untrusted("key", expectedKey))); - return DownloadOutcome.notChanged(); - } - - PackDownloader.PackInstallResult result = PackDownloader.downloadManaged( - getWorkspaceFolder(), - expectedKey, - forceOverwrite, sender::sendMessage ); return DownloadOutcome.from(result); } - private DownloadOutcome downloadLocked( - VolmitSender sender, - String repo, - String branch, - boolean forceOverwrite, - boolean directUrl, - String expectedKey - ) throws IOException { - if (!forceOverwrite && PackDownloader.isPackPresent(getWorkspaceFolder(), expectedKey)) { - sender.sendMessage(IrisLanguage.text(PackDownloadMessages.ALREADY_INSTALLED, MessageArgument.untrusted("key", expectedKey))); - return DownloadOutcome.notChanged(); - } - - PackDownloader.PackInstallResult result = PackDownloader.download( - getWorkspaceFolder(), - repo, - branch, - forceOverwrite, - directUrl, - expectedKey, - sender::sendMessage - ); - return DownloadOutcome.from(result); - } - - public KMap getListing(boolean cached) { - JSONObject a; - - if (cached) { - a = new JSONObject(art.arcane.iris.util.common.misc.WebCache.getCached("cachedlisting", LISTING)); - } else { - a = new JSONObject(art.arcane.iris.util.common.misc.WebCache.getNonCached(true + "listing", LISTING)); - } - - KMap l = new KMap<>(); - - for (String i : a.keySet()) { - if (a.get(i) instanceof String) - l.put(i, a.getString(i)); - } - - return l; - } - public boolean isProjectOpen() { return activeProject != null && activeProject.isOpen(); } @@ -926,9 +808,6 @@ public class StudioSVC implements IrisService { createStarterProject(workspace, projectName); } else { File importPack = selectedTemplatePack == null ? new File(workspace, templateName) : selectedTemplatePack; - if (selectedTemplatePack == null && !hasLoadableDimensionFile(importPack, templateName)) { - downloadSearchLocked(sender, templateName, false); - } if (!hasLoadableDimensionFile(importPack, templateName)) { sender.sendMessage(IrisLanguage.text(BukkitRuntimeMessages.STUDIO_S_V_C_COULDN_T_FIND_PACK_CREATE_NEW_DIMENSION_FROM)); sender.sendMessage(IrisLanguage.text(BukkitRuntimeMessages.STUDIO_S_V_C_MISSING_IMPORTED_DIMENSION_FILE)); @@ -1337,9 +1216,6 @@ public class StudioSVC implements IrisService { RESTART } - record PackListingReference(String repository, String ref, String expectedKey) { - } - public IrisProject getActiveProject() { return activeProject; } diff --git a/core/src/main/java/art/arcane/iris/core/tools/IrisToolbelt.java b/core/src/main/java/art/arcane/iris/core/tools/IrisToolbelt.java index f59d7bdac..4c8661f1d 100644 --- a/core/src/main/java/art/arcane/iris/core/tools/IrisToolbelt.java +++ b/core/src/main/java/art/arcane/iris/core/tools/IrisToolbelt.java @@ -33,6 +33,7 @@ import art.arcane.iris.core.pregenerator.PregenTask; import art.arcane.iris.core.pregenerator.PregeneratorMethod; import art.arcane.iris.core.pregenerator.cache.PregenCache; import art.arcane.iris.core.pack.PackDirectoryResolver; +import art.arcane.iris.core.pack.PackDownloader; import art.arcane.iris.core.project.IrisProject; import art.arcane.iris.core.pregenerator.methods.CachedPregenMethod; import art.arcane.iris.core.pregenerator.methods.HybridPregenMethod; @@ -102,7 +103,7 @@ public class IrisToolbelt { if (pack == null) { IrisLogging.warn("Iris pack '" + reference.pack() - + "' is not installed. Install it with /iris download " + reference.pack() + + "' is not installed. Install it with " + PackDownloader.downloadCommandFor(reference.pack()) + " and restart the server."); return null; } diff --git a/core/src/main/resources/languages/de_DE.json b/core/src/main/resources/languages/de_DE.json index 9944a234a..295d0d8e5 100644 --- a/core/src/main/resources/languages/de_DE.json +++ b/core/src/main/resources/languages/de_DE.json @@ -148,9 +148,7 @@ "iris.bukkit.commandiris.you_cannot_use_world_name_benchmark_creating_worlds_as_iris": "§cDu kannst den Weltnamen \"benchmark\" nicht verwenden, weil Iris dieses Verzeichnis für Pack-Benchmarks nutzt.", "iris.bukkit.commandiris.may_we_suggest_name_irisworld_instead_2": "§cWie wäre es stattdessen mit dem Namen \"IrisWorld\"?", "iris.bukkit.commandiris.that_folder_already_exists": "§cDieser Ordner existiert bereits!", - "iris.bukkit.commandiris.could_not_find_download_dimension": "§cDimension \"{resolvedType}\" konnte weder gefunden noch heruntergeladen werden.", "iris.bukkit.commandiris.try_one_overworld_vanilla_flat_theend": "§eVersuche eine der folgenden Optionen: overworld, vanilla, flat, theend", - "iris.bukkit.commandiris.download_manually_iris_download": "§eOder manuell herunterladen: /iris download {resolvedType}", "iris.bukkit.commandiris.world_staging_completed_restart_server_generate_load": "§aVorbereitung der Welt abgeschlossen. Starte den Server neu, um \"{worldName}\" zu generieren/zu laden.", "iris.bukkit.commandiris.exception_raised_during_creation_see_console_more_details": "§cBei der Erstellung ist eine Ausnahme aufgetreten. Weitere Details findest du in der Konsole.", "iris.bukkit.commandiris.successfully_created_your_world": "§aDeine Welt wurde erfolgreich erstellt!", @@ -179,7 +177,6 @@ "iris.bukkit.commandiris.looks_like_world_was_already_removed_from_bukkit_yml": "§eDie Welt wurde anscheinend bereits aus bukkit.yml entfernt", "iris.bukkit.commandiris.failed_save_bukkit_yml_because": "§cbukkit.yml konnte wegen {value} nicht gespeichert werden", "iris.bukkit.commandiris.set_debug": "§aDebug gesetzt auf: {to}", - "iris.bukkit.commandiris.downloading_pack": "§aDownload des Pack: {pack}/{branch}{value}", "iris.bukkit.commandiris.you_must_be_iris_world": "§cDu musst dich in einer Iris-Welt befinden", "iris.bukkit.commandiris.sending_metrics": "§aÜbermittlung von Metriken...", "iris.bukkit.commandiris.this_is_not_iris_world_iris_worlds_2": "§cDies ist keine Iris-Welt. Iris-Welten: {value}", @@ -645,7 +642,6 @@ "iris.director.commanddeveloper.param.world_update": "Die Welt aktualisiert", "iris.director.commanddeveloper.param.pack_install_into_world": "Das in der Welt zu installierende Pack", "iris.director.commanddeveloper.param.make_sure_make_backup_read_warnings_first": "Stellen Sie sicher, dass Sie ein Backup erstellen & Lesen Sie zuerst die Warnungen!", - "iris.director.commanddeveloper.param.should_iris_download_pack_again_you": "Ob Iris das Pack erneut herunterladen soll", "iris.director.commanddeveloper.director.test": "Prüfung", "iris.director.commanddeveloper.param.dump_whole_tectonic_plate_instead_single_section": "Dump die gesamte tektonische Platte anstelle eines einzigen Abschnitts", "iris.director.commanddeveloper.param.dump_file_id_under_plugins_iris_dump_pv_id": "Die Dump File ID unter plugins/Iris/dump (pv..*)", @@ -713,8 +709,6 @@ "iris.director.commandiris.director.toggle_debug": "Toggle-Debug", "iris.director.commandiris.director.download_project": "Download eines Projekts.", "iris.director.commandiris.param.pack_download": "Das herunterzuladende Pack", - "iris.director.commandiris.param.branch_download_from": "Der Branch zum Download von", - "iris.director.commandiris.param.whether_not_overwrite_pack_with_downloaded_one": "Ob das Pack durch das heruntergeladene Pack überschrieben werden soll", "iris.director.commandiris.director.get_metrics_your_world": "Holen Sie sich Metriken für Ihre Welt", "iris.director.commandiris.director.reload_configuration_file_this_is_also_done_automatically": "Konfigurationsdatei neu laden (dies erfolgt auch automatisch)", "iris.director.commandiris.director.unload_iris_world": "Eine Iris-Welt entladen", @@ -950,7 +944,6 @@ "iris.runtime.status.true": "wahr", "iris.runtime.status.false": "falsch", "iris.runtime.error.detail_suffix": " - {error}", - "iris.runtime.download.overwrite_suffix": " wird überschrieben", "iris.runtime.datapack.override_suffix": " (World Datapack Override installiert)", "iris.runtime.primary_world.players_routed_suffix": " (Spieler dort geroutet)", "iris.runtime.primary_world.routing_disabled_suffix": " (Routing deaktiviert)", @@ -1151,10 +1144,6 @@ "iris.bukkit.runtime.studiosvc.can_t_find_dimensions_folder_this_pack_failed": "{name} wurde im Dimensionsordner dieses Pack nicht gefunden. Vorgang fehlgeschlagen!", "iris.bukkit.runtime.studiosvc.can_t_load_dimension_failed": "Die Dimension konnte nicht geladen werden. Vorgang fehlgeschlagen!", "iris.bukkit.runtime.studiosvc.type_installed": "Typ {name} installiert. ", - "iris.bukkit.runtime.studiosvc.pack_was_not_found_pack_listing": "Pack '{key}' wurde nicht in der Pack-Liste gefunden.", - "iris.bukkit.runtime.studiosvc.use_iris_download_pack_branch_branch_download_manually": "Verwende /iris download branch=, um den Download manuell auszuführen.", - "iris.bukkit.runtime.studiosvc.failed_download": "Download von '{key}' fehlgeschlagen.", - "iris.bukkit.runtime.studiosvc.failed_download_branch": "Download von '{repo}' (Branch {branch}) fehlgeschlagen.", "iris.bukkit.runtime.studiosvc.failed_open_studio_world": "Studio-Welt konnte nicht geöffnet werden: {error}", "iris.bukkit.runtime.studiosvc.cannot_open_studio_pack_has_blocking_errors": "Studio '{dimm}' kann nicht geöffnet werden – das Pack enthält blockierende Fehler:", "iris.bukkit.runtime.studiosvc.message": " - {reason}", @@ -1270,13 +1259,8 @@ "iris.runtime.golden.started": "GoldenHash gestartet: {chunks} Chunks um 0,0 in Puffern (Welt bleibt unverändert), threads={threads} mode={mode}", "iris.runtime.golden.chunk_hashed": "[{done}/{total}] Chunk {x},{z} gehasht", "iris.runtime.golden.chunk_failed": "Chunk {x},{z} FEHLGESCHLAGEN: {type}", - "iris.runtime.pack_download.invalid_pack_name": "Ungültiger Pack-Name '{pack}' (erlaubt: a-z, 0-9, _ und -)", - "iris.runtime.pack_download.invalid_branch_name": "Ungültiger Branch-Name '{branch}' (erlaubt: Buchstaben, Ziffern, . _ und -)", - "iris.runtime.pack_download.failed": "Pack-Download fehlgeschlagen: {type}{errorMessage}", "iris.runtime.pack_download.downloading": "{url} wird heruntergeladen", "iris.runtime.pack_download.failed_to_find": "Unter {url} wurde kein Pack gefunden", - "iris.runtime.pack_download.check_repository_and_branch": "Stelle sicher, dass du das richtige Repository und den richtigen Branch angegeben hast!", - "iris.runtime.pack_download.example_command": "Zum Beispiel: /iris download overworld branch=stable", "iris.runtime.pack_download.unpacking": "{repository} wird entpackt", "iris.runtime.pack_download.unpack_failed": [ "Beim Entpacken ist ein Problem aufgetreten. Bitte prüfe Folgendes:", @@ -1291,7 +1275,6 @@ "iris.runtime.pack_download.invalid_archive_format": "Ungültiges Format. Fehlender Root-Ordner oder zu viele Ordner!", "iris.runtime.pack_download.no_dimension_file": "Keine Dimensionsdatei in der extrahierten Zip-Datei gefunden.", "iris.runtime.pack_download.check_github": "Prüfe, ob die Datei auf GitHub vorhanden ist, und melde das Problem dem Team!", - "iris.runtime.pack_download.one_dimension_required": "Der Dimensionsordner muss genau eine Datei enthalten.", "iris.runtime.pack_download.invalid_dimension": "Ungültiger Dimensionsordner unter dimensions/.", "iris.runtime.pack_download.importing": "{name} ({key}) wird importiert", "iris.runtime.pack_download.dimension_key_conflict": "Eine andere Dimension im Pack-Ordner verwendet bereits den Schlüssel {key}. Import fehlgeschlagen!", diff --git a/core/src/main/resources/languages/es_ES.json b/core/src/main/resources/languages/es_ES.json index 3fcfde20c..947c8d029 100644 --- a/core/src/main/resources/languages/es_ES.json +++ b/core/src/main/resources/languages/es_ES.json @@ -148,9 +148,7 @@ "iris.bukkit.commandiris.you_cannot_use_world_name_benchmark_creating_worlds_as_iris": "§cNo puedes usar el nombre de mundo \"benchmark\": Iris reserva este directorio para los benchmarks de packs.", "iris.bukkit.commandiris.may_we_suggest_name_irisworld_instead_2": "§c¿Podemos sugerir el nombre \"IrisWorld\"?", "iris.bukkit.commandiris.that_folder_already_exists": "§c¡Esa carpeta ya existe!", - "iris.bukkit.commandiris.could_not_find_download_dimension": "§cNo se pudo encontrar ni descargar la dimensión \"{resolvedType}\".", "iris.bukkit.commandiris.try_one_overworld_vanilla_flat_theend": "§ePrueba una de estas opciones: overworld, vanilla, flat, theend", - "iris.bukkit.commandiris.download_manually_iris_download": "§eO descárgala manualmente: /iris download {resolvedType}", "iris.bukkit.commandiris.world_staging_completed_restart_server_generate_load": "§aPreparación del mundo completada. Reinicia el servidor para generar/cargar \"{worldName}\".", "iris.bukkit.commandiris.exception_raised_during_creation_see_console_more_details": "§cSe produjo una excepción durante la creación. Consulta la consola para obtener más detalles.", "iris.bukkit.commandiris.successfully_created_your_world": "§a¡Tu mundo se creó correctamente!", @@ -179,7 +177,6 @@ "iris.bukkit.commandiris.looks_like_world_was_already_removed_from_bukkit_yml": "§eParece que el mundo ya se había eliminado de bukkit.yml", "iris.bukkit.commandiris.failed_save_bukkit_yml_because": "§cNo se pudo guardar bukkit.yml debido a {value}", "iris.bukkit.commandiris.set_debug": "§aDepuración establecida en: {to}", - "iris.bukkit.commandiris.downloading_pack": "§aDescargando pack: {pack}/{branch}{value}", "iris.bukkit.commandiris.you_must_be_iris_world": "§cDebes estar en un mundo de Iris", "iris.bukkit.commandiris.sending_metrics": "§aEnviando métricas...", "iris.bukkit.commandiris.this_is_not_iris_world_iris_worlds_2": "§cEste no es un mundo de Iris. Mundos de Iris: {value}", @@ -645,7 +642,6 @@ "iris.director.commanddeveloper.param.world_update": "El mundo que se actualizará", "iris.director.commanddeveloper.param.pack_install_into_world": "El pack que se instalará en el mundo", "iris.director.commanddeveloper.param.make_sure_make_backup_read_warnings_first": "¡Asegúrate de crear una copia de seguridad y leer primero las advertencias!", - "iris.director.commanddeveloper.param.should_iris_download_pack_again_you": "Indica si Iris debe volver a descargar el pack", "iris.director.commanddeveloper.director.test": "Prueba", "iris.director.commanddeveloper.param.dump_whole_tectonic_plate_instead_single_section": "Volcar toda la placa tectónica en lugar de una sola sección", "iris.director.commanddeveloper.param.dump_file_id_under_plugins_iris_dump_pv_id": "El id del archivo de volcado en plugins/Iris/dump (pv..*)", @@ -713,8 +709,6 @@ "iris.director.commandiris.director.toggle_debug": "Activar o desactivar la depuración", "iris.director.commandiris.director.download_project": "Descargar un proyecto.", "iris.director.commandiris.param.pack_download": "El pack que se descargará", - "iris.director.commandiris.param.branch_download_from": "La rama desde la que se descargará", - "iris.director.commandiris.param.whether_not_overwrite_pack_with_downloaded_one": "Indica si el pack debe sobrescribirse con el descargado", "iris.director.commandiris.director.get_metrics_your_world": "Obtener métricas de tu mundo", "iris.director.commandiris.director.reload_configuration_file_this_is_also_done_automatically": "Recargar el archivo de configuración (también se hace automáticamente)", "iris.director.commandiris.director.unload_iris_world": "Retirar un mundo de Iris de la memoria", @@ -950,7 +944,6 @@ "iris.runtime.status.true": "verdadero", "iris.runtime.status.false": "falso", "iris.runtime.error.detail_suffix": " - {error}", - "iris.runtime.download.overwrite_suffix": " sobrescribiendo", "iris.runtime.datapack.override_suffix": " (sobrescritura del datapack del mundo instalada)", "iris.runtime.primary_world.players_routed_suffix": " (los jugadores se dirigirán allí)", "iris.runtime.primary_world.routing_disabled_suffix": " (redirección desactivada)", @@ -1151,10 +1144,6 @@ "iris.bukkit.runtime.studiosvc.can_t_find_dimensions_folder_this_pack_failed": "No se encontró {name} en la carpeta dimensions de este pack. ¡Error!", "iris.bukkit.runtime.studiosvc.can_t_load_dimension_failed": "No se pudo cargar la dimensión. ¡Error!", "iris.bukkit.runtime.studiosvc.type_installed": "Tipo {name} instalado. ", - "iris.bukkit.runtime.studiosvc.pack_was_not_found_pack_listing": "El pack '{key}' no se encontró en la lista de packs.", - "iris.bukkit.runtime.studiosvc.use_iris_download_pack_branch_branch_download_manually": "Usa /iris download branch= para descargarlo manualmente.", - "iris.bukkit.runtime.studiosvc.failed_download": "No se pudo descargar '{key}'.", - "iris.bukkit.runtime.studiosvc.failed_download_branch": "No se pudo descargar '{repo}' (rama {branch}).", "iris.bukkit.runtime.studiosvc.failed_open_studio_world": "No se pudo abrir el mundo de Studio: {error}", "iris.bukkit.runtime.studiosvc.cannot_open_studio_pack_has_blocking_errors": "No se puede abrir Studio '{dimm}': el pack contiene errores bloqueantes:", "iris.bukkit.runtime.studiosvc.message": " - {reason}", @@ -1270,13 +1259,8 @@ "iris.runtime.golden.started": "GoldenHash iniciado: {chunks} chunks alrededor de 0,0 en búferes (sin modificar el mundo), hilos={threads} modo={mode}", "iris.runtime.golden.chunk_hashed": "[{done}/{total}] hash calculado para el chunk {x},{z}", "iris.runtime.golden.chunk_failed": "Chunk {x},{z} FALLÓ: {type}", - "iris.runtime.pack_download.invalid_pack_name": "Nombre de pack no válido '{pack}' (permitido: a-z, 0-9, _ y -)", - "iris.runtime.pack_download.invalid_branch_name": "Nombre de rama no válido '{branch}' (permitido: letras, dígitos, . _ y -)", - "iris.runtime.pack_download.failed": "Falló la descarga del pack: {type}{errorMessage}", "iris.runtime.pack_download.downloading": "Descargando {url}", "iris.runtime.pack_download.failed_to_find": "No se encontró el pack en {url}", - "iris.runtime.pack_download.check_repository_and_branch": "¡Asegúrate de haber indicado el repositorio y la rama correctos!", - "iris.runtime.pack_download.example_command": "Por ejemplo: /iris download overworld branch=stable", "iris.runtime.pack_download.unpacking": "Descomprimiendo {repository}", "iris.runtime.pack_download.unpack_failed": [ "Se produjo un problema al descomprimir. Comprueba lo siguiente:", @@ -1291,7 +1275,6 @@ "iris.runtime.pack_download.invalid_archive_format": "Formato no válido. Falta la carpeta raíz o hay demasiadas carpetas.", "iris.runtime.pack_download.no_dimension_file": "No se encontró ningún archivo de dimensión en el archivo zip extraído.", "iris.runtime.pack_download.check_github": "¡Comprueba que esté presente en GitHub e informa de ello al personal!", - "iris.runtime.pack_download.one_dimension_required": "La carpeta dimensions debe contener exactamente un archivo.", "iris.runtime.pack_download.invalid_dimension": "Carpeta de dimensión no válida en dimensions/.", "iris.runtime.pack_download.importing": "Importando {name} ({key})", "iris.runtime.pack_download.dimension_key_conflict": "Otra dimensión de la carpeta packs ya usa la clave {key}. ¡La importación falló!", diff --git a/core/src/main/resources/languages/fi_FI.json b/core/src/main/resources/languages/fi_FI.json index 9c909b6fd..ab2c6b5cf 100644 --- a/core/src/main/resources/languages/fi_FI.json +++ b/core/src/main/resources/languages/fi_FI.json @@ -148,9 +148,7 @@ "iris.bukkit.commandiris.you_cannot_use_world_name_benchmark_creating_worlds_as_iris": "§cMaailman nimeä \"benchmark\" ei voi käyttää, koska Iris käyttää tätä hakemistoa vertailupaketeille.", "iris.bukkit.commandiris.may_we_suggest_name_irisworld_instead_2": "§cVoimmeko ehdottaa nimeä \"IrisWorldSen sijaan?", "iris.bukkit.commandiris.that_folder_already_exists": "§cSe kansio on jo olemassa!", - "iris.bukkit.commandiris.could_not_find_download_dimension": "§cEi löytynyt tai ladattu \"{resolvedType}\".", "iris.bukkit.commandiris.try_one_overworld_vanilla_flat_theend": "§eKokeile yksi: maapallo, vanilla, litteä, theend", - "iris.bukkit.commandiris.download_manually_iris_download": "§eTai lataa käsin: /iris download {resolvedType}", "iris.bukkit.commandiris.world_staging_completed_restart_server_generate_load": "§aMaailman valmistelu valmis. Käynnistä palvelin uudelleen, jotta \"{worldName}\" luodaan/ladataan.", "iris.bukkit.commandiris.exception_raised_during_creation_see_console_more_details": "§cLuomisen aikana nostettu poikkeus. Katso lisätietoja konsolista.", "iris.bukkit.commandiris.successfully_created_your_world": "§aOnnistuneesti loin maailmasi!", @@ -179,7 +177,6 @@ "iris.bukkit.commandiris.looks_like_world_was_already_removed_from_bukkit_yml": "§eNäyttää siltä, että maailma on jo poistettu. bukkit.yml", "iris.bukkit.commandiris.failed_save_bukkit_yml_because": "§cTallennus epäonnistui bukkit.yml koska {value}", "iris.bukkit.commandiris.set_debug": "§aAseta vianetsintä: {to}", - "iris.bukkit.commandiris.downloading_pack": "§aNoudetaan pakkaus: {pack}/{branch}{value}", "iris.bukkit.commandiris.you_must_be_iris_world": "§cSinun täytyy olla Iris maailma", "iris.bukkit.commandiris.sending_metrics": "§aLähetetään mittareita...", "iris.bukkit.commandiris.this_is_not_iris_world_iris_worlds_2": "§cTämä ei ole Iris Maailma. Iris Maailmoja: {value}", @@ -645,7 +642,6 @@ "iris.director.commanddeveloper.param.world_update": "Päivitettävä maailma", "iris.director.commanddeveloper.param.pack_install_into_world": "Maailmaan asennettava pakkaus", "iris.director.commanddeveloper.param.make_sure_make_backup_read_warnings_first": "Muista tehdä varmuuskopio & Lue varoitukset ensin!", - "iris.director.commanddeveloper.param.should_iris_download_pack_again_you": "Pitäisi Iris lataa pakkaus uudelleen", "iris.director.commanddeveloper.director.test": "Testi", "iris.director.commanddeveloper.param.dump_whole_tectonic_plate_instead_single_section": "Jätä koko tektoninen levy yhden osan sijasta", "iris.director.commanddeveloper.param.dump_file_id_under_plugins_iris_dump_pv_id": "Kaatotiedoston tunniste alla plugins/Iris/dump (pp..*)", @@ -713,8 +709,6 @@ "iris.director.commandiris.director.toggle_debug": "Vaihda vianetsintä", "iris.director.commandiris.director.download_project": "Lataa projekti.", "iris.director.commandiris.param.pack_download": "Ladattava pakkaus", - "iris.director.commandiris.param.branch_download_from": "Ladattava haara", - "iris.director.commandiris.param.whether_not_overwrite_pack_with_downloaded_one": "Korvaako pakkaus ladatulla paketilla", "iris.director.commandiris.director.get_metrics_your_world": "Hanki mittarit maailmaasi", "iris.director.commandiris.director.reload_configuration_file_this_is_also_done_automatically": "Lataa asetustiedosto uudelleen (tämä tehdään myös automaattisesti)", "iris.director.commandiris.director.unload_iris_world": "Pura Iris Maailma", @@ -950,7 +944,6 @@ "iris.runtime.status.true": "tosi", "iris.runtime.status.false": "väärä", "iris.runtime.error.detail_suffix": " - {error}", - "iris.runtime.download.overwrite_suffix": " ylikirjoitus", "iris.runtime.datapack.override_suffix": " (maailman datapaketin ohitus asennettu)", "iris.runtime.primary_world.players_routed_suffix": " (pelaajat siellä)", "iris.runtime.primary_world.routing_disabled_suffix": "- Ei.", @@ -1151,10 +1144,6 @@ "iris.bukkit.runtime.studiosvc.can_t_find_dimensions_folder_this_pack_failed": "En löydä {name} tämän pakkauksen mitoissa! Epäonnistui!", "iris.bukkit.runtime.studiosvc.can_t_load_dimension_failed": "Ei voi ladata ulottuvuutta! Epäonnistui!", "iris.bukkit.runtime.studiosvc.type_installed": "{name} tyyppi asennettu. ", - "iris.bukkit.runtime.studiosvc.pack_was_not_found_pack_listing": "Pakkaus{key}' ei löytynyt pakkauslistalta.", - "iris.bukkit.runtime.studiosvc.use_iris_download_pack_branch_branch_download_manually": "Käyttö /iris download branch= ladata käsin.", - "iris.bukkit.runtime.studiosvc.failed_download": "Ei voitu ladata \"{key}'.", - "iris.bukkit.runtime.studiosvc.failed_download_branch": "Ei voitu ladata \"{repo}\" (ala {branch}).", "iris.bukkit.runtime.studiosvc.failed_open_studio_world": "Studiomaailman avaaminen epäonnistui: {error}", "iris.bukkit.runtime.studiosvc.cannot_open_studio_pack_has_blocking_errors": "Studiota ei voi avata{dimm}\" - pakkauksessa on estovirheitä:", "iris.bukkit.runtime.studiosvc.message": " - {reason}", @@ -1270,13 +1259,8 @@ "iris.runtime.golden.started": "GoldenHash alkoi: {chunks} Pyörii ympäri 0,0 puskurissa (maailmassa koskemattomana), langat ={threads} tila ={mode}", "iris.runtime.golden.chunk_hashed": "[{done}/{total}] pala {x},{z} hasheed", "iris.runtime.golden.chunk_failed": "Liha {x},{z} epäonnistui: {type}", - "iris.runtime.pack_download.invalid_pack_name": "Virheellinen pakkauksen nimi \"{pack}' ( sallittu: a-z, 0-9, ja -)", - "iris.runtime.pack_download.invalid_branch_name": "Virheellinen haaran nimi \"{branch}' (sallittu: kirjaimet, numerot, . ja -)", - "iris.runtime.pack_download.failed": "Paketin lataus epäonnistui: {type}{errorMessage}", "iris.runtime.pack_download.downloading": "Noudetaan {url}", "iris.runtime.pack_download.failed_to_find": "Pakkausta ei löytynyt {url}", - "iris.runtime.pack_download.check_repository_and_branch": "Varmista, että määritit oikean ulosoton ja haaran!", - "iris.runtime.pack_download.example_command": "Esimerkiksi: /iris download overworld branch=stable", "iris.runtime.pack_download.unpacking": "Purkaminen {repository}", "iris.runtime.pack_download.unpack_failed": [ "Purkamisen yhteydessä. Tarkista/ tee seuraava:", @@ -1291,7 +1275,6 @@ "iris.runtime.pack_download.invalid_archive_format": "Virheellinen muoto. Puuttuu juurikansio tai liikaa kansioita!", "iris.runtime.pack_download.no_dimension_file": "Otetusta zip-tiedostosta ei löydy mittatiedostoa.", "iris.runtime.pack_download.check_github": "Tarkista, että se on läsnä GitHub Ja raportoikaa tästä henkilöstölle!", - "iris.runtime.pack_download.one_dimension_required": "Mitat-kansiossa on oltava täsmälleen yksi tiedosto.", "iris.runtime.pack_download.invalid_dimension": "Virheellinen ulottuvuuskansio alla dimensions/.", "iris.runtime.pack_download.importing": "Tuo {name} ({key})", "iris.runtime.pack_download.dimension_key_conflict": "Toinen ulottuvuus pakkauskansiossa jo käyttää avainta {key}. Tuonti epäonnistui!", diff --git a/core/src/main/resources/languages/fr_FR.json b/core/src/main/resources/languages/fr_FR.json index 067a28189..8cee22d12 100644 --- a/core/src/main/resources/languages/fr_FR.json +++ b/core/src/main/resources/languages/fr_FR.json @@ -148,9 +148,7 @@ "iris.bukkit.commandiris.you_cannot_use_world_name_benchmark_creating_worlds_as_iris": "§cVous ne pouvez pas nommer un monde \"benchmark\" : Iris réserve ce répertoire aux benchmarks de packs.", "iris.bukkit.commandiris.may_we_suggest_name_irisworld_instead_2": "§cNous vous suggérons plutôt le nom \"IrisWorld\".", "iris.bukkit.commandiris.that_folder_already_exists": "§cCe dossier existe déjà !", - "iris.bukkit.commandiris.could_not_find_download_dimension": "§cImpossible de trouver ou de télécharger la dimension \"{resolvedType}\".", "iris.bukkit.commandiris.try_one_overworld_vanilla_flat_theend": "§eEssayez l'une des options suivantes : overworld, vanilla, flat, theend", - "iris.bukkit.commandiris.download_manually_iris_download": "§eOu téléchargez-la manuellement : /iris download {resolvedType}", "iris.bukkit.commandiris.world_staging_completed_restart_server_generate_load": "§aPréparation du monde terminée. Redémarrez le serveur pour générer/charger \"{worldName}\".", "iris.bukkit.commandiris.exception_raised_during_creation_see_console_more_details": "§cUne exception s'est produite pendant la création. Consultez la console pour plus de détails.", "iris.bukkit.commandiris.successfully_created_your_world": "§aVotre monde a été créé avec succès !", @@ -179,7 +177,6 @@ "iris.bukkit.commandiris.looks_like_world_was_already_removed_from_bukkit_yml": "§eIl semble que le monde avait déjà été supprimé de bukkit.yml", "iris.bukkit.commandiris.failed_save_bukkit_yml_because": "§cImpossible d'enregistrer bukkit.yml à cause de {value}", "iris.bukkit.commandiris.set_debug": "§aDébogage défini sur : {to}", - "iris.bukkit.commandiris.downloading_pack": "§aTéléchargement du pack : {pack}/{branch}{value}", "iris.bukkit.commandiris.you_must_be_iris_world": "§cVous devez être dans un monde Iris", "iris.bukkit.commandiris.sending_metrics": "§aEnvoi des métriques...", "iris.bukkit.commandiris.this_is_not_iris_world_iris_worlds_2": "§cCe monde n'est pas un monde Iris. Mondes Iris : {value}", @@ -645,7 +642,6 @@ "iris.director.commanddeveloper.param.world_update": "Le monde à mettre à jour", "iris.director.commanddeveloper.param.pack_install_into_world": "Le pack à installer dans le monde", "iris.director.commanddeveloper.param.make_sure_make_backup_read_warnings_first": "Assurez-vous de créer une sauvegarde et de lire d'abord les avertissements !", - "iris.director.commanddeveloper.param.should_iris_download_pack_again_you": "Indique si Iris doit télécharger à nouveau le pack", "iris.director.commanddeveloper.director.test": "Test", "iris.director.commanddeveloper.param.dump_whole_tectonic_plate_instead_single_section": "Vider toute la plaque tectonique au lieu d'une seule section", "iris.director.commanddeveloper.param.dump_file_id_under_plugins_iris_dump_pv_id": "L'id du fichier de vidage dans plugins/Iris/dump (pv..*)", @@ -713,8 +709,6 @@ "iris.director.commandiris.director.toggle_debug": "Activer ou désactiver le débogage", "iris.director.commandiris.director.download_project": "Télécharger un projet.", "iris.director.commandiris.param.pack_download": "Le pack à télécharger", - "iris.director.commandiris.param.branch_download_from": "La branche depuis laquelle télécharger", - "iris.director.commandiris.param.whether_not_overwrite_pack_with_downloaded_one": "Indique s'il faut remplacer le pack par celui qui a été téléchargé", "iris.director.commandiris.director.get_metrics_your_world": "Obtenir les métriques de votre monde", "iris.director.commandiris.director.reload_configuration_file_this_is_also_done_automatically": "Recharger le fichier de configuration (cette opération est également automatique)", "iris.director.commandiris.director.unload_iris_world": "Décharger un monde Iris de la mémoire", @@ -950,7 +944,6 @@ "iris.runtime.status.true": "vrai", "iris.runtime.status.false": "faux", "iris.runtime.error.detail_suffix": " - {error}", - "iris.runtime.download.overwrite_suffix": " écrasement en cours", "iris.runtime.datapack.override_suffix": " (remplacement du datapack du monde installé)", "iris.runtime.primary_world.players_routed_suffix": " (les joueurs y seront redirigés)", "iris.runtime.primary_world.routing_disabled_suffix": " (redirection désactivée)", @@ -1151,10 +1144,6 @@ "iris.bukkit.runtime.studiosvc.can_t_find_dimensions_folder_this_pack_failed": "{name} est introuvable dans le dossier dimensions de ce pack. Échec !", "iris.bukkit.runtime.studiosvc.can_t_load_dimension_failed": "Impossible de charger la dimension. Échec !", "iris.bukkit.runtime.studiosvc.type_installed": "Type {name} installé. ", - "iris.bukkit.runtime.studiosvc.pack_was_not_found_pack_listing": "Le pack '{key}' est introuvable dans la liste des packs.", - "iris.bukkit.runtime.studiosvc.use_iris_download_pack_branch_branch_download_manually": "Utilisez /iris download branch= pour le télécharger manuellement.", - "iris.bukkit.runtime.studiosvc.failed_download": "Impossible de télécharger '{key}'.", - "iris.bukkit.runtime.studiosvc.failed_download_branch": "Impossible de télécharger '{repo}' (branche {branch}).", "iris.bukkit.runtime.studiosvc.failed_open_studio_world": "Impossible d'ouvrir le monde Studio : {error}", "iris.bukkit.runtime.studiosvc.cannot_open_studio_pack_has_blocking_errors": "Impossible d'ouvrir Studio '{dimm}' : le pack contient des erreurs bloquantes :", "iris.bukkit.runtime.studiosvc.message": " - {reason}", @@ -1270,13 +1259,8 @@ "iris.runtime.golden.started": "GoldenHash démarré : {chunks} chunks autour de 0,0 dans des tampons (monde inchangé), threads={threads} mode={mode}", "iris.runtime.golden.chunk_hashed": "[{done}/{total}] hash calculé pour le chunk {x},{z}", "iris.runtime.golden.chunk_failed": "Chunk {x},{z} ÉCHEC : {type}", - "iris.runtime.pack_download.invalid_pack_name": "Nom de pack non valide '{pack}' (autorisé : a-z, 0-9, _ et -)", - "iris.runtime.pack_download.invalid_branch_name": "Nom de branche non valide '{branch}' (autorisé : lettres, chiffres, . _ et -)", - "iris.runtime.pack_download.failed": "Échec du téléchargement du pack : {type}{errorMessage}", "iris.runtime.pack_download.downloading": "Téléchargement de {url}", "iris.runtime.pack_download.failed_to_find": "Pack introuvable dans {url}", - "iris.runtime.pack_download.check_repository_and_branch": "Vérifiez que le dépôt et la branche indiqués sont corrects !", - "iris.runtime.pack_download.example_command": "Par exemple : /iris download overworld branch=stable", "iris.runtime.pack_download.unpacking": "Décompression de {repository}", "iris.runtime.pack_download.unpack_failed": [ "Un problème est survenu pendant la décompression. Vérifiez les points suivants :", @@ -1291,7 +1275,6 @@ "iris.runtime.pack_download.invalid_archive_format": "Format non valide. Le dossier racine est absent ou il y a trop de dossiers.", "iris.runtime.pack_download.no_dimension_file": "Aucun fichier de dimension trouvé dans le fichier zip extrait.", "iris.runtime.pack_download.check_github": "Vérifiez qu'il est présent sur GitHub et signalez-le à l'équipe !", - "iris.runtime.pack_download.one_dimension_required": "Le dossier dimensions doit contenir exactement un fichier.", "iris.runtime.pack_download.invalid_dimension": "Dossier de dimension non valide dans dimensions/.", "iris.runtime.pack_download.importing": "Importation de {name} ({key})", "iris.runtime.pack_download.dimension_key_conflict": "Une autre dimension du dossier packs utilise déjà la clé {key}. Échec de l'importation !", diff --git a/core/src/main/resources/languages/he_IL.json b/core/src/main/resources/languages/he_IL.json index 725164b94..80ab030d4 100644 --- a/core/src/main/resources/languages/he_IL.json +++ b/core/src/main/resources/languages/he_IL.json @@ -148,9 +148,7 @@ "iris.bukkit.commandiris.you_cannot_use_world_name_benchmark_creating_worlds_as_iris": "§cלא ניתן להשתמש בשם העולם \"benchmark\", מפני ש-Iris משתמשת בתיקייה זו עבור חבילות בדיקה.", "iris.bukkit.commandiris.may_we_suggest_name_irisworld_instead_2": "§cאפשר להציע את השם \"IrisWorld\"במקום?", "iris.bukkit.commandiris.that_folder_already_exists": "§cהתיקיה הזו כבר קיימת!", - "iris.bukkit.commandiris.could_not_find_download_dimension": "§cלא יכול למצוא או להוריד מימד \"{resolvedType}\".", "iris.bukkit.commandiris.try_one_overworld_vanilla_flat_theend": "§eנסה: Overworld vanilla, שטוח, TheendXTry", - "iris.bukkit.commandiris.download_manually_iris_download": "§eאו להוריד באופן ידני: /iris download {resolvedType}", "iris.bukkit.commandiris.world_staging_completed_restart_server_generate_load": "§aהכנת העולם הושלמה. הפעל מחדש את השרת כדי ליצור/לטעון את \"{worldName}\".", "iris.bukkit.commandiris.exception_raised_during_creation_see_console_more_details": "§cלמעטים שגדלו במהלך הבריאה. ראו את הקונסולה לפרטים נוספים.", "iris.bukkit.commandiris.successfully_created_your_world": "§aיצרתם בהצלחה את עולמכם!", @@ -179,7 +177,6 @@ "iris.bukkit.commandiris.looks_like_world_was_already_removed_from_bukkit_yml": "§eנראה כאילו העולם כבר הוסר bukkit.yml", "iris.bukkit.commandiris.failed_save_bukkit_yml_because": "§cנכשל להציל bukkit.yml בגלל {value}", "iris.bukkit.commandiris.set_debug": "§aהגדר bug: {to}", - "iris.bukkit.commandiris.downloading_pack": "§aהורדת חבילות: {pack}/{branch}{value}", "iris.bukkit.commandiris.you_must_be_iris_world": "§cאתה חייב להיות בתוך Iris עולם העולם", "iris.bukkit.commandiris.sending_metrics": "§aשליחת מדדים...", "iris.bukkit.commandiris.this_is_not_iris_world_iris_worlds_2": "§cזה לא Iris עולם Iris עולמות: {value}", @@ -645,7 +642,6 @@ "iris.director.commanddeveloper.param.world_update": "העולם לעדכן", "iris.director.commanddeveloper.param.pack_install_into_world": "החבילה להתקנה לעולם", "iris.director.commanddeveloper.param.make_sure_make_backup_read_warnings_first": "הקפד לעשות גיבוי & קראו קודם כל את האזהרות!", - "iris.director.commanddeveloper.param.should_iris_download_pack_again_you": "צריך Iris הורד את החבילה שוב בשבילך", "iris.director.commanddeveloper.director.test": "מבחן", "iris.director.commanddeveloper.param.dump_whole_tectonic_plate_instead_single_section": "כל הצלחת הטקטונית במקום חלק אחד", "iris.director.commanddeveloper.param.dump_file_id_under_plugins_iris_dump_pv_id": "קובץ הזבל תחת plugins/Iris/dump (pv.*)", @@ -713,8 +709,6 @@ "iris.director.commandiris.director.toggle_debug": "תגית: debug", "iris.director.commandiris.director.download_project": "הורד פרויקט", "iris.director.commandiris.param.pack_download": "החבילה להוריד", - "iris.director.commandiris.param.branch_download_from": "הענף להורדה", - "iris.director.commandiris.param.whether_not_overwrite_pack_with_downloaded_one": "בין אם לא לנסח את החבילה עם ההורדה", "iris.director.commandiris.director.get_metrics_your_world": "קבל מדדים לעולם שלך", "iris.director.commandiris.director.reload_configuration_file_this_is_also_done_automatically": "קובץ תצורה טעינה מחדש (זה נעשה גם באופן אוטומטי)", "iris.director.commandiris.director.unload_iris_world": "פריקה a Iris העולם העולמי", @@ -950,7 +944,6 @@ "iris.runtime.status.true": "אמת אמיתית", "iris.runtime.status.false": "שקר כוזב", "iris.runtime.error.detail_suffix": " - {error}", - "iris.runtime.download.overwrite_suffix": " המונחים דריסה", "iris.runtime.datapack.override_suffix": " (Worldpack עקיפה מותקן)", "iris.runtime.primary_world.players_routed_suffix": " (השחקנים הלכו לשם)", "iris.runtime.primary_world.routing_disabled_suffix": " (סגור)", @@ -1151,10 +1144,6 @@ "iris.bukkit.runtime.studiosvc.can_t_find_dimensions_folder_this_pack_failed": "אי אפשר למצוא את {name} בתיקיה של החבילה הזו! נכשל!", "iris.bukkit.runtime.studiosvc.can_t_load_dimension_failed": "אי אפשר לטעון את הממד! נכשל!", "iris.bukkit.runtime.studiosvc.type_installed": "{name} סוג מותקן. ", - "iris.bukkit.runtime.studiosvc.pack_was_not_found_pack_listing": "Pack »{key}\"לא נמצאו בחבילה.", - "iris.bukkit.runtime.studiosvc.use_iris_download_pack_branch_branch_download_manually": "שימוש בשימוש /iris download branch= להוריד באופן ידני.", - "iris.bukkit.runtime.studiosvc.failed_download": "נכשל להוריד את \"{key}'.", - "iris.bukkit.runtime.studiosvc.failed_download_branch": "נכשל להוריד את \"{repo}(ברנץ' {branch}).", "iris.bukkit.runtime.studiosvc.failed_open_studio_world": "נכשל לפתוח את עולם הסטודיו: {error}", "iris.bukkit.runtime.studiosvc.cannot_open_studio_pack_has_blocking_errors": "\"לא יכול לפתוח סטודיו\"{dimm}חבילה חוסמת שגיאות:", "iris.bukkit.runtime.studiosvc.message": " - {reason}", @@ -1270,13 +1259,8 @@ "iris.runtime.golden.started": "GoldenHashהתחיל:{chunks}צ'אנקים סביב 0,0 ב מאגרים (עולם שלא ניתן לעשות)threads={threads} mode={mode}", "iris.runtime.golden.chunk_hashed": "[{done}/{total}] גוש נתח {x},{z} תגית:", "iris.runtime.golden.chunk_failed": "צ'אנק {x},{z} נכשל: {type}", - "iris.runtime.pack_download.invalid_pack_name": "שם הלהקה:{pack}(הופנה מהדף A-z, 0-9- ו-)", - "iris.runtime.pack_download.invalid_branch_name": "שם סניף לא חוקי \"{branch}(אפשר: מכתבים, ספרות. ו-)", - "iris.runtime.pack_download.failed": "הורדת החבילה נכשלה: {type}{errorMessage}", "iris.runtime.pack_download.downloading": "הורדה {url}", "iris.runtime.pack_download.failed_to_find": "נכשל למצוא חבילות {url}", - "iris.runtime.pack_download.check_repository_and_branch": "ודא שאתה מציין את החזרה הנכונה ואת הענף!", - "iris.runtime.pack_download.example_command": "לדוגמה: /iris download overworld branch=stable", "iris.runtime.pack_download.unpacking": "חבילות חילוץ {repository}", "iris.runtime.pack_download.unpack_failed": [ "בעיה כאשר לא לארוז. בדוק/עשה את הפעולות הבאות:", @@ -1291,7 +1275,6 @@ "iris.runtime.pack_download.invalid_archive_format": "פורמט לא חוקי. תיקיות שורש חסרות או יותר מדי תיקיות!", "iris.runtime.pack_download.no_dimension_file": "שום קובץ ממד לא נמצא בקובץ zip מופק.", "iris.runtime.pack_download.check_github": "בדוק כי הוא נוכח GitHub לדווח על זה לצוות!", - "iris.runtime.pack_download.one_dimension_required": "תיקיית הממדים חייבת להכיל בדיוק קובץ אחד.", "iris.runtime.pack_download.invalid_dimension": "תיקיית מימד לא חוקית תחת dimensions/.", "iris.runtime.pack_download.importing": "יבוא {name} ({key})", "iris.runtime.pack_download.dimension_key_conflict": "מימד נוסף בתיקיה של הלהקה כבר משתמש המפתח {key}. ייבוא נכשל!", diff --git a/core/src/main/resources/languages/it_IT.json b/core/src/main/resources/languages/it_IT.json index 9514b98d0..8049bad99 100644 --- a/core/src/main/resources/languages/it_IT.json +++ b/core/src/main/resources/languages/it_IT.json @@ -148,9 +148,7 @@ "iris.bukkit.commandiris.you_cannot_use_world_name_benchmark_creating_worlds_as_iris": "§cNon puoi usare il nome del mondo \"benchmark\", perché Iris riserva questa directory ai benchmark dei Pack.", "iris.bukkit.commandiris.may_we_suggest_name_irisworld_instead_2": "§cPossiamo suggerire il nome \"IrisWorld\" invece?", "iris.bukkit.commandiris.that_folder_already_exists": "§cQuella cartella esiste già!", - "iris.bukkit.commandiris.could_not_find_download_dimension": "§cImpossibile trovare o scaricare la dimensione \"{resolvedType}\".", "iris.bukkit.commandiris.try_one_overworld_vanilla_flat_theend": "§eProva una delle seguenti opzioni: overworld, vanilla, flat, theend", - "iris.bukkit.commandiris.download_manually_iris_download": "§eO scaricare manualmente: /iris download {resolvedType}", "iris.bukkit.commandiris.world_staging_completed_restart_server_generate_load": "§aPreparazione del mondo completata. Riavvia il server per generare/caricare \"{worldName}\".", "iris.bukkit.commandiris.exception_raised_during_creation_see_console_more_details": "§cSi è verificata un'eccezione durante la creazione. Consulta la console per maggiori dettagli.", "iris.bukkit.commandiris.successfully_created_your_world": "§aCreato con successo il tuo mondo!", @@ -179,7 +177,6 @@ "iris.bukkit.commandiris.looks_like_world_was_already_removed_from_bukkit_yml": "§eSembra che il mondo sia già stato rimosso da bukkit.yml", "iris.bukkit.commandiris.failed_save_bukkit_yml_because": "§cImpossibile salvare bukkit.yml a causa di {value}", "iris.bukkit.commandiris.set_debug": "§aDebug impostato su: {to}", - "iris.bukkit.commandiris.downloading_pack": "§aDownload del pack: {pack}/{branch}{value}", "iris.bukkit.commandiris.you_must_be_iris_world": "§cDevi trovarti in un mondo Iris", "iris.bukkit.commandiris.sending_metrics": "§aInvio di metriche...", "iris.bukkit.commandiris.this_is_not_iris_world_iris_worlds_2": "§cQuesto non è un mondo Iris. Mondi Iris: {value}", @@ -645,7 +642,6 @@ "iris.director.commanddeveloper.param.world_update": "Il mondo per aggiornare", "iris.director.commanddeveloper.param.pack_install_into_world": "Il Pack da installare nel mondo", "iris.director.commanddeveloper.param.make_sure_make_backup_read_warnings_first": "Assicurarsi di fare un backup & leggere prima gli avvertimenti!", - "iris.director.commanddeveloper.param.should_iris_download_pack_again_you": "Se Iris deve scaricare nuovamente il Pack", "iris.director.commanddeveloper.director.test": "Test di prova", "iris.director.commanddeveloper.param.dump_whole_tectonic_plate_instead_single_section": "Dump l'intera piastra tettonica invece di una singola sezione", "iris.director.commanddeveloper.param.dump_file_id_under_plugins_iris_dump_pv_id": "Il file di dump sotto plugins/Iris/dump (v..*)", @@ -713,8 +709,6 @@ "iris.director.commandiris.director.toggle_debug": "Debug attiva/disattiva", "iris.director.commandiris.director.download_project": "Scarica un progetto.", "iris.director.commandiris.param.pack_download": "Il Pack da scaricare", - "iris.director.commandiris.param.branch_download_from": "Il ramo da scaricare", - "iris.director.commandiris.param.whether_not_overwrite_pack_with_downloaded_one": "Se sovrascrivere il Pack con quello scaricato", "iris.director.commandiris.director.get_metrics_your_world": "Ottieni metriche per il tuo mondo", "iris.director.commandiris.director.reload_configuration_file_this_is_also_done_automatically": "ricarica file di configurazione (questo viene fatto anche automaticamente)", "iris.director.commandiris.director.unload_iris_world": "Scarica un mondo Iris", @@ -950,7 +944,6 @@ "iris.runtime.status.true": "vero", "iris.runtime.status.false": "falso", "iris.runtime.error.detail_suffix": " - {error}", - "iris.runtime.download.overwrite_suffix": " sovrascrittura", "iris.runtime.datapack.override_suffix": " (override del datapack del mondo installato)", "iris.runtime.primary_world.players_routed_suffix": " (giocatori reindirizzati lì)", "iris.runtime.primary_world.routing_disabled_suffix": " (reindirizzamento disabilitato)", @@ -1151,10 +1144,6 @@ "iris.bukkit.runtime.studiosvc.can_t_find_dimensions_folder_this_pack_failed": "Impossibile trovare {name} nella cartella dimensions di questo Pack. Operazione non riuscita!", "iris.bukkit.runtime.studiosvc.can_t_load_dimension_failed": "Impossibile caricare la dimensione. Operazione non riuscita!", "iris.bukkit.runtime.studiosvc.type_installed": "Tipo {name} installato. ", - "iris.bukkit.runtime.studiosvc.pack_was_not_found_pack_listing": "Il Pack '{key}' non è stato trovato nell'elenco dei Pack.", - "iris.bukkit.runtime.studiosvc.use_iris_download_pack_branch_branch_download_manually": "Usa /iris download branch= per eseguire manualmente il download.", - "iris.bukkit.runtime.studiosvc.failed_download": "Download di '{key}' non riuscito.", - "iris.bukkit.runtime.studiosvc.failed_download_branch": "Download di '{repo}' (branch {branch}) non riuscito.", "iris.bukkit.runtime.studiosvc.failed_open_studio_world": "Impossibile aprire il mondo studio: {error}", "iris.bukkit.runtime.studiosvc.cannot_open_studio_pack_has_blocking_errors": "Impossibile aprire lo studio '{dimm}': il Pack contiene errori bloccanti:", "iris.bukkit.runtime.studiosvc.message": " - {reason}", @@ -1270,13 +1259,8 @@ "iris.runtime.golden.started": "GoldenHash avviato: {chunks} chunk attorno a 0,0 nei buffer (mondo invariato), threads={threads} mode={mode}", "iris.runtime.golden.chunk_hashed": "[{done}/{total}] hash del chunk {x},{z} calcolato", "iris.runtime.golden.chunk_failed": "Chunk {x},{z} NON RIUSCITO: {type}", - "iris.runtime.pack_download.invalid_pack_name": "Nome del Pack non valido '{pack}' (consentiti: a-z, 0-9, _ e -)", - "iris.runtime.pack_download.invalid_branch_name": "Nome del branch non valido '{branch}' (consentiti: lettere, cifre, . _ e -)", - "iris.runtime.pack_download.failed": "Download del Pack non riuscito: {type}{errorMessage}", "iris.runtime.pack_download.downloading": "Scaricamento {url}", "iris.runtime.pack_download.failed_to_find": "Impossibile trovare il Pack in {url}", - "iris.runtime.pack_download.check_repository_and_branch": "Assicurati di aver specificato il repository e il branch corretti!", - "iris.runtime.pack_download.example_command": "Per esempio: /iris download overworld branch=stable", "iris.runtime.pack_download.unpacking": "Disimballaggio {repository}", "iris.runtime.pack_download.unpack_failed": [ "Si è verificato un problema durante l'estrazione. Controlla quanto segue:", @@ -1291,7 +1275,6 @@ "iris.runtime.pack_download.invalid_archive_format": "Formato non valido. cartella radice mancante o troppe cartelle!", "iris.runtime.pack_download.no_dimension_file": "Nessun file di dimensione trovato nel file zip estratto.", "iris.runtime.pack_download.check_github": "Verifica che sia presente su GitHub e segnala il problema allo staff!", - "iris.runtime.pack_download.one_dimension_required": "La cartella delle dimensioni deve contenere esattamente un file.", "iris.runtime.pack_download.invalid_dimension": "Cartella di dimensione non valida in dimensions/.", "iris.runtime.pack_download.importing": "Importazione {name} ({key})", "iris.runtime.pack_download.dimension_key_conflict": "Un'altra dimensione nella cartella dei Pack usa già la chiave {key}. Importazione non riuscita!", diff --git a/core/src/main/resources/languages/ja-JP.json b/core/src/main/resources/languages/ja-JP.json index 1e1dc0fd9..091c61168 100644 --- a/core/src/main/resources/languages/ja-JP.json +++ b/core/src/main/resources/languages/ja-JP.json @@ -148,9 +148,7 @@ "iris.bukkit.commandiris.you_cannot_use_world_name_benchmark_creating_worlds_as_iris": "§cIris がこのディレクトリをベンチマークパック用に使用するため、ワールド名 \"benchmark\" は使用できません。", "iris.bukkit.commandiris.may_we_suggest_name_irisworld_instead_2": "§c代わりに \"IrisWorld\" という名前はいかがですか?", "iris.bukkit.commandiris.that_folder_already_exists": "§cそのフォルダーはすでに存在します!", - "iris.bukkit.commandiris.could_not_find_download_dimension": "§cディメンション \"{resolvedType}\" を検索またはダウンロードできませんでした。", "iris.bukkit.commandiris.try_one_overworld_vanilla_flat_theend": "§e次のいずれかを指定してください: overworld、vanilla、flat、theend", - "iris.bukkit.commandiris.download_manually_iris_download": "§eまたは手動でダウンロード: /iris download {resolvedType}", "iris.bukkit.commandiris.world_staging_completed_restart_server_generate_load": "§aワールドの準備が完了しました。\"{worldName}\" を生成/読み込むにはサーバーを再起動してください。", "iris.bukkit.commandiris.exception_raised_during_creation_see_console_more_details": "§c作成中に例外が発生しました。詳細はコンソールを確認してください。", "iris.bukkit.commandiris.successfully_created_your_world": "§aワールドを作成しました!", @@ -179,7 +177,6 @@ "iris.bukkit.commandiris.looks_like_world_was_already_removed_from_bukkit_yml": "§eワールドはすでに bukkit.yml から削除されているようです", "iris.bukkit.commandiris.failed_save_bukkit_yml_because": "§cbukkit.yml を保存できませんでした: {value}", "iris.bukkit.commandiris.set_debug": "§aデバッグ設定: {to}", - "iris.bukkit.commandiris.downloading_pack": "§aパックをダウンロードしています: {pack}/{branch}{value}", "iris.bukkit.commandiris.you_must_be_iris_world": "§cIris ワールド内にいる必要があります", "iris.bukkit.commandiris.sending_metrics": "§aメトリックの送信...", "iris.bukkit.commandiris.this_is_not_iris_world_iris_worlds_2": "§cここは Iris ワールドではありません。Iris ワールド: {value}", @@ -645,7 +642,6 @@ "iris.director.commanddeveloper.param.world_update": "更新するワールド", "iris.director.commanddeveloper.param.pack_install_into_world": "ワールドへインストールするパック", "iris.director.commanddeveloper.param.make_sure_make_backup_read_warnings_first": "必ずバックアップを作成し、先に警告を読んでください!", - "iris.director.commanddeveloper.param.should_iris_download_pack_again_you": "Iris がパックを再ダウンロードするかどうか", "iris.director.commanddeveloper.director.test": "テスト", "iris.director.commanddeveloper.param.dump_whole_tectonic_plate_instead_single_section": "単一セクションではなくプレート全体をダンプします", "iris.director.commanddeveloper.param.dump_file_id_under_plugins_iris_dump_pv_id": "plugins/Iris/dump 内のダンプファイル ID(pv..*)", @@ -713,8 +709,6 @@ "iris.director.commandiris.director.toggle_debug": "デバッグを切り替えます", "iris.director.commandiris.director.download_project": "プロジェクトをダウンロードします。", "iris.director.commandiris.param.pack_download": "ダウンロードするパック", - "iris.director.commandiris.param.branch_download_from": "ダウンロード元のブランチ", - "iris.director.commandiris.param.whether_not_overwrite_pack_with_downloaded_one": "ダウンロードしたパックで既存パックを上書きするかどうか", "iris.director.commandiris.director.get_metrics_your_world": "ワールドのメトリクスを取得します", "iris.director.commandiris.director.reload_configuration_file_this_is_also_done_automatically": "設定ファイルを再読み込みします(自動でも実行されます)", "iris.director.commandiris.director.unload_iris_world": "Iris ワールドをアンロードします", @@ -950,7 +944,6 @@ "iris.runtime.status.true": "はい", "iris.runtime.status.false": "いいえ", "iris.runtime.error.detail_suffix": " - {error}", - "iris.runtime.download.overwrite_suffix": " 上書き", "iris.runtime.datapack.override_suffix": "(ワールドデータパックの上書きをインストール済み)", "iris.runtime.primary_world.players_routed_suffix": "(プレイヤーをこのワールドへ移動)", "iris.runtime.primary_world.routing_disabled_suffix": "(移動は無効)", @@ -1151,10 +1144,6 @@ "iris.bukkit.runtime.studiosvc.can_t_find_dimensions_folder_this_pack_failed": "このパックの dimensions フォルダーに {name} がありません。失敗しました!", "iris.bukkit.runtime.studiosvc.can_t_load_dimension_failed": "ディメンションを読み込めません。失敗しました!", "iris.bukkit.runtime.studiosvc.type_installed": "{name} タイプをインストールしました。 ", - "iris.bukkit.runtime.studiosvc.pack_was_not_found_pack_listing": "パック一覧にパック '{key}' が見つかりません。", - "iris.bukkit.runtime.studiosvc.use_iris_download_pack_branch_branch_download_manually": "手動でダウンロードするには /iris download branch= を使用してください。", - "iris.bukkit.runtime.studiosvc.failed_download": "'{key}' のダウンロードに失敗しました。", - "iris.bukkit.runtime.studiosvc.failed_download_branch": "'{repo}'(ブランチ {branch})をダウンロードできませんでした。", "iris.bukkit.runtime.studiosvc.failed_open_studio_world": "スタジオワールドを開けませんでした: {error}", "iris.bukkit.runtime.studiosvc.cannot_open_studio_pack_has_blocking_errors": "スタジオ '{dimm}' を開けません。パックに処理を妨げるエラーがあります:", "iris.bukkit.runtime.studiosvc.message": " - {reason}", @@ -1270,13 +1259,8 @@ "iris.runtime.golden.started": "GoldenHash を開始しました: 0,0 周辺の {chunks} チャンクをバッファー内で処理します(ワールドは変更しません)。スレッド={threads} モード={mode}", "iris.runtime.golden.chunk_hashed": "[{done}/{total}] チャンク {x},{z} をハッシュ化しました", "iris.runtime.golden.chunk_failed": "チャンク {x},{z} 失敗: {type}", - "iris.runtime.pack_download.invalid_pack_name": "無効なパック名 '{pack}' です(使用可能: a-z、0-9、_、-)", - "iris.runtime.pack_download.invalid_branch_name": "無効なブランチ名 '{branch}' です(使用可能: 英字、数字、.、_、-)", - "iris.runtime.pack_download.failed": "パックのダウンロードに失敗しました: {type}{errorMessage}", "iris.runtime.pack_download.downloading": "{url} をダウンロードしています", "iris.runtime.pack_download.failed_to_find": "{url} にパックが見つかりませんでした", - "iris.runtime.pack_download.check_repository_and_branch": "リポジトリとブランチが正しいか確認してください!", - "iris.runtime.pack_download.example_command": "例えば: /iris download overworld branch=stable", "iris.runtime.pack_download.unpacking": "{repository} を展開しています", "iris.runtime.pack_download.unpack_failed": [ "展開中に問題が発生しました。次の項目を確認してください:", @@ -1291,7 +1275,6 @@ "iris.runtime.pack_download.invalid_archive_format": "無効な形式です。ルートフォルダーがないか、フォルダーが多すぎます!", "iris.runtime.pack_download.no_dimension_file": "展開した zip ファイルにディメンションファイルがありません。", "iris.runtime.pack_download.check_github": "GitHub に存在することを確認し、スタッフへ報告してください!", - "iris.runtime.pack_download.one_dimension_required": "dimensions フォルダーにはファイルがちょうど 1 つ必要です。", "iris.runtime.pack_download.invalid_dimension": "dimensions/ 内のディメンションフォルダーが無効です。", "iris.runtime.pack_download.importing": "{name}({key})をインポートしています", "iris.runtime.pack_download.dimension_key_conflict": "packs フォルダー内の別のディメンションがキー {key} をすでに使用しています。インポートに失敗しました!", diff --git a/core/src/main/resources/languages/ko_KR.json b/core/src/main/resources/languages/ko_KR.json index ba2fff99b..f382a8a70 100644 --- a/core/src/main/resources/languages/ko_KR.json +++ b/core/src/main/resources/languages/ko_KR.json @@ -148,9 +148,7 @@ "iris.bukkit.commandiris.you_cannot_use_world_name_benchmark_creating_worlds_as_iris": "§cIris가 이 디렉터리를 벤치마크 팩에 사용하므로 월드 이름 \"benchmark\"는 사용할 수 없습니다.", "iris.bukkit.commandiris.may_we_suggest_name_irisworld_instead_2": "§c우리는 이름 \"을 제안 할 수있다IrisWorld\" 대신?", "iris.bukkit.commandiris.that_folder_already_exists": "§c그 폴더는 이미 존재합니다!", - "iris.bukkit.commandiris.could_not_find_download_dimension": "§c찾을 수 없거나 다운로드 치수 \"{resolvedType}\".", "iris.bukkit.commandiris.try_one_overworld_vanilla_flat_theend": "§e중 하나를 시도: overworld, 바닐라, 플랫, theend", - "iris.bukkit.commandiris.download_manually_iris_download": "§e또는 수동으로 다운로드: /iris download {resolvedType}", "iris.bukkit.commandiris.world_staging_completed_restart_server_generate_load": "§a월드 준비가 완료되었습니다. \"{worldName}\"을 생성/로드하려면 서버를 재시작하세요.", "iris.bukkit.commandiris.exception_raised_during_creation_see_console_more_details": "§c창조 중 발생한 예외. 자세한 내용은 콘솔을 참조하십시오.", "iris.bukkit.commandiris.successfully_created_your_world": "§a세상을 성공적으로 만들었습니다!", @@ -179,7 +177,6 @@ "iris.bukkit.commandiris.looks_like_world_was_already_removed_from_bukkit_yml": "§e세상과 같은 모습은 이미 제거되었습니다. bukkit.yml", "iris.bukkit.commandiris.failed_save_bukkit_yml_because": "§c{value} 때문에 bukkit.yml을 저장하지 못했습니다", "iris.bukkit.commandiris.set_debug": "§a디버그 설정: {to}", - "iris.bukkit.commandiris.downloading_pack": "§a다운로드 팩: {pack}/{branch}{value}", "iris.bukkit.commandiris.you_must_be_iris_world": "§cIris 월드 안에 있어야 합니다", "iris.bukkit.commandiris.sending_metrics": "§a메트릭 전송...", "iris.bukkit.commandiris.this_is_not_iris_world_iris_worlds_2": "§c이것은 아니다 Iris 세계. Iris 세계: {value}", @@ -645,7 +642,6 @@ "iris.director.commanddeveloper.param.world_update": "업데이트할 월드", "iris.director.commanddeveloper.param.pack_install_into_world": "월드에 설치할 팩", "iris.director.commanddeveloper.param.make_sure_make_backup_read_warnings_first": "반드시 백업을 만들고 경고를 먼저 읽으세요!", - "iris.director.commanddeveloper.param.should_iris_download_pack_again_you": "Iris가 팩을 다시 다운로드할지 여부", "iris.director.commanddeveloper.director.test": "테스트", "iris.director.commanddeveloper.param.dump_whole_tectonic_plate_instead_single_section": "단일 섹션 대신 지각판 전체를 덤프합니다", "iris.director.commanddeveloper.param.dump_file_id_under_plugins_iris_dump_pv_id": "plugins/Iris/dump 아래의 덤프 파일 ID(pv..*)", @@ -713,8 +709,6 @@ "iris.director.commandiris.director.toggle_debug": "디버그를 전환합니다", "iris.director.commandiris.director.download_project": "프로젝트를 다운로드합니다.", "iris.director.commandiris.param.pack_download": "다운로드할 팩", - "iris.director.commandiris.param.branch_download_from": "다운로드할 브랜치", - "iris.director.commandiris.param.whether_not_overwrite_pack_with_downloaded_one": "다운로드한 팩으로 기존 팩을 덮어쓸지 여부", "iris.director.commandiris.director.get_metrics_your_world": "월드의 측정값을 가져옵니다", "iris.director.commandiris.director.reload_configuration_file_this_is_also_done_automatically": "설정 파일을 다시 로드합니다(자동으로도 실행됨)", "iris.director.commandiris.director.unload_iris_world": "Iris 월드를 언로드합니다", @@ -950,7 +944,6 @@ "iris.runtime.status.true": "예", "iris.runtime.status.false": "아니요", "iris.runtime.error.detail_suffix": " - {error}", - "iris.runtime.download.overwrite_suffix": " 관련 제품", "iris.runtime.datapack.override_suffix": " (월드 데이터 팩 덮어쓰기 설치됨)", "iris.runtime.primary_world.players_routed_suffix": " (플레이어는 거기로)", "iris.runtime.primary_world.routing_disabled_suffix": " (사용 가능)", @@ -1151,10 +1144,6 @@ "iris.bukkit.runtime.studiosvc.can_t_find_dimensions_folder_this_pack_failed": "찾을 수 없습니다 {name} 이 팩의 크기 폴더에! 실패!", "iris.bukkit.runtime.studiosvc.can_t_load_dimension_failed": "차원을 적재할 수 없습니다! 실패!", "iris.bukkit.runtime.studiosvc.type_installed": "{name} 유형 설치. ", - "iris.bukkit.runtime.studiosvc.pack_was_not_found_pack_listing": "팩 '{key}'는 팩 목록에서 찾을 수 없습니다.", - "iris.bukkit.runtime.studiosvc.use_iris_download_pack_branch_branch_download_manually": "수동으로 다운로드하려면 /iris download branch=을(를) 사용하세요.", - "iris.bukkit.runtime.studiosvc.failed_download": "다운로드 실패 '{key}'.", - "iris.bukkit.runtime.studiosvc.failed_download_branch": "다운로드 실패 '{repo}' (branch {branch}).", "iris.bukkit.runtime.studiosvc.failed_open_studio_world": "열린 스튜디오 세계에 실패: {error}", "iris.bukkit.runtime.studiosvc.cannot_open_studio_pack_has_blocking_errors": "열린 스튜디오 '{dimm}' - 팩은 오류를 차단했습니다.", "iris.bukkit.runtime.studiosvc.message": " - {reason}", @@ -1270,13 +1259,8 @@ "iris.runtime.golden.started": "GoldenHash 시작 : {chunks} 청크 주위에 0,0 버퍼 (세계 변경 없음), 스레드 ={threads} 모드 ={mode}", "iris.runtime.golden.chunk_hashed": "[{done}/{total}] 청크 {x},{z} 청크", "iris.runtime.golden.chunk_failed": "주 메뉴 {x},{z} 실패: {type}", - "iris.runtime.pack_download.invalid_pack_name": "잘못된 팩 이름 '{pack}' (사용 가능: a-z, 0-9, _, -)", - "iris.runtime.pack_download.invalid_branch_name": "잘못된 브랜치 이름 '{branch}' (사용 가능: 문자, 숫자, ., _, -)", - "iris.runtime.pack_download.failed": "팩 다운로드 실패: {type}{errorMessage}", "iris.runtime.pack_download.downloading": "다운로드 {url}", "iris.runtime.pack_download.failed_to_find": "팩을 찾기 위해 실패 {url}", - "iris.runtime.pack_download.check_repository_and_branch": "올바른 저장소와 브랜치를 지정했는지 확인하세요!", - "iris.runtime.pack_download.example_command": "예를 들면: /iris download overworld branch=stable", "iris.runtime.pack_download.unpacking": "옵션 정보 {repository}", "iris.runtime.pack_download.unpack_failed": [ "압축 해제 중 문제가 발생했습니다. 다음 항목을 확인하세요:", @@ -1291,7 +1275,6 @@ "iris.runtime.pack_download.invalid_archive_format": "잘못된 형식. 루트 폴더 또는 너무 많은 폴더를 밀어!", "iris.runtime.pack_download.no_dimension_file": "추출 된 zip 파일에서 찾을 수있는 치수 파일 없음.", "iris.runtime.pack_download.check_github": "GitHub에 있는지 확인하고 직원에게 보고하세요!", - "iris.runtime.pack_download.one_dimension_required": "치수 폴더는 정확히 하나의 파일을 포함해야합니다.", "iris.runtime.pack_download.invalid_dimension": "잘못된 차원 폴더 dimensions/.", "iris.runtime.pack_download.importing": "관련 상품 {name} ({key})", "iris.runtime.pack_download.dimension_key_conflict": "packs 폴더의 다른 차원이 이미 키 {key}을(를) 사용합니다. 가져오기에 실패했습니다!", diff --git a/core/src/main/resources/languages/lt_LT.json b/core/src/main/resources/languages/lt_LT.json index 033c12043..f3ab71aa3 100644 --- a/core/src/main/resources/languages/lt_LT.json +++ b/core/src/main/resources/languages/lt_LT.json @@ -148,9 +148,7 @@ "iris.bukkit.commandiris.you_cannot_use_world_name_benchmark_creating_worlds_as_iris": "§cNegalite naudoti pasaulio pavadinimo \"benchmark\", nes Iris šį katalogą naudoja našumo bandymų paketams.", "iris.bukkit.commandiris.may_we_suggest_name_irisworld_instead_2": "§cAr galime pasiūlyti pavadinimą \"IrisWorld\"vietoj to?", "iris.bukkit.commandiris.that_folder_already_exists": "§cTas aplankas jau egzistuoja!", - "iris.bukkit.commandiris.could_not_find_download_dimension": "§cNepavyko rasti ar atsiųsti dimensijos \"{resolvedType}\".", "iris.bukkit.commandiris.try_one_overworld_vanilla_flat_theend": "§ePabandykite vieną iš: per pasaulį, vanilla, butas, pabaiga", - "iris.bukkit.commandiris.download_manually_iris_download": "§eArba atsisiųsti rankiniu būdu: /iris download {resolvedType}", "iris.bukkit.commandiris.world_staging_completed_restart_server_generate_load": "§aPasaulio paruošimas baigtas. Paleiskite serverį iš naujo, kad sugeneruotumėte / įkeltumėte „{worldName}“.", "iris.bukkit.commandiris.exception_raised_during_creation_see_console_more_details": "§cSukūrimo metu iškelta išimtis. Daugiau informacijos rasite konsolėje.", "iris.bukkit.commandiris.successfully_created_your_world": "§aSėkmingai sukūrė savo pasaulį!", @@ -179,7 +177,6 @@ "iris.bukkit.commandiris.looks_like_world_was_already_removed_from_bukkit_yml": "§eAtrodo, pasaulis jau buvo pašalintas iš bukkit.yml", "iris.bukkit.commandiris.failed_save_bukkit_yml_because": "§cNepavyko įrašyti bukkit.yml dėl {value}", "iris.bukkit.commandiris.set_debug": "§aNustatyti derinimą į: {to}", - "iris.bukkit.commandiris.downloading_pack": "§aSiunčiama pakuotė: {pack}/{branch}{value}", "iris.bukkit.commandiris.you_must_be_iris_world": "§cJūs turite būti Iris pasaulis", "iris.bukkit.commandiris.sending_metrics": "§aSiunčiami metrikos...", "iris.bukkit.commandiris.this_is_not_iris_world_iris_worlds_2": "§cTai nėra Iris Pasaulis. Iris pasauliai: {value}", @@ -645,7 +642,6 @@ "iris.director.commanddeveloper.param.world_update": "Atnaujinti pasaulį", "iris.director.commanddeveloper.param.pack_install_into_world": "Paketas įdiegti į pasaulį", "iris.director.commanddeveloper.param.make_sure_make_backup_read_warnings_first": "Įsitikinkite, kad yra atsarginė kopija & pirma perskaitykite įspėjimus!", - "iris.director.commanddeveloper.param.should_iris_download_pack_again_you": "Turėtų Iris vėl atsisiųskite pakuotę", "iris.director.commanddeveloper.director.test": "Bandymas", "iris.director.commanddeveloper.param.dump_whole_tectonic_plate_instead_single_section": "Ištrinkite visą tektoninę plokštelę vietoj vieno pjūvio", "iris.director.commanddeveloper.param.dump_file_id_under_plugins_iris_dump_pv_id": "Name plugins/Iris/dump (plg..*)", @@ -713,8 +709,6 @@ "iris.director.commandiris.director.toggle_debug": "Perjungti derinimą", "iris.director.commandiris.director.download_project": "Atsisiųskite projektą.", "iris.director.commandiris.param.pack_download": "Siunčiama pakuotė", - "iris.director.commandiris.param.branch_download_from": "@ info: whatsthis", - "iris.director.commandiris.param.whether_not_overwrite_pack_with_downloaded_one": "Ar perrašyti pakuotę su atsisiųstu", "iris.director.commandiris.director.get_metrics_your_world": "Gauti metrikos savo pasaulį", "iris.director.commandiris.director.reload_configuration_file_this_is_also_done_automatically": "Iš naujo įkelti konfigūracijos failą (tai taip pat daroma automatiškai)", "iris.director.commandiris.director.unload_iris_world": "Įkelti Iris Pasaulis", @@ -950,7 +944,6 @@ "iris.runtime.status.true": "tiesa", "iris.runtime.status.false": "klaidinga", "iris.runtime.error.detail_suffix": " - {error}", - "iris.runtime.download.overwrite_suffix": " perrašymas", "iris.runtime.datapack.override_suffix": " (įdiegtas pasaulinis duomenų valdymas)", "iris.runtime.primary_world.players_routed_suffix": " (žaidėjai nuriedėjo ten)", "iris.runtime.primary_world.routing_disabled_suffix": " (maršrutas išjungtas)", @@ -1151,10 +1144,6 @@ "iris.bukkit.runtime.studiosvc.can_t_find_dimensions_folder_this_pack_failed": "Negaliu rasti {name} šios pakuotės matmenų aplanke! Nepavyko!", "iris.bukkit.runtime.studiosvc.can_t_load_dimension_failed": "Negaliu įkelti dimensijos! Nepavyko!", "iris.bukkit.runtime.studiosvc.type_installed": "{name} įdiegtas tipas. ", - "iris.bukkit.runtime.studiosvc.pack_was_not_found_pack_listing": "Pakuotė \"{key}\"nebuvo rasta pakuotės sąraše.", - "iris.bukkit.runtime.studiosvc.use_iris_download_pack_branch_branch_download_manually": "Naudojimas /iris download branch= atsisiųsti rankiniu būdu.", - "iris.bukkit.runtime.studiosvc.failed_download": "Nepavyko atsisiųsti \"{key}'.", - "iris.bukkit.runtime.studiosvc.failed_download_branch": "Nepavyko atsisiųsti \"{repo}'(šaka {branch}).", "iris.bukkit.runtime.studiosvc.failed_open_studio_world": "Nepavyko atverti studijos pasaulio: {error}", "iris.bukkit.runtime.studiosvc.cannot_open_studio_pack_has_blocking_errors": "Nepavyko atverti studijos \"{dimm}\"- pakuotė turi blokavimo klaidų:", "iris.bukkit.runtime.studiosvc.message": " - {reason}", @@ -1270,13 +1259,8 @@ "iris.runtime.golden.started": "GoldenHash pradėjo: {chunks} chunkai aplink 0,0 taukšuose (nepaliestas pasaulis), siūlai ={threads} režimas ={mode}", "iris.runtime.golden.chunk_hashed": "[{done}/{total}] unit description in lists {x},{z} hash", "iris.runtime.golden.chunk_failed": "Šriftas {x},{z} nepavyko: {type}", - "iris.runtime.pack_download.invalid_pack_name": "Netinkamas pakuotės pavadinimas \"{pack}\"(leidžiama: a- z, 0-9, _ ir -)", - "iris.runtime.pack_download.invalid_branch_name": "Netinkamas filialo pavadinimas \"{branch}\"(leidžiama: raidės, skaitmenys,. _ ir -)", - "iris.runtime.pack_download.failed": "Paketo atsiuntimas nepavyko: {type}{errorMessage}", "iris.runtime.pack_download.downloading": "Atsiunčiama {url}", "iris.runtime.pack_download.failed_to_find": "Nepavyko rasti pakuotės {url}", - "iris.runtime.pack_download.check_repository_and_branch": "Įsitikinkite, kad nurodėte teisingą atpirkimo ir filialas!", - "iris.runtime.pack_download.example_command": "Pavyzdžiui: /iris download overworld branch=stable", "iris.runtime.pack_download.unpacking": "Išpakavimas {repository}", "iris.runtime.pack_download.unpack_failed": [ "Išpakuojama. Prašome patikrinti / atlikti šiuos veiksmus:", @@ -1291,7 +1275,6 @@ "iris.runtime.pack_download.invalid_archive_format": "Neteisingas formatas. Trūksta šakninio aplanko arba per daug aplankų!", "iris.runtime.pack_download.no_dimension_file": "Ištrauktame zip faile nėra dimensijos failo.", "iris.runtime.pack_download.check_github": "Patikrinkite, ar jis yra GitHub ir pranešti apie tai darbuotojams!", - "iris.runtime.pack_download.one_dimension_required": "Išmatavimai aplanke turi būti tiksliai vienas failas.", "iris.runtime.pack_download.invalid_dimension": "Netinkamas dimensijos aplankas pagal dimensions/.", "iris.runtime.pack_download.importing": "Importuojama {name} ({key})", "iris.runtime.pack_download.dimension_key_conflict": "Kitas matmuo paketų aplanke jau naudoja raktą {key}. Importuoti nepavyko!", diff --git a/core/src/main/resources/languages/nl_NL.json b/core/src/main/resources/languages/nl_NL.json index fe52509dd..29849fad0 100644 --- a/core/src/main/resources/languages/nl_NL.json +++ b/core/src/main/resources/languages/nl_NL.json @@ -148,9 +148,7 @@ "iris.bukkit.commandiris.you_cannot_use_world_name_benchmark_creating_worlds_as_iris": "§cJe kunt de wereldnaam \"benchmark\" niet gebruiken, omdat Iris deze map voor benchmarkpakketten gebruikt.", "iris.bukkit.commandiris.may_we_suggest_name_irisworld_instead_2": "§cMogen we de naam voorstellen \"IrisWorldIn plaats daarvan?", "iris.bukkit.commandiris.that_folder_already_exists": "§cDie map bestaat al!", - "iris.bukkit.commandiris.could_not_find_download_dimension": "§cKon dimensie niet vinden of downloaden \"{resolvedType}\".", "iris.bukkit.commandiris.try_one_overworld_vanilla_flat_theend": "§eProbeer een van: overwereld, vanilla, plat, einde", - "iris.bukkit.commandiris.download_manually_iris_download": "§eOf handmatig downloaden: /iris download {resolvedType}", "iris.bukkit.commandiris.world_staging_completed_restart_server_generate_load": "§aVoorbereiding van de wereld voltooid. Herstart de server om \"{worldName}\" te genereren/laden.", "iris.bukkit.commandiris.exception_raised_during_creation_see_console_more_details": "§cUitzondering bij de schepping. Zie de console voor meer details.", "iris.bukkit.commandiris.successfully_created_your_world": "§aSuccesvol jullie wereld gecreëerd!", @@ -179,7 +177,6 @@ "iris.bukkit.commandiris.looks_like_world_was_already_removed_from_bukkit_yml": "§eHet lijkt erop dat de wereld al verwijderd was van bukkit.yml", "iris.bukkit.commandiris.failed_save_bukkit_yml_because": "§cOpslaan is mislukt bukkit.yml vanwege {value}", "iris.bukkit.commandiris.set_debug": "§aDebug instellen op: {to}", - "iris.bukkit.commandiris.downloading_pack": "§aDownloadpakket: {pack}/{branch}{value}", "iris.bukkit.commandiris.you_must_be_iris_world": "§cJe moet in een Iris wereld", "iris.bukkit.commandiris.sending_metrics": "§aVerzenden van statistieken...", "iris.bukkit.commandiris.this_is_not_iris_world_iris_worlds_2": "§cDit is geen Iris wereld. Iris werelden: {value}", @@ -645,7 +642,6 @@ "iris.director.commanddeveloper.param.world_update": "De wereld om bij te werken", "iris.director.commanddeveloper.param.pack_install_into_world": "Het pakket te installeren in de wereld", "iris.director.commanddeveloper.param.make_sure_make_backup_read_warnings_first": "Zorg ervoor dat u een back-up maakt & Lees eerst de waarschuwingen!", - "iris.director.commanddeveloper.param.should_iris_download_pack_again_you": "Moet Iris download het pakket opnieuw voor u", "iris.director.commanddeveloper.director.test": "Testen", "iris.director.commanddeveloper.param.dump_whole_tectonic_plate_instead_single_section": "Dump de hele tektonische plaat in plaats van een enkele sectie", "iris.director.commanddeveloper.param.dump_file_id_under_plugins_iris_dump_pv_id": "Het dumpbestand id onder plugins/Iris/dump (pp..*)", @@ -713,8 +709,6 @@ "iris.director.commandiris.director.toggle_debug": "Debug aan/uit", "iris.director.commandiris.director.download_project": "Download een project.", "iris.director.commandiris.param.pack_download": "Het te downloaden pakket", - "iris.director.commandiris.param.branch_download_from": "De te downloaden tak van", - "iris.director.commandiris.param.whether_not_overwrite_pack_with_downloaded_one": "Of het pakket met de gedownloade moet worden overschreven", "iris.director.commandiris.director.get_metrics_your_world": "Krijg statistieken voor je wereld", "iris.director.commandiris.director.reload_configuration_file_this_is_also_done_automatically": "Herlaad configuratiebestand (dit wordt ook automatisch gedaan)", "iris.director.commandiris.director.unload_iris_world": "Uitladen en Iris Wereld", @@ -950,7 +944,6 @@ "iris.runtime.status.true": "waar", "iris.runtime.status.false": "onwaar", "iris.runtime.error.detail_suffix": " - {error}", - "iris.runtime.download.overwrite_suffix": " overschrijven", "iris.runtime.datapack.override_suffix": " (World Datapack Override geïnstalleerd)", "iris.runtime.primary_world.players_routed_suffix": " (speelsters gerouteerd daar)", "iris.runtime.primary_world.routing_disabled_suffix": " (gehandicapt)", @@ -1151,10 +1144,6 @@ "iris.bukkit.runtime.studiosvc.can_t_find_dimensions_folder_this_pack_failed": "Kan de {name} in de afmetingen map van dit pakket! Mislukt!", "iris.bukkit.runtime.studiosvc.can_t_load_dimension_failed": "Kan de dimensie niet laden! Mislukt!", "iris.bukkit.runtime.studiosvc.type_installed": "{name} type geïnstalleerd. ", - "iris.bukkit.runtime.studiosvc.pack_was_not_found_pack_listing": "Verpakking{key}' werd niet gevonden in de verpakking lijst.", - "iris.bukkit.runtime.studiosvc.use_iris_download_pack_branch_branch_download_manually": "Gebruik /iris download branch= handmatig downloaden.", - "iris.bukkit.runtime.studiosvc.failed_download": "Downloaden mislukt{key}'.", - "iris.bukkit.runtime.studiosvc.failed_download_branch": "Downloaden mislukt{repo}\" (tak {branch}).", "iris.bukkit.runtime.studiosvc.failed_open_studio_world": "Openen van studiowereld mislukt: {error}", "iris.bukkit.runtime.studiosvc.cannot_open_studio_pack_has_blocking_errors": "Kan studio niet openen '{dimm}' - Pack heeft blokkerende fouten:", "iris.bukkit.runtime.studiosvc.message": " - {reason}", @@ -1270,13 +1259,8 @@ "iris.runtime.golden.started": "GoldenHash gestart: {chunks} chunks rond 0,0 in buffers (onaangeroerde wereld), draden={threads} modus={mode}", "iris.runtime.golden.chunk_hashed": "[{done}/{total}] chunk {x},{z} gehashed", "iris.runtime.golden.chunk_failed": "Chunk. {x},{z} mislukt: {type}", - "iris.runtime.pack_download.invalid_pack_name": "Ongeldige verpakkingsnaam '{pack}\" (toegestaan: a-z, 0-9, en -)", - "iris.runtime.pack_download.invalid_branch_name": "Ongeldige branchnaam '{branch}\" (toegestaan: letters, cijfers, . en -)", - "iris.runtime.pack_download.failed": "Downloaden van pakket is mislukt: {type}{errorMessage}", "iris.runtime.pack_download.downloading": "Downloaden {url}", "iris.runtime.pack_download.failed_to_find": "Kon pakket niet vinden op {url}", - "iris.runtime.pack_download.check_repository_and_branch": "Zorg ervoor dat u de juiste repo en branch heeft opgegeven!", - "iris.runtime.pack_download.example_command": "Bijvoorbeeld: /iris download overworld branch=stable", "iris.runtime.pack_download.unpacking": "Uitpakken {repository}", "iris.runtime.pack_download.unpack_failed": [ "Uitpakken. Controleer/doe het volgende:", @@ -1291,7 +1275,6 @@ "iris.runtime.pack_download.invalid_archive_format": "Ongeldig formaat. Ontbrekende rootmap of te veel mappen!", "iris.runtime.pack_download.no_dimension_file": "Geen dimensiebestand gevonden in het uitgepakte zip-bestand.", "iris.runtime.pack_download.check_github": "Controleer of het aanwezig is op GitHub En meld dit aan het personeel!", - "iris.runtime.pack_download.one_dimension_required": "De map afmetingen moet precies één bestand bevatten.", "iris.runtime.pack_download.invalid_dimension": "Ongeldige dimensiemap onder dimensions/.", "iris.runtime.pack_download.importing": "Importeren {name} ({key})", "iris.runtime.pack_download.dimension_key_conflict": "Een andere dimensie in de packs-map gebruikt al de sleutel {key}. Importeren mislukt!", diff --git a/core/src/main/resources/languages/pl_PL.json b/core/src/main/resources/languages/pl_PL.json index 7ca25b56c..b2955795c 100644 --- a/core/src/main/resources/languages/pl_PL.json +++ b/core/src/main/resources/languages/pl_PL.json @@ -148,9 +148,7 @@ "iris.bukkit.commandiris.you_cannot_use_world_name_benchmark_creating_worlds_as_iris": "§cNie możesz użyć nazwy świata \"benchmark\", ponieważ Iris używa tego katalogu dla pakietów testów wydajności.", "iris.bukkit.commandiris.may_we_suggest_name_irisworld_instead_2": "§cCzy możemy zasugerować nazwę \"IrisWorld\"zamiast?", "iris.bukkit.commandiris.that_folder_already_exists": "§cTen folder już istnieje!", - "iris.bukkit.commandiris.could_not_find_download_dimension": "§cNie można znaleźć lub pobrać wymiar \"{resolvedType}\".", "iris.bukkit.commandiris.try_one_overworld_vanilla_flat_theend": "§eSpróbuj jeden z: zaświaty, vanilla, płaski, koniec", - "iris.bukkit.commandiris.download_manually_iris_download": "§eLub pobrać ręcznie: /iris download {resolvedType}", "iris.bukkit.commandiris.world_staging_completed_restart_server_generate_load": "§aPrzygotowanie świata ukończone. Uruchom serwer ponownie, aby wygenerować/wczytać „{worldName}”.", "iris.bukkit.commandiris.exception_raised_during_creation_see_console_more_details": "§cWyjątek podniesiony podczas tworzenia. Więcej szczegółów znajdziesz w konsoli.", "iris.bukkit.commandiris.successfully_created_your_world": "§aZ powodzeniem stworzyłeś swój świat!", @@ -179,7 +177,6 @@ "iris.bukkit.commandiris.looks_like_world_was_already_removed_from_bukkit_yml": "§eWygląda na to, że świat został już usunięty z bukkit.yml", "iris.bukkit.commandiris.failed_save_bukkit_yml_because": "§cNie udało się zapisać bukkit.yml z powodu {value}", "iris.bukkit.commandiris.set_debug": "§aUstaw debugowanie na: {to}", - "iris.bukkit.commandiris.downloading_pack": "§aPobieranie opakowania: {pack}/{branch}{value}", "iris.bukkit.commandiris.you_must_be_iris_world": "§cMusisz być w Iris świat", "iris.bukkit.commandiris.sending_metrics": "§aWysyłanie wskaźników...", "iris.bukkit.commandiris.this_is_not_iris_world_iris_worlds_2": "§cTo nie jest... Iris Świat. Iris światy: {value}", @@ -645,7 +642,6 @@ "iris.director.commanddeveloper.param.world_update": "Świat do aktualizacji", "iris.director.commanddeveloper.param.pack_install_into_world": "Paczka do instalacji na świecie", "iris.director.commanddeveloper.param.make_sure_make_backup_read_warnings_first": "Upewnij się, aby zrobić kopię zapasową & najpierw przeczytaj ostrzeżenia!", - "iris.director.commanddeveloper.param.should_iris_download_pack_again_you": "Powinien Iris ponownie pobrać opakowanie dla Ciebie", "iris.director.commanddeveloper.director.test": "Badanie", "iris.director.commanddeveloper.param.dump_whole_tectonic_plate_instead_single_section": "Wyrzuć całą płytkę tektoniczną zamiast jednej sekcji", "iris.director.commanddeveloper.param.dump_file_id_under_plugins_iris_dump_pv_id": "Identyfikator pliku zrzutu pod plugins/Iris/dump (plv..*)", @@ -713,8 +709,6 @@ "iris.director.commandiris.director.toggle_debug": "Włącza debugowanie", "iris.director.commandiris.director.download_project": "Pobierz projekt.", "iris.director.commandiris.param.pack_download": "Paczka do pobrania", - "iris.director.commandiris.param.branch_download_from": "Oddział do pobrania z", - "iris.director.commandiris.param.whether_not_overwrite_pack_with_downloaded_one": "Czy zastąpić opakowanie pobranym", "iris.director.commandiris.director.get_metrics_your_world": "Get metrycs dla twojego świata", "iris.director.commandiris.director.reload_configuration_file_this_is_also_done_automatically": "Wczytaj ponownie plik konfiguracyjny (jest on również wykonywany automatycznie)", "iris.director.commandiris.director.unload_iris_world": "Wyładuj Iris Świat", @@ -950,7 +944,6 @@ "iris.runtime.status.true": "prawda", "iris.runtime.status.false": "Fałszywy", "iris.runtime.error.detail_suffix": " - {error}", - "iris.runtime.download.overwrite_suffix": " nadpisanie", "iris.runtime.datapack.override_suffix": " (zainstalowany światowy menedżer danych)", "iris.runtime.primary_world.players_routed_suffix": " (grający tam)", "iris.runtime.primary_world.routing_disabled_suffix": " (routing wyłączony)", @@ -1151,10 +1144,6 @@ "iris.bukkit.runtime.studiosvc.can_t_find_dimensions_folder_this_pack_failed": "Nie mogę znaleźć {name} w folderze wymiarów tego opakowania! Nie udało się!", "iris.bukkit.runtime.studiosvc.can_t_load_dimension_failed": "Nie można załadować wymiaru! Nie udało się!", "iris.bukkit.runtime.studiosvc.type_installed": "{name} typ zainstalowany. ", - "iris.bukkit.runtime.studiosvc.pack_was_not_found_pack_listing": "Paczka \"{key}'nie znaleziono go na liście.", - "iris.bukkit.runtime.studiosvc.use_iris_download_pack_branch_branch_download_manually": "Stosowanie /iris download branch= aby pobrać ręcznie.", - "iris.bukkit.runtime.studiosvc.failed_download": "Nie można pobrać '{key}'.", - "iris.bukkit.runtime.studiosvc.failed_download_branch": "Nie można pobrać '{repo}'(oddział {branch}).", "iris.bukkit.runtime.studiosvc.failed_open_studio_world": "Nie udało się otworzyć studio świata: {error}", "iris.bukkit.runtime.studiosvc.cannot_open_studio_pack_has_blocking_errors": "Nie można otworzyć studia \"{dimm}\"- opakowanie ma błędy blokujące:", "iris.bukkit.runtime.studiosvc.message": " - {reason}", @@ -1270,13 +1259,8 @@ "iris.runtime.golden.started": "GoldenHash rozpoczęte: {chunks} części wokół 0,0 w zderzakach (świat nietknięty), wątki ={threads} tryb ={mode}", "iris.runtime.golden.chunk_hashed": "[{done}/{total}] cząstka {x},{z} łuszczone", "iris.runtime.golden.chunk_failed": "Chunk Przewodniczący {x},{z} niepowodzenie: {type}", - "iris.runtime.pack_download.invalid_pack_name": "Nieprawidłowa nazwa opakowania \"{pack}\"(dozwolone: a- z, 0-9, _ i -)", - "iris.runtime.pack_download.invalid_branch_name": "Nieprawidłowa nazwa gałęzi \"{branch}\"(dozwolone: litery, cyfry,. _ i -)", - "iris.runtime.pack_download.failed": "Pobieranie pakietu nie powiodło się: {type}{errorMessage}", "iris.runtime.pack_download.downloading": "Pobieranie {url}", "iris.runtime.pack_download.failed_to_find": "Nie udało się znaleźć pakietu w {url}", - "iris.runtime.pack_download.check_repository_and_branch": "Upewnij się, że podałeś poprawny repo i gałąź!", - "iris.runtime.pack_download.example_command": "Na przykład: /iris download overworld branch=stable", "iris.runtime.pack_download.unpacking": "Rozpakowanie {repository}", "iris.runtime.pack_download.unpack_failed": [ "Wydanie podczas rozpakowywania. Proszę sprawdzić / wykonać następujące czynności:", @@ -1291,7 +1275,6 @@ "iris.runtime.pack_download.invalid_archive_format": "Niepoprawny format. Brak katalogu głównego lub zbyt wiele folderów!", "iris.runtime.pack_download.no_dimension_file": "W pliku zip nie znaleziono żadnego wymiaru.", "iris.runtime.pack_download.check_github": "Sprawdź, czy jest obecny na GitHub i zgłosić do do personelu!", - "iris.runtime.pack_download.one_dimension_required": "Folder wymiarów musi zawierać dokładnie jeden plik.", "iris.runtime.pack_download.invalid_dimension": "Nieprawidłowy folder wymiarów pod dimensions/.", "iris.runtime.pack_download.importing": "Przywóz {name} ({key})", "iris.runtime.pack_download.dimension_key_conflict": "Inny wymiar w folderze pakietów już używa klucza {key}. Import nie powiódł się!", diff --git a/core/src/main/resources/languages/pt_PT.json b/core/src/main/resources/languages/pt_PT.json index e527a1540..de6a89328 100644 --- a/core/src/main/resources/languages/pt_PT.json +++ b/core/src/main/resources/languages/pt_PT.json @@ -148,9 +148,7 @@ "iris.bukkit.commandiris.you_cannot_use_world_name_benchmark_creating_worlds_as_iris": "§cNão pode usar o nome de mundo \"benchmark\", porque o Iris utiliza este diretório para pacotes de benchmark.", "iris.bukkit.commandiris.may_we_suggest_name_irisworld_instead_2": "§cPodemos sugerir o nome \"IrisWorld\" em vez disso?", "iris.bukkit.commandiris.that_folder_already_exists": "§cEssa pasta já existe!", - "iris.bukkit.commandiris.could_not_find_download_dimension": "§cNão foi possível encontrar ou baixar a dimensão \"{resolvedType}\".", "iris.bukkit.commandiris.try_one_overworld_vanilla_flat_theend": "§eExperimente um de: overworld, vanilla, flat, theend", - "iris.bukkit.commandiris.download_manually_iris_download": "§eOu baixar manualmente: /iris download {resolvedType}", "iris.bukkit.commandiris.world_staging_completed_restart_server_generate_load": "§aPreparação do mundo concluída. Reinicie o servidor para gerar/carregar \"{worldName}\".", "iris.bukkit.commandiris.exception_raised_during_creation_see_console_more_details": "§cExceção levantada durante a criação. Veja o console para mais detalhes.", "iris.bukkit.commandiris.successfully_created_your_world": "§aCriou com sucesso o seu mundo!", @@ -179,7 +177,6 @@ "iris.bukkit.commandiris.looks_like_world_was_already_removed_from_bukkit_yml": "§eParece que o mundo já foi removido de bukkit.yml", "iris.bukkit.commandiris.failed_save_bukkit_yml_because": "§cFalha ao salvar bukkit.yml devido a {value}", "iris.bukkit.commandiris.set_debug": "§aDefinir depuração como: {to}", - "iris.bukkit.commandiris.downloading_pack": "§aBaixando pacote: {pack}/{branch}{value}", "iris.bukkit.commandiris.you_must_be_iris_world": "§cVocê deve estar em um Iris mundo", "iris.bukkit.commandiris.sending_metrics": "§aEnviando métricas...", "iris.bukkit.commandiris.this_is_not_iris_world_iris_worlds_2": "§cIsto não é um Iris mundo. Iris mundos: {value}", @@ -645,7 +642,6 @@ "iris.director.commanddeveloper.param.world_update": "O mundo a actualizar", "iris.director.commanddeveloper.param.pack_install_into_world": "O pacote para instalar no mundo", "iris.director.commanddeveloper.param.make_sure_make_backup_read_warnings_first": "Certifique-se de fazer um backup & Leia primeiro os avisos!", - "iris.director.commanddeveloper.param.should_iris_download_pack_again_you": "Deve Iris baixar o pacote novamente para você", "iris.director.commanddeveloper.director.test": "Ensaio", "iris.director.commanddeveloper.param.dump_whole_tectonic_plate_instead_single_section": "Descarte toda a placa tectônica em vez de uma única seção", "iris.director.commanddeveloper.param.dump_file_id_under_plugins_iris_dump_pv_id": "O ID do arquivo de descarga sob plugins/Iris/dump (vp..*)", @@ -713,8 +709,6 @@ "iris.director.commandiris.director.toggle_debug": "Alternar a depuração", "iris.director.commandiris.director.download_project": "Baixe um projeto.", "iris.director.commandiris.param.pack_download": "O pacote para download", - "iris.director.commandiris.param.branch_download_from": "O ramo a transferir de", - "iris.director.commandiris.param.whether_not_overwrite_pack_with_downloaded_one": "Sobrescrever ou não o pacote com o transferido", "iris.director.commandiris.director.get_metrics_your_world": "Obtenha métricas para o seu mundo", "iris.director.commandiris.director.reload_configuration_file_this_is_also_done_automatically": "Recarregar o ficheiro de configuração (isto também é feito automaticamente)", "iris.director.commandiris.director.unload_iris_world": "Descarregar uma Iris Mundo", @@ -950,7 +944,6 @@ "iris.runtime.status.true": "verdadeiro", "iris.runtime.status.false": "falso", "iris.runtime.error.detail_suffix": " - {error}", - "iris.runtime.download.overwrite_suffix": " Sobreposição", "iris.runtime.datapack.override_suffix": " (mundial datapack sobreposição instalado)", "iris.runtime.primary_world.players_routed_suffix": " (jogadores encaminhados para lá)", "iris.runtime.primary_world.routing_disabled_suffix": " (Roteamento desactivado)", @@ -1151,10 +1144,6 @@ "iris.bukkit.runtime.studiosvc.can_t_find_dimensions_folder_this_pack_failed": "Não consigo encontrar o {name} na pasta de dimensões deste pacote! Falhou!", "iris.bukkit.runtime.studiosvc.can_t_load_dimension_failed": "Não consigo carregar a dimensão! Falhou!", "iris.bukkit.runtime.studiosvc.type_installed": "{name} Tipo instalado. ", - "iris.bukkit.runtime.studiosvc.pack_was_not_found_pack_listing": "Embalar '{key}' não foi encontrado na lista de pacotes.", - "iris.bukkit.runtime.studiosvc.use_iris_download_pack_branch_branch_download_manually": "Utilização /iris download branch= para baixar manualmente.", - "iris.bukkit.runtime.studiosvc.failed_download": "Falha ao transferir '{key}'.", - "iris.bukkit.runtime.studiosvc.failed_download_branch": "Falha ao transferir '{repo}' (ramo {branch}).", "iris.bukkit.runtime.studiosvc.failed_open_studio_world": "Falha ao abrir o mundo do estúdio: {error}", "iris.bukkit.runtime.studiosvc.cannot_open_studio_pack_has_blocking_errors": "Não foi possível abrir o estúdio '{dimm}- a pack tem erros de bloqueio:", "iris.bukkit.runtime.studiosvc.message": " - {reason}", @@ -1270,13 +1259,8 @@ "iris.runtime.golden.started": "GoldenHash iniciado: {chunks} chunks ao redor 0,0 em buffers (mundo intocado), threads={threads} modo={mode}", "iris.runtime.golden.chunk_hashed": "[{done}/{total}] chunk {x},{z} hashid", "iris.runtime.golden.chunk_failed": "Chunk. {x},{z} falhou: {type}", - "iris.runtime.pack_download.invalid_pack_name": "Nome de pacote inválido '{pack}« (permitido: a-z, 0-9, e -)", - "iris.runtime.pack_download.invalid_branch_name": "Nome de branch inválido '{branch}« (permitido: letras, dígitos, . e -)", - "iris.runtime.pack_download.failed": "A transferência do pacote falhou: {type}{errorMessage}", "iris.runtime.pack_download.downloading": "Baixando {url}", "iris.runtime.pack_download.failed_to_find": "Não foi possível encontrar o pacote em {url}", - "iris.runtime.pack_download.check_repository_and_branch": "Certifique-se que você especificou o repo correto e branch!", - "iris.runtime.pack_download.example_command": "Por exemplo: /iris download overworld branch=stable", "iris.runtime.pack_download.unpacking": "Desembalar {repository}", "iris.runtime.pack_download.unpack_failed": [ "Problema ao desfazer as malas. Verifique/faça o seguinte:", @@ -1291,7 +1275,6 @@ "iris.runtime.pack_download.invalid_archive_format": "Formato inválido. Falta a pasta raiz ou muitas pastas!", "iris.runtime.pack_download.no_dimension_file": "Nenhum arquivo de dimensão encontrado no arquivo zip extraído.", "iris.runtime.pack_download.check_github": "Verifique se está presente em GitHub E reporta isto ao pessoal!", - "iris.runtime.pack_download.one_dimension_required": "A pasta de dimensões deve conter exatamente um arquivo.", "iris.runtime.pack_download.invalid_dimension": "Pasta de dimensões inválida sob dimensions/.", "iris.runtime.pack_download.importing": "Importação {name} ({key})", "iris.runtime.pack_download.dimension_key_conflict": "Outra dimensão na pasta pacotes já está usando a chave {key}. A importação falhou!", diff --git a/core/src/main/resources/languages/ru_RU.json b/core/src/main/resources/languages/ru_RU.json index 69a993f3d..3199d0d49 100644 --- a/core/src/main/resources/languages/ru_RU.json +++ b/core/src/main/resources/languages/ru_RU.json @@ -148,9 +148,7 @@ "iris.bukkit.commandiris.you_cannot_use_world_name_benchmark_creating_worlds_as_iris": "§cНельзя использовать имя мира \"benchmark\", потому что Iris использует этот каталог для пакетов тестирования.", "iris.bukkit.commandiris.may_we_suggest_name_irisworld_instead_2": "§cМожно предложить название \"IrisWorldВместо этого?", "iris.bukkit.commandiris.that_folder_already_exists": "§cЭта папка уже существует!", - "iris.bukkit.commandiris.could_not_find_download_dimension": "§cНе удалось найти и загрузить размерность\".{resolvedType}\".", "iris.bukkit.commandiris.try_one_overworld_vanilla_flat_theend": "§eПопробуйте один из вариантов: overworld, vanilla, flat, theend", - "iris.bukkit.commandiris.download_manually_iris_download": "§eИли скачать вручную: /iris download {resolvedType}", "iris.bukkit.commandiris.world_staging_completed_restart_server_generate_load": "§aПодготовка мира завершена. Перезапустите сервер, чтобы сгенерировать/загрузить «{worldName}».", "iris.bukkit.commandiris.exception_raised_during_creation_see_console_more_details": "§cИсключение, возникшее при сотворении. Смотрите консоль для более подробной информации.", "iris.bukkit.commandiris.successfully_created_your_world": "§aУспешно создал свой мир!", @@ -179,7 +177,6 @@ "iris.bukkit.commandiris.looks_like_world_was_already_removed_from_bukkit_yml": "§eПохоже, мир уже был удален из bukkit.yml", "iris.bukkit.commandiris.failed_save_bukkit_yml_because": "§cНе удалось спасти bukkit.yml Потому что {value}", "iris.bukkit.commandiris.set_debug": "§aУстановить отладку для: {to}", - "iris.bukkit.commandiris.downloading_pack": "§aСкачать пакет: {pack}/{branch}{value}", "iris.bukkit.commandiris.you_must_be_iris_world": "§cВы должны быть в Iris мир", "iris.bukkit.commandiris.sending_metrics": "§aОтправка метрик...", "iris.bukkit.commandiris.this_is_not_iris_world_iris_worlds_2": "§cЭто не является Iris Мир. Iris Миры: {value}", @@ -645,7 +642,6 @@ "iris.director.commanddeveloper.param.world_update": "Мир для обновления", "iris.director.commanddeveloper.param.pack_install_into_world": "Пакет для установки в мире", "iris.director.commanddeveloper.param.make_sure_make_backup_read_warnings_first": "Обязательно сделайте резервную копию & Сначала прочитайте предупреждения!", - "iris.director.commanddeveloper.param.should_iris_download_pack_again_you": "Должен быть Iris Скачать пакет снова для вас", "iris.director.commanddeveloper.director.test": "Тест", "iris.director.commanddeveloper.param.dump_whole_tectonic_plate_instead_single_section": "Сбросьте всю тектоническую плиту вместо одной секции", "iris.director.commanddeveloper.param.dump_file_id_under_plugins_iris_dump_pv_id": "Файл демпинга id под plugins/Iris/dump (pv..*)", @@ -713,8 +709,6 @@ "iris.director.commandiris.director.toggle_debug": "Отладка переключить", "iris.director.commandiris.director.download_project": "Скачать проект.", "iris.director.commandiris.param.pack_download": "Пакет скачать", - "iris.director.commandiris.param.branch_download_from": "Ветка для скачивания из", - "iris.director.commandiris.param.whether_not_overwrite_pack_with_downloaded_one": "Перезаписывать или нет пакет с загруженным", "iris.director.commandiris.director.get_metrics_your_world": "Получите метрики для вашего мира", "iris.director.commandiris.director.reload_configuration_file_this_is_also_done_automatically": "Перезагрузка файла конфигурации (также выполняется автоматически)", "iris.director.commandiris.director.unload_iris_world": "Разгрузить Iris Мир", @@ -950,7 +944,6 @@ "iris.runtime.status.true": "истинный", "iris.runtime.status.false": "ложный", "iris.runtime.error.detail_suffix": " - {error}", - "iris.runtime.download.overwrite_suffix": " переписывать", "iris.runtime.datapack.override_suffix": " (всемирный пакет данных установлен)", "iris.runtime.primary_world.players_routed_suffix": " (Игроки направляются туда)", "iris.runtime.primary_world.routing_disabled_suffix": " (маршрутизация отключена)", @@ -1151,10 +1144,6 @@ "iris.bukkit.runtime.studiosvc.can_t_find_dimensions_folder_this_pack_failed": "Не могу найти {name} В размерной папке этой паки! Провал!", "iris.bukkit.runtime.studiosvc.can_t_load_dimension_failed": "Не могу загрузить размер! Провал!", "iris.bukkit.runtime.studiosvc.type_installed": "{name} Тип установлен. ", - "iris.bukkit.runtime.studiosvc.pack_was_not_found_pack_listing": "Пакуй.{key}Не было найдено в списке упаковки.", - "iris.bukkit.runtime.studiosvc.use_iris_download_pack_branch_branch_download_manually": "Использовать /iris download branch= Скачать вручную.", - "iris.bukkit.runtime.studiosvc.failed_download": "Не удалось скачать{key}'.", - "iris.bukkit.runtime.studiosvc.failed_download_branch": "Не удалось скачать{repo}' (ветка {branch}).", "iris.bukkit.runtime.studiosvc.failed_open_studio_world": "Не удалось открыть студию: {error}", "iris.bukkit.runtime.studiosvc.cannot_open_studio_pack_has_blocking_errors": "Не может открыть студию{dimm}У пакета есть ошибки блокировки:", "iris.bukkit.runtime.studiosvc.message": " - {reason}", @@ -1270,13 +1259,8 @@ "iris.runtime.golden.started": "GoldenHash Начало: {chunks} чанки вокруг 0,0 в буферах (нетронутый мир), нити{threads} режим{mode}", "iris.runtime.golden.chunk_hashed": "[{done}/{total}] чанк {x},{z} хешированный", "iris.runtime.golden.chunk_failed": "Кусок {x},{z} не удалось: {type}", - "iris.runtime.pack_download.invalid_pack_name": "Недействительное название упаковки {pack} (допускается: a-z, 0-9, и -)", - "iris.runtime.pack_download.invalid_branch_name": "Недействительное название филиала {branch} (разрешено: буквы, цифры, ). и -", - "iris.runtime.pack_download.failed": "Пакет скачать не удалось: {type}{errorMessage}", "iris.runtime.pack_download.downloading": "Скачать {url}", "iris.runtime.pack_download.failed_to_find": "Не удалось найти стаю {url}", - "iris.runtime.pack_download.check_repository_and_branch": "Убедитесь, что вы указали правильное РЕПО и ответвление!", - "iris.runtime.pack_download.example_command": "Например: /iris download overworld branch=stable", "iris.runtime.pack_download.unpacking": "распаковка {repository}", "iris.runtime.pack_download.unpack_failed": [ "Проблемы при распаковке. Пожалуйста, проверьте / сделайте следующее:", @@ -1291,7 +1275,6 @@ "iris.runtime.pack_download.invalid_archive_format": "Недействительный формат. Недостающая корневая папка или слишком много папок!", "iris.runtime.pack_download.no_dimension_file": "Файл размерности не найден в извлеченном файле zip.", "iris.runtime.pack_download.check_github": "Убедитесь, что он присутствует на GitHub Сообщите об этом сотрудникам!", - "iris.runtime.pack_download.one_dimension_required": "Папка размерностей должна содержать ровно один файл.", "iris.runtime.pack_download.invalid_dimension": "Недействительная размерная папка под dimensions/.", "iris.runtime.pack_download.importing": "импортировать {name} ({key})", "iris.runtime.pack_download.dimension_key_conflict": "Еще одно измерение в папке пакетов уже использует ключ {key}. Импорт провалился!", diff --git a/core/src/main/resources/languages/tr_TR.json b/core/src/main/resources/languages/tr_TR.json index bd4501550..19d8d4cb7 100644 --- a/core/src/main/resources/languages/tr_TR.json +++ b/core/src/main/resources/languages/tr_TR.json @@ -148,9 +148,7 @@ "iris.bukkit.commandiris.you_cannot_use_world_name_benchmark_creating_worlds_as_iris": "§cIris bu dizini kıyaslama paketleri için kullandığından \"benchmark\" dünya adını kullanamazsınız.", "iris.bukkit.commandiris.may_we_suggest_name_irisworld_instead_2": "§cAdımı önerebiliriz \"IrisWorldBunun yerine?", "iris.bukkit.commandiris.that_folder_already_exists": "§cBu klasör zaten var!", - "iris.bukkit.commandiris.could_not_find_download_dimension": "§cBoyut bulamaz veya indirmek \"{resolvedType}\".", "iris.bukkit.commandiris.try_one_overworld_vanilla_flat_theend": "§eBirini deneyin: Overworld, vanilla, düz, son", - "iris.bukkit.commandiris.download_manually_iris_download": "§eYa da manuel olarak indirmek: /iris download {resolvedType}", "iris.bukkit.commandiris.world_staging_completed_restart_server_generate_load": "§aDünya hazırlığı tamamlandı. \"{worldName}\" dünyasını oluşturmak/yüklemek için sunucuyu yeniden başlatın.", "iris.bukkit.commandiris.exception_raised_during_creation_see_console_more_details": "§cYaratılış sırasında ortaya çıktı. Konsolu daha fazla ayrıntı için görün.", "iris.bukkit.commandiris.successfully_created_your_world": "§aBaşarılı bir şekilde dünyanızı yarattı!", @@ -179,7 +177,6 @@ "iris.bukkit.commandiris.looks_like_world_was_already_removed_from_bukkit_yml": "§eDünya gibi görünüyor zaten kaldırıldı bukkit.yml", "iris.bukkit.commandiris.failed_save_bukkit_yml_because": "§ckurtarmak için başarısız oldu bukkit.yml Çünkü {value}", "iris.bukkit.commandiris.set_debug": "§aSet debug: {to}", - "iris.bukkit.commandiris.downloading_pack": "§aİndirme paketi: {pack}/{branch}{value}", "iris.bukkit.commandiris.you_must_be_iris_world": "§cBirde olmalısın Iris dünya dünyası", "iris.bukkit.commandiris.sending_metrics": "§ametrikleri gönderin...", "iris.bukkit.commandiris.this_is_not_iris_world_iris_worlds_2": "§cBu bir şey değil Iris Dünya. Iris Dünyalar: {value}", @@ -645,7 +642,6 @@ "iris.director.commanddeveloper.param.world_update": "Dünyayı güncellemek için", "iris.director.commanddeveloper.param.pack_install_into_world": "Dünyaya yükleme paketi", "iris.director.commanddeveloper.param.make_sure_make_backup_read_warnings_first": "Bir yedekleme yapmak için emin olun & İlk önce uyarıları okuyun!", - "iris.director.commanddeveloper.param.should_iris_download_pack_again_you": "Should Must Should Iris paketi tekrar indir", "iris.director.commanddeveloper.director.test": "Test Testi", "iris.director.commanddeveloper.param.dump_whole_tectonic_plate_instead_single_section": "Tek bir bölüm yerine tüm tectonik plakayı karıştırın", "iris.director.commanddeveloper.param.dump_file_id_under_plugins_iris_dump_pv_id": "Boş dosya adı altında plugins/Iris/dump (pv..*)", @@ -713,8 +709,6 @@ "iris.director.commandiris.director.toggle_debug": "Çalmak için", "iris.director.commandiris.director.download_project": "Bir proje indirin.", "iris.director.commandiris.param.pack_download": "İndirmek için paket", - "iris.director.commandiris.param.branch_download_from": "Şubeden indirmek için", - "iris.director.commandiris.param.whether_not_overwrite_pack_with_downloaded_one": "Paketi indirilmiş olan ile yazmak veya yazmamak", "iris.director.commandiris.director.get_metrics_your_world": "Dünyanız için ölçümler alın", "iris.director.commandiris.director.reload_configuration_file_this_is_also_done_automatically": "yeniden yükle yapılandırma dosyası (bu da otomatik olarak yapılır)", "iris.director.commandiris.director.unload_iris_world": "boşalt an a Iris Dünya Dünyası", @@ -950,7 +944,6 @@ "iris.runtime.status.true": "Gerçek doğru", "iris.runtime.status.false": "sahte yanlış", "iris.runtime.error.detail_suffix": " - {error}", - "iris.runtime.download.overwrite_suffix": " Over write", "iris.runtime.datapack.override_suffix": " (Dünya veri paketi override installed)", "iris.runtime.primary_world.players_routed_suffix": " (Oyuncular oraya yolladı)", "iris.runtime.primary_world.routing_disabled_suffix": " (Vücretsiz)", @@ -1151,10 +1144,6 @@ "iris.bukkit.runtime.studiosvc.can_t_find_dimensions_folder_this_pack_failed": "Bulamaz {name} Bu paketin boyutlarında! Başarısız!", "iris.bukkit.runtime.studiosvc.can_t_load_dimension_failed": "Boyutu yükleyemez! Başarısız!", "iris.bukkit.runtime.studiosvc.type_installed": "{name} Tür yüklü. ", - "iris.bukkit.runtime.studiosvc.pack_was_not_found_pack_listing": "Pack \"{key}\" paketin listesinde bulunamadı.", - "iris.bukkit.runtime.studiosvc.use_iris_download_pack_branch_branch_download_manually": "Kullanım Kullanımı /iris download branch= manuel olarak indirmek için.", - "iris.bukkit.runtime.studiosvc.failed_download": "indirmek için başarısız oldu '{key}'.", - "iris.bukkit.runtime.studiosvc.failed_download_branch": "indirmek için başarısız oldu '{repo}\" (branch {branch}).", "iris.bukkit.runtime.studiosvc.failed_open_studio_world": "Stüdyo dünyasını açmaya başarısız oldu: {error}", "iris.bukkit.runtime.studiosvc.cannot_open_studio_pack_has_blocking_errors": "Açık stüdyo \"{dimm}\" - paket hataları engelliyor:", "iris.bukkit.runtime.studiosvc.message": " - {reason}", @@ -1270,13 +1259,8 @@ "iris.runtime.golden.started": "GoldenHash başladı: {chunks} Etrafında 0,0 Buffers'te (dünyayı terk etti), iplikler ={threads} mod ={mode}", "iris.runtime.golden.chunk_hashed": "[{done}/{total}] chunk {x},{z} Havehed", "iris.runtime.golden.chunk_failed": "Chunk. {x},{z} başarısız: {type}", - "iris.runtime.pack_download.invalid_pack_name": "geçersiz paketi adı \"{pack}\" (tamam: a-z, 0-9, ve -)", - "iris.runtime.pack_download.invalid_branch_name": "geçersiz şube adı \"{branch}\" (Ziyaret: mektuplar, sayılar, . ve -)", - "iris.runtime.pack_download.failed": "Pack download başarısız oldu: {type}{errorMessage}", "iris.runtime.pack_download.downloading": "Downloading indir {url}", "iris.runtime.pack_download.failed_to_find": "Paket bulmak için başarısız oldu {url}", - "iris.runtime.pack_download.check_repository_and_branch": "Doğru repo ve şubeyi belirttiğinizden emin olun!", - "iris.runtime.pack_download.example_command": "Örneğin: /iris download overworld branch=stable", "iris.runtime.pack_download.unpacking": "Unpackinging {repository}", "iris.runtime.pack_download.unpack_failed": [ "Paket açılırken sorun oluştu. Lütfen şunları kontrol edin/yapın:", @@ -1291,7 +1275,6 @@ "iris.runtime.pack_download.invalid_archive_format": "geçersiz formatı. Eksik kök klasörü veya çok fazla klasör!", "iris.runtime.pack_download.no_dimension_file": "Tamamlanan zip dosyasında bulunan hiçbir boyut dosya bulunamadı.", "iris.runtime.pack_download.check_github": "GitHub'de mevcut olduğunu kontrol edin ve bunu personele rapor edin!", - "iris.runtime.pack_download.one_dimension_required": "Boyut klasörü tam olarak bir dosya içermelidir.", "iris.runtime.pack_download.invalid_dimension": "geçersiz boyut klasörü altında dimensions/.", "iris.runtime.pack_download.importing": "İthalat {name} ({key})", "iris.runtime.pack_download.dimension_key_conflict": "Paketlerdeki başka bir boyut zaten anahtarı kullanıyor {key}. İthalat başarısız oldu!", diff --git a/core/src/main/resources/languages/vi_VI.json b/core/src/main/resources/languages/vi_VI.json index 2b3cd23d4..c5f92f57f 100644 --- a/core/src/main/resources/languages/vi_VI.json +++ b/core/src/main/resources/languages/vi_VI.json @@ -148,9 +148,7 @@ "iris.bukkit.commandiris.you_cannot_use_world_name_benchmark_creating_worlds_as_iris": "§cKhông thể dùng tên thế giới \"benchmark\" vì Iris sử dụng thư mục này cho các gói đo hiệu năng.", "iris.bukkit.commandiris.may_we_suggest_name_irisworld_instead_2": "§cChúng ta có thể đề nghị cái tên \"IrisWorldThay vào đó?", "iris.bukkit.commandiris.that_folder_already_exists": "§cThư mục đó đã có!", - "iris.bukkit.commandiris.could_not_find_download_dimension": "§cKhông tìm thấy hay tải về chiều không gian \"{resolvedType}\".", "iris.bukkit.commandiris.try_one_overworld_vanilla_flat_theend": "§eHãy thử một trong những: ngoài thế giới, vanilla, bằng phẳng, kết thúc", - "iris.bukkit.commandiris.download_manually_iris_download": "§eHoặc tải về bằng tay: /iris download {resolvedType}", "iris.bukkit.commandiris.world_staging_completed_restart_server_generate_load": "§aĐã chuẩn bị xong thế giới. Hãy khởi động lại máy chủ để tạo/tải \"{worldName}\".", "iris.bukkit.commandiris.exception_raised_during_creation_see_console_more_details": "§cNgoại lệ được nuôi lớn trong suốt quá trình sáng tạo. Xem bảng điều khiển để biết thêm chi tiết.", "iris.bukkit.commandiris.successfully_created_your_world": "§aThành công trong việc tạo ra thế giới của anh!", @@ -179,7 +177,6 @@ "iris.bukkit.commandiris.looks_like_world_was_already_removed_from_bukkit_yml": "§eCó vẻ như thế giới đã bị loại bỏ bukkit.yml", "iris.bukkit.commandiris.failed_save_bukkit_yml_because": "§cLỗi lưu bukkit.yml bởi vì {value}", "iris.bukkit.commandiris.set_debug": "§aĐặt lỗi là: {to}", - "iris.bukkit.commandiris.downloading_pack": "§aĐang tải về: {pack}/{branch}{value}", "iris.bukkit.commandiris.you_must_be_iris_world": "§cChắc anh đang ở trong... Iris thế giới", "iris.bukkit.commandiris.sending_metrics": "§aName...", "iris.bukkit.commandiris.this_is_not_iris_world_iris_worlds_2": "§cĐây không phải là Iris Thế giới. Iris Thế giới: {value}", @@ -645,7 +642,6 @@ "iris.director.commanddeveloper.param.world_update": "♪ Cả thế giới để cập nhật ♪", "iris.director.commanddeveloper.param.pack_install_into_world": "Name", "iris.director.commanddeveloper.param.make_sure_make_backup_read_warnings_first": "Nhớ sao lưu đấy. & đọc lời cảnh báo trước!", - "iris.director.commanddeveloper.param.should_iris_download_pack_again_you": "Nên Iris tải gói về cho bạn", "iris.director.commanddeveloper.director.test": "Thử", "iris.director.commanddeveloper.param.dump_whole_tectonic_plate_instead_single_section": "Đổ cả đĩa kiến tạo thay vì một phần", "iris.director.commanddeveloper.param.dump_file_id_under_plugins_iris_dump_pv_id": "Mã nhận diện tập tin lưu trữ bên dưới plugins/Iris/dump (pv..*)", @@ -713,8 +709,6 @@ "iris.director.commandiris.director.toggle_debug": "Bật/ tắt gỡ lỗi", "iris.director.commandiris.director.download_project": "Tải về một dự án.", "iris.director.commandiris.param.pack_download": "Name", - "iris.director.commandiris.param.branch_download_from": "Chi nhánh để tải về từ", - "iris.director.commandiris.param.whether_not_overwrite_pack_with_downloaded_one": "Có nên ghi đè gói này bằng cái đã tải về hay không", "iris.director.commandiris.director.get_metrics_your_world": "Lấy máy đo cho thế giới của bạn", "iris.director.commandiris.director.reload_configuration_file_this_is_also_done_automatically": "Nạp lại tập tin cấu hình (điều này cũng được làm tự động)", "iris.director.commandiris.director.unload_iris_world": "Hủy tải Iris Thế giới", @@ -950,7 +944,6 @@ "iris.runtime.status.true": "đúng", "iris.runtime.status.false": "sai", "iris.runtime.error.detail_suffix": " - {error}", - "iris.runtime.download.overwrite_suffix": " viết quá", "iris.runtime.datapack.override_suffix": " (Bộ dữ liệu thế giới ghi đè)", "iris.runtime.primary_world.players_routed_suffix": " (Những người chơi đã đến đó)", "iris.runtime.primary_world.routing_disabled_suffix": " (bị tắt)", @@ -1151,10 +1144,6 @@ "iris.bukkit.runtime.studiosvc.can_t_find_dimensions_folder_this_pack_failed": "Không tìm thấy {name} trong các kích thước thư mục của gói này! Thất bại!", "iris.bukkit.runtime.studiosvc.can_t_load_dimension_failed": "Không nạp được chiều không gian! Thất bại!", "iris.bukkit.runtime.studiosvc.type_installed": "{name} đã cài đặt. ", - "iris.bukkit.runtime.studiosvc.pack_was_not_found_pack_listing": "Gói '{key}Không tìm thấy trong danh sách gói hàng.", - "iris.bukkit.runtime.studiosvc.use_iris_download_pack_branch_branch_download_manually": "Dùng /iris download branch= tải về bằng tay.", - "iris.bukkit.runtime.studiosvc.failed_download": "Lỗi tải xuống{key}'.", - "iris.bukkit.runtime.studiosvc.failed_download_branch": "Lỗi tải xuống{repo}' (branch {branch}).", "iris.bukkit.runtime.studiosvc.failed_open_studio_world": "Lỗi mở thế giới studio: {error}", "iris.bukkit.runtime.studiosvc.cannot_open_studio_pack_has_blocking_errors": "Không thể mở studio{dimm}- gói có lỗi chặn:", "iris.bukkit.runtime.studiosvc.message": " - {reason}", @@ -1270,13 +1259,8 @@ "iris.runtime.golden.started": "GoldenHash bắt đầu: {chunks} Cuộn quanh 0,0 trong bộ đệm (thế giới chưa động đến), các sợi={threads} Chế độ ={mode}", "iris.runtime.golden.chunk_hashed": "[{done}/{total}] Chunk {x},{z} bị đóng cửa", "iris.runtime.golden.chunk_failed": "Chunk. {x},{z} thất bại: {type}", - "iris.runtime.pack_download.invalid_pack_name": "Tên gói không hợp lệ{pack}' (được phép: a-z, 0-9, và -)", - "iris.runtime.pack_download.invalid_branch_name": "Tên chi nhánh không hợp lệ{branch}' (được phép: letters, digits, . và -)", - "iris.runtime.pack_download.failed": "Tải về gói thất bại: {type}{errorMessage}", "iris.runtime.pack_download.downloading": "Đang tải về {url}", "iris.runtime.pack_download.failed_to_find": "Không tìm thấy gói tại {url}", - "iris.runtime.pack_download.check_repository_and_branch": "Hãy chắc chắn rằng bạn đã xác định đúng mục và chi nhánh!", - "iris.runtime.pack_download.example_command": "Chẳng hạn: /iris download overworld branch=stable", "iris.runtime.pack_download.unpacking": "Đang mở gói {repository}", "iris.runtime.pack_download.unpack_failed": [ "Vấn đề là khi dỡ đồ ra. Vui lòng kiểm tra/ làm những điều sau:", @@ -1291,7 +1275,6 @@ "iris.runtime.pack_download.invalid_archive_format": "Định dạng không hợp lệ. Thiếu thư mục gốc hoặc quá nhiều thư mục!", "iris.runtime.pack_download.no_dimension_file": "Không tìm thấy tập tin chiều không gian nào trong tập tin nén lại.", "iris.runtime.pack_download.check_github": "Kiểm tra xem nó có ở trên không GitHub và báo cáo với nhân viên!", - "iris.runtime.pack_download.one_dimension_required": "Thư mục kích thước phải chứa chính xác một tập tin.", "iris.runtime.pack_download.invalid_dimension": "Thư mục chiều không hợp lệ nằm dưới dimensions/.", "iris.runtime.pack_download.importing": "Nhập {name} ({key})", "iris.runtime.pack_download.dimension_key_conflict": "Một chiều không gian khác trong thư mục gói là đã sử dụng phím {key}. Nhập thất bại!", diff --git a/core/src/main/resources/languages/zh_CN.json b/core/src/main/resources/languages/zh_CN.json index 22e3d555e..d1ad6eca1 100644 --- a/core/src/main/resources/languages/zh_CN.json +++ b/core/src/main/resources/languages/zh_CN.json @@ -148,9 +148,7 @@ "iris.bukkit.commandiris.you_cannot_use_world_name_benchmark_creating_worlds_as_iris": "§c不能使用世界名称 \"benchmark\",因为 Iris 将该目录用于基准测试包。", "iris.bukkit.commandiris.may_we_suggest_name_irisworld_instead_2": "§c建议改用名称 \"IrisWorld\"。", "iris.bukkit.commandiris.that_folder_already_exists": "§c该文件夹已存在!", - "iris.bukkit.commandiris.could_not_find_download_dimension": "§c找不到或无法下载维度 \"{resolvedType}\"。", "iris.bukkit.commandiris.try_one_overworld_vanilla_flat_theend": "§e可尝试:overworld、vanilla、flat 或 the_end", - "iris.bukkit.commandiris.download_manually_iris_download": "§e也可以手动下载:/iris download {resolvedType}", "iris.bukkit.commandiris.world_staging_completed_restart_server_generate_load": "§a世界暂存完成。请重启服务器以生成并加载 \"{worldName}\"。", "iris.bukkit.commandiris.exception_raised_during_creation_see_console_more_details": "§c创建期间发生异常。详情请查看控制台。", "iris.bukkit.commandiris.successfully_created_your_world": "§a世界创建成功!", @@ -179,7 +177,6 @@ "iris.bukkit.commandiris.looks_like_world_was_already_removed_from_bukkit_yml": "§e该世界似乎已从 bukkit.yml 中移除。", "iris.bukkit.commandiris.failed_save_bukkit_yml_because": "§c无法保存 bukkit.yml:{value}", "iris.bukkit.commandiris.set_debug": "§a调试模式已设为:{to}", - "iris.bukkit.commandiris.downloading_pack": "§a正在下载包:{pack}/{branch}{value}", "iris.bukkit.commandiris.you_must_be_iris_world": "§c你必须位于 Iris 世界中。", "iris.bukkit.commandiris.sending_metrics": "§a正在发送指标...", "iris.bukkit.commandiris.this_is_not_iris_world_iris_worlds_2": "§c这不是 Iris 世界。Iris 世界数量:{value}", @@ -645,7 +642,6 @@ "iris.director.commanddeveloper.param.world_update": "更新世界", "iris.director.commanddeveloper.param.pack_install_into_world": "加载世界的包", "iris.director.commanddeveloper.param.make_sure_make_backup_read_warnings_first": "一定要做备份 & 先读一下警告!", - "iris.director.commanddeveloper.param.should_iris_download_pack_again_you": "应否 Iris 再次下载包", "iris.director.commanddeveloper.director.test": "测试", "iris.director.commanddeveloper.param.dump_whole_tectonic_plate_instead_single_section": "将整个构造板块丢弃,而不是一个单段", "iris.director.commanddeveloper.param.dump_file_id_under_plugins_iris_dump_pv_id": "丢弃文件 ID 下方 plugins/Iris/dump (pv..*)", @@ -713,8 +709,6 @@ "iris.director.commandiris.director.toggle_debug": "切换调试模式", "iris.director.commandiris.director.download_project": "下载维度包", "iris.director.commandiris.param.pack_download": "要下载的包", - "iris.director.commandiris.param.branch_download_from": "要下载的分支", - "iris.director.commandiris.param.whether_not_overwrite_pack_with_downloaded_one": "是否用下载的版本覆盖现有包", "iris.director.commandiris.director.get_metrics_your_world": "显示世界指标", "iris.director.commandiris.director.reload_configuration_file_this_is_also_done_automatically": "重新加载配置文件(也会自动执行)", "iris.director.commandiris.director.unload_iris_world": "卸载 Iris 世界", @@ -950,7 +944,6 @@ "iris.runtime.status.true": "真实", "iris.runtime.status.false": "虚假", "iris.runtime.error.detail_suffix": " - {error}", - "iris.runtime.download.overwrite_suffix": " 覆盖", "iris.runtime.datapack.override_suffix": " (已安装世界数据包覆盖)", "iris.runtime.primary_world.players_routed_suffix": " (玩家经过那里)", "iris.runtime.primary_world.routing_disabled_suffix": " (线路已禁用)", @@ -1151,10 +1144,6 @@ "iris.bukkit.runtime.studiosvc.can_t_find_dimensions_folder_this_pack_failed": "在此内容包的 dimensions 文件夹中找不到 {name},操作失败。", "iris.bukkit.runtime.studiosvc.can_t_load_dimension_failed": "无法加载维度,操作失败。", "iris.bukkit.runtime.studiosvc.type_installed": "已安装 {name} 类型。", - "iris.bukkit.runtime.studiosvc.pack_was_not_found_pack_listing": "内容包“{key}”不在内容包列表中。", - "iris.bukkit.runtime.studiosvc.use_iris_download_pack_branch_branch_download_manually": "使用 /iris download branch= 手动下载。", - "iris.bukkit.runtime.studiosvc.failed_download": "无法下载“{key}”。", - "iris.bukkit.runtime.studiosvc.failed_download_branch": "无法下载“{repo}”(分支 {branch})。", "iris.bukkit.runtime.studiosvc.failed_open_studio_world": "无法打开工作室世界:{error}", "iris.bukkit.runtime.studiosvc.cannot_open_studio_pack_has_blocking_errors": "无法打开工作室“{dimm}”:内容包存在阻断错误:", "iris.bukkit.runtime.studiosvc.message": " - {reason}", @@ -1270,13 +1259,8 @@ "iris.runtime.golden.started": "GoldenHash 开始 : {chunks} 块绕 0,0 在缓冲器(世界未触动)中,线程={threads} 模式={mode}", "iris.runtime.golden.chunk_hashed": "[{done}/{total}] 块 {x},{z} 散开", "iris.runtime.golden.chunk_failed": "块 {x},{z} 失败: {type}", - "iris.runtime.pack_download.invalid_pack_name": "无效的包名'{pack}'(获批准:a-z, 0-9时, 和 -)", - "iris.runtime.pack_download.invalid_branch_name": "无效的分支名称 '{branch}'(被分配:字母,数字,. _ 和 -)", - "iris.runtime.pack_download.failed": "包下载失败 : {type}{errorMessage}", "iris.runtime.pack_download.downloading": "下载 {url}", "iris.runtime.pack_download.failed_to_find": "找到包失败 {url}", - "iris.runtime.pack_download.check_repository_and_branch": "确保您指定正确的还本付息和分支 !", - "iris.runtime.pack_download.example_command": "例如: /iris download overworld branch=stable", "iris.runtime.pack_download.unpacking": "正在解压 {repository}", "iris.runtime.pack_download.unpack_failed": [ "解包时发布. 请检查/做如下:", @@ -1291,7 +1275,6 @@ "iris.runtime.pack_download.invalid_archive_format": "无效的格式 。 缺少根文件夹或过多的文件夹!", "iris.runtime.pack_download.no_dimension_file": "在提取的zip文件中找不到维度文件 。", "iris.runtime.pack_download.check_github": "检查它是否在 GitHub 把这个报告给工作人员!", - "iris.runtime.pack_download.one_dimension_required": "维度文件夹必须包含一个文件 。", "iris.runtime.pack_download.invalid_dimension": "无效的维度文件夹 dimensions/.", "iris.runtime.pack_download.importing": "导入 {name} ({key})", "iris.runtime.pack_download.dimension_key_conflict": "包文件夹中的另一个维度已经使用密钥 {key}. 导入失败 !", diff --git a/core/src/main/resources/languages/zh_TW.json b/core/src/main/resources/languages/zh_TW.json index 3084e74f8..bd6e18b18 100644 --- a/core/src/main/resources/languages/zh_TW.json +++ b/core/src/main/resources/languages/zh_TW.json @@ -148,9 +148,7 @@ "iris.bukkit.commandiris.you_cannot_use_world_name_benchmark_creating_worlds_as_iris": "§c不能使用世界名稱 \"benchmark\",因為 Iris 將該目錄用於基準測試包。", "iris.bukkit.commandiris.may_we_suggest_name_irisworld_instead_2": "§c建議改用名稱 \"IrisWorld\"。", "iris.bukkit.commandiris.that_folder_already_exists": "§c該資料夾已存在!", - "iris.bukkit.commandiris.could_not_find_download_dimension": "§c找不到或無法下載維度 \"{resolvedType}\"。", "iris.bukkit.commandiris.try_one_overworld_vanilla_flat_theend": "§e可嘗試:overworld、vanilla、flat 或 the_end", - "iris.bukkit.commandiris.download_manually_iris_download": "§e也可以手動下載:/iris download {resolvedType}", "iris.bukkit.commandiris.world_staging_completed_restart_server_generate_load": "§a世界暫存完成。請重新啟動伺服器以生成並載入 \"{worldName}\"。", "iris.bukkit.commandiris.exception_raised_during_creation_see_console_more_details": "§c建立期間發生例外。詳細資訊請查看主控台。", "iris.bukkit.commandiris.successfully_created_your_world": "§a世界建立成功!", @@ -179,7 +177,6 @@ "iris.bukkit.commandiris.looks_like_world_was_already_removed_from_bukkit_yml": "§e該世界似乎已從 bukkit.yml 中移除。", "iris.bukkit.commandiris.failed_save_bukkit_yml_because": "§c無法儲存 bukkit.yml:{value}", "iris.bukkit.commandiris.set_debug": "§a偵錯模式已設為:{to}", - "iris.bukkit.commandiris.downloading_pack": "§a正在下載包:{pack}/{branch}{value}", "iris.bukkit.commandiris.you_must_be_iris_world": "§c你必須位於 Iris 世界中。", "iris.bukkit.commandiris.sending_metrics": "§a正在傳送指標...", "iris.bukkit.commandiris.this_is_not_iris_world_iris_worlds_2": "§c這不是 Iris 世界。Iris 世界數量:{value}", @@ -645,7 +642,6 @@ "iris.director.commanddeveloper.param.world_update": "更新世界", "iris.director.commanddeveloper.param.pack_install_into_world": "載入世界的包", "iris.director.commanddeveloper.param.make_sure_make_backup_read_warnings_first": "一定要做備份 & 先讀一下警告!", - "iris.director.commanddeveloper.param.should_iris_download_pack_again_you": "應否 Iris 再次下載包", "iris.director.commanddeveloper.director.test": "測試", "iris.director.commanddeveloper.param.dump_whole_tectonic_plate_instead_single_section": "將整個構造板塊丟棄,而不是一個單段", "iris.director.commanddeveloper.param.dump_file_id_under_plugins_iris_dump_pv_id": "丟棄檔案 ID 下方 plugins/Iris/dump (pv..*)", @@ -713,8 +709,6 @@ "iris.director.commandiris.director.toggle_debug": "切換偵錯模式", "iris.director.commandiris.director.download_project": "下載維度包", "iris.director.commandiris.param.pack_download": "要下載的包", - "iris.director.commandiris.param.branch_download_from": "要下載的分支", - "iris.director.commandiris.param.whether_not_overwrite_pack_with_downloaded_one": "是否用下載的版本覆蓋現有包", "iris.director.commandiris.director.get_metrics_your_world": "顯示世界指標", "iris.director.commandiris.director.reload_configuration_file_this_is_also_done_automatically": "重新載入設定檔(也會自動執行)", "iris.director.commandiris.director.unload_iris_world": "卸載 Iris 世界", @@ -950,7 +944,6 @@ "iris.runtime.status.true": "真實", "iris.runtime.status.false": "虛假", "iris.runtime.error.detail_suffix": " - {error}", - "iris.runtime.download.overwrite_suffix": " 覆蓋", "iris.runtime.datapack.override_suffix": " (已安裝世界資料包覆蓋)", "iris.runtime.primary_world.players_routed_suffix": " (玩家經過那裡)", "iris.runtime.primary_world.routing_disabled_suffix": " (線路已禁用)", @@ -1151,10 +1144,6 @@ "iris.bukkit.runtime.studiosvc.can_t_find_dimensions_folder_this_pack_failed": "在此內容包的 dimensions 資料夾中找不到 {name},操作失敗。", "iris.bukkit.runtime.studiosvc.can_t_load_dimension_failed": "無法載入維度,操作失敗。", "iris.bukkit.runtime.studiosvc.type_installed": "已安裝 {name} 類型。", - "iris.bukkit.runtime.studiosvc.pack_was_not_found_pack_listing": "內容包「{key}」不在內容包清單中。", - "iris.bukkit.runtime.studiosvc.use_iris_download_pack_branch_branch_download_manually": "使用 /iris download branch= 手動下載。", - "iris.bukkit.runtime.studiosvc.failed_download": "無法下載「{key}」。", - "iris.bukkit.runtime.studiosvc.failed_download_branch": "無法下載「{repo}」(分支 {branch})。", "iris.bukkit.runtime.studiosvc.failed_open_studio_world": "無法開啟工作室世界:{error}", "iris.bukkit.runtime.studiosvc.cannot_open_studio_pack_has_blocking_errors": "無法開啟工作室「{dimm}」:內容包存在阻斷錯誤:", "iris.bukkit.runtime.studiosvc.message": " - {reason}", @@ -1270,13 +1259,8 @@ "iris.runtime.golden.started": "GoldenHash 開始 : {chunks} 塊繞 0,0 在緩衝器(世界未觸動)中,執行緒={threads} 模式={mode}", "iris.runtime.golden.chunk_hashed": "[{done}/{total}] 塊 {x},{z} 散開", "iris.runtime.golden.chunk_failed": "塊 {x},{z} 失敗: {type}", - "iris.runtime.pack_download.invalid_pack_name": "無效的包名'{pack}'(獲批准:a-z, 0-9時, 和 -)", - "iris.runtime.pack_download.invalid_branch_name": "無效的分支名稱 '{branch}'(被分配:字母,數字,. _ 和 -)", - "iris.runtime.pack_download.failed": "包下載失敗 : {type}{errorMessage}", "iris.runtime.pack_download.downloading": "下載 {url}", "iris.runtime.pack_download.failed_to_find": "找到包失敗 {url}", - "iris.runtime.pack_download.check_repository_and_branch": "確保您指定正確的還本付息和分支 !", - "iris.runtime.pack_download.example_command": "例如: /iris download overworld branch=stable", "iris.runtime.pack_download.unpacking": "正在解壓縮 {repository}", "iris.runtime.pack_download.unpack_failed": [ "解包時釋出. 請檢查/做如下:", @@ -1291,7 +1275,6 @@ "iris.runtime.pack_download.invalid_archive_format": "無效的格式 。 缺少根資料夾或過多的資料夾!", "iris.runtime.pack_download.no_dimension_file": "在提取的zip檔案中找不到維度檔案 。", "iris.runtime.pack_download.check_github": "檢查它是否在 GitHub 把這個報告給工作人員!", - "iris.runtime.pack_download.one_dimension_required": "維度資料夾必須包含一個檔案 。", "iris.runtime.pack_download.invalid_dimension": "無效的維度資料夾 dimensions/.", "iris.runtime.pack_download.importing": "匯入 {name} ({key})", "iris.runtime.pack_download.dimension_key_conflict": "包資料夾中的另一個維度已經使用金鑰 {key}. 匯入失敗 !", diff --git a/core/src/test/java/art/arcane/iris/core/localization/IrisLanguageTest.java b/core/src/test/java/art/arcane/iris/core/localization/IrisLanguageTest.java index 7e5acc40a..3f2da90ab 100644 --- a/core/src/test/java/art/arcane/iris/core/localization/IrisLanguageTest.java +++ b/core/src/test/java/art/arcane/iris/core/localization/IrisLanguageTest.java @@ -290,14 +290,6 @@ public class IrisLanguageTest { assertEquals("Unbekannter Iris-Befehl", IrisLanguage.plain(IrisMessages.COMMAND_UNKNOWN)); } - @Test - public void plainRenderingPreservesCommandSyntaxPlaceholders() { - assertEquals( - "Use /iris download branch= to download manually.", - IrisLanguage.plain(BukkitRuntimeMessages.STUDIO_S_V_C_USE_IRIS_DOWNLOAD_PACK_BRANCH_BRANCH_DOWNLOAD_MANUALLY) - ); - } - @Test public void appliesLineAndPluralOverlayShapes() throws Exception { writeOverride("de_DE", """ diff --git a/core/src/test/java/art/arcane/iris/core/pack/PackDownloadBranchDefaultTest.java b/core/src/test/java/art/arcane/iris/core/pack/PackDownloadBranchDefaultTest.java deleted file mode 100644 index d2684bd11..000000000 --- a/core/src/test/java/art/arcane/iris/core/pack/PackDownloadBranchDefaultTest.java +++ /dev/null @@ -1,25 +0,0 @@ -package art.arcane.iris.core.pack; - -import org.junit.Test; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -public class PackDownloadBranchDefaultTest { - @Test - public void sharedDefaultBranchIsStable() { - assertEquals("stable", PackDownloader.DEFAULT_BRANCH); - } - - @Test - public void packRepositoryDefaultsToTheSharedBranch() { - assertEquals(PackDownloader.DEFAULT_BRANCH, IrisPackRepository.builder().build().getBranch()); - assertEquals(PackDownloader.DEFAULT_BRANCH, IrisPackRepository.from("overworld").getBranch()); - } - - @Test - public void managedPacksIgnoreTheBranchEntirely() { - assertTrue(PackDownloader.isManagedPack("overworld")); - assertTrue(PackDownloader.isManagedPack("underworld")); - } -} diff --git a/core/src/test/java/art/arcane/iris/core/pack/PackDownloaderTest.java b/core/src/test/java/art/arcane/iris/core/pack/PackDownloaderTest.java index b5488afea..b95e31a29 100644 --- a/core/src/test/java/art/arcane/iris/core/pack/PackDownloaderTest.java +++ b/core/src/test/java/art/arcane/iris/core/pack/PackDownloaderTest.java @@ -101,19 +101,23 @@ public class PackDownloaderTest { } @Test - public void resolvesDefaultOverworldGitSource() { - assertEquals("IrisDimensions/overworld", PackDownloader.defaultOverworldRepository()); - assertEquals("master", PackDownloader.defaultOverworldRef()); + public void resolvesDefaultOverworldBetaRelease() { + assertEquals( + "https://github.com/IrisDimensions/overworld/releases/download/beta/overworld.zip", + PackDownloader.builtInPackUrl("overworld") + ); assertTrue(PackDownloader.isDefaultOverworld("overworld")); - assertTrue(PackDownloader.isManagedPack("overworld")); - assertEquals(List.of("overworld", "underworld"), PackDownloader.managedPacks()); + assertTrue(PackDownloader.isBuiltInPack("overworld")); + assertEquals(List.of("overworld", "underworld"), PackDownloader.builtInPacks()); } @Test - public void resolvesUnderworldGitSource() { - assertEquals("IrisDimensions/underworld", PackDownloader.underworldRepository()); - assertEquals("main", PackDownloader.underworldRef()); - assertTrue(PackDownloader.isManagedPack("underworld")); + public void resolvesUnderworldBetaRelease() { + assertEquals( + "https://github.com/IrisDimensions/underworld/releases/download/beta/underworld.zip", + PackDownloader.builtInPackUrl("underworld") + ); + assertTrue(PackDownloader.isBuiltInPack("underworld")); } @Test @@ -133,6 +137,8 @@ public class PackDownloaderTest { entries.put("wrapped/dimensions/direct_pack.json", "{\"name\":\"Direct\",\"regions\":[\"local\"]," + "\"structures\":[{\"nativeStructures\":[{\"structure\":\"test:future_structure\"}]}]," + "\"logicalHeight\":256,\"dimensionHeight\":{\"min\":-64,\"max\":320}}"); + entries.put("wrapped/dimensions/direct_pack_supporting.json", "{\"name\":\"Supporting\",\"regions\":[\"local\"]," + + "\"logicalHeight\":256,\"dimensionHeight\":{\"min\":-64,\"max\":320}}"); entries.put("wrapped/regions/local.json", "{\"name\":\"Local\",\"landBiomes\":[\"local\"]}"); entries.put("wrapped/biomes/local.json", "{\"name\":\"Local\",\"derivative\":\"minecraft:plains\"}"); writeArchive(archive, entries); @@ -166,13 +172,16 @@ public class PackDownloaderTest { assertTrue(Files.isRegularFile( packsFolder.toPath().resolve("direct_pack/dimensions/direct_pack.json") )); + assertTrue(Files.isRegularFile( + packsFolder.toPath().resolve("direct_pack/dimensions/direct_pack_supporting.json") + )); } finally { server.stop(0); } } @Test - public void managedPackPresenceRequiresItsPrimaryDimension() throws Exception { + public void builtInPackPresenceRequiresItsPrimaryDimension() throws Exception { File packsFolder = temp.newFolder("managed-presence"); Path dimensions = Files.createDirectories( packsFolder.toPath().resolve("underworld/dimensions") @@ -180,11 +189,11 @@ public class PackDownloaderTest { writeDimension(packsFolder.toPath().resolve("underworld"), "underworld_roof"); assertTrue(PackDownloader.isPackPresent(packsFolder, "underworld")); - assertFalse(PackDownloader.isManagedPackPresent(packsFolder, "underworld")); + assertFalse(PackDownloader.isBuiltInPackPresent(packsFolder, "underworld")); writeDimension(packsFolder.toPath().resolve("underworld"), "underworld"); assertTrue(Files.isDirectory(dimensions)); - assertTrue(PackDownloader.isManagedPackPresent(packsFolder, "underworld")); + assertTrue(PackDownloader.isBuiltInPackPresent(packsFolder, "underworld")); } @Test @@ -220,49 +229,9 @@ public class PackDownloaderTest { assertFalse(PackDownloader.isDefaultOverworld("theend")); assertFalse(PackDownloader.isDefaultOverworld("")); assertFalse(PackDownloader.isDefaultOverworld(null)); - assertFalse(PackDownloader.isManagedPack("theend")); - assertFalse(PackDownloader.isManagedPack("")); - assertFalse(PackDownloader.isManagedPack(null)); - } - - @Test - public void resolvesBranchReference() { - assertEquals( - "https://codeload.github.com/IrisDimensions/overworld/zip/refs/heads/feature/release", - PackDownloader.resolveGithubArchiveUrl("IrisDimensions/overworld", "feature/release") - ); - } - - @Test - public void resolvesRepositoryDefaultBranchReference() { - assertEquals( - "https://github.com/IrisDimensions/example/archive/HEAD.zip", - PackDownloader.resolveGithubArchiveUrl("IrisDimensions/example", "HEAD") - ); - } - - @Test - public void resolvesQualifiedHeadReference() { - assertEquals( - "https://codeload.github.com/IrisDimensions/overworld/zip/refs/heads/master", - PackDownloader.resolveGithubArchiveUrl("IrisDimensions/overworld", "refs/heads/master") - ); - } - - @Test - public void resolvesTagReference() { - assertEquals( - "https://codeload.github.com/IrisDimensions/overworld/zip/refs/tags/v4.0.0", - PackDownloader.resolveGithubArchiveUrl("IrisDimensions/overworld", "refs/tags/v4.0.0") - ); - } - - @Test - public void resolvesCommitReference() { - assertEquals( - "https://github.com/IrisDimensions/overworld/archive/8e32852ee6ecd039fae27a36f701f57cdc02e83f.zip", - PackDownloader.resolveGithubArchiveUrl("IrisDimensions/overworld", "8e32852ee6ecd039fae27a36f701f57cdc02e83f") - ); + assertFalse(PackDownloader.isBuiltInPack("theend")); + assertFalse(PackDownloader.isBuiltInPack("")); + assertFalse(PackDownloader.isBuiltInPack(null)); } @Test @@ -320,13 +289,10 @@ public class PackDownloaderTest { List feedback = new ArrayList<>(); // The URL is unreachable on purpose: reaching the network would fail the download and // return null, so a non-null key proves the presence check ran before any fetch. - PackDownloader.PackInstallResult result = PackDownloader.download( + PackDownloader.PackInstallResult result = PackDownloader.downloadBuiltIn( packsFolder, - "IrisDimensions/overworld", - "http://127.0.0.1:9/unreachable.zip", - false, - true, "overworld", + false, feedback::add ); @@ -335,15 +301,6 @@ public class PackDownloaderTest { assertFalse(feedback.isEmpty()); } - @Test - public void rejectsUnsafeRepositoryAndReference() { - assertThrows(IllegalArgumentException.class, () -> PackDownloader.resolveGithubArchiveUrl("IrisDimensions/overworld?raw=1", "master")); - assertThrows(IllegalArgumentException.class, () -> PackDownloader.resolveGithubArchiveUrl("../overworld", "master")); - assertThrows(IllegalArgumentException.class, () -> PackDownloader.resolveGithubArchiveUrl("IrisDimensions/overworld", "refs/heads/../master")); - assertThrows(IllegalArgumentException.class, () -> PackDownloader.resolveGithubArchiveUrl("IrisDimensions/overworld", "refs/pull/123/head")); - assertThrows(IllegalArgumentException.class, () -> PackDownloader.resolveGithubArchiveUrl("IrisDimensions/overworld", "")); - } - @Test public void forceOverwritePublishesValidatedPackAndCleansTransactionState() throws Exception { File packsFolder = temp.newFolder("force-packs"); @@ -544,7 +501,7 @@ public class PackDownloaderTest { } @Test - public void rejectsAmbiguousMultiDimensionPackWithoutExpectedKey() throws Exception { + public void selectsShortestDimensionKeyWhenDirectPackContainsMultipleDimensions() throws Exception { File packsFolder = temp.newFolder("ambiguous-dimension-packs"); File extracted = writePack(temp.newFolder("ambiguous-dimension-source").toPath(), "underworld", "new"); writeDimension(extracted.toPath(), "underworld_roof"); @@ -558,9 +515,12 @@ public class PackDownloaderTest { feedback::add ); - assertNull(result); - assertFalse(feedback.isEmpty()); - assertFalse(new File(packsFolder, "underworld").exists()); + assertNotNull(result); + assertEquals("underworld", result.key()); + assertTrue(result.changed()); + assertTrue(Files.isRegularFile( + packsFolder.toPath().resolve("underworld/dimensions/underworld_roof.json") + )); assertTransactionStateClean(packsFolder); } @@ -613,14 +573,9 @@ public class PackDownloaderTest { public void rejectsUnsafeExpectedKeyBeforeDownload() throws IOException { File packsFolder = temp.newFolder("unsafe-key-packs"); - assertThrows(IllegalArgumentException.class, () -> PackDownloader.download( - packsFolder, - "IrisDimensions/overworld", - "http://127.0.0.1:9/unreachable.zip", - true, - true, - "../outside", - ignored -> { + File extracted = writePack(temp.newFolder("unsafe-key-source").toPath(), "safe", "state"); + assertThrows(IllegalArgumentException.class, () -> PackDownloader.installExtractedPack( + packsFolder, extracted, true, "../outside", ignored -> { } )); assertEquals(0, PackDownloader.downloadLockCount()); diff --git a/core/src/test/java/art/arcane/iris/core/service/StudioSVCProjectSafetyTest.java b/core/src/test/java/art/arcane/iris/core/service/StudioSVCProjectSafetyTest.java index 86b5fcad5..5bcf18719 100644 --- a/core/src/test/java/art/arcane/iris/core/service/StudioSVCProjectSafetyTest.java +++ b/core/src/test/java/art/arcane/iris/core/service/StudioSVCProjectSafetyTest.java @@ -18,18 +18,6 @@ import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertThrows; public class StudioSVCProjectSafetyTest { - @Test - public void listingWithoutBranchUsesRepositoryDefault() { - StudioSVC.PackListingReference reference = StudioSVC.resolvePackListingReference( - "example", - "IrisDimensions/example" - ); - - assertEquals("IrisDimensions/example", reference.repository()); - assertEquals("HEAD", reference.ref()); - assertEquals("example", reference.expectedKey()); - } - @Test public void createsLocalStarterWithoutARepositoryDownload() throws IOException { File workspace = temporaryFolder.newFolder("starter-workspace");