mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2026-08-27 12:41:43 +00:00
Object fixes / PS
This commit is contained in:
+26
-11
@@ -38,13 +38,21 @@ public final class ModdedWorkspaceGenerator {
|
||||
}
|
||||
|
||||
public static File writeWorkspace(IrisData data, File folder) throws IOException {
|
||||
JSONObject workspaceConfig = buildWorkspace(data);
|
||||
return writeWorkspace(data, folder, false);
|
||||
}
|
||||
|
||||
public static File writeWorkspace(IrisData data, File folder, boolean immediateSchemas) throws IOException {
|
||||
JSONObject workspaceConfig = buildWorkspace(data, immediateSchemas);
|
||||
File workspace = new File(folder, folder.getName() + ".code-workspace");
|
||||
IO.writeAll(workspace, workspaceConfig.toString(4));
|
||||
return workspace;
|
||||
}
|
||||
|
||||
public static JSONObject buildWorkspace(IrisData data) {
|
||||
return buildWorkspace(data, false);
|
||||
}
|
||||
|
||||
private static JSONObject buildWorkspace(IrisData data, boolean immediateSchemas) {
|
||||
JSONObject ws = new JSONObject();
|
||||
JSONArray folders = new JSONArray();
|
||||
JSONObject folder = new JSONObject();
|
||||
@@ -74,17 +82,17 @@ public final class ModdedWorkspaceGenerator {
|
||||
json.put("editor.suggest.insertMode", "replace");
|
||||
settings.put("[json]", json);
|
||||
settings.put("json.maxItemsComputed", 30000);
|
||||
settings.put("json.schemas", buildSchemas(data));
|
||||
settings.put("json.schemas", buildSchemas(data, immediateSchemas));
|
||||
ws.put("settings", settings);
|
||||
return ws;
|
||||
}
|
||||
|
||||
private static JSONArray buildSchemas(IrisData data) {
|
||||
private static JSONArray buildSchemas(IrisData data, boolean immediateSchemas) {
|
||||
JSONArray schemas = new JSONArray();
|
||||
|
||||
for (ResourceLoader<?> loader : data.getLoaders().v()) {
|
||||
if (loader.supportsSchemas()) {
|
||||
schemas.put(loader.buildSchema());
|
||||
schemas.put(immediateSchemas ? loader.buildSchemaImmediately() : loader.buildSchema());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -102,14 +110,21 @@ public final class ModdedWorkspaceGenerator {
|
||||
entry.put("url", "./.iris/schema/snippet/" + snipType + "-schema.json");
|
||||
schemas.put(entry);
|
||||
File schemaFile = new File(data.getDataFolder(), ".iris/schema/snippet/" + snipType + "-schema.json");
|
||||
J.attemptAsync(() -> {
|
||||
try {
|
||||
IO.writeAll(schemaFile, new SchemaBuilder(snippetClass, data).construct().toString(4));
|
||||
} catch (Throwable e) {
|
||||
IrisLogging.reportError(e);
|
||||
}
|
||||
});
|
||||
if (immediateSchemas) {
|
||||
IO.writeAll(schemaFile, new SchemaBuilder(snippetClass, data).construct().toString(4));
|
||||
} else {
|
||||
J.attemptAsync(() -> {
|
||||
try {
|
||||
IO.writeAll(schemaFile, new SchemaBuilder(snippetClass, data).construct().toString(4));
|
||||
} catch (Throwable e) {
|
||||
IrisLogging.reportError(e);
|
||||
}
|
||||
});
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
if (immediateSchemas) {
|
||||
throw new IllegalStateException("Could not write snippet schema for " + snippetClass.getName(), e);
|
||||
}
|
||||
IrisLogging.reportError(e);
|
||||
}
|
||||
}
|
||||
|
||||
+11
-2
@@ -285,8 +285,8 @@ public final class ModdedStudioCommands {
|
||||
}
|
||||
File workspace;
|
||||
try {
|
||||
workspace = ModdedWorkspaceGenerator.writeWorkspace(IrisData.get(folder), folder);
|
||||
} catch (IOException e) {
|
||||
workspace = ModdedWorkspaceGenerator.writeWorkspace(IrisData.get(folder), folder, open);
|
||||
} catch (Throwable e) {
|
||||
LOGGER.error("Iris workspace write failed for {}", folder, e);
|
||||
IrisModdedCommands.fail(source, IrisLanguage.plain(ModdedCommandMessages.MODDED_STUDIO_COMMANDS_FAILED_WRITE_WORKSPACE, MessageArgument.untrusted("value", folder.getAbsolutePath()), MessageArgument.untrusted("value2", String.valueOf(e.getMessage()))));
|
||||
return 0;
|
||||
@@ -393,6 +393,15 @@ public final class ModdedStudioCommands {
|
||||
server.execute(() -> IrisModdedCommands.fail(source, IrisLanguage.plain(ModdedCommandMessages.MODDED_STUDIO_COMMANDS_PACK_HAS_NO_DIMENSIONS_JSON, MessageArgument.untrusted("pack", pack), MessageArgument.untrusted("pack2", pack))));
|
||||
return;
|
||||
}
|
||||
try {
|
||||
ModdedWorkspaceGenerator.writeWorkspace(data, packFolder, true);
|
||||
} catch (Throwable workspaceError) {
|
||||
LOGGER.error("Iris workspace write failed for {}", packFolder, workspaceError);
|
||||
server.execute(() -> IrisModdedCommands.fail(source, IrisLanguage.plain(
|
||||
ModdedCommandMessages.MODDED_STUDIO_COMMANDS_FAILED_WRITE_WORKSPACE,
|
||||
MessageArgument.untrusted("value", packFolder.getAbsolutePath()),
|
||||
MessageArgument.untrusted("value2", String.valueOf(workspaceError.getMessage())))));
|
||||
}
|
||||
server.execute(() -> {
|
||||
if (owner.equals(CONSOLE_OWNER)) {
|
||||
injectConsole(source, server, dimensionId, pack, seed);
|
||||
|
||||
Reference in New Issue
Block a user