mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2026-10-25 21:40:05 +00:00
Iris downloader / History update
- Allow people to download in place and update in place the media
This commit is contained in:
1 parent
b18681a3e2
commit
edadd14f4b
40 files changed
+836
-122
No files matched your search
@@ -40,9 +40,8 @@ public final class ModdedIrisSplash {
|
||||
|
||||
private static void printPacks(ModdedLoader loader) {
|
||||
File packFolder = IrisPlatforms.get().packsFolderNoCreate();
|
||||
for (String line : IrisSplashComposer.composePackLines(packFolder, IrisLogging::reportError)) {
|
||||
IrisLogging.info(line);
|
||||
}
|
||||
IrisSplashComposer.composePackLines(packFolder, IrisLogging::reportError)
|
||||
.thenAccept(lines -> lines.forEach(IrisLogging::info));
|
||||
}
|
||||
|
||||
private static void printLogo(ModdedLoader loader) {
|
||||
|
||||
+29
-11
@@ -406,14 +406,14 @@ public final class IrisModdedCommands {
|
||||
? PackDownloader.downloadUrl(
|
||||
packs,
|
||||
request.url(),
|
||||
false,
|
||||
request.overwrite(),
|
||||
(String message) -> dispatchDownloadFeedback(source, () -> ok(source, message)),
|
||||
cancellation
|
||||
)
|
||||
: PackDownloader.downloadBuiltIn(
|
||||
packs,
|
||||
request.pack(),
|
||||
false,
|
||||
request.overwrite(),
|
||||
(String message) -> dispatchDownloadFeedback(source, () -> ok(source, message)),
|
||||
cancellation
|
||||
);
|
||||
@@ -478,15 +478,33 @@ public final class IrisModdedCommands {
|
||||
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;
|
||||
String pack = null;
|
||||
String url = null;
|
||||
Boolean overwrite = null;
|
||||
for (String argument : rawRequest.trim().split("\\s+")) {
|
||||
if (argument.startsWith("pack=") && pack == null) {
|
||||
pack = argument.substring("pack=".length()).toLowerCase(Locale.ROOT);
|
||||
if (!PackDownloader.isBuiltInPack(pack)) {
|
||||
return null;
|
||||
}
|
||||
} else if (argument.startsWith("link=") && url == null) {
|
||||
url = argument.substring("link=".length());
|
||||
if (!PackDownloader.isDirectZipUrl(url)) {
|
||||
return null;
|
||||
}
|
||||
} else if (argument.startsWith("overwrite=") && overwrite == null) {
|
||||
String value = argument.substring("overwrite=".length());
|
||||
if (!"true".equalsIgnoreCase(value) && !"false".equalsIgnoreCase(value)) {
|
||||
return null;
|
||||
}
|
||||
overwrite = Boolean.parseBoolean(value);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
if (rawRequest.startsWith("link=")) {
|
||||
String url = rawRequest.substring("link=".length()).trim();
|
||||
return PackDownloader.isDirectZipUrl(url) ? new DownloadRequest(null, url) : null;
|
||||
}
|
||||
return null;
|
||||
return (pack == null) == (url == null)
|
||||
? null
|
||||
: new DownloadRequest(pack, url, Boolean.TRUE.equals(overwrite));
|
||||
}
|
||||
|
||||
static int metrics(CommandSourceStack source) {
|
||||
@@ -555,6 +573,6 @@ public final class IrisModdedCommands {
|
||||
ModdedCommandFeedback.fail(source, message);
|
||||
}
|
||||
|
||||
record DownloadRequest(String pack, String url) {
|
||||
record DownloadRequest(String pack, String url, boolean overwrite) {
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -70,7 +70,7 @@ final class ModdedCommandHelp {
|
||||
Entry.command("seed", "", ModdedHelpMessages.COMMAND_SEED_PRINT_WORLD_AND_ENGINE_SEED_INFORMATION),
|
||||
Entry.command("debug", "", ModdedHelpMessages.COMMAND_DEBUG_TOGGLE_IRIS_DEBUG_LOGGING_AND_SAVE_SETTINGS_JSON),
|
||||
Entry.command("reload", "", ModdedHelpMessages.COMMAND_RELOAD_RELOAD_SETTINGS_JSON_ALSO_HOTLOADED_AUTOMATICALLY_EVERY_3S),
|
||||
Entry.command("download", "<pack=overworld|pack=underworld|link=<zip-url>>", ModdedHelpMessages.COMMAND_DOWNLOAD_DOWNLOAD_A_PACK_PROJECT, "dl"),
|
||||
Entry.command("download", "<pack=overworld|pack=underworld|link=<zip-url>> [overwrite=true]", ModdedHelpMessages.COMMAND_DOWNLOAD_DOWNLOAD_A_PACK_PROJECT, "dl"),
|
||||
Entry.command("metrics", "", ModdedHelpMessages.COMMAND_METRICS_PRINT_GENERATION_METRICS_FOR_YOUR_CURRENT_IRIS_DIMENSION, "measure"),
|
||||
Entry.command("regen", "[radius]", ModdedHelpMessages.COMMAND_REGEN_DELETE_AND_REGENERATE_NEARBY_CHUNKS_IN_PLACE, "rg"),
|
||||
Entry.group("pregen", ModdedHelpMessages.GROUP_PREGEN_PREGENERATE_AN_IRIS_DIMENSION, "pregenerate"),
|
||||
|
||||
+1
-1
@@ -43,7 +43,7 @@ final class ModdedCommandTree {
|
||||
private static final SuggestionProvider<CommandSourceStack> DOWNLOAD_SOURCES =
|
||||
(context, builder) ->
|
||||
SharedSuggestionProvider.suggest(
|
||||
List.of("pack=overworld", "pack=underworld", "link="),
|
||||
List.of("pack=overworld", "pack=underworld", "link=", "pack=overworld overwrite=true", "pack=underworld overwrite=true"),
|
||||
builder
|
||||
);
|
||||
private static final Predicate<CommandSourceStack> GATE = Commands.hasPermission(Commands.LEVEL_GAMEMASTERS);
|
||||
|
||||
+21
-1
@@ -89,7 +89,27 @@ public class IrisModdedCommandParityTest {
|
||||
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"));
|
||||
assertFalse(overworld.overwrite());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void downloadOverwriteRequiresOneSourceAndAnExplicitBoolean() {
|
||||
IrisModdedCommands.DownloadRequest pack = IrisModdedCommands.parseDownloadRequest("pack=underworld overwrite=true");
|
||||
IrisModdedCommands.DownloadRequest link = IrisModdedCommands.parseDownloadRequest(
|
||||
"overwrite=true link=https://packs.example.test/custom.zip?token=a=b");
|
||||
|
||||
assertNotNull(pack);
|
||||
assertTrue(pack.overwrite());
|
||||
assertEquals("underworld", pack.pack());
|
||||
assertNotNull(link);
|
||||
assertTrue(link.overwrite());
|
||||
assertEquals("https://packs.example.test/custom.zip?token=a=b", link.url());
|
||||
assertFalse(IrisModdedCommands.parseDownloadRequest("pack=overworld overwrite=false").overwrite());
|
||||
assertNull(IrisModdedCommands.parseDownloadRequest("overwrite=true"));
|
||||
assertNull(IrisModdedCommands.parseDownloadRequest("pack=overworld overwrite=yes"));
|
||||
assertNull(IrisModdedCommands.parseDownloadRequest("pack=overworld overwrite=true overwrite=false"));
|
||||
assertNull(IrisModdedCommands.parseDownloadRequest("pack=overworld pack=underworld"));
|
||||
assertNull(IrisModdedCommands.parseDownloadRequest("pack=overworld link=https://packs.example.test/custom.zip"));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in new issue
Block a user