This commit is contained in:
Brian Neumann-Fopiano
2026-08-13 16:54:37 -04:00
parent 1586b4bd1a
commit 32beca236c
49 changed files with 311 additions and 1136 deletions
+2 -2
View File
@@ -62,8 +62,8 @@ content selecting on `#minecraft:is_overworld` and friends.
## Install ## Install
**Plugin (Paper/Purpur/Leaf/Canvas/Folia/Spigot):** drop the plugin jar into `plugins/` and start **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`, the server. First boot performs no pack download. Run `/iris download pack=overworld`,
`/iris download underworld`, or `/iris download https://host/path/pack.zip`, then restart manually. `/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 **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 self-contained (core, SPI, and required Fabric API modules are bundled). First boot compiles only
@@ -175,8 +175,8 @@ public final class IrisWorldGeneratorResolver {
+ " but its dimension failed to load; not redownloading. Fix or delete the pack folder."); + " but its dimension failed to load; not redownloading. Fix or delete the pack folder.");
return null; return null;
} }
Iris.warn("Unable to find dimension type " + id + ". Install its pack with /iris download " Iris.warn("Unable to find dimension type " + id + ". Install its pack with "
+ id + " and restart the server."); + PackDownloader.downloadCommandFor(id) + " and restart the server.");
} }
return dimension; return dimension;
@@ -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") @Param(description = "The pack to install into the world", descriptionKey = "iris.director.commanddeveloper.param.pack_install_into_world", contextual = true, aliases = "dimension")
IrisDimension pack, 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") @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, 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
) { ) {
if (!confirm) { if (!confirm) {
sender().sendMessage(IrisLanguage.text( sender().sendMessage(IrisLanguage.text(
@@ -213,10 +211,6 @@ public class CommandDeveloper implements DirectorExecutor {
File folder = world.getWorldFolder(); File folder = world.getWorldFolder();
folder.mkdirs(); folder.mkdirs();
if (freshDownload) {
Iris.service(StudioSVC.class).downloadSearch(sender(), pack.getLoadKey(), true);
}
try (LifecycleOperationCoordinator.Lease lease = LifecycleOperationCoordinator.get().acquire( try (LifecycleOperationCoordinator.Lease lease = LifecycleOperationCoordinator.get().acquire(
LifecycleOperationCoordinator.Domain.PACK_MUTATION, LifecycleOperationCoordinator.Domain.PACK_MUTATION,
LifecycleOperationCoordinator.OperationKind.PACK_PUBLISH, LifecycleOperationCoordinator.OperationKind.PACK_PUBLISH,
@@ -95,6 +95,7 @@ import art.arcane.iris.core.localization.BukkitCommandMessagesExtended;
import art.arcane.iris.core.localization.RuntimeUiMessages; import art.arcane.iris.core.localization.RuntimeUiMessages;
@Director(name = "iris", aliases = {"ir", "irs"}, description = "Basic Command", descriptionKey = "iris.director.commandiris.director.basic_command") @Director(name = "iris", aliases = {"ir", "irs"}, description = "Basic Command", descriptionKey = "iris.director.commandiris.director.basic_command")
public class CommandIris implements DirectorExecutor { public class CommandIris implements DirectorExecutor {
private static final String NO_DOWNLOAD_SOURCE = "__none__";
private static final long WORLD_UNLOAD_TIMEOUT_SECONDS = 150L; private static final long WORLD_UNLOAD_TIMEOUT_SECONDS = 150L;
private CommandStudio studio; private CommandStudio studio;
@@ -169,9 +170,10 @@ public class CommandIris implements DirectorExecutor {
IrisDimension dimension = IrisToolbelt.getDimension(resolvedType); IrisDimension dimension = IrisToolbelt.getDimension(resolvedType);
if (dimension == null) { 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_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; return;
} }
@@ -703,25 +705,28 @@ public class CommandIris implements DirectorExecutor {
@Director(description = "Download a project.", descriptionKey = "iris.director.commandiris.director.download_project", aliases = "dl") @Director(description = "Download a project.", descriptionKey = "iris.director.commandiris.director.download_project", aliases = "dl")
public void download( 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, String pack,
@Param(name = "branch", description = "The branch to download from", descriptionKey = "iris.director.commandiris.param.branch_download_from", defaultValue = PackDownloader.DEFAULT_BRANCH) @Param(name = "link", description = "A direct HTTP or HTTPS zip link", defaultValue = NO_DOWNLOAD_SOURCE)
String branch, String link
@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
) { ) {
if (PackDownloader.isDirectZipUrl(pack)) { String builtInPack = NO_DOWNLOAD_SOURCE.equals(pack) ? null : pack;
sender().sendMessage("Downloading Iris pack from " + pack String directLink = NO_DOWNLOAD_SOURCE.equals(link) ? null : link;
+ (overwrite ? IrisLanguage.text(RuntimeUiMessages.DOWNLOAD_OVERWRITE_SUFFIX) : "") + "."); if ((builtInPack == null) == (directLink == null)) {
Iris.service(StudioSVC.class).downloadUrl(sender(), pack, overwrite); sender().sendMessage("Use exactly one source: /iris download pack=overworld, /iris download pack=underworld, or /iris download link=<zip-url>.");
} else if (PackDownloader.isManagedPack(pack)) { return;
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);
} }
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) @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<String> {
@Override
public KList<String> 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 { static final class MainWorldPublication implements AutoCloseable {
private final Path target; private final Path target;
private boolean committed; private boolean committed;
@@ -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<Method> 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));
}
}
@@ -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"));
}
}
@@ -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); 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) { 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=<zip-url>, then restart before creating an Iris world.");
} }
} }
@@ -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 <https://www.gnu.org/licenses/>.
*/
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<String, Object> INSTALL_LOCKS = new ConcurrentHashMap<>();
private ModdedPackInstaller() {
}
public static boolean install(Path configDir, String pack, String branch,
boolean forceOverwrite, boolean refreshDatapack,
Consumer<String> 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;
}
}
@@ -133,7 +133,7 @@ public final class ModdedStartup {
List<File> packDirs = PackDirectoryResolver.listVisiblePackDirectories(packsRoot); List<File> packDirs = PackDirectoryResolver.listVisiblePackDirectories(packsRoot);
PackValidationRegistry.clear(); PackValidationRegistry.clear();
if (packDirs.isEmpty()) { if (packDirs.isEmpty()) {
LOGGER.info("Iris found no packs to validate under {}; install one with /iris download <pack>", LOGGER.info("Iris found no packs to validate under {}; install one with /iris download pack=overworld, /iris download pack=underworld, or /iris download link=<zip-url>",
packsRoot.getAbsolutePath()); packsRoot.getAbsolutePath());
return; return;
} }
@@ -27,7 +27,6 @@ import art.arcane.iris.modded.ModdedDimensionManager;
import art.arcane.iris.modded.ModdedEngineBootstrap; import art.arcane.iris.modded.ModdedEngineBootstrap;
import art.arcane.iris.modded.ModdedForcedDatapack; import art.arcane.iris.modded.ModdedForcedDatapack;
import art.arcane.iris.modded.ModdedLoader; import art.arcane.iris.modded.ModdedLoader;
import art.arcane.iris.modded.ModdedPackInstaller;
import art.arcane.iris.modded.ModdedScheduler; import art.arcane.iris.modded.ModdedScheduler;
import art.arcane.iris.modded.ModdedServerLevels; import art.arcane.iris.modded.ModdedServerLevels;
import art.arcane.iris.modded.ModdedWorldgenIds; import art.arcane.iris.modded.ModdedWorldgenIds;
@@ -53,6 +52,7 @@ import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Locale;
import java.util.Map; import java.util.Map;
import java.util.TreeMap; import java.util.TreeMap;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
@@ -258,54 +258,68 @@ public final class IrisModdedCommands {
return 1; return 1;
} }
static int download(CommandSourceStack source, String pack, static int download(CommandSourceStack source, String rawRequest) {
String branch, boolean forceOverwrite) { DownloadRequest request = parseDownloadRequest(rawRequest);
boolean managed = PackDownloader.isManagedPack(pack); if (request == null) {
boolean directUrl = PackDownloader.isDirectZipUrl(pack); fail(source, "Use /iris download pack=overworld, /iris download pack=underworld, or /iris download link=<zip-url>.");
String baseDownloadSource = directUrl ? "direct ZIP URL" return 0;
: managed ? "configured Git source" : "branch " + branch; }
String downloadSource = forceOverwrite String target = request.pack() == null ? request.url() : request.pack();
? baseDownloadSource + IrisLanguage.plain(RuntimeUiMessages.DOWNLOAD_OVERWRITE_SUFFIX) String downloadSource = request.pack() == null ? "direct ZIP URL" : "built-in beta release";
: baseDownloadSource; ok(source, IrisLanguage.plain(ModdedCommandMessages.IRIS_MODDED_COMMANDS_DOWNLOADING_IRISDIMENSIONS, MessageArgument.untrusted("pack", target), MessageArgument.untrusted("downloadSource", downloadSource)));
ok(source, IrisLanguage.plain(ModdedCommandMessages.IRIS_MODDED_COMMANDS_DOWNLOADING_IRISDIMENSIONS, MessageArgument.untrusted("pack", pack), MessageArgument.untrusted("downloadSource", downloadSource)));
ModdedScheduler scheduler = ModdedEngineBootstrap.schedulerOrNull(); ModdedScheduler scheduler = ModdedEngineBootstrap.schedulerOrNull();
if (scheduler == null) { if (scheduler == null) {
fail(source, IrisLanguage.plain( fail(source, IrisLanguage.plain(
ModdedCommandMessages.IRIS_MODDED_COMMANDS_PACK_DOWNLOAD_FAILED_SEE_CONSOLE, ModdedCommandMessages.IRIS_MODDED_COMMANDS_PACK_DOWNLOAD_FAILED_SEE_CONSOLE,
MessageArgument.untrusted("pack", pack), MessageArgument.untrusted("pack", target),
MessageArgument.untrusted("downloadSource", downloadSource))); MessageArgument.untrusted("downloadSource", downloadSource)));
return 0; return 0;
} }
scheduler.async(() -> { scheduler.async(() -> {
boolean installed; boolean installed = false;
if (directUrl) {
File packs = ModdedPackCommands.packsRoot(); File packs = ModdedPackCommands.packsRoot();
try { try {
PackDownloader.PackInstallResult result = PackDownloader.downloadUrl( PackDownloader.PackInstallResult result = request.pack() == null
? PackDownloader.downloadUrl(
packs, packs,
pack, request.url(),
forceOverwrite, false,
(String message) -> scheduler.global(() -> ok(source, message))
)
: PackDownloader.downloadBuiltIn(
packs,
request.pack(),
false,
(String message) -> scheduler.global(() -> ok(source, message)) (String message) -> scheduler.global(() -> ok(source, message))
); );
installed = result != null; installed = result != null;
} catch (IOException error) { } catch (IOException | RuntimeException error) {
LOGGER.error("Iris pack download failed for direct URL {}", pack, error); LOGGER.error("Iris pack download failed for {}", target, error);
installed = false;
}
} else {
installed = ModdedPackInstaller.install(
ModdedEngineBootstrap.loader().configDir(), pack, branch, forceOverwrite, false,
(String message) -> scheduler.global(() -> ok(source, message)));
} }
if (installed) { if (installed) {
scheduler.global(() -> ok(source, "Pack installed on disk. Restart the server before using it.")); scheduler.global(() -> ok(source, "Pack installed on disk. Restart the server before using it."));
} else { } 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; 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) { static int metrics(CommandSourceStack source) {
ServerLevel level = source.getLevel(); ServerLevel level = source.getLevel();
Engine engine = engineFor(level); Engine engine = engineFor(level);
@@ -371,4 +385,7 @@ public final class IrisModdedCommands {
static void fail(CommandSourceStack source, String message) { static void fail(CommandSourceStack source, String message) {
ModdedCommandFeedback.fail(source, message); ModdedCommandFeedback.fail(source, message);
} }
record DownloadRequest(String pack, String url) {
}
} }
@@ -70,7 +70,7 @@ final class ModdedCommandHelp {
Entry.command("seed", "", ModdedHelpMessages.COMMAND_SEED_PRINT_WORLD_AND_ENGINE_SEED_INFORMATION), 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("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("reload", "", ModdedHelpMessages.COMMAND_RELOAD_RELOAD_SETTINGS_JSON_ALSO_HOTLOADED_AUTOMATICALLY_EVERY_3S),
Entry.command("download", "<pack> [branch] [overwrite]", ModdedHelpMessages.COMMAND_DOWNLOAD_DOWNLOAD_A_PACK_PROJECT, "dl"), Entry.command("download", "<pack=overworld|pack=underworld|link=<zip-url>>", 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("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.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"), Entry.group("pregen", ModdedHelpMessages.GROUP_PREGEN_PREGENERATE_AN_IRIS_DIMENSION, "pregenerate"),
@@ -18,8 +18,6 @@
package art.arcane.iris.modded.command; 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.IntegerArgumentType;
import com.mojang.brigadier.arguments.LongArgumentType; import com.mojang.brigadier.arguments.LongArgumentType;
import com.mojang.brigadier.arguments.StringArgumentType; 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.LiteralArgumentBuilder;
import com.mojang.brigadier.builder.RequiredArgumentBuilder; import com.mojang.brigadier.builder.RequiredArgumentBuilder;
import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.suggestion.SuggestionProvider;
import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands; import net.minecraft.commands.Commands;
import net.minecraft.commands.SharedSuggestionProvider;
import net.minecraft.commands.arguments.DimensionArgument; import net.minecraft.commands.arguments.DimensionArgument;
import net.minecraft.commands.arguments.EntityArgument; import net.minecraft.commands.arguments.EntityArgument;
import net.minecraft.resources.Identifier; import net.minecraft.resources.Identifier;
import java.util.List;
import java.util.function.Predicate; import java.util.function.Predicate;
final class ModdedCommandTree { final class ModdedCommandTree {
private static final SuggestionProvider<CommandSourceStack> DOWNLOAD_SOURCES =
(context, builder) ->
SharedSuggestionProvider.suggest(
List.of("pack=overworld", "pack=underworld", "link="),
builder
);
private static final Predicate<CommandSourceStack> GATE = Commands.hasPermission(Commands.LEVEL_GAMEMASTERS); private static final Predicate<CommandSourceStack> 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 * 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<CommandSourceStack> downloadTree(String name) { private static LiteralArgumentBuilder<CommandSourceStack> downloadTree(String name) {
return Commands.literal(name).requires(GATE) return Commands.literal(name).requires(GATE)
.then(Commands.argument("pack", StringArgumentType.word()).suggests(ModdedCommandSuggestions.PACK_NAMES) .then(Commands.argument("source", StringArgumentType.greedyString()).suggests(DOWNLOAD_SOURCES)
.executes((CommandContext<CommandSourceStack> context) -> .executes((CommandContext<CommandSourceStack> context) -> IrisModdedCommands.download(
IrisModdedCommands.download(context.getSource(), context.getSource(),
StringArgumentType.getString(context, "pack"), PackDownloader.DEFAULT_BRANCH, false)) StringArgumentType.getString(context, "source")
.then(Commands.literal("force") )));
.executes((CommandContext<CommandSourceStack> context) ->
IrisModdedCommands.download(context.getSource(),
StringArgumentType.getString(context, "pack"), PackDownloader.DEFAULT_BRANCH, true)))
.then(Commands.argument("overwrite", BoolArgumentType.bool())
.executes((CommandContext<CommandSourceStack> context) ->
IrisModdedCommands.download(context.getSource(),
StringArgumentType.getString(context, "pack"), PackDownloader.DEFAULT_BRANCH,
BoolArgumentType.getBool(context, "overwrite"))))
.then(Commands.argument("branch", StringArgumentType.word())
.executes((CommandContext<CommandSourceStack> context) ->
IrisModdedCommands.download(context.getSource(),
StringArgumentType.getString(context, "pack"),
StringArgumentType.getString(context, "branch"), false))
.then(Commands.literal("force")
.executes((CommandContext<CommandSourceStack> context) ->
IrisModdedCommands.download(context.getSource(),
StringArgumentType.getString(context, "pack"),
StringArgumentType.getString(context, "branch"), true)))
.then(Commands.argument("overwrite", BoolArgumentType.bool())
.executes((CommandContext<CommandSourceStack> context) ->
IrisModdedCommands.download(context.getSource(),
StringArgumentType.getString(context, "pack"),
StringArgumentType.getString(context, "branch"),
BoolArgumentType.getBool(context, "overwrite"))))));
} }
private static LiteralArgumentBuilder<CommandSourceStack> metricsTree(String name) { private static LiteralArgumentBuilder<CommandSourceStack> metricsTree(String name) {
@@ -23,7 +23,6 @@ import art.arcane.iris.core.gui.GuiHost;
import art.arcane.iris.core.gui.NoiseExplorerGUI; import art.arcane.iris.core.gui.NoiseExplorerGUI;
import art.arcane.iris.core.gui.VisionGUI; import art.arcane.iris.core.gui.VisionGUI;
import art.arcane.iris.core.loader.IrisData; 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.pack.StructurePackageClosure;
import art.arcane.iris.core.project.IrisProjectCopier; import art.arcane.iris.core.project.IrisProjectCopier;
import art.arcane.iris.engine.framework.Engine; 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.engine.object.IrisStructurePlacement;
import art.arcane.iris.modded.ModdedDimensionManager; import art.arcane.iris.modded.ModdedDimensionManager;
import art.arcane.iris.modded.ModdedEngineBootstrap; import art.arcane.iris.modded.ModdedEngineBootstrap;
import art.arcane.iris.modded.ModdedPackInstaller;
import art.arcane.iris.modded.ModdedWorkspaceGenerator; import art.arcane.iris.modded.ModdedWorkspaceGenerator;
import art.arcane.iris.util.common.parallel.BurstExecutor; import art.arcane.iris.util.common.parallel.BurstExecutor;
import art.arcane.iris.util.common.parallel.MultiBurst; import art.arcane.iris.util.common.parallel.MultiBurst;
@@ -385,14 +383,10 @@ public final class ModdedStudioCommands {
try { try {
File packFolder = new File(ModdedPackCommands.packsRoot(), pack); File packFolder = new File(ModdedPackCommands.packsRoot(), pack);
if (!new File(packFolder, "dimensions/" + pack + ".json").isFile()) { 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)))); server.execute(() -> IrisModdedCommands.fail(source, "Pack '" + pack
boolean installed = ModdedPackInstaller.install(ModdedEngineBootstrap.loader().configDir(), pack, PackDownloader.DEFAULT_BRANCH, false, true, + "' is not installed. Use /iris download pack=overworld or pack=underworld, then restart."));
(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; return;
} }
}
IrisData data = IrisData.get(packFolder); IrisData data = IrisData.get(packFolder);
IrisDimension dimension = data.getDimensionLoader().load(pack); IrisDimension dimension = data.getDimensionLoader().load(pack);
if (dimension == null) { if (dimension == null) {
@@ -593,14 +587,10 @@ public final class ModdedStudioCommands {
try { try {
File templateFolder = new File(packsRoot, template); File templateFolder = new File(packsRoot, template);
if (!new File(templateFolder, "dimensions/" + template + ".json").isFile()) { 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)))); server.execute(() -> IrisModdedCommands.fail(source, "Template pack '" + template
boolean installed = ModdedPackInstaller.install(ModdedEngineBootstrap.loader().configDir(), template, PackDownloader.DEFAULT_BRANCH, false, true, + "' is not installed. Install its zip with /iris download link=<zip-url>, then restart."));
(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; return;
} }
}
IrisProjectCopier.copyProject(templateFolder, target, template, name); IrisProjectCopier.copyProject(templateFolder, target, template, name);
try { try {
ModdedWorkspaceGenerator.writeWorkspace(IrisData.get(target), target); ModdedWorkspaceGenerator.writeWorkspace(IrisData.get(target), target);
@@ -20,7 +20,6 @@ package art.arcane.iris.modded.command;
import art.arcane.iris.core.loader.IrisData; import art.arcane.iris.core.loader.IrisData;
import art.arcane.iris.core.pack.BrokenPackException; 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.core.pack.PackValidationRegistry;
import art.arcane.iris.engine.object.IrisDimension; import art.arcane.iris.engine.object.IrisDimension;
import art.arcane.iris.modded.IrisModdedChunkGenerator; 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.ModdedDimensionManager;
import art.arcane.iris.modded.ModdedEngineBootstrap; import art.arcane.iris.modded.ModdedEngineBootstrap;
import art.arcane.iris.modded.ModdedModConfig; import art.arcane.iris.modded.ModdedModConfig;
import art.arcane.iris.modded.ModdedPackInstaller;
import art.arcane.iris.modded.ModdedPrimaryWorldRouter; import art.arcane.iris.modded.ModdedPrimaryWorldRouter;
import art.arcane.iris.modded.ModdedServerLevels; import art.arcane.iris.modded.ModdedServerLevels;
import art.arcane.iris.modded.ModdedStartup; import art.arcane.iris.modded.ModdedStartup;
@@ -176,21 +174,9 @@ public final class ModdedWorldCommands {
if (packFolder.isDirectory()) { if (packFolder.isDirectory()) {
return enableInstalled(source, server, dimensionId, pack, packDimension, seed); 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))); IrisModdedCommands.fail(source, "Pack '" + pack
Thread thread = new Thread(() -> { + "' is not installed. Use /iris download pack=overworld or pack=underworld, then restart.");
boolean installed = ModdedPackInstaller.install(ModdedEngineBootstrap.loader().configDir(), pack, PackDownloader.DEFAULT_BRANCH, false, true, return 0;
(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;
} }
private static int enableInstalled(CommandSourceStack source, MinecraftServer server, String dimensionId, String pack, String packDimension, long seed) { 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()) { if (packFolder.isDirectory()) {
return applyMainWorld(source, pack, packDimension, packRaw, seed); 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))); IrisModdedCommands.fail(source, "Pack '" + pack
Thread thread = new Thread(() -> { + "' is not installed. Use /iris download pack=overworld or pack=underworld, then restart.");
boolean installed = ModdedPackInstaller.install(ModdedEngineBootstrap.loader().configDir(), pack, PackDownloader.DEFAULT_BRANCH, false, true, return 0;
(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;
} }
private static int applyMainWorld(CommandSourceStack source, String pack, String packDimension, String packRef, long seed) { private static int applyMainWorld(CommandSourceStack source, String pack, String packDimension, String packRef, long seed) {
@@ -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<String> 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"));
}
}
}
@@ -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 <https://www.gnu.org/licenses/>.
*/
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
));
}
}
@@ -10,7 +10,9 @@ import org.junit.Test;
import java.util.List; import java.util.List;
import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame; import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
public class IrisModdedCommandParityTest { public class IrisModdedCommandParityTest {
@@ -50,17 +52,34 @@ public class IrisModdedCommandParityTest {
child(studio, "pkg"); child(studio, "pkg");
CommandNode<CommandSourceStack> download = child(iris, "download"); CommandNode<CommandSourceStack> download = child(iris, "download");
CommandNode<CommandSourceStack> pack = child(download, "pack"); CommandNode<CommandSourceStack> source = child(download, "source");
child(pack, "force"); assertTrue(source.getChildren().isEmpty());
child(pack, "overwrite");
CommandNode<CommandSourceStack> branch = child(pack, "branch");
child(branch, "force");
child(branch, "overwrite");
assertSame(iris, child(dispatcher.getRoot(), "ir").getRedirect()); assertSame(iris, child(dispatcher.getRoot(), "ir").getRedirect());
assertSame(iris, child(dispatcher.getRoot(), "irs").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 @Test
public void helpDocumentsParityCommandsAndPlatformStubs() { public void helpDocumentsParityCommandsAndPlatformStubs() {
assertTrue(ModdedCommandHelp.documents("what", "here")); assertTrue(ModdedCommandHelp.documents("what", "here"));
@@ -228,8 +228,8 @@ public class IrisWorlds {
+ " but its dimension failed to load; not redownloading. Fix or delete the pack folder."); + " but its dimension failed to load; not redownloading. Fix or delete the pack folder.");
return null; return null;
} }
IrisLogging.warn("Unable to find dimension type " + id + ". Install it with /iris download " IrisLogging.warn("Unable to find dimension type " + id + ". Install it with "
+ id + " and restart the server."); + PackDownloader.downloadCommandFor(id) + " and restart the server.");
} }
return dimension; return dimension;
} }
@@ -171,18 +171,10 @@ public final class BukkitCommandMessagesExtended {
"iris.bukkit.commandiris.that_folder_already_exists", "iris.bukkit.commandiris.that_folder_already_exists",
C.RED + "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( public static final TextKey COMMAND_IRIS_TRY_ONE_OVERWORLD_VANILLA_FLAT_THEEND = TextKey.of(
"iris.bukkit.commandiris.try_one_overworld_vanilla_flat_theend", "iris.bukkit.commandiris.try_one_overworld_vanilla_flat_theend",
C.YELLOW + "Try one of: 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( 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", "iris.bukkit.commandiris.world_staging_completed_restart_server_generate_load",
C.GREEN + "World staging completed. Restart the server to generate/load \"" + "{worldName}" + "\"." 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", "iris.bukkit.commandiris.set_debug",
C.GREEN + "Set debug to: " + "{to}" 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( public static final TextKey COMMAND_IRIS_YOU_MUST_BE_IRIS_WORLD = TextKey.of(
"iris.bukkit.commandiris.you_must_be_iris_world", "iris.bukkit.commandiris.you_must_be_iris_world",
C.RED + "You must be in an 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_YOU_CANNOT_USE_WORLD_NAME_BENCHMARK_CREATING_WORLDS_AS_IRIS,
COMMAND_IRIS_MAY_WE_SUGGEST_NAME_IRISWORLD_INSTEAD_2, COMMAND_IRIS_MAY_WE_SUGGEST_NAME_IRISWORLD_INSTEAD_2,
COMMAND_IRIS_THAT_FOLDER_ALREADY_EXISTS, COMMAND_IRIS_THAT_FOLDER_ALREADY_EXISTS,
COMMAND_IRIS_COULD_NOT_FIND_DOWNLOAD_DIMENSION,
COMMAND_IRIS_TRY_ONE_OVERWORLD_VANILLA_FLAT_THEEND, 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_WORLD_STAGING_COMPLETED_RESTART_SERVER_GENERATE_LOAD,
COMMAND_IRIS_EXCEPTION_RAISED_DURING_CREATION_SEE_CONSOLE_MORE_DETAILS, COMMAND_IRIS_EXCEPTION_RAISED_DURING_CREATION_SEE_CONSOLE_MORE_DETAILS,
COMMAND_IRIS_SUCCESSFULLY_CREATED_YOUR_WORLD, 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_LOOKS_LIKE_WORLD_WAS_ALREADY_REMOVED_FROM_BUKKIT_YML,
COMMAND_IRIS_FAILED_SAVE_BUKKIT_YML_BECAUSE, COMMAND_IRIS_FAILED_SAVE_BUKKIT_YML_BECAUSE,
COMMAND_IRIS_SET_DEBUG, COMMAND_IRIS_SET_DEBUG,
COMMAND_IRIS_DOWNLOADING_PACK,
COMMAND_IRIS_YOU_MUST_BE_IRIS_WORLD, COMMAND_IRIS_YOU_MUST_BE_IRIS_WORLD,
COMMAND_IRIS_SENDING_METRICS, COMMAND_IRIS_SENDING_METRICS,
COMMAND_IRIS_THIS_IS_NOT_IRIS_WORLD_IRIS_WORLDS_2, COMMAND_IRIS_THIS_IS_NOT_IRIS_WORLD_IRIS_WORLDS_2,
@@ -434,22 +434,6 @@ public final class BukkitRuntimeMessages {
"iris.bukkit.runtime.studiosvc.type_installed", "iris.bukkit.runtime.studiosvc.type_installed",
"{name}" + " 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 <pack> branch=<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( public static final TextKey STUDIO_S_V_C_FAILED_OPEN_STUDIO_WORLD = TextKey.of(
"iris.bukkit.runtime.studiosvc.failed_open_studio_world", "iris.bukkit.runtime.studiosvc.failed_open_studio_world",
"Failed to open studio world: " + "{error}" "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_FIND_DIMENSIONS_FOLDER_THIS_PACK_FAILED,
STUDIO_S_V_C_CAN_T_LOAD_DIMENSION_FAILED, STUDIO_S_V_C_CAN_T_LOAD_DIMENSION_FAILED,
STUDIO_S_V_C_TYPE_INSTALLED, 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_FAILED_OPEN_STUDIO_WORLD,
STUDIO_S_V_C_CANNOT_OPEN_STUDIO_PACK_HAS_BLOCKING_ERRORS, STUDIO_S_V_C_CANNOT_OPEN_STUDIO_PACK_HAS_BLOCKING_ERRORS,
STUDIO_S_V_C_MESSAGE, STUDIO_S_V_C_MESSAGE,
@@ -78,10 +78,6 @@ public final class DirectorCommandMessages {
"iris.director.commanddeveloper.param.make_sure_make_backup_read_warnings_first", "iris.director.commanddeveloper.param.make_sure_make_backup_read_warnings_first",
"Make sure to make a backup & read the 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( public static final TextKey COMMAND_DEVELOPER_DIRECTOR_TEST = TextKey.of(
"iris.director.commanddeveloper.director.test", "iris.director.commanddeveloper.director.test",
"Test" "Test"
@@ -350,14 +346,6 @@ public final class DirectorCommandMessages {
"iris.director.commandiris.param.pack_download", "iris.director.commandiris.param.pack_download",
"The pack to 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( public static final TextKey COMMAND_IRIS_DIRECTOR_GET_METRICS_YOUR_WORLD = TextKey.of(
"iris.director.commandiris.director.get_metrics_your_world", "iris.director.commandiris.director.get_metrics_your_world",
"Get metrics for your world" "Get metrics for your world"
@@ -902,7 +890,6 @@ public final class DirectorCommandMessages {
COMMAND_DEVELOPER_PARAM_WORLD_UPDATE, COMMAND_DEVELOPER_PARAM_WORLD_UPDATE,
COMMAND_DEVELOPER_PARAM_PACK_INSTALL_INTO_WORLD, COMMAND_DEVELOPER_PARAM_PACK_INSTALL_INTO_WORLD,
COMMAND_DEVELOPER_PARAM_MAKE_SURE_MAKE_BACKUP_READ_WARNINGS_FIRST, 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_DIRECTOR_TEST,
COMMAND_DEVELOPER_PARAM_DUMP_WHOLE_TECTONIC_PLATE_INSTEAD_SINGLE_SECTION, COMMAND_DEVELOPER_PARAM_DUMP_WHOLE_TECTONIC_PLATE_INSTEAD_SINGLE_SECTION,
COMMAND_DEVELOPER_PARAM_DUMP_FILE_ID_UNDER_PLUGINS_IRIS_DUMP_PV_ID, 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_TOGGLE_DEBUG,
COMMAND_IRIS_DIRECTOR_DOWNLOAD_PROJECT, COMMAND_IRIS_DIRECTOR_DOWNLOAD_PROJECT,
COMMAND_IRIS_PARAM_PACK_DOWNLOAD, 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_GET_METRICS_YOUR_WORLD,
COMMAND_IRIS_DIRECTOR_RELOAD_CONFIGURATION_FILE_THIS_IS_ALSO_DONE_AUTOMATICALLY, COMMAND_IRIS_DIRECTOR_RELOAD_CONFIGURATION_FILE_THIS_IS_ALSO_DONE_AUTOMATICALLY,
COMMAND_IRIS_DIRECTOR_UNLOAD_IRIS_WORLD, COMMAND_IRIS_DIRECTOR_UNLOAD_IRIS_WORLD,
@@ -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( 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", "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( 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", "iris.modded.help.entry.command.replace_overworld",
@@ -9,18 +9,6 @@ import java.util.List;
import java.util.Map; import java.util.Map;
public final class PackDownloadMessages { 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( public static final TextKey DOWNLOADING = TextKey.of(
"iris.runtime.pack_download.downloading", "iris.runtime.pack_download.downloading",
"Downloading {url}" "Downloading {url}"
@@ -29,14 +17,6 @@ public final class PackDownloadMessages {
"iris.runtime.pack_download.failed_to_find", "iris.runtime.pack_download.failed_to_find",
"Failed to find pack at {url}" "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( public static final TextKey UNPACKING = TextKey.of(
"iris.runtime.pack_download.unpacking", "iris.runtime.pack_download.unpacking",
"Unpacking {repository}" "Unpacking {repository}"
@@ -70,10 +50,6 @@ public final class PackDownloadMessages {
"iris.runtime.pack_download.check_github", "iris.runtime.pack_download.check_github",
"Check that it is present on GitHub and report this to staff!" "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( public static final TextKey INVALID_DIMENSION = TextKey.of(
"iris.runtime.pack_download.invalid_dimension", "iris.runtime.pack_download.invalid_dimension",
"Invalid dimension folder under dimensions/." "Invalid dimension folder under dimensions/."
@@ -120,13 +96,8 @@ public final class PackDownloadMessages {
); );
private static final List<MessageKey> KEYS = List.of( private static final List<MessageKey> KEYS = List.of(
INVALID_PACK_NAME,
INVALID_BRANCH_NAME,
DOWNLOAD_FAILED,
DOWNLOADING, DOWNLOADING,
FAILED_TO_FIND, FAILED_TO_FIND,
CHECK_REPOSITORY_AND_BRANCH,
EXAMPLE_COMMAND,
UNPACKING, UNPACKING,
UNPACK_FAILED, UNPACK_FAILED,
NO_EXTRACTED_FILES, NO_EXTRACTED_FILES,
@@ -134,7 +105,6 @@ public final class PackDownloadMessages {
INVALID_ARCHIVE_FORMAT, INVALID_ARCHIVE_FORMAT,
NO_DIMENSION_FILE, NO_DIMENSION_FILE,
CHECK_GITHUB, CHECK_GITHUB,
ONE_DIMENSION_REQUIRED,
INVALID_DIMENSION, INVALID_DIMENSION,
IMPORTING, IMPORTING,
DIMENSION_KEY_CONFLICT, DIMENSION_KEY_CONFLICT,
@@ -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_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 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 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 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_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)"); 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_TRUE,
STATUS_FALSE, STATUS_FALSE,
ERROR_DETAIL_SUFFIX, ERROR_DETAIL_SUFFIX,
DOWNLOAD_OVERWRITE_SUFFIX,
DATAPACK_OVERRIDE_SUFFIX, DATAPACK_OVERRIDE_SUFFIX,
PRIMARY_PLAYERS_ROUTED_SUFFIX, PRIMARY_PLAYERS_ROUTED_SUFFIX,
PRIMARY_ROUTING_DISABLED_SUFFIX, PRIMARY_ROUTING_DISABLED_SUFFIX,
@@ -40,6 +40,8 @@ import java.util.UUID;
@Data @Data
@Builder @Builder
public class IrisPackRepository { public class IrisPackRepository {
private static final String DEFAULT_BRANCH = "stable";
@Builder.Default @Builder.Default
private String user = "IrisDimensions"; private String user = "IrisDimensions";
@@ -47,7 +49,7 @@ public class IrisPackRepository {
private String repo = "overworld"; private String repo = "overworld";
@Builder.Default @Builder.Default
private String branch = PackDownloader.DEFAULT_BRANCH; private String branch = DEFAULT_BRANCH;
@Builder.Default @Builder.Default
private String tag = ""; private String tag = "";
@@ -96,7 +98,7 @@ public class IrisPackRepository {
return IrisPackRepository.builder() return IrisPackRepository.builder()
.user("IrisDimensions") .user("IrisDimensions")
.repo(g) .repo(g)
.branch(PackDownloader.DEFAULT_BRANCH) .branch(DEFAULT_BRANCH)
.build(); .build();
} }
@@ -55,26 +55,17 @@ import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream; import java.util.zip.ZipInputStream;
public final class PackDownloader { 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_PACK = "overworld";
private static final String DEFAULT_OVERWORLD_REPOSITORY = "IrisDimensions/overworld"; private static final String DEFAULT_OVERWORLD_URL =
private static final String DEFAULT_OVERWORLD_REF = "master"; "https://github.com/IrisDimensions/overworld/releases/download/beta/overworld.zip";
private static final String UNDERWORLD_PACK = "underworld"; private static final String UNDERWORLD_PACK = "underworld";
private static final String UNDERWORLD_REPOSITORY = "IrisDimensions/underworld"; private static final String UNDERWORLD_URL =
private static final String UNDERWORLD_REF = "main"; "https://github.com/IrisDimensions/underworld/releases/download/beta/underworld.zip";
private static final List<String> MANAGED_PACK_KEYS = List.of(DEFAULT_OVERWORLD_PACK, UNDERWORLD_PACK); private static final List<String> BUILT_IN_PACK_KEYS = List.of(DEFAULT_OVERWORLD_PACK, UNDERWORLD_PACK);
private static final Map<String, ManagedPack> MANAGED_PACKS = Map.of( private static final Map<String, String> BUILT_IN_PACK_URLS = Map.of(
DEFAULT_OVERWORLD_PACK, new ManagedPack(DEFAULT_OVERWORLD_REPOSITORY, DEFAULT_OVERWORLD_REF), DEFAULT_OVERWORLD_PACK, DEFAULT_OVERWORLD_URL,
UNDERWORLD_PACK, new ManagedPack(UNDERWORLD_REPOSITORY, UNDERWORLD_REF) 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 Pattern PACK_KEY = Pattern.compile("[a-z0-9_-]+");
private static final ArchiveLimits ARCHIVE_LIMITS = new ArchiveLimits( private static final ArchiveLimits ARCHIVE_LIMITS = new ArchiveLimits(
512L * 1024L * 1024L, 512L * 1024L * 1024L,
@@ -91,12 +82,18 @@ public final class PackDownloader {
return DEFAULT_OVERWORLD_PACK.equals(pack); return DEFAULT_OVERWORLD_PACK.equals(pack);
} }
public static boolean isManagedPack(String pack) { public static boolean isBuiltInPack(String pack) {
return pack != null && MANAGED_PACKS.containsKey(pack); return pack != null && BUILT_IN_PACK_URLS.containsKey(pack);
} }
public static List<String> managedPacks() { public static List<String> builtInPacks() {
return MANAGED_PACK_KEYS; return BUILT_IN_PACK_KEYS;
}
public static String downloadCommandFor(String pack) {
return isBuiltInPack(pack)
? "/iris download pack=" + pack
: "/iris download link=<zip-url>";
} }
public static boolean isDirectZipUrl(String value) { public static boolean isDirectZipUrl(String value) {
@@ -158,8 +155,8 @@ public final class PackDownloader {
} }
} }
public static boolean isManagedPackPresent(File packsFolder, String key) { public static boolean isBuiltInPackPresent(File packsFolder, String key) {
if (!isManagedPack(key) || !isPackPresent(packsFolder, key)) { if (!isBuiltInPack(key) || !isPackPresent(packsFolder, key)) {
return false; return false;
} }
File resolvedPack = PackDirectoryResolver.resolveExisting(packsFolder, key); File resolvedPack = PackDirectoryResolver.resolveExisting(packsFolder, key);
@@ -174,21 +171,19 @@ public final class PackDownloader {
} }
public static PackInstallResult downloadDefaultOverworld(File packsFolder, boolean forceOverwrite, Consumer<String> feedback) throws IOException { public static PackInstallResult downloadDefaultOverworld(File packsFolder, boolean forceOverwrite, Consumer<String> 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<String> feedback) throws IOException { Consumer<String> feedback) throws IOException {
ManagedPack managed = pack == null ? null : MANAGED_PACKS.get(pack); String url = pack == null ? null : BUILT_IN_PACK_URLS.get(pack);
if (managed == null) { if (url == null) {
throw new IllegalArgumentException("Pack '" + pack + "' has no managed Git source"); throw new IllegalArgumentException("Pack '" + pack + "' is not a built-in Iris download");
} }
return download( return downloadArchive(
packsFolder, packsFolder,
managed.repository(), url,
managed.ref(),
forceOverwrite, forceOverwrite,
false,
pack, pack,
feedback feedback
); );
@@ -199,65 +194,49 @@ public final class PackDownloader {
if (!isDirectZipUrl(url)) { if (!isDirectZipUrl(url)) {
throw new IllegalArgumentException("Pack URL must be an HTTP or HTTPS .zip link"); throw new IllegalArgumentException("Pack URL must be an HTTP or HTTPS .zip link");
} }
return download( return downloadArchive(
packsFolder, packsFolder,
"direct-url",
url.trim(), url.trim(),
forceOverwrite, forceOverwrite,
true,
null, null,
feedback feedback
); );
} }
/** private static PackInstallResult downloadArchive(File packsFolder, String url, boolean forceOverwrite,
* Downloads and imports a pack. {@code expectedKey} is the pack key the caller is trying to String expectedKey, Consumer<String> feedback) throws IOException {
* 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<String> feedback) throws IOException {
Objects.requireNonNull(packsFolder, "packsFolder"); Objects.requireNonNull(packsFolder, "packsFolder");
Consumer<String> output = feedback == null ? ignored -> { Consumer<String> output = feedback == null ? ignored -> {
} : feedback; } : feedback;
if (expectedKey != null && !expectedKey.isBlank() && !isSafePackKey(expectedKey)) { if (expectedKey != null && !expectedKey.isBlank() && !isSafePackKey(expectedKey)) {
throw new IllegalArgumentException("Invalid expected pack key '" + 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, () -> { return withDownloadLock(lockKey, () -> {
boolean present = isManagedPack(expectedKey) boolean present = isBuiltInPack(expectedKey)
? isManagedPackPresent(packsFolder, expectedKey) ? isBuiltInPackPresent(packsFolder, expectedKey)
: isPackPresent(packsFolder, expectedKey); : isPackPresent(packsFolder, expectedKey);
if (!forceOverwrite && present) { if (!forceOverwrite && present) {
sendFeedback(output, IrisLanguage.plain(PackDownloadMessages.ALREADY_INSTALLED, MessageArgument.untrusted("key", expectedKey))); sendFeedback(output, IrisLanguage.plain(PackDownloadMessages.ALREADY_INSTALLED, MessageArgument.untrusted("key", expectedKey)));
return new PackInstallResult(expectedKey, false, false); 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<String> feedback) throws IOException { String expectedKey, String heldLockKey, Consumer<String> feedback) throws IOException {
String url = directUrl ? ref : resolveGithubArchiveUrl(repo, ref);
sendFeedback(feedback, IrisLanguage.plain(PackDownloadMessages.DOWNLOADING, MessageArgument.untrusted("url", url)) + " "); sendFeedback(feedback, IrisLanguage.plain(PackDownloadMessages.DOWNLOADING, MessageArgument.untrusted("url", url)) + " ");
File zip = WebCache.getNonCachedFile("pack-" + repo, url, ARCHIVE_LIMITS.maxArchiveBytes()); File zip = WebCache.getNonCachedFile("pack-archive", 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 temp = WebCache.getTemp(); File temp = WebCache.getTemp();
File work = new File(temp, "dl-" + UUID.randomUUID()); File work = new File(temp, "dl-" + UUID.randomUUID());
try { try {
if (zip == null || !zip.exists()) { if (zip == null || !zip.exists()) {
sendFeedback(feedback, IrisLanguage.plain(PackDownloadMessages.FAILED_TO_FIND, MessageArgument.untrusted("url", url))); 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; return null;
} }
sendFeedback(feedback, IrisLanguage.plain(PackDownloadMessages.UNPACKING, MessageArgument.untrusted("repository", repo))); sendFeedback(feedback, IrisLanguage.plain(PackDownloadMessages.UNPACKING, MessageArgument.untrusted("repository", url)));
try { try {
unpackArchive(zip.toPath(), work.toPath(), ARCHIVE_LIMITS); unpackArchive(zip.toPath(), work.toPath(), ARCHIVE_LIMITS);
} catch (IOException exception) { } catch (IOException exception) {
@@ -395,11 +374,12 @@ public final class PackDownloader {
private static String selectDimensionKey(String[] dimensions, String expectedKey, private static String selectDimensionKey(String[] dimensions, String expectedKey,
Consumer<String> feedback) throws IOException { Consumer<String> feedback) throws IOException {
if (expectedKey == null || expectedKey.isBlank()) { if (expectedKey == null || expectedKey.isBlank()) {
if (dimensions.length != 1) { return Arrays.stream(dimensions)
sendFeedback(feedback, IrisLanguage.plain(PackDownloadMessages.ONE_DIMENSION_REQUIRED)); .min((left, right) -> {
return null; int lengthComparison = Integer.compare(left.length(), right.length());
} return lengthComparison == 0 ? left.compareTo(right) : lengthComparison;
return dimensions[0]; })
.orElseThrow(() -> new IOException("Downloaded pack contains no dimensions"));
} }
int matches = 0; int matches = 0;
@@ -434,8 +414,8 @@ public final class PackDownloader {
)); ));
return null; return null;
} }
boolean present = isManagedPack(prepared.key()) boolean present = isBuiltInPack(prepared.key())
? isManagedPackPresent(packsRoot.toFile(), prepared.key()) ? isBuiltInPackPresent(packsRoot.toFile(), prepared.key())
: isPackPresent(packsRoot.toFile(), prepared.key()); : isPackPresent(packsRoot.toFile(), prepared.key());
if (!forceOverwrite && present) { if (!forceOverwrite && present) {
sendFeedback(feedback, IrisLanguage.plain( sendFeedback(feedback, IrisLanguage.plain(
@@ -679,82 +659,13 @@ public final class PackDownloader {
)); ));
} }
static String resolveGithubArchiveUrl(String repo, String ref) { static String builtInPackUrl(String pack) {
if (repo == null || !GITHUB_REPOSITORY.matcher(repo).matches()) { return BUILT_IN_PACK_URLS.get(pack);
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 + "'");
}
}
} }
private record PreparedPack(String key, String name, PackValidationResult validation) { 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) { public record PackInstallResult(String key, boolean changed, boolean restartRequired) {
} }
@@ -18,7 +18,6 @@
package art.arcane.iris.core.service; package art.arcane.iris.core.service;
import com.google.gson.JsonSyntaxException;
import art.arcane.iris.spi.IrisLogging; import art.arcane.iris.spi.IrisLogging;
import art.arcane.iris.spi.IrisServices; import art.arcane.iris.spi.IrisServices;
import art.arcane.iris.core.IrisSettings; 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.object.IrisDimension;
import art.arcane.iris.engine.platform.PlatformChunkGenerator; import art.arcane.iris.engine.platform.PlatformChunkGenerator;
import art.arcane.iris.platform.bukkit.BukkitPlatform; 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.bukkit.WorldIdentity;
import art.arcane.volmlib.util.exceptions.IrisException; import art.arcane.volmlib.util.exceptions.IrisException;
import art.arcane.volmlib.util.io.IO; 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.iris.core.localization.PackDownloadMessages;
import art.arcane.volmlib.util.localization.MessageArgument; import art.arcane.volmlib.util.localization.MessageArgument;
public class StudioSVC implements IrisService { 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"; public static final String WORKSPACE_NAME = "packs";
private static final Pattern PROJECT_NAME = Pattern.compile("[a-z0-9_-]+"); private static final Pattern PROJECT_NAME = Pattern.compile("[a-z0-9_-]+");
private static final AtomicCache<Integer> counter = new AtomicCache<>(); private static final AtomicCache<Integer> counter = new AtomicCache<>();
private final KMap<String, String> cacheListing = null;
private final StudioTransitionQueue studioTransitions = new StudioTransitionQueue(); private final StudioTransitionQueue studioTransitions = new StudioTransitionQueue();
private volatile IrisProject activeProject; private volatile IrisProject activeProject;
private volatile CompletableFuture<StudioOpenCoordinator.StudioOpenResult> activeOpen; private volatile CompletableFuture<StudioOpenCoordinator.StudioOpenResult> activeOpen;
@@ -101,7 +97,7 @@ public class StudioSVC implements IrisService {
String configuredPack = IrisSettings.get().getGenerator().getDefaultWorldType(); String configuredPack = IrisSettings.get().getGenerator().getDefaultWorldType();
if (!PackDownloader.isPackPresent(getWorkspaceFolder(), configuredPack)) { if (!PackDownloader.isPackPresent(getWorkspaceFolder(), configuredPack)) {
IrisLogging.warn("Default pack '" + 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=<zip-url>.");
} }
} }
@@ -332,29 +328,18 @@ public class StudioSVC implements IrisService {
return replaceIntoPackDirectory(sender, dimension, folder); return replaceIntoPackDirectory(sender, dimension, folder);
} }
public void downloadSearch(VolmitSender sender, String key) { public void downloadBuiltIn(VolmitSender sender, String key) {
downloadSearch(sender, key, false); if (!PackDownloader.isBuiltInPack(key)) {
} sender.sendMessage("Iris only provides built-in downloads for 'overworld' and 'underworld'.");
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.");
return; return;
} }
runPackMutation(sender, LifecycleOperationCoordinator.OperationKind.PACK_DOWNLOAD, key, () -> { runPackMutation(sender, LifecycleOperationCoordinator.OperationKind.PACK_DOWNLOAD, key, () -> {
DownloadOutcome outcome = downloadManagedLocked(sender, key, forceOverwrite); DownloadOutcome outcome = downloadBuiltInLocked(sender, key);
return finishStandalonePackMutation(outcome); 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)) { if (!PackDownloader.isDirectZipUrl(url)) {
sender.sendMessage("Iris requires a valid HTTP or HTTPS .zip URL."); sender.sendMessage("Iris requires a valid HTTP or HTTPS .zip URL.");
return; return;
@@ -363,131 +348,28 @@ public class StudioSVC implements IrisService {
DownloadOutcome outcome = DownloadOutcome.from(PackDownloader.downloadUrl( DownloadOutcome outcome = DownloadOutcome.from(PackDownloader.downloadUrl(
getWorkspaceFolder(), getWorkspaceFolder(),
url, url,
forceOverwrite, false,
sender::sendMessage sender::sendMessage
)); ));
return finishStandalonePackMutation(outcome); return finishStandalonePackMutation(outcome);
}, "Failed to download Iris pack from '" + url + "'."); }, "Failed to download Iris pack from '" + url + "'.");
} }
public void downloadBranch(VolmitSender sender, String repo, String branch, boolean forceOverwrite) { private DownloadOutcome downloadBuiltInLocked(VolmitSender sender, String expectedKey) throws IOException {
runPackMutation(sender, LifecycleOperationCoordinator.OperationKind.PACK_DOWNLOAD, repo + "/" + branch, () -> { if (PackDownloader.isBuiltInPackPresent(getWorkspaceFolder(), expectedKey)) {
DownloadOutcome outcome = downloadLocked(sender, repo, branch, forceOverwrite, false, null); sender.sendMessage(IrisLanguage.text(PackDownloadMessages.ALREADY_INSTALLED, MessageArgument.untrusted("key", expectedKey)));
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));
return DownloadOutcome.notChanged(); return DownloadOutcome.notChanged();
} }
PackListingReference reference = resolvePackListingReference(key, descriptor); PackDownloader.PackInstallResult result = PackDownloader.downloadBuiltIn(
IrisLogging.info("Resolved pack '" + key + "' to " + reference.repository() + "/" + reference.ref()); getWorkspaceFolder(),
return downloadLocked( expectedKey,
sender,
reference.repository(),
reference.ref(),
forceOverwrite,
false, 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 sender::sendMessage
); );
return DownloadOutcome.from(result); 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<String, String> 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<String, String> 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() { public boolean isProjectOpen() {
return activeProject != null && activeProject.isOpen(); return activeProject != null && activeProject.isOpen();
} }
@@ -926,9 +808,6 @@ public class StudioSVC implements IrisService {
createStarterProject(workspace, projectName); createStarterProject(workspace, projectName);
} else { } else {
File importPack = selectedTemplatePack == null ? new File(workspace, templateName) : selectedTemplatePack; File importPack = selectedTemplatePack == null ? new File(workspace, templateName) : selectedTemplatePack;
if (selectedTemplatePack == null && !hasLoadableDimensionFile(importPack, templateName)) {
downloadSearchLocked(sender, templateName, false);
}
if (!hasLoadableDimensionFile(importPack, templateName)) { 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_COULDN_T_FIND_PACK_CREATE_NEW_DIMENSION_FROM));
sender.sendMessage(IrisLanguage.text(BukkitRuntimeMessages.STUDIO_S_V_C_MISSING_IMPORTED_DIMENSION_FILE)); sender.sendMessage(IrisLanguage.text(BukkitRuntimeMessages.STUDIO_S_V_C_MISSING_IMPORTED_DIMENSION_FILE));
@@ -1337,9 +1216,6 @@ public class StudioSVC implements IrisService {
RESTART RESTART
} }
record PackListingReference(String repository, String ref, String expectedKey) {
}
public IrisProject getActiveProject() { public IrisProject getActiveProject() {
return activeProject; return activeProject;
} }
@@ -33,6 +33,7 @@ import art.arcane.iris.core.pregenerator.PregenTask;
import art.arcane.iris.core.pregenerator.PregeneratorMethod; import art.arcane.iris.core.pregenerator.PregeneratorMethod;
import art.arcane.iris.core.pregenerator.cache.PregenCache; import art.arcane.iris.core.pregenerator.cache.PregenCache;
import art.arcane.iris.core.pack.PackDirectoryResolver; 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.project.IrisProject;
import art.arcane.iris.core.pregenerator.methods.CachedPregenMethod; import art.arcane.iris.core.pregenerator.methods.CachedPregenMethod;
import art.arcane.iris.core.pregenerator.methods.HybridPregenMethod; import art.arcane.iris.core.pregenerator.methods.HybridPregenMethod;
@@ -102,7 +103,7 @@ public class IrisToolbelt {
if (pack == null) { if (pack == null) {
IrisLogging.warn("Iris pack '" + reference.pack() 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."); + " and restart the server.");
return null; return null;
} }
@@ -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.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.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.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.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.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.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!", "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.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.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.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.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.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}", "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.world_update": "Die Welt aktualisiert",
"iris.director.commanddeveloper.param.pack_install_into_world": "Das in der Welt zu installierende Pack", "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.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.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_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.<id>.*)", "iris.director.commanddeveloper.param.dump_file_id_under_plugins_iris_dump_pv_id": "Die Dump File ID unter plugins/Iris/dump (pv.<id>.*)",
@@ -713,8 +709,6 @@
"iris.director.commandiris.director.toggle_debug": "Toggle-Debug", "iris.director.commandiris.director.toggle_debug": "Toggle-Debug",
"iris.director.commandiris.director.download_project": "Download eines Projekts.", "iris.director.commandiris.director.download_project": "Download eines Projekts.",
"iris.director.commandiris.param.pack_download": "Das herunterzuladende Pack", "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.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.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", "iris.director.commandiris.director.unload_iris_world": "Eine Iris-Welt entladen",
@@ -950,7 +944,6 @@
"iris.runtime.status.true": "wahr", "iris.runtime.status.true": "wahr",
"iris.runtime.status.false": "falsch", "iris.runtime.status.false": "falsch",
"iris.runtime.error.detail_suffix": " - {error}", "iris.runtime.error.detail_suffix": " - {error}",
"iris.runtime.download.overwrite_suffix": " wird überschrieben",
"iris.runtime.datapack.override_suffix": " (World Datapack Override installiert)", "iris.runtime.datapack.override_suffix": " (World Datapack Override installiert)",
"iris.runtime.primary_world.players_routed_suffix": " (Spieler dort geroutet)", "iris.runtime.primary_world.players_routed_suffix": " (Spieler dort geroutet)",
"iris.runtime.primary_world.routing_disabled_suffix": " (Routing deaktiviert)", "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_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.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.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 <pack> branch=<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.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.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}", "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.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_hashed": "[{done}/{total}] Chunk {x},{z} gehasht",
"iris.runtime.golden.chunk_failed": "Chunk {x},{z} FEHLGESCHLAGEN: {type}", "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.downloading": "{url} wird heruntergeladen",
"iris.runtime.pack_download.failed_to_find": "Unter {url} wurde kein Pack gefunden", "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.unpacking": "{repository} wird entpackt",
"iris.runtime.pack_download.unpack_failed": [ "iris.runtime.pack_download.unpack_failed": [
"Beim Entpacken ist ein Problem aufgetreten. Bitte prüfe Folgendes:", "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.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.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.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.invalid_dimension": "Ungültiger Dimensionsordner unter dimensions/.",
"iris.runtime.pack_download.importing": "{name} ({key}) wird importiert", "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!", "iris.runtime.pack_download.dimension_key_conflict": "Eine andere Dimension im Pack-Ordner verwendet bereits den Schlüssel {key}. Import fehlgeschlagen!",
@@ -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.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.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.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.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.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.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!", "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.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.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.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.you_must_be_iris_world": "§cDebes estar en un mundo de Iris",
"iris.bukkit.commandiris.sending_metrics": "§aEnviando métricas...", "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}", "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.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.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.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.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_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.<id>.*)", "iris.director.commanddeveloper.param.dump_file_id_under_plugins_iris_dump_pv_id": "El id del archivo de volcado en plugins/Iris/dump (pv.<id>.*)",
@@ -713,8 +709,6 @@
"iris.director.commandiris.director.toggle_debug": "Activar o desactivar la depuración", "iris.director.commandiris.director.toggle_debug": "Activar o desactivar la depuración",
"iris.director.commandiris.director.download_project": "Descargar un proyecto.", "iris.director.commandiris.director.download_project": "Descargar un proyecto.",
"iris.director.commandiris.param.pack_download": "El pack que se descargará", "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.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.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", "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.true": "verdadero",
"iris.runtime.status.false": "falso", "iris.runtime.status.false": "falso",
"iris.runtime.error.detail_suffix": " - {error}", "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.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.players_routed_suffix": " (los jugadores se dirigirán allí)",
"iris.runtime.primary_world.routing_disabled_suffix": " (redirección desactivada)", "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_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.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.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 <pack> branch=<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.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.cannot_open_studio_pack_has_blocking_errors": "No se puede abrir Studio '{dimm}': el pack contiene errores bloqueantes:",
"iris.bukkit.runtime.studiosvc.message": " - {reason}", "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.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_hashed": "[{done}/{total}] hash calculado para el chunk {x},{z}",
"iris.runtime.golden.chunk_failed": "Chunk {x},{z} FALLÓ: {type}", "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.downloading": "Descargando {url}",
"iris.runtime.pack_download.failed_to_find": "No se encontró el pack en {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.unpacking": "Descomprimiendo {repository}",
"iris.runtime.pack_download.unpack_failed": [ "iris.runtime.pack_download.unpack_failed": [
"Se produjo un problema al descomprimir. Comprueba lo siguiente:", "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.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.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.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.invalid_dimension": "Carpeta de dimensión no válida en dimensions/.",
"iris.runtime.pack_download.importing": "Importando {name} ({key})", "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ó!", "iris.runtime.pack_download.dimension_key_conflict": "Otra dimensión de la carpeta packs ya usa la clave {key}. ¡La importación falló!",
@@ -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.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.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.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.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.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.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!", "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.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.failed_save_bukkit_yml_because": "§cTallennus epäonnistui bukkit.yml koska {value}",
"iris.bukkit.commandiris.set_debug": "§aAseta vianetsintä: {to}", "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.you_must_be_iris_world": "§cSinun täytyy olla Iris maailma",
"iris.bukkit.commandiris.sending_metrics": "§aLähetetään mittareita...", "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}", "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.world_update": "Päivitettävä maailma",
"iris.director.commanddeveloper.param.pack_install_into_world": "Maailmaan asennettava pakkaus", "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.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.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_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.<id>.*)", "iris.director.commanddeveloper.param.dump_file_id_under_plugins_iris_dump_pv_id": "Kaatotiedoston tunniste alla plugins/Iris/dump (pp.<id>.*)",
@@ -713,8 +709,6 @@
"iris.director.commandiris.director.toggle_debug": "Vaihda vianetsintä", "iris.director.commandiris.director.toggle_debug": "Vaihda vianetsintä",
"iris.director.commandiris.director.download_project": "Lataa projekti.", "iris.director.commandiris.director.download_project": "Lataa projekti.",
"iris.director.commandiris.param.pack_download": "Ladattava pakkaus", "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.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.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", "iris.director.commandiris.director.unload_iris_world": "Pura Iris Maailma",
@@ -950,7 +944,6 @@
"iris.runtime.status.true": "tosi", "iris.runtime.status.true": "tosi",
"iris.runtime.status.false": "väärä", "iris.runtime.status.false": "väärä",
"iris.runtime.error.detail_suffix": " - {error}", "iris.runtime.error.detail_suffix": " - {error}",
"iris.runtime.download.overwrite_suffix": " ylikirjoitus",
"iris.runtime.datapack.override_suffix": " (maailman datapaketin ohitus asennettu)", "iris.runtime.datapack.override_suffix": " (maailman datapaketin ohitus asennettu)",
"iris.runtime.primary_world.players_routed_suffix": " (pelaajat siellä)", "iris.runtime.primary_world.players_routed_suffix": " (pelaajat siellä)",
"iris.runtime.primary_world.routing_disabled_suffix": "- Ei.", "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_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.can_t_load_dimension_failed": "Ei voi ladata ulottuvuutta! Epäonnistui!",
"iris.bukkit.runtime.studiosvc.type_installed": "{name} tyyppi asennettu. ", "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 <pack> branch=<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.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.cannot_open_studio_pack_has_blocking_errors": "Studiota ei voi avata{dimm}\" - pakkauksessa on estovirheitä:",
"iris.bukkit.runtime.studiosvc.message": " - {reason}", "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.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_hashed": "[{done}/{total}] pala {x},{z} hasheed",
"iris.runtime.golden.chunk_failed": "Liha {x},{z} epäonnistui: {type}", "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.downloading": "Noudetaan {url}",
"iris.runtime.pack_download.failed_to_find": "Pakkausta ei löytynyt {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.unpacking": "Purkaminen {repository}",
"iris.runtime.pack_download.unpack_failed": [ "iris.runtime.pack_download.unpack_failed": [
"Purkamisen yhteydessä. Tarkista/ tee seuraava:", "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.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.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.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.invalid_dimension": "Virheellinen ulottuvuuskansio alla dimensions/.",
"iris.runtime.pack_download.importing": "Tuo {name} ({key})", "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!", "iris.runtime.pack_download.dimension_key_conflict": "Toinen ulottuvuus pakkauskansiossa jo käyttää avainta {key}. Tuonti epäonnistui!",
@@ -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.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.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.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.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.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.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 !", "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.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.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.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.you_must_be_iris_world": "§cVous devez être dans un monde Iris",
"iris.bukkit.commandiris.sending_metrics": "§aEnvoi des métriques...", "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}", "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.world_update": "Le monde à mettre à jour",
"iris.director.commanddeveloper.param.pack_install_into_world": "Le pack à installer dans le monde", "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.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.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_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.<id>.*)", "iris.director.commanddeveloper.param.dump_file_id_under_plugins_iris_dump_pv_id": "L'id du fichier de vidage dans plugins/Iris/dump (pv.<id>.*)",
@@ -713,8 +709,6 @@
"iris.director.commandiris.director.toggle_debug": "Activer ou désactiver le débogage", "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.director.download_project": "Télécharger un projet.",
"iris.director.commandiris.param.pack_download": "Le pack à télécharger", "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.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.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", "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.true": "vrai",
"iris.runtime.status.false": "faux", "iris.runtime.status.false": "faux",
"iris.runtime.error.detail_suffix": " - {error}", "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.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.players_routed_suffix": " (les joueurs y seront redirigés)",
"iris.runtime.primary_world.routing_disabled_suffix": " (redirection désactivée)", "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_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.can_t_load_dimension_failed": "Impossible de charger la dimension. Échec !",
"iris.bukkit.runtime.studiosvc.type_installed": "Type {name} installé. ", "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 <pack> branch=<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.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.cannot_open_studio_pack_has_blocking_errors": "Impossible d'ouvrir Studio '{dimm}' : le pack contient des erreurs bloquantes :",
"iris.bukkit.runtime.studiosvc.message": " - {reason}", "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.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_hashed": "[{done}/{total}] hash calculé pour le chunk {x},{z}",
"iris.runtime.golden.chunk_failed": "Chunk {x},{z} ÉCHEC : {type}", "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.downloading": "Téléchargement de {url}",
"iris.runtime.pack_download.failed_to_find": "Pack introuvable dans {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.unpacking": "Décompression de {repository}",
"iris.runtime.pack_download.unpack_failed": [ "iris.runtime.pack_download.unpack_failed": [
"Un problème est survenu pendant la décompression. Vérifiez les points suivants :", "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.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.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.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.invalid_dimension": "Dossier de dimension non valide dans dimensions/.",
"iris.runtime.pack_download.importing": "Importation de {name} ({key})", "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 !", "iris.runtime.pack_download.dimension_key_conflict": "Une autre dimension du dossier packs utilise déjà la clé {key}. Échec de l'importation !",
@@ -148,9 +148,7 @@
"iris.bukkit.commandiris.you_cannot_use_world_name_benchmark_creating_worlds_as_iris": "§cלא ניתן להשתמש בשם העולם \"benchmark\", מפני ש-Iris משתמשת בתיקייה זו עבור חבילות בדיקה.", "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.may_we_suggest_name_irisworld_instead_2": "§cאפשר להציע את השם \"IrisWorld\"במקום?",
"iris.bukkit.commandiris.that_folder_already_exists": "§cהתיקיה הזו כבר קיימת!", "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.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.world_staging_completed_restart_server_generate_load": "§aהכנת העולם הושלמה. הפעל מחדש את השרת כדי ליצור/לטעון את \"{worldName}\".",
"iris.bukkit.commandiris.exception_raised_during_creation_see_console_more_details": "§cלמעטים שגדלו במהלך הבריאה. ראו את הקונסולה לפרטים נוספים.", "iris.bukkit.commandiris.exception_raised_during_creation_see_console_more_details": "§cלמעטים שגדלו במהלך הבריאה. ראו את הקונסולה לפרטים נוספים.",
"iris.bukkit.commandiris.successfully_created_your_world": "§aיצרתם בהצלחה את עולמכם!", "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.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.failed_save_bukkit_yml_because": "§cנכשל להציל bukkit.yml בגלל {value}",
"iris.bukkit.commandiris.set_debug": "§aהגדר bug: {to}", "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.you_must_be_iris_world": "§cאתה חייב להיות בתוך Iris עולם העולם",
"iris.bukkit.commandiris.sending_metrics": "§aשליחת מדדים...", "iris.bukkit.commandiris.sending_metrics": "§aשליחת מדדים...",
"iris.bukkit.commandiris.this_is_not_iris_world_iris_worlds_2": "§cזה לא Iris עולם Iris עולמות: {value}", "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.world_update": "העולם לעדכן",
"iris.director.commanddeveloper.param.pack_install_into_world": "החבילה להתקנה לעולם", "iris.director.commanddeveloper.param.pack_install_into_world": "החבילה להתקנה לעולם",
"iris.director.commanddeveloper.param.make_sure_make_backup_read_warnings_first": "הקפד לעשות גיבוי & קראו קודם כל את האזהרות!", "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.director.test": "מבחן",
"iris.director.commanddeveloper.param.dump_whole_tectonic_plate_instead_single_section": "כל הצלחת הטקטונית במקום חלק אחד", "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<id>.*)", "iris.director.commanddeveloper.param.dump_file_id_under_plugins_iris_dump_pv_id": "קובץ הזבל תחת plugins/Iris/dump (pv<id>.*)",
@@ -713,8 +709,6 @@
"iris.director.commandiris.director.toggle_debug": "תגית: debug", "iris.director.commandiris.director.toggle_debug": "תגית: debug",
"iris.director.commandiris.director.download_project": "הורד פרויקט", "iris.director.commandiris.director.download_project": "הורד פרויקט",
"iris.director.commandiris.param.pack_download": "החבילה להוריד", "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.get_metrics_your_world": "קבל מדדים לעולם שלך",
"iris.director.commandiris.director.reload_configuration_file_this_is_also_done_automatically": "קובץ תצורה טעינה מחדש (זה נעשה גם באופן אוטומטי)", "iris.director.commandiris.director.reload_configuration_file_this_is_also_done_automatically": "קובץ תצורה טעינה מחדש (זה נעשה גם באופן אוטומטי)",
"iris.director.commandiris.director.unload_iris_world": "פריקה a Iris העולם העולמי", "iris.director.commandiris.director.unload_iris_world": "פריקה a Iris העולם העולמי",
@@ -950,7 +944,6 @@
"iris.runtime.status.true": "אמת אמיתית", "iris.runtime.status.true": "אמת אמיתית",
"iris.runtime.status.false": "שקר כוזב", "iris.runtime.status.false": "שקר כוזב",
"iris.runtime.error.detail_suffix": " - {error}", "iris.runtime.error.detail_suffix": " - {error}",
"iris.runtime.download.overwrite_suffix": " המונחים דריסה",
"iris.runtime.datapack.override_suffix": " (Worldpack עקיפה מותקן)", "iris.runtime.datapack.override_suffix": " (Worldpack עקיפה מותקן)",
"iris.runtime.primary_world.players_routed_suffix": " (השחקנים הלכו לשם)", "iris.runtime.primary_world.players_routed_suffix": " (השחקנים הלכו לשם)",
"iris.runtime.primary_world.routing_disabled_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_find_dimensions_folder_this_pack_failed": "אי אפשר למצוא את {name} בתיקיה של החבילה הזו! נכשל!",
"iris.bukkit.runtime.studiosvc.can_t_load_dimension_failed": "אי אפשר לטעון את הממד! נכשל!", "iris.bukkit.runtime.studiosvc.can_t_load_dimension_failed": "אי אפשר לטעון את הממד! נכשל!",
"iris.bukkit.runtime.studiosvc.type_installed": "{name} סוג מותקן. ", "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 <pack> branch=<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.failed_open_studio_world": "נכשל לפתוח את עולם הסטודיו: {error}",
"iris.bukkit.runtime.studiosvc.cannot_open_studio_pack_has_blocking_errors": "\"לא יכול לפתוח סטודיו\"{dimm}חבילה חוסמת שגיאות:", "iris.bukkit.runtime.studiosvc.cannot_open_studio_pack_has_blocking_errors": "\"לא יכול לפתוח סטודיו\"{dimm}חבילה חוסמת שגיאות:",
"iris.bukkit.runtime.studiosvc.message": " - {reason}", "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.started": "GoldenHashהתחיל:{chunks}צ'אנקים סביב 0,0 ב מאגרים (עולם שלא ניתן לעשות)threads={threads} mode={mode}",
"iris.runtime.golden.chunk_hashed": "[{done}/{total}] גוש נתח {x},{z} תגית:", "iris.runtime.golden.chunk_hashed": "[{done}/{total}] גוש נתח {x},{z} תגית:",
"iris.runtime.golden.chunk_failed": "צ'אנק {x},{z} נכשל: {type}", "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.downloading": "הורדה {url}",
"iris.runtime.pack_download.failed_to_find": "נכשל למצוא חבילות {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.unpacking": "חבילות חילוץ {repository}",
"iris.runtime.pack_download.unpack_failed": [ "iris.runtime.pack_download.unpack_failed": [
"בעיה כאשר לא לארוז. בדוק/עשה את הפעולות הבאות:", "בעיה כאשר לא לארוז. בדוק/עשה את הפעולות הבאות:",
@@ -1291,7 +1275,6 @@
"iris.runtime.pack_download.invalid_archive_format": "פורמט לא חוקי. תיקיות שורש חסרות או יותר מדי תיקיות!", "iris.runtime.pack_download.invalid_archive_format": "פורמט לא חוקי. תיקיות שורש חסרות או יותר מדי תיקיות!",
"iris.runtime.pack_download.no_dimension_file": "שום קובץ ממד לא נמצא בקובץ zip מופק.", "iris.runtime.pack_download.no_dimension_file": "שום קובץ ממד לא נמצא בקובץ zip מופק.",
"iris.runtime.pack_download.check_github": "בדוק כי הוא נוכח GitHub לדווח על זה לצוות!", "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.invalid_dimension": "תיקיית מימד לא חוקית תחת dimensions/.",
"iris.runtime.pack_download.importing": "יבוא {name} ({key})", "iris.runtime.pack_download.importing": "יבוא {name} ({key})",
"iris.runtime.pack_download.dimension_key_conflict": "מימד נוסף בתיקיה של הלהקה כבר משתמש המפתח {key}. ייבוא נכשל!", "iris.runtime.pack_download.dimension_key_conflict": "מימד נוסף בתיקיה של הלהקה כבר משתמש המפתח {key}. ייבוא נכשל!",
@@ -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.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.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.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.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.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.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!", "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.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.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.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.you_must_be_iris_world": "§cDevi trovarti in un mondo Iris",
"iris.bukkit.commandiris.sending_metrics": "§aInvio di metriche...", "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}", "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.world_update": "Il mondo per aggiornare",
"iris.director.commanddeveloper.param.pack_install_into_world": "Il Pack da installare nel mondo", "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.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.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_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.<id>.*)", "iris.director.commanddeveloper.param.dump_file_id_under_plugins_iris_dump_pv_id": "Il file di dump sotto plugins/Iris/dump (v.<id>.*)",
@@ -713,8 +709,6 @@
"iris.director.commandiris.director.toggle_debug": "Debug attiva/disattiva", "iris.director.commandiris.director.toggle_debug": "Debug attiva/disattiva",
"iris.director.commandiris.director.download_project": "Scarica un progetto.", "iris.director.commandiris.director.download_project": "Scarica un progetto.",
"iris.director.commandiris.param.pack_download": "Il Pack da scaricare", "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.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.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", "iris.director.commandiris.director.unload_iris_world": "Scarica un mondo Iris",
@@ -950,7 +944,6 @@
"iris.runtime.status.true": "vero", "iris.runtime.status.true": "vero",
"iris.runtime.status.false": "falso", "iris.runtime.status.false": "falso",
"iris.runtime.error.detail_suffix": " - {error}", "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.datapack.override_suffix": " (override del datapack del mondo installato)",
"iris.runtime.primary_world.players_routed_suffix": " (giocatori reindirizzati lì)", "iris.runtime.primary_world.players_routed_suffix": " (giocatori reindirizzati lì)",
"iris.runtime.primary_world.routing_disabled_suffix": " (reindirizzamento disabilitato)", "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_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.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.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 <pack> branch=<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.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.cannot_open_studio_pack_has_blocking_errors": "Impossibile aprire lo studio '{dimm}': il Pack contiene errori bloccanti:",
"iris.bukkit.runtime.studiosvc.message": " - {reason}", "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.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_hashed": "[{done}/{total}] hash del chunk {x},{z} calcolato",
"iris.runtime.golden.chunk_failed": "Chunk {x},{z} NON RIUSCITO: {type}", "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.downloading": "Scaricamento {url}",
"iris.runtime.pack_download.failed_to_find": "Impossibile trovare il Pack in {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.unpacking": "Disimballaggio {repository}",
"iris.runtime.pack_download.unpack_failed": [ "iris.runtime.pack_download.unpack_failed": [
"Si è verificato un problema durante l'estrazione. Controlla quanto segue:", "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.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.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.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.invalid_dimension": "Cartella di dimensione non valida in dimensions/.",
"iris.runtime.pack_download.importing": "Importazione {name} ({key})", "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!", "iris.runtime.pack_download.dimension_key_conflict": "Un'altra dimensione nella cartella dei Pack usa già la chiave {key}. Importazione non riuscita!",
@@ -148,9 +148,7 @@
"iris.bukkit.commandiris.you_cannot_use_world_name_benchmark_creating_worlds_as_iris": "§cIris がこのディレクトリをベンチマークパック用に使用するため、ワールド名 \"benchmark\" は使用できません。", "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.may_we_suggest_name_irisworld_instead_2": "§c代わりに \"IrisWorld\" という名前はいかがですか?",
"iris.bukkit.commandiris.that_folder_already_exists": "§cそのフォルダーはすでに存在します!", "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.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.world_staging_completed_restart_server_generate_load": "§aワールドの準備が完了しました。\"{worldName}\" を生成/読み込むにはサーバーを再起動してください。",
"iris.bukkit.commandiris.exception_raised_during_creation_see_console_more_details": "§c作成中に例外が発生しました。詳細はコンソールを確認してください。", "iris.bukkit.commandiris.exception_raised_during_creation_see_console_more_details": "§c作成中に例外が発生しました。詳細はコンソールを確認してください。",
"iris.bukkit.commandiris.successfully_created_your_world": "§aワールドを作成しました!", "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.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.failed_save_bukkit_yml_because": "§cbukkit.yml を保存できませんでした: {value}",
"iris.bukkit.commandiris.set_debug": "§aデバッグ設定: {to}", "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.you_must_be_iris_world": "§cIris ワールド内にいる必要があります",
"iris.bukkit.commandiris.sending_metrics": "§aメトリックの送信...", "iris.bukkit.commandiris.sending_metrics": "§aメトリックの送信...",
"iris.bukkit.commandiris.this_is_not_iris_world_iris_worlds_2": "§cここは Iris ワールドではありません。Iris ワールド: {value}", "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.world_update": "更新するワールド",
"iris.director.commanddeveloper.param.pack_install_into_world": "ワールドへインストールするパック", "iris.director.commanddeveloper.param.pack_install_into_world": "ワールドへインストールするパック",
"iris.director.commanddeveloper.param.make_sure_make_backup_read_warnings_first": "必ずバックアップを作成し、先に警告を読んでください!", "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.director.test": "テスト",
"iris.director.commanddeveloper.param.dump_whole_tectonic_plate_instead_single_section": "単一セクションではなくプレート全体をダンプします", "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 内のダンプファイル IDpv.<id>.*", "iris.director.commanddeveloper.param.dump_file_id_under_plugins_iris_dump_pv_id": "plugins/Iris/dump 内のダンプファイル IDpv.<id>.*",
@@ -713,8 +709,6 @@
"iris.director.commandiris.director.toggle_debug": "デバッグを切り替えます", "iris.director.commandiris.director.toggle_debug": "デバッグを切り替えます",
"iris.director.commandiris.director.download_project": "プロジェクトをダウンロードします。", "iris.director.commandiris.director.download_project": "プロジェクトをダウンロードします。",
"iris.director.commandiris.param.pack_download": "ダウンロードするパック", "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.get_metrics_your_world": "ワールドのメトリクスを取得します",
"iris.director.commandiris.director.reload_configuration_file_this_is_also_done_automatically": "設定ファイルを再読み込みします(自動でも実行されます)", "iris.director.commandiris.director.reload_configuration_file_this_is_also_done_automatically": "設定ファイルを再読み込みします(自動でも実行されます)",
"iris.director.commandiris.director.unload_iris_world": "Iris ワールドをアンロードします", "iris.director.commandiris.director.unload_iris_world": "Iris ワールドをアンロードします",
@@ -950,7 +944,6 @@
"iris.runtime.status.true": "はい", "iris.runtime.status.true": "はい",
"iris.runtime.status.false": "いいえ", "iris.runtime.status.false": "いいえ",
"iris.runtime.error.detail_suffix": " - {error}", "iris.runtime.error.detail_suffix": " - {error}",
"iris.runtime.download.overwrite_suffix": " 上書き",
"iris.runtime.datapack.override_suffix": "(ワールドデータパックの上書きをインストール済み)", "iris.runtime.datapack.override_suffix": "(ワールドデータパックの上書きをインストール済み)",
"iris.runtime.primary_world.players_routed_suffix": "(プレイヤーをこのワールドへ移動)", "iris.runtime.primary_world.players_routed_suffix": "(プレイヤーをこのワールドへ移動)",
"iris.runtime.primary_world.routing_disabled_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_find_dimensions_folder_this_pack_failed": "このパックの dimensions フォルダーに {name} がありません。失敗しました!",
"iris.bukkit.runtime.studiosvc.can_t_load_dimension_failed": "ディメンションを読み込めません。失敗しました!", "iris.bukkit.runtime.studiosvc.can_t_load_dimension_failed": "ディメンションを読み込めません。失敗しました!",
"iris.bukkit.runtime.studiosvc.type_installed": "{name} タイプをインストールしました。 ", "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 <pack> branch=<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.failed_open_studio_world": "スタジオワールドを開けませんでした: {error}",
"iris.bukkit.runtime.studiosvc.cannot_open_studio_pack_has_blocking_errors": "スタジオ '{dimm}' を開けません。パックに処理を妨げるエラーがあります:", "iris.bukkit.runtime.studiosvc.cannot_open_studio_pack_has_blocking_errors": "スタジオ '{dimm}' を開けません。パックに処理を妨げるエラーがあります:",
"iris.bukkit.runtime.studiosvc.message": " - {reason}", "iris.bukkit.runtime.studiosvc.message": " - {reason}",
@@ -1270,13 +1259,8 @@
"iris.runtime.golden.started": "GoldenHash を開始しました: 0,0 周辺の {chunks} チャンクをバッファー内で処理します(ワールドは変更しません)。スレッド={threads} モード={mode}", "iris.runtime.golden.started": "GoldenHash を開始しました: 0,0 周辺の {chunks} チャンクをバッファー内で処理します(ワールドは変更しません)。スレッド={threads} モード={mode}",
"iris.runtime.golden.chunk_hashed": "[{done}/{total}] チャンク {x},{z} をハッシュ化しました", "iris.runtime.golden.chunk_hashed": "[{done}/{total}] チャンク {x},{z} をハッシュ化しました",
"iris.runtime.golden.chunk_failed": "チャンク {x},{z} 失敗: {type}", "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.downloading": "{url} をダウンロードしています",
"iris.runtime.pack_download.failed_to_find": "{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.unpacking": "{repository} を展開しています",
"iris.runtime.pack_download.unpack_failed": [ "iris.runtime.pack_download.unpack_failed": [
"展開中に問題が発生しました。次の項目を確認してください:", "展開中に問題が発生しました。次の項目を確認してください:",
@@ -1291,7 +1275,6 @@
"iris.runtime.pack_download.invalid_archive_format": "無効な形式です。ルートフォルダーがないか、フォルダーが多すぎます!", "iris.runtime.pack_download.invalid_archive_format": "無効な形式です。ルートフォルダーがないか、フォルダーが多すぎます!",
"iris.runtime.pack_download.no_dimension_file": "展開した zip ファイルにディメンションファイルがありません。", "iris.runtime.pack_download.no_dimension_file": "展開した zip ファイルにディメンションファイルがありません。",
"iris.runtime.pack_download.check_github": "GitHub に存在することを確認し、スタッフへ報告してください!", "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.invalid_dimension": "dimensions/ 内のディメンションフォルダーが無効です。",
"iris.runtime.pack_download.importing": "{name}{key})をインポートしています", "iris.runtime.pack_download.importing": "{name}{key})をインポートしています",
"iris.runtime.pack_download.dimension_key_conflict": "packs フォルダー内の別のディメンションがキー {key} をすでに使用しています。インポートに失敗しました!", "iris.runtime.pack_download.dimension_key_conflict": "packs フォルダー内の別のディメンションがキー {key} をすでに使用しています。インポートに失敗しました!",
@@ -148,9 +148,7 @@
"iris.bukkit.commandiris.you_cannot_use_world_name_benchmark_creating_worlds_as_iris": "§cIris가 이 디렉터리를 벤치마크 팩에 사용하므로 월드 이름 \"benchmark\"는 사용할 수 없습니다.", "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.may_we_suggest_name_irisworld_instead_2": "§c우리는 이름 \"을 제안 할 수있다IrisWorld\" 대신?",
"iris.bukkit.commandiris.that_folder_already_exists": "§c그 폴더는 이미 존재합니다!", "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.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.world_staging_completed_restart_server_generate_load": "§a월드 준비가 완료되었습니다. \"{worldName}\"을 생성/로드하려면 서버를 재시작하세요.",
"iris.bukkit.commandiris.exception_raised_during_creation_see_console_more_details": "§c창조 중 발생한 예외. 자세한 내용은 콘솔을 참조하십시오.", "iris.bukkit.commandiris.exception_raised_during_creation_see_console_more_details": "§c창조 중 발생한 예외. 자세한 내용은 콘솔을 참조하십시오.",
"iris.bukkit.commandiris.successfully_created_your_world": "§a세상을 성공적으로 만들었습니다!", "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.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.failed_save_bukkit_yml_because": "§c{value} 때문에 bukkit.yml을 저장하지 못했습니다",
"iris.bukkit.commandiris.set_debug": "§a디버그 설정: {to}", "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.you_must_be_iris_world": "§cIris 월드 안에 있어야 합니다",
"iris.bukkit.commandiris.sending_metrics": "§a메트릭 전송...", "iris.bukkit.commandiris.sending_metrics": "§a메트릭 전송...",
"iris.bukkit.commandiris.this_is_not_iris_world_iris_worlds_2": "§c이것은 아니다 Iris 세계. Iris 세계: {value}", "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.world_update": "업데이트할 월드",
"iris.director.commanddeveloper.param.pack_install_into_world": "월드에 설치할 팩", "iris.director.commanddeveloper.param.pack_install_into_world": "월드에 설치할 팩",
"iris.director.commanddeveloper.param.make_sure_make_backup_read_warnings_first": "반드시 백업을 만들고 경고를 먼저 읽으세요!", "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.director.test": "테스트",
"iris.director.commanddeveloper.param.dump_whole_tectonic_plate_instead_single_section": "단일 섹션 대신 지각판 전체를 덤프합니다", "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.<id>.*)", "iris.director.commanddeveloper.param.dump_file_id_under_plugins_iris_dump_pv_id": "plugins/Iris/dump 아래의 덤프 파일 ID(pv.<id>.*)",
@@ -713,8 +709,6 @@
"iris.director.commandiris.director.toggle_debug": "디버그를 전환합니다", "iris.director.commandiris.director.toggle_debug": "디버그를 전환합니다",
"iris.director.commandiris.director.download_project": "프로젝트를 다운로드합니다.", "iris.director.commandiris.director.download_project": "프로젝트를 다운로드합니다.",
"iris.director.commandiris.param.pack_download": "다운로드할 팩", "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.get_metrics_your_world": "월드의 측정값을 가져옵니다",
"iris.director.commandiris.director.reload_configuration_file_this_is_also_done_automatically": "설정 파일을 다시 로드합니다(자동으로도 실행됨)", "iris.director.commandiris.director.reload_configuration_file_this_is_also_done_automatically": "설정 파일을 다시 로드합니다(자동으로도 실행됨)",
"iris.director.commandiris.director.unload_iris_world": "Iris 월드를 언로드합니다", "iris.director.commandiris.director.unload_iris_world": "Iris 월드를 언로드합니다",
@@ -950,7 +944,6 @@
"iris.runtime.status.true": "예", "iris.runtime.status.true": "예",
"iris.runtime.status.false": "아니요", "iris.runtime.status.false": "아니요",
"iris.runtime.error.detail_suffix": " - {error}", "iris.runtime.error.detail_suffix": " - {error}",
"iris.runtime.download.overwrite_suffix": " 관련 제품",
"iris.runtime.datapack.override_suffix": " (월드 데이터 팩 덮어쓰기 설치됨)", "iris.runtime.datapack.override_suffix": " (월드 데이터 팩 덮어쓰기 설치됨)",
"iris.runtime.primary_world.players_routed_suffix": " (플레이어는 거기로)", "iris.runtime.primary_world.players_routed_suffix": " (플레이어는 거기로)",
"iris.runtime.primary_world.routing_disabled_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_find_dimensions_folder_this_pack_failed": "찾을 수 없습니다 {name} 이 팩의 크기 폴더에! 실패!",
"iris.bukkit.runtime.studiosvc.can_t_load_dimension_failed": "차원을 적재할 수 없습니다! 실패!", "iris.bukkit.runtime.studiosvc.can_t_load_dimension_failed": "차원을 적재할 수 없습니다! 실패!",
"iris.bukkit.runtime.studiosvc.type_installed": "{name} 유형 설치. ", "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 <pack> branch=<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.failed_open_studio_world": "열린 스튜디오 세계에 실패: {error}",
"iris.bukkit.runtime.studiosvc.cannot_open_studio_pack_has_blocking_errors": "열린 스튜디오 '{dimm}' - 팩은 오류를 차단했습니다.", "iris.bukkit.runtime.studiosvc.cannot_open_studio_pack_has_blocking_errors": "열린 스튜디오 '{dimm}' - 팩은 오류를 차단했습니다.",
"iris.bukkit.runtime.studiosvc.message": " - {reason}", "iris.bukkit.runtime.studiosvc.message": " - {reason}",
@@ -1270,13 +1259,8 @@
"iris.runtime.golden.started": "GoldenHash 시작 : {chunks} 청크 주위에 0,0 버퍼 (세계 변경 없음), 스레드 ={threads} 모드 ={mode}", "iris.runtime.golden.started": "GoldenHash 시작 : {chunks} 청크 주위에 0,0 버퍼 (세계 변경 없음), 스레드 ={threads} 모드 ={mode}",
"iris.runtime.golden.chunk_hashed": "[{done}/{total}] 청크 {x},{z} 청크", "iris.runtime.golden.chunk_hashed": "[{done}/{total}] 청크 {x},{z} 청크",
"iris.runtime.golden.chunk_failed": "주 메뉴 {x},{z} 실패: {type}", "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.downloading": "다운로드 {url}",
"iris.runtime.pack_download.failed_to_find": "팩을 찾기 위해 실패 {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.unpacking": "옵션 정보 {repository}",
"iris.runtime.pack_download.unpack_failed": [ "iris.runtime.pack_download.unpack_failed": [
"압축 해제 중 문제가 발생했습니다. 다음 항목을 확인하세요:", "압축 해제 중 문제가 발생했습니다. 다음 항목을 확인하세요:",
@@ -1291,7 +1275,6 @@
"iris.runtime.pack_download.invalid_archive_format": "잘못된 형식. 루트 폴더 또는 너무 많은 폴더를 밀어!", "iris.runtime.pack_download.invalid_archive_format": "잘못된 형식. 루트 폴더 또는 너무 많은 폴더를 밀어!",
"iris.runtime.pack_download.no_dimension_file": "추출 된 zip 파일에서 찾을 수있는 치수 파일 없음.", "iris.runtime.pack_download.no_dimension_file": "추출 된 zip 파일에서 찾을 수있는 치수 파일 없음.",
"iris.runtime.pack_download.check_github": "GitHub에 있는지 확인하고 직원에게 보고하세요!", "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.invalid_dimension": "잘못된 차원 폴더 dimensions/.",
"iris.runtime.pack_download.importing": "관련 상품 {name} ({key})", "iris.runtime.pack_download.importing": "관련 상품 {name} ({key})",
"iris.runtime.pack_download.dimension_key_conflict": "packs 폴더의 다른 차원이 이미 키 {key}을(를) 사용합니다. 가져오기에 실패했습니다!", "iris.runtime.pack_download.dimension_key_conflict": "packs 폴더의 다른 차원이 이미 키 {key}을(를) 사용합니다. 가져오기에 실패했습니다!",
@@ -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.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.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.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.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.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.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į!", "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.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.failed_save_bukkit_yml_because": "§cNepavyko įrašyti bukkit.yml dėl {value}",
"iris.bukkit.commandiris.set_debug": "§aNustatyti derinimą į: {to}", "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.you_must_be_iris_world": "§cJūs turite būti Iris pasaulis",
"iris.bukkit.commandiris.sending_metrics": "§aSiunčiami metrikos...", "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}", "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.world_update": "Atnaujinti pasaulį",
"iris.director.commanddeveloper.param.pack_install_into_world": "Paketas įdiegti į 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.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.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_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.<id>.*)", "iris.director.commanddeveloper.param.dump_file_id_under_plugins_iris_dump_pv_id": "Name plugins/Iris/dump (plg.<id>.*)",
@@ -713,8 +709,6 @@
"iris.director.commandiris.director.toggle_debug": "Perjungti derinimą", "iris.director.commandiris.director.toggle_debug": "Perjungti derinimą",
"iris.director.commandiris.director.download_project": "Atsisiųskite projektą.", "iris.director.commandiris.director.download_project": "Atsisiųskite projektą.",
"iris.director.commandiris.param.pack_download": "Siunčiama pakuotė", "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.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.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", "iris.director.commandiris.director.unload_iris_world": "Įkelti Iris Pasaulis",
@@ -950,7 +944,6 @@
"iris.runtime.status.true": "tiesa", "iris.runtime.status.true": "tiesa",
"iris.runtime.status.false": "klaidinga", "iris.runtime.status.false": "klaidinga",
"iris.runtime.error.detail_suffix": " - {error}", "iris.runtime.error.detail_suffix": " - {error}",
"iris.runtime.download.overwrite_suffix": " perrašymas",
"iris.runtime.datapack.override_suffix": " (įdiegtas pasaulinis duomenų valdymas)", "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.players_routed_suffix": " (žaidėjai nuriedėjo ten)",
"iris.runtime.primary_world.routing_disabled_suffix": " (maršrutas išjungtas)", "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_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.can_t_load_dimension_failed": "Negaliu įkelti dimensijos! Nepavyko!",
"iris.bukkit.runtime.studiosvc.type_installed": "{name} įdiegtas tipas. ", "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 <pack> branch=<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.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.cannot_open_studio_pack_has_blocking_errors": "Nepavyko atverti studijos \"{dimm}\"- pakuotė turi blokavimo klaidų:",
"iris.bukkit.runtime.studiosvc.message": " - {reason}", "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.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_hashed": "[{done}/{total}] unit description in lists {x},{z} hash",
"iris.runtime.golden.chunk_failed": "Šriftas {x},{z} nepavyko: {type}", "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.downloading": "Atsiunčiama {url}",
"iris.runtime.pack_download.failed_to_find": "Nepavyko rasti pakuotės {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.unpacking": "Išpakavimas {repository}",
"iris.runtime.pack_download.unpack_failed": [ "iris.runtime.pack_download.unpack_failed": [
"Išpakuojama. Prašome patikrinti / atlikti šiuos veiksmus:", "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.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.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.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.invalid_dimension": "Netinkamas dimensijos aplankas pagal dimensions/.",
"iris.runtime.pack_download.importing": "Importuojama {name} ({key})", "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!", "iris.runtime.pack_download.dimension_key_conflict": "Kitas matmuo paketų aplanke jau naudoja raktą {key}. Importuoti nepavyko!",
@@ -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.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.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.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.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.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.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!", "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.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.failed_save_bukkit_yml_because": "§cOpslaan is mislukt bukkit.yml vanwege {value}",
"iris.bukkit.commandiris.set_debug": "§aDebug instellen op: {to}", "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.you_must_be_iris_world": "§cJe moet in een Iris wereld",
"iris.bukkit.commandiris.sending_metrics": "§aVerzenden van statistieken...", "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}", "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.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.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.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.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_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.<id>.*)", "iris.director.commanddeveloper.param.dump_file_id_under_plugins_iris_dump_pv_id": "Het dumpbestand id onder plugins/Iris/dump (pp.<id>.*)",
@@ -713,8 +709,6 @@
"iris.director.commandiris.director.toggle_debug": "Debug aan/uit", "iris.director.commandiris.director.toggle_debug": "Debug aan/uit",
"iris.director.commandiris.director.download_project": "Download een project.", "iris.director.commandiris.director.download_project": "Download een project.",
"iris.director.commandiris.param.pack_download": "Het te downloaden pakket", "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.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.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", "iris.director.commandiris.director.unload_iris_world": "Uitladen en Iris Wereld",
@@ -950,7 +944,6 @@
"iris.runtime.status.true": "waar", "iris.runtime.status.true": "waar",
"iris.runtime.status.false": "onwaar", "iris.runtime.status.false": "onwaar",
"iris.runtime.error.detail_suffix": " - {error}", "iris.runtime.error.detail_suffix": " - {error}",
"iris.runtime.download.overwrite_suffix": " overschrijven",
"iris.runtime.datapack.override_suffix": " (World Datapack Override geïnstalleerd)", "iris.runtime.datapack.override_suffix": " (World Datapack Override geïnstalleerd)",
"iris.runtime.primary_world.players_routed_suffix": " (speelsters gerouteerd daar)", "iris.runtime.primary_world.players_routed_suffix": " (speelsters gerouteerd daar)",
"iris.runtime.primary_world.routing_disabled_suffix": " (gehandicapt)", "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_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.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.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 <pack> branch=<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.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.cannot_open_studio_pack_has_blocking_errors": "Kan studio niet openen '{dimm}' - Pack heeft blokkerende fouten:",
"iris.bukkit.runtime.studiosvc.message": " - {reason}", "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.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_hashed": "[{done}/{total}] chunk {x},{z} gehashed",
"iris.runtime.golden.chunk_failed": "Chunk. {x},{z} mislukt: {type}", "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.downloading": "Downloaden {url}",
"iris.runtime.pack_download.failed_to_find": "Kon pakket niet vinden op {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.unpacking": "Uitpakken {repository}",
"iris.runtime.pack_download.unpack_failed": [ "iris.runtime.pack_download.unpack_failed": [
"Uitpakken. Controleer/doe het volgende:", "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.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.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.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.invalid_dimension": "Ongeldige dimensiemap onder dimensions/.",
"iris.runtime.pack_download.importing": "Importeren {name} ({key})", "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!", "iris.runtime.pack_download.dimension_key_conflict": "Een andere dimensie in de packs-map gebruikt al de sleutel {key}. Importeren mislukt!",
@@ -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.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.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.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.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.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.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!", "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.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.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.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.you_must_be_iris_world": "§cMusisz być w Iris świat",
"iris.bukkit.commandiris.sending_metrics": "§aWysyłanie wskaźników...", "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}", "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.world_update": "Świat do aktualizacji",
"iris.director.commanddeveloper.param.pack_install_into_world": "Paczka do instalacji na świecie", "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.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.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_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.<id>.*)", "iris.director.commanddeveloper.param.dump_file_id_under_plugins_iris_dump_pv_id": "Identyfikator pliku zrzutu pod plugins/Iris/dump (plv.<id>.*)",
@@ -713,8 +709,6 @@
"iris.director.commandiris.director.toggle_debug": "Włącza debugowanie", "iris.director.commandiris.director.toggle_debug": "Włącza debugowanie",
"iris.director.commandiris.director.download_project": "Pobierz projekt.", "iris.director.commandiris.director.download_project": "Pobierz projekt.",
"iris.director.commandiris.param.pack_download": "Paczka do pobrania", "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.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.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", "iris.director.commandiris.director.unload_iris_world": "Wyładuj Iris Świat",
@@ -950,7 +944,6 @@
"iris.runtime.status.true": "prawda", "iris.runtime.status.true": "prawda",
"iris.runtime.status.false": "Fałszywy", "iris.runtime.status.false": "Fałszywy",
"iris.runtime.error.detail_suffix": " - {error}", "iris.runtime.error.detail_suffix": " - {error}",
"iris.runtime.download.overwrite_suffix": " nadpisanie",
"iris.runtime.datapack.override_suffix": " (zainstalowany światowy menedżer danych)", "iris.runtime.datapack.override_suffix": " (zainstalowany światowy menedżer danych)",
"iris.runtime.primary_world.players_routed_suffix": " (grający tam)", "iris.runtime.primary_world.players_routed_suffix": " (grający tam)",
"iris.runtime.primary_world.routing_disabled_suffix": " (routing wyłączony)", "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_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.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.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 <pack> branch=<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.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.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}", "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.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_hashed": "[{done}/{total}] cząstka {x},{z} łuszczone",
"iris.runtime.golden.chunk_failed": "Chunk Przewodniczący {x},{z} niepowodzenie: {type}", "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.downloading": "Pobieranie {url}",
"iris.runtime.pack_download.failed_to_find": "Nie udało się znaleźć pakietu w {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.unpacking": "Rozpakowanie {repository}",
"iris.runtime.pack_download.unpack_failed": [ "iris.runtime.pack_download.unpack_failed": [
"Wydanie podczas rozpakowywania. Proszę sprawdzić / wykonać następujące czynności:", "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.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.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.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.invalid_dimension": "Nieprawidłowy folder wymiarów pod dimensions/.",
"iris.runtime.pack_download.importing": "Przywóz {name} ({key})", "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ę!", "iris.runtime.pack_download.dimension_key_conflict": "Inny wymiar w folderze pakietów już używa klucza {key}. Import nie powiódł się!",
@@ -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.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.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.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.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.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.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!", "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.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.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.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.you_must_be_iris_world": "§cVocê deve estar em um Iris mundo",
"iris.bukkit.commandiris.sending_metrics": "§aEnviando métricas...", "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}", "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.world_update": "O mundo a actualizar",
"iris.director.commanddeveloper.param.pack_install_into_world": "O pacote para instalar no mundo", "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.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.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_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.<id>.*)", "iris.director.commanddeveloper.param.dump_file_id_under_plugins_iris_dump_pv_id": "O ID do arquivo de descarga sob plugins/Iris/dump (vp.<id>.*)",
@@ -713,8 +709,6 @@
"iris.director.commandiris.director.toggle_debug": "Alternar a depuração", "iris.director.commandiris.director.toggle_debug": "Alternar a depuração",
"iris.director.commandiris.director.download_project": "Baixe um projeto.", "iris.director.commandiris.director.download_project": "Baixe um projeto.",
"iris.director.commandiris.param.pack_download": "O pacote para download", "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.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.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", "iris.director.commandiris.director.unload_iris_world": "Descarregar uma Iris Mundo",
@@ -950,7 +944,6 @@
"iris.runtime.status.true": "verdadeiro", "iris.runtime.status.true": "verdadeiro",
"iris.runtime.status.false": "falso", "iris.runtime.status.false": "falso",
"iris.runtime.error.detail_suffix": " - {error}", "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.datapack.override_suffix": " (mundial datapack sobreposição instalado)",
"iris.runtime.primary_world.players_routed_suffix": " (jogadores encaminhados para lá)", "iris.runtime.primary_world.players_routed_suffix": " (jogadores encaminhados para lá)",
"iris.runtime.primary_world.routing_disabled_suffix": " (Roteamento desactivado)", "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_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.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.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 <pack> branch=<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.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.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}", "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.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_hashed": "[{done}/{total}] chunk {x},{z} hashid",
"iris.runtime.golden.chunk_failed": "Chunk. {x},{z} falhou: {type}", "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.downloading": "Baixando {url}",
"iris.runtime.pack_download.failed_to_find": "Não foi possível encontrar o pacote em {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.unpacking": "Desembalar {repository}",
"iris.runtime.pack_download.unpack_failed": [ "iris.runtime.pack_download.unpack_failed": [
"Problema ao desfazer as malas. Verifique/faça o seguinte:", "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.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.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.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.invalid_dimension": "Pasta de dimensões inválida sob dimensions/.",
"iris.runtime.pack_download.importing": "Importação {name} ({key})", "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!", "iris.runtime.pack_download.dimension_key_conflict": "Outra dimensão na pasta pacotes já está usando a chave {key}. A importação falhou!",
@@ -148,9 +148,7 @@
"iris.bukkit.commandiris.you_cannot_use_world_name_benchmark_creating_worlds_as_iris": "§cНельзя использовать имя мира \"benchmark\", потому что Iris использует этот каталог для пакетов тестирования.", "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.may_we_suggest_name_irisworld_instead_2": "§cМожно предложить название \"IrisWorldВместо этого?",
"iris.bukkit.commandiris.that_folder_already_exists": "§cЭта папка уже существует!", "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.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.world_staging_completed_restart_server_generate_load": "§aПодготовка мира завершена. Перезапустите сервер, чтобы сгенерировать/загрузить «{worldName}».",
"iris.bukkit.commandiris.exception_raised_during_creation_see_console_more_details": "§cИсключение, возникшее при сотворении. Смотрите консоль для более подробной информации.", "iris.bukkit.commandiris.exception_raised_during_creation_see_console_more_details": "§cИсключение, возникшее при сотворении. Смотрите консоль для более подробной информации.",
"iris.bukkit.commandiris.successfully_created_your_world": "§aУспешно создал свой мир!", "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.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.failed_save_bukkit_yml_because": "§cНе удалось спасти bukkit.yml Потому что {value}",
"iris.bukkit.commandiris.set_debug": "§aУстановить отладку для: {to}", "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.you_must_be_iris_world": "§cВы должны быть в Iris мир",
"iris.bukkit.commandiris.sending_metrics": "§aОтправка метрик...", "iris.bukkit.commandiris.sending_metrics": "§aОтправка метрик...",
"iris.bukkit.commandiris.this_is_not_iris_world_iris_worlds_2": "§cЭто не является Iris Мир. Iris Миры: {value}", "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.world_update": "Мир для обновления",
"iris.director.commanddeveloper.param.pack_install_into_world": "Пакет для установки в мире", "iris.director.commanddeveloper.param.pack_install_into_world": "Пакет для установки в мире",
"iris.director.commanddeveloper.param.make_sure_make_backup_read_warnings_first": "Обязательно сделайте резервную копию & Сначала прочитайте предупреждения!", "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.director.test": "Тест",
"iris.director.commanddeveloper.param.dump_whole_tectonic_plate_instead_single_section": "Сбросьте всю тектоническую плиту вместо одной секции", "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.<id>.*)", "iris.director.commanddeveloper.param.dump_file_id_under_plugins_iris_dump_pv_id": "Файл демпинга id под plugins/Iris/dump (pv.<id>.*)",
@@ -713,8 +709,6 @@
"iris.director.commandiris.director.toggle_debug": "Отладка переключить", "iris.director.commandiris.director.toggle_debug": "Отладка переключить",
"iris.director.commandiris.director.download_project": "Скачать проект.", "iris.director.commandiris.director.download_project": "Скачать проект.",
"iris.director.commandiris.param.pack_download": "Пакет скачать", "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.get_metrics_your_world": "Получите метрики для вашего мира",
"iris.director.commandiris.director.reload_configuration_file_this_is_also_done_automatically": "Перезагрузка файла конфигурации (также выполняется автоматически)", "iris.director.commandiris.director.reload_configuration_file_this_is_also_done_automatically": "Перезагрузка файла конфигурации (также выполняется автоматически)",
"iris.director.commandiris.director.unload_iris_world": "Разгрузить Iris Мир", "iris.director.commandiris.director.unload_iris_world": "Разгрузить Iris Мир",
@@ -950,7 +944,6 @@
"iris.runtime.status.true": "истинный", "iris.runtime.status.true": "истинный",
"iris.runtime.status.false": "ложный", "iris.runtime.status.false": "ложный",
"iris.runtime.error.detail_suffix": " - {error}", "iris.runtime.error.detail_suffix": " - {error}",
"iris.runtime.download.overwrite_suffix": " переписывать",
"iris.runtime.datapack.override_suffix": " (всемирный пакет данных установлен)", "iris.runtime.datapack.override_suffix": " (всемирный пакет данных установлен)",
"iris.runtime.primary_world.players_routed_suffix": " (Игроки направляются туда)", "iris.runtime.primary_world.players_routed_suffix": " (Игроки направляются туда)",
"iris.runtime.primary_world.routing_disabled_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_find_dimensions_folder_this_pack_failed": "Не могу найти {name} В размерной папке этой паки! Провал!",
"iris.bukkit.runtime.studiosvc.can_t_load_dimension_failed": "Не могу загрузить размер! Провал!", "iris.bukkit.runtime.studiosvc.can_t_load_dimension_failed": "Не могу загрузить размер! Провал!",
"iris.bukkit.runtime.studiosvc.type_installed": "{name} Тип установлен. ", "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 <pack> branch=<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.failed_open_studio_world": "Не удалось открыть студию: {error}",
"iris.bukkit.runtime.studiosvc.cannot_open_studio_pack_has_blocking_errors": "Не может открыть студию{dimm}У пакета есть ошибки блокировки:", "iris.bukkit.runtime.studiosvc.cannot_open_studio_pack_has_blocking_errors": "Не может открыть студию{dimm}У пакета есть ошибки блокировки:",
"iris.bukkit.runtime.studiosvc.message": " - {reason}", "iris.bukkit.runtime.studiosvc.message": " - {reason}",
@@ -1270,13 +1259,8 @@
"iris.runtime.golden.started": "GoldenHash Начало: {chunks} чанки вокруг 0,0 в буферах (нетронутый мир), нити{threads} режим{mode}", "iris.runtime.golden.started": "GoldenHash Начало: {chunks} чанки вокруг 0,0 в буферах (нетронутый мир), нити{threads} режим{mode}",
"iris.runtime.golden.chunk_hashed": "[{done}/{total}] чанк {x},{z} хешированный", "iris.runtime.golden.chunk_hashed": "[{done}/{total}] чанк {x},{z} хешированный",
"iris.runtime.golden.chunk_failed": "Кусок {x},{z} не удалось: {type}", "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.downloading": "Скачать {url}",
"iris.runtime.pack_download.failed_to_find": "Не удалось найти стаю {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.unpacking": "распаковка {repository}",
"iris.runtime.pack_download.unpack_failed": [ "iris.runtime.pack_download.unpack_failed": [
"Проблемы при распаковке. Пожалуйста, проверьте / сделайте следующее:", "Проблемы при распаковке. Пожалуйста, проверьте / сделайте следующее:",
@@ -1291,7 +1275,6 @@
"iris.runtime.pack_download.invalid_archive_format": "Недействительный формат. Недостающая корневая папка или слишком много папок!", "iris.runtime.pack_download.invalid_archive_format": "Недействительный формат. Недостающая корневая папка или слишком много папок!",
"iris.runtime.pack_download.no_dimension_file": "Файл размерности не найден в извлеченном файле zip.", "iris.runtime.pack_download.no_dimension_file": "Файл размерности не найден в извлеченном файле zip.",
"iris.runtime.pack_download.check_github": "Убедитесь, что он присутствует на GitHub Сообщите об этом сотрудникам!", "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.invalid_dimension": "Недействительная размерная папка под dimensions/.",
"iris.runtime.pack_download.importing": "импортировать {name} ({key})", "iris.runtime.pack_download.importing": "импортировать {name} ({key})",
"iris.runtime.pack_download.dimension_key_conflict": "Еще одно измерение в папке пакетов уже использует ключ {key}. Импорт провалился!", "iris.runtime.pack_download.dimension_key_conflict": "Еще одно измерение в папке пакетов уже использует ключ {key}. Импорт провалился!",
@@ -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.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.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.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.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.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.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ı!", "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.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.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.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.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.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}", "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.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.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.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.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_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.<id>.*)", "iris.director.commanddeveloper.param.dump_file_id_under_plugins_iris_dump_pv_id": "Boş dosya adı altında plugins/Iris/dump (pv.<id>.*)",
@@ -713,8 +709,6 @@
"iris.director.commandiris.director.toggle_debug": "Çalmak için", "iris.director.commandiris.director.toggle_debug": "Çalmak için",
"iris.director.commandiris.director.download_project": "Bir proje indirin.", "iris.director.commandiris.director.download_project": "Bir proje indirin.",
"iris.director.commandiris.param.pack_download": "İndirmek için paket", "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.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.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ı", "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.true": "Gerçek doğru",
"iris.runtime.status.false": "sahte yanlış", "iris.runtime.status.false": "sahte yanlış",
"iris.runtime.error.detail_suffix": " - {error}", "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.datapack.override_suffix": " (Dünya veri paketi override installed)",
"iris.runtime.primary_world.players_routed_suffix": " (Oyuncular oraya yolladı)", "iris.runtime.primary_world.players_routed_suffix": " (Oyuncular oraya yolladı)",
"iris.runtime.primary_world.routing_disabled_suffix": " (Vücretsiz)", "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_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.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.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 <pack> branch=<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.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.cannot_open_studio_pack_has_blocking_errors": "Açık stüdyo \"{dimm}\" - paket hataları engelliyor:",
"iris.bukkit.runtime.studiosvc.message": " - {reason}", "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.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_hashed": "[{done}/{total}] chunk {x},{z} Havehed",
"iris.runtime.golden.chunk_failed": "Chunk. {x},{z} başarısız: {type}", "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.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.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.unpacking": "Unpackinging {repository}",
"iris.runtime.pack_download.unpack_failed": [ "iris.runtime.pack_download.unpack_failed": [
"Paket açılırken sorun oluştu. Lütfen şunları kontrol edin/yapın:", "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.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.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.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.invalid_dimension": "geçersiz boyut klasörü altında dimensions/.",
"iris.runtime.pack_download.importing": "İthalat {name} ({key})", "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!", "iris.runtime.pack_download.dimension_key_conflict": "Paketlerdeki başka bir boyut zaten anahtarı kullanıyor {key}. İthalat başarısız oldu!",
@@ -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.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.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.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.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.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.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!", "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.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.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.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.you_must_be_iris_world": "§cChắc anh đang ở trong... Iris thế giới",
"iris.bukkit.commandiris.sending_metrics": "§aName...", "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}", "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.world_update": "♪ Cả thế giới để cập nhật ♪",
"iris.director.commanddeveloper.param.pack_install_into_world": "Name", "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.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.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_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.<id>.*)", "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.<id>.*)",
@@ -713,8 +709,6 @@
"iris.director.commandiris.director.toggle_debug": "Bật/ tắt gỡ lỗi", "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.director.download_project": "Tải về một dự án.",
"iris.director.commandiris.param.pack_download": "Name", "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.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.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", "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.true": "đúng",
"iris.runtime.status.false": "sai", "iris.runtime.status.false": "sai",
"iris.runtime.error.detail_suffix": " - {error}", "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.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.players_routed_suffix": " (Những người chơi đã đến đó)",
"iris.runtime.primary_world.routing_disabled_suffix": " (bị tắt)", "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_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.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.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 <pack> branch=<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.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.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}", "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.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_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.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.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.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.unpacking": "Đang mở gói {repository}",
"iris.runtime.pack_download.unpack_failed": [ "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:", "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.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.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.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.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.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!", "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!",
@@ -148,9 +148,7 @@
"iris.bukkit.commandiris.you_cannot_use_world_name_benchmark_creating_worlds_as_iris": "§c不能使用世界名称 \"benchmark\",因为 Iris 将该目录用于基准测试包。", "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.may_we_suggest_name_irisworld_instead_2": "§c建议改用名称 \"IrisWorld\"。",
"iris.bukkit.commandiris.that_folder_already_exists": "§c该文件夹已存在!", "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.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.world_staging_completed_restart_server_generate_load": "§a世界暂存完成。请重启服务器以生成并加载 \"{worldName}\"。",
"iris.bukkit.commandiris.exception_raised_during_creation_see_console_more_details": "§c创建期间发生异常。详情请查看控制台。", "iris.bukkit.commandiris.exception_raised_during_creation_see_console_more_details": "§c创建期间发生异常。详情请查看控制台。",
"iris.bukkit.commandiris.successfully_created_your_world": "§a世界创建成功!", "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.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.failed_save_bukkit_yml_because": "§c无法保存 bukkit.yml{value}",
"iris.bukkit.commandiris.set_debug": "§a调试模式已设为:{to}", "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.you_must_be_iris_world": "§c你必须位于 Iris 世界中。",
"iris.bukkit.commandiris.sending_metrics": "§a正在发送指标...", "iris.bukkit.commandiris.sending_metrics": "§a正在发送指标...",
"iris.bukkit.commandiris.this_is_not_iris_world_iris_worlds_2": "§c这不是 Iris 世界。Iris 世界数量:{value}", "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.world_update": "更新世界",
"iris.director.commanddeveloper.param.pack_install_into_world": "加载世界的包", "iris.director.commanddeveloper.param.pack_install_into_world": "加载世界的包",
"iris.director.commanddeveloper.param.make_sure_make_backup_read_warnings_first": "一定要做备份 & 先读一下警告!", "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.director.test": "测试",
"iris.director.commanddeveloper.param.dump_whole_tectonic_plate_instead_single_section": "将整个构造板块丢弃,而不是一个单段", "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.<id>.*)", "iris.director.commanddeveloper.param.dump_file_id_under_plugins_iris_dump_pv_id": "丢弃文件 ID 下方 plugins/Iris/dump (pv.<id>.*)",
@@ -713,8 +709,6 @@
"iris.director.commandiris.director.toggle_debug": "切换调试模式", "iris.director.commandiris.director.toggle_debug": "切换调试模式",
"iris.director.commandiris.director.download_project": "下载维度包", "iris.director.commandiris.director.download_project": "下载维度包",
"iris.director.commandiris.param.pack_download": "要下载的包", "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.get_metrics_your_world": "显示世界指标",
"iris.director.commandiris.director.reload_configuration_file_this_is_also_done_automatically": "重新加载配置文件(也会自动执行)", "iris.director.commandiris.director.reload_configuration_file_this_is_also_done_automatically": "重新加载配置文件(也会自动执行)",
"iris.director.commandiris.director.unload_iris_world": "卸载 Iris 世界", "iris.director.commandiris.director.unload_iris_world": "卸载 Iris 世界",
@@ -950,7 +944,6 @@
"iris.runtime.status.true": "真实", "iris.runtime.status.true": "真实",
"iris.runtime.status.false": "虚假", "iris.runtime.status.false": "虚假",
"iris.runtime.error.detail_suffix": " - {error}", "iris.runtime.error.detail_suffix": " - {error}",
"iris.runtime.download.overwrite_suffix": " 覆盖",
"iris.runtime.datapack.override_suffix": " (已安装世界数据包覆盖)", "iris.runtime.datapack.override_suffix": " (已安装世界数据包覆盖)",
"iris.runtime.primary_world.players_routed_suffix": " (玩家经过那里)", "iris.runtime.primary_world.players_routed_suffix": " (玩家经过那里)",
"iris.runtime.primary_world.routing_disabled_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_find_dimensions_folder_this_pack_failed": "在此内容包的 dimensions 文件夹中找不到 {name},操作失败。",
"iris.bukkit.runtime.studiosvc.can_t_load_dimension_failed": "无法加载维度,操作失败。", "iris.bukkit.runtime.studiosvc.can_t_load_dimension_failed": "无法加载维度,操作失败。",
"iris.bukkit.runtime.studiosvc.type_installed": "已安装 {name} 类型。", "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 <pack> branch=<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.failed_open_studio_world": "无法打开工作室世界:{error}",
"iris.bukkit.runtime.studiosvc.cannot_open_studio_pack_has_blocking_errors": "无法打开工作室“{dimm}”:内容包存在阻断错误:", "iris.bukkit.runtime.studiosvc.cannot_open_studio_pack_has_blocking_errors": "无法打开工作室“{dimm}”:内容包存在阻断错误:",
"iris.bukkit.runtime.studiosvc.message": " - {reason}", "iris.bukkit.runtime.studiosvc.message": " - {reason}",
@@ -1270,13 +1259,8 @@
"iris.runtime.golden.started": "GoldenHash 开始 : {chunks} 块绕 0,0 在缓冲器(世界未触动)中,线程={threads} 模式={mode}", "iris.runtime.golden.started": "GoldenHash 开始 : {chunks} 块绕 0,0 在缓冲器(世界未触动)中,线程={threads} 模式={mode}",
"iris.runtime.golden.chunk_hashed": "[{done}/{total}] 块 {x},{z} 散开", "iris.runtime.golden.chunk_hashed": "[{done}/{total}] 块 {x},{z} 散开",
"iris.runtime.golden.chunk_failed": "块 {x},{z} 失败: {type}", "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.downloading": "下载 {url}",
"iris.runtime.pack_download.failed_to_find": "找到包失败 {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.unpacking": "正在解压 {repository}",
"iris.runtime.pack_download.unpack_failed": [ "iris.runtime.pack_download.unpack_failed": [
"解包时发布. 请检查/做如下:", "解包时发布. 请检查/做如下:",
@@ -1291,7 +1275,6 @@
"iris.runtime.pack_download.invalid_archive_format": "无效的格式 。 缺少根文件夹或过多的文件夹!", "iris.runtime.pack_download.invalid_archive_format": "无效的格式 。 缺少根文件夹或过多的文件夹!",
"iris.runtime.pack_download.no_dimension_file": "在提取的zip文件中找不到维度文件 。", "iris.runtime.pack_download.no_dimension_file": "在提取的zip文件中找不到维度文件 。",
"iris.runtime.pack_download.check_github": "检查它是否在 GitHub 把这个报告给工作人员!", "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.invalid_dimension": "无效的维度文件夹 dimensions/.",
"iris.runtime.pack_download.importing": "导入 {name} ({key})", "iris.runtime.pack_download.importing": "导入 {name} ({key})",
"iris.runtime.pack_download.dimension_key_conflict": "包文件夹中的另一个维度已经使用密钥 {key}. 导入失败 !", "iris.runtime.pack_download.dimension_key_conflict": "包文件夹中的另一个维度已经使用密钥 {key}. 导入失败 !",
@@ -148,9 +148,7 @@
"iris.bukkit.commandiris.you_cannot_use_world_name_benchmark_creating_worlds_as_iris": "§c不能使用世界名稱 \"benchmark\",因為 Iris 將該目錄用於基準測試包。", "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.may_we_suggest_name_irisworld_instead_2": "§c建議改用名稱 \"IrisWorld\"。",
"iris.bukkit.commandiris.that_folder_already_exists": "§c該資料夾已存在!", "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.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.world_staging_completed_restart_server_generate_load": "§a世界暫存完成。請重新啟動伺服器以生成並載入 \"{worldName}\"。",
"iris.bukkit.commandiris.exception_raised_during_creation_see_console_more_details": "§c建立期間發生例外。詳細資訊請查看主控台。", "iris.bukkit.commandiris.exception_raised_during_creation_see_console_more_details": "§c建立期間發生例外。詳細資訊請查看主控台。",
"iris.bukkit.commandiris.successfully_created_your_world": "§a世界建立成功!", "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.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.failed_save_bukkit_yml_because": "§c無法儲存 bukkit.yml{value}",
"iris.bukkit.commandiris.set_debug": "§a偵錯模式已設為:{to}", "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.you_must_be_iris_world": "§c你必須位於 Iris 世界中。",
"iris.bukkit.commandiris.sending_metrics": "§a正在傳送指標...", "iris.bukkit.commandiris.sending_metrics": "§a正在傳送指標...",
"iris.bukkit.commandiris.this_is_not_iris_world_iris_worlds_2": "§c這不是 Iris 世界。Iris 世界數量:{value}", "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.world_update": "更新世界",
"iris.director.commanddeveloper.param.pack_install_into_world": "載入世界的包", "iris.director.commanddeveloper.param.pack_install_into_world": "載入世界的包",
"iris.director.commanddeveloper.param.make_sure_make_backup_read_warnings_first": "一定要做備份 & 先讀一下警告!", "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.director.test": "測試",
"iris.director.commanddeveloper.param.dump_whole_tectonic_plate_instead_single_section": "將整個構造板塊丟棄,而不是一個單段", "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.<id>.*)", "iris.director.commanddeveloper.param.dump_file_id_under_plugins_iris_dump_pv_id": "丟棄檔案 ID 下方 plugins/Iris/dump (pv.<id>.*)",
@@ -713,8 +709,6 @@
"iris.director.commandiris.director.toggle_debug": "切換偵錯模式", "iris.director.commandiris.director.toggle_debug": "切換偵錯模式",
"iris.director.commandiris.director.download_project": "下載維度包", "iris.director.commandiris.director.download_project": "下載維度包",
"iris.director.commandiris.param.pack_download": "要下載的包", "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.get_metrics_your_world": "顯示世界指標",
"iris.director.commandiris.director.reload_configuration_file_this_is_also_done_automatically": "重新載入設定檔(也會自動執行)", "iris.director.commandiris.director.reload_configuration_file_this_is_also_done_automatically": "重新載入設定檔(也會自動執行)",
"iris.director.commandiris.director.unload_iris_world": "卸載 Iris 世界", "iris.director.commandiris.director.unload_iris_world": "卸載 Iris 世界",
@@ -950,7 +944,6 @@
"iris.runtime.status.true": "真實", "iris.runtime.status.true": "真實",
"iris.runtime.status.false": "虛假", "iris.runtime.status.false": "虛假",
"iris.runtime.error.detail_suffix": " - {error}", "iris.runtime.error.detail_suffix": " - {error}",
"iris.runtime.download.overwrite_suffix": " 覆蓋",
"iris.runtime.datapack.override_suffix": " (已安裝世界資料包覆蓋)", "iris.runtime.datapack.override_suffix": " (已安裝世界資料包覆蓋)",
"iris.runtime.primary_world.players_routed_suffix": " (玩家經過那裡)", "iris.runtime.primary_world.players_routed_suffix": " (玩家經過那裡)",
"iris.runtime.primary_world.routing_disabled_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_find_dimensions_folder_this_pack_failed": "在此內容包的 dimensions 資料夾中找不到 {name},操作失敗。",
"iris.bukkit.runtime.studiosvc.can_t_load_dimension_failed": "無法載入維度,操作失敗。", "iris.bukkit.runtime.studiosvc.can_t_load_dimension_failed": "無法載入維度,操作失敗。",
"iris.bukkit.runtime.studiosvc.type_installed": "已安裝 {name} 類型。", "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 <pack> branch=<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.failed_open_studio_world": "無法開啟工作室世界:{error}",
"iris.bukkit.runtime.studiosvc.cannot_open_studio_pack_has_blocking_errors": "無法開啟工作室「{dimm}」:內容包存在阻斷錯誤:", "iris.bukkit.runtime.studiosvc.cannot_open_studio_pack_has_blocking_errors": "無法開啟工作室「{dimm}」:內容包存在阻斷錯誤:",
"iris.bukkit.runtime.studiosvc.message": " - {reason}", "iris.bukkit.runtime.studiosvc.message": " - {reason}",
@@ -1270,13 +1259,8 @@
"iris.runtime.golden.started": "GoldenHash 開始 : {chunks} 塊繞 0,0 在緩衝器(世界未觸動)中,執行緒={threads} 模式={mode}", "iris.runtime.golden.started": "GoldenHash 開始 : {chunks} 塊繞 0,0 在緩衝器(世界未觸動)中,執行緒={threads} 模式={mode}",
"iris.runtime.golden.chunk_hashed": "[{done}/{total}] 塊 {x},{z} 散開", "iris.runtime.golden.chunk_hashed": "[{done}/{total}] 塊 {x},{z} 散開",
"iris.runtime.golden.chunk_failed": "塊 {x},{z} 失敗: {type}", "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.downloading": "下載 {url}",
"iris.runtime.pack_download.failed_to_find": "找到包失敗 {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.unpacking": "正在解壓縮 {repository}",
"iris.runtime.pack_download.unpack_failed": [ "iris.runtime.pack_download.unpack_failed": [
"解包時釋出. 請檢查/做如下:", "解包時釋出. 請檢查/做如下:",
@@ -1291,7 +1275,6 @@
"iris.runtime.pack_download.invalid_archive_format": "無效的格式 。 缺少根資料夾或過多的資料夾!", "iris.runtime.pack_download.invalid_archive_format": "無效的格式 。 缺少根資料夾或過多的資料夾!",
"iris.runtime.pack_download.no_dimension_file": "在提取的zip檔案中找不到維度檔案 。", "iris.runtime.pack_download.no_dimension_file": "在提取的zip檔案中找不到維度檔案 。",
"iris.runtime.pack_download.check_github": "檢查它是否在 GitHub 把這個報告給工作人員!", "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.invalid_dimension": "無效的維度資料夾 dimensions/.",
"iris.runtime.pack_download.importing": "匯入 {name} ({key})", "iris.runtime.pack_download.importing": "匯入 {name} ({key})",
"iris.runtime.pack_download.dimension_key_conflict": "包資料夾中的另一個維度已經使用金鑰 {key}. 匯入失敗 !", "iris.runtime.pack_download.dimension_key_conflict": "包資料夾中的另一個維度已經使用金鑰 {key}. 匯入失敗 !",
@@ -290,14 +290,6 @@ public class IrisLanguageTest {
assertEquals("Unbekannter Iris-Befehl", IrisLanguage.plain(IrisMessages.COMMAND_UNKNOWN)); assertEquals("Unbekannter Iris-Befehl", IrisLanguage.plain(IrisMessages.COMMAND_UNKNOWN));
} }
@Test
public void plainRenderingPreservesCommandSyntaxPlaceholders() {
assertEquals(
"Use /iris download <pack> branch=<branch> to download manually.",
IrisLanguage.plain(BukkitRuntimeMessages.STUDIO_S_V_C_USE_IRIS_DOWNLOAD_PACK_BRANCH_BRANCH_DOWNLOAD_MANUALLY)
);
}
@Test @Test
public void appliesLineAndPluralOverlayShapes() throws Exception { public void appliesLineAndPluralOverlayShapes() throws Exception {
writeOverride("de_DE", """ writeOverride("de_DE", """
@@ -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"));
}
}
@@ -101,19 +101,23 @@ public class PackDownloaderTest {
} }
@Test @Test
public void resolvesDefaultOverworldGitSource() { public void resolvesDefaultOverworldBetaRelease() {
assertEquals("IrisDimensions/overworld", PackDownloader.defaultOverworldRepository()); assertEquals(
assertEquals("master", PackDownloader.defaultOverworldRef()); "https://github.com/IrisDimensions/overworld/releases/download/beta/overworld.zip",
PackDownloader.builtInPackUrl("overworld")
);
assertTrue(PackDownloader.isDefaultOverworld("overworld")); assertTrue(PackDownloader.isDefaultOverworld("overworld"));
assertTrue(PackDownloader.isManagedPack("overworld")); assertTrue(PackDownloader.isBuiltInPack("overworld"));
assertEquals(List.of("overworld", "underworld"), PackDownloader.managedPacks()); assertEquals(List.of("overworld", "underworld"), PackDownloader.builtInPacks());
} }
@Test @Test
public void resolvesUnderworldGitSource() { public void resolvesUnderworldBetaRelease() {
assertEquals("IrisDimensions/underworld", PackDownloader.underworldRepository()); assertEquals(
assertEquals("main", PackDownloader.underworldRef()); "https://github.com/IrisDimensions/underworld/releases/download/beta/underworld.zip",
assertTrue(PackDownloader.isManagedPack("underworld")); PackDownloader.builtInPackUrl("underworld")
);
assertTrue(PackDownloader.isBuiltInPack("underworld"));
} }
@Test @Test
@@ -133,6 +137,8 @@ public class PackDownloaderTest {
entries.put("wrapped/dimensions/direct_pack.json", "{\"name\":\"Direct\",\"regions\":[\"local\"]," entries.put("wrapped/dimensions/direct_pack.json", "{\"name\":\"Direct\",\"regions\":[\"local\"],"
+ "\"structures\":[{\"nativeStructures\":[{\"structure\":\"test:future_structure\"}]}]," + "\"structures\":[{\"nativeStructures\":[{\"structure\":\"test:future_structure\"}]}],"
+ "\"logicalHeight\":256,\"dimensionHeight\":{\"min\":-64,\"max\":320}}"); + "\"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/regions/local.json", "{\"name\":\"Local\",\"landBiomes\":[\"local\"]}");
entries.put("wrapped/biomes/local.json", "{\"name\":\"Local\",\"derivative\":\"minecraft:plains\"}"); entries.put("wrapped/biomes/local.json", "{\"name\":\"Local\",\"derivative\":\"minecraft:plains\"}");
writeArchive(archive, entries); writeArchive(archive, entries);
@@ -166,13 +172,16 @@ public class PackDownloaderTest {
assertTrue(Files.isRegularFile( assertTrue(Files.isRegularFile(
packsFolder.toPath().resolve("direct_pack/dimensions/direct_pack.json") packsFolder.toPath().resolve("direct_pack/dimensions/direct_pack.json")
)); ));
assertTrue(Files.isRegularFile(
packsFolder.toPath().resolve("direct_pack/dimensions/direct_pack_supporting.json")
));
} finally { } finally {
server.stop(0); server.stop(0);
} }
} }
@Test @Test
public void managedPackPresenceRequiresItsPrimaryDimension() throws Exception { public void builtInPackPresenceRequiresItsPrimaryDimension() throws Exception {
File packsFolder = temp.newFolder("managed-presence"); File packsFolder = temp.newFolder("managed-presence");
Path dimensions = Files.createDirectories( Path dimensions = Files.createDirectories(
packsFolder.toPath().resolve("underworld/dimensions") packsFolder.toPath().resolve("underworld/dimensions")
@@ -180,11 +189,11 @@ public class PackDownloaderTest {
writeDimension(packsFolder.toPath().resolve("underworld"), "underworld_roof"); writeDimension(packsFolder.toPath().resolve("underworld"), "underworld_roof");
assertTrue(PackDownloader.isPackPresent(packsFolder, "underworld")); assertTrue(PackDownloader.isPackPresent(packsFolder, "underworld"));
assertFalse(PackDownloader.isManagedPackPresent(packsFolder, "underworld")); assertFalse(PackDownloader.isBuiltInPackPresent(packsFolder, "underworld"));
writeDimension(packsFolder.toPath().resolve("underworld"), "underworld"); writeDimension(packsFolder.toPath().resolve("underworld"), "underworld");
assertTrue(Files.isDirectory(dimensions)); assertTrue(Files.isDirectory(dimensions));
assertTrue(PackDownloader.isManagedPackPresent(packsFolder, "underworld")); assertTrue(PackDownloader.isBuiltInPackPresent(packsFolder, "underworld"));
} }
@Test @Test
@@ -220,49 +229,9 @@ public class PackDownloaderTest {
assertFalse(PackDownloader.isDefaultOverworld("theend")); assertFalse(PackDownloader.isDefaultOverworld("theend"));
assertFalse(PackDownloader.isDefaultOverworld("")); assertFalse(PackDownloader.isDefaultOverworld(""));
assertFalse(PackDownloader.isDefaultOverworld(null)); assertFalse(PackDownloader.isDefaultOverworld(null));
assertFalse(PackDownloader.isManagedPack("theend")); assertFalse(PackDownloader.isBuiltInPack("theend"));
assertFalse(PackDownloader.isManagedPack("")); assertFalse(PackDownloader.isBuiltInPack(""));
assertFalse(PackDownloader.isManagedPack(null)); assertFalse(PackDownloader.isBuiltInPack(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")
);
} }
@Test @Test
@@ -320,13 +289,10 @@ public class PackDownloaderTest {
List<String> feedback = new ArrayList<>(); List<String> feedback = new ArrayList<>();
// The URL is unreachable on purpose: reaching the network would fail the download and // 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. // 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, packsFolder,
"IrisDimensions/overworld",
"http://127.0.0.1:9/unreachable.zip",
false,
true,
"overworld", "overworld",
false,
feedback::add feedback::add
); );
@@ -335,15 +301,6 @@ public class PackDownloaderTest {
assertFalse(feedback.isEmpty()); 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 @Test
public void forceOverwritePublishesValidatedPackAndCleansTransactionState() throws Exception { public void forceOverwritePublishesValidatedPackAndCleansTransactionState() throws Exception {
File packsFolder = temp.newFolder("force-packs"); File packsFolder = temp.newFolder("force-packs");
@@ -544,7 +501,7 @@ public class PackDownloaderTest {
} }
@Test @Test
public void rejectsAmbiguousMultiDimensionPackWithoutExpectedKey() throws Exception { public void selectsShortestDimensionKeyWhenDirectPackContainsMultipleDimensions() throws Exception {
File packsFolder = temp.newFolder("ambiguous-dimension-packs"); File packsFolder = temp.newFolder("ambiguous-dimension-packs");
File extracted = writePack(temp.newFolder("ambiguous-dimension-source").toPath(), "underworld", "new"); File extracted = writePack(temp.newFolder("ambiguous-dimension-source").toPath(), "underworld", "new");
writeDimension(extracted.toPath(), "underworld_roof"); writeDimension(extracted.toPath(), "underworld_roof");
@@ -558,9 +515,12 @@ public class PackDownloaderTest {
feedback::add feedback::add
); );
assertNull(result); assertNotNull(result);
assertFalse(feedback.isEmpty()); assertEquals("underworld", result.key());
assertFalse(new File(packsFolder, "underworld").exists()); assertTrue(result.changed());
assertTrue(Files.isRegularFile(
packsFolder.toPath().resolve("underworld/dimensions/underworld_roof.json")
));
assertTransactionStateClean(packsFolder); assertTransactionStateClean(packsFolder);
} }
@@ -613,14 +573,9 @@ public class PackDownloaderTest {
public void rejectsUnsafeExpectedKeyBeforeDownload() throws IOException { public void rejectsUnsafeExpectedKeyBeforeDownload() throws IOException {
File packsFolder = temp.newFolder("unsafe-key-packs"); File packsFolder = temp.newFolder("unsafe-key-packs");
assertThrows(IllegalArgumentException.class, () -> PackDownloader.download( File extracted = writePack(temp.newFolder("unsafe-key-source").toPath(), "safe", "state");
packsFolder, assertThrows(IllegalArgumentException.class, () -> PackDownloader.installExtractedPack(
"IrisDimensions/overworld", packsFolder, extracted, true, "../outside", ignored -> {
"http://127.0.0.1:9/unreachable.zip",
true,
true,
"../outside",
ignored -> {
} }
)); ));
assertEquals(0, PackDownloader.downloadLockCount()); assertEquals(0, PackDownloader.downloadLockCount());
@@ -18,18 +18,6 @@ import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertThrows; import static org.junit.Assert.assertThrows;
public class StudioSVCProjectSafetyTest { 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 @Test
public void createsLocalStarterWithoutARepositoryDownload() throws IOException { public void createsLocalStarterWithoutARepositoryDownload() throws IOException {
File workspace = temporaryFolder.newFolder("starter-workspace"); File workspace = temporaryFolder.newFolder("starter-workspace");