Skip to content

Commit 435ea50

Browse files
committed
Use cassette-deck to download data files rather than bundling
Sketchy implementation atm, better will follow - this "works" as-is without any special handling of missing versions. Intention is to get the "next closest version" when it's not available
1 parent d338165 commit 435ea50

File tree

11 files changed

+25
-19
lines changed

11 files changed

+25
-19
lines changed

worldedit-cli/src/main/java/com/sk89q/worldedit/cli/data/FileRegistries.java

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,25 @@
1919

2020
package com.sk89q.worldedit.cli.data;
2121

22-
import com.google.common.io.Resources;
2322
import com.google.gson.Gson;
2423
import com.google.gson.GsonBuilder;
2524
import com.sk89q.worldedit.WorldEdit;
2625
import com.sk89q.worldedit.cli.CLIWorldEdit;
27-
import com.sk89q.worldedit.extension.platform.Capability;
28-
import com.sk89q.worldedit.util.io.ResourceLoader;
26+
import com.sk89q.worldedit.util.io.Closer;
2927

28+
import java.io.FileOutputStream;
3029
import java.io.IOException;
3130
import java.net.URL;
32-
import java.nio.charset.StandardCharsets;
31+
import java.nio.channels.Channels;
32+
import java.nio.channels.ReadableByteChannel;
33+
import java.nio.file.Files;
34+
import java.nio.file.Path;
3335

3436
public class FileRegistries {
3537

38+
private static final int CLI_DATA_VERSION = 1;
39+
private static final String DATA_FILE_DOWNLOAD_URL = "https://services.enginehub.org/cassette-deck/we-cli-data/";
40+
3641
private final CLIWorldEdit app;
3742
private final Gson gson = new GsonBuilder().create();
3843

@@ -43,12 +48,23 @@ public FileRegistries(CLIWorldEdit app) {
4348
}
4449

4550
public void loadDataFiles() {
46-
ResourceLoader resourceLoader = WorldEdit.getInstance().getPlatformManager().queryCapability(Capability.CONFIGURATION).getResourceLoader();
47-
try {
48-
URL url = resourceLoader.getResource(FileRegistries.class, app.getPlatform().getDataVersion() + ".json");
49-
this.dataFile = gson.fromJson(Resources.toString(url, StandardCharsets.UTF_8), DataFile.class);
51+
Path outputFolder = WorldEdit.getInstance().getWorkingDirectoryPath("cli-data");
52+
Path checkPath = outputFolder.resolve(app.getPlatform().getDataVersion() + "_" + CLI_DATA_VERSION + ".json");
53+
54+
try(Closer closer = Closer.create()) {
55+
Files.createDirectories(outputFolder);
56+
57+
if (!Files.exists(checkPath)) {
58+
URL url = new URL(DATA_FILE_DOWNLOAD_URL + app.getPlatform().getDataVersion() + "/" + CLI_DATA_VERSION);
59+
ReadableByteChannel readableByteChannel = Channels.newChannel(url.openStream());
60+
61+
FileOutputStream fileOutputStream = closer.register(new FileOutputStream(checkPath.toFile()));
62+
fileOutputStream.getChannel().transferFrom(readableByteChannel, 0, Long.MAX_VALUE);
63+
}
64+
65+
this.dataFile = gson.fromJson(Files.readString(checkPath), DataFile.class);
5066
} catch (IOException e) {
51-
throw new RuntimeException("The provided file is not compatible with this version of WorldEdit-CLI. Please update or report this.");
67+
throw new RuntimeException("The provided file is not compatible with this version of WorldEdit-CLI. Please update or report this.", e);
5268
}
5369
}
5470

worldedit-cli/src/main/resources/com/sk89q/worldedit/cli/data/1631.json

Lines changed: 0 additions & 1 deletion
This file was deleted.

worldedit-cli/src/main/resources/com/sk89q/worldedit/cli/data/1963.json

Lines changed: 0 additions & 1 deletion
This file was deleted.

worldedit-cli/src/main/resources/com/sk89q/worldedit/cli/data/1968.json

Lines changed: 0 additions & 1 deletion
This file was deleted.

worldedit-cli/src/main/resources/com/sk89q/worldedit/cli/data/1976.json

Lines changed: 0 additions & 1 deletion
This file was deleted.

worldedit-cli/src/main/resources/com/sk89q/worldedit/cli/data/2225.json

Lines changed: 0 additions & 1 deletion
This file was deleted.

worldedit-cli/src/main/resources/com/sk89q/worldedit/cli/data/2230.json

Lines changed: 0 additions & 1 deletion
This file was deleted.

worldedit-cli/src/main/resources/com/sk89q/worldedit/cli/data/2567.json

Lines changed: 0 additions & 1 deletion
This file was deleted.

worldedit-cli/src/main/resources/com/sk89q/worldedit/cli/data/2578.json

Lines changed: 0 additions & 1 deletion
This file was deleted.

worldedit-cli/src/main/resources/com/sk89q/worldedit/cli/data/2724.json

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)