diff --git a/build.gradle b/build.gradle index ee0fd54f..2446f783 100644 --- a/build.gradle +++ b/build.gradle @@ -211,8 +211,13 @@ dependencies { include(implementation 'org.apache.commons:commons-pool2:2.12.0') include(implementation 'org.lz4:lz4-java:1.8.0') compileOnly('org.tukaani:xz:1.10') - minecraftRuntimeLibraries('org.tukaani:xz:1.10') - minecraftRuntimeLibraries('org.xerial:sqlite-jdbc:3.49.1.0') + if (true) { + minecraftRuntimeLibraries('org.tukaani:xz:1.10') + minecraftRuntimeLibraries('org.xerial:sqlite-jdbc:3.49.1.0') + } else { + include(implementation('org.tukaani:xz:1.10')) + include(implementation('org.xerial:sqlite-jdbc:3.49.1.0')) + } //implementation 'org.rocksdb:rocksdbjni:8.10.0' //implementation 'redis.clients:jedis:5.1.0' } diff --git a/src/main/java/me/cortex/voxy/client/VoxyCommands.java b/src/main/java/me/cortex/voxy/client/VoxyCommands.java index ba4a7681..7edaf22d 100644 --- a/src/main/java/me/cortex/voxy/client/VoxyCommands.java +++ b/src/main/java/me/cortex/voxy/client/VoxyCommands.java @@ -25,32 +25,37 @@ import java.util.concurrent.CompletableFuture; public class VoxyCommands { public static LiteralArgumentBuilder register() { + var imports = ClientCommandManager.literal("import") + .then(ClientCommandManager.literal("world") + .then(ClientCommandManager.argument("world_name", StringArgumentType.string()) + .suggests(VoxyCommands::importWorldSuggester) + .executes(VoxyCommands::importWorld))) + .then(ClientCommandManager.literal("bobby") + .then(ClientCommandManager.argument("world_name", StringArgumentType.string()) + .suggests(VoxyCommands::importBobbySuggester) + .executes(VoxyCommands::importBobby))) + .then(ClientCommandManager.literal("raw") + .then(ClientCommandManager.argument("path", StringArgumentType.string()) + .executes(VoxyCommands::importRaw))) + .then(ClientCommandManager.literal("zip") + .then(ClientCommandManager.argument("zipPath", StringArgumentType.string()) + .executes(VoxyCommands::importZip) + .then(ClientCommandManager.argument("innerPath", StringArgumentType.string()) + .executes(VoxyCommands::importZip)))) + .then(ClientCommandManager.literal("cancel") + .executes(VoxyCommands::cancelImport)); + + if (DHImporter.HasRequiredLibraries) { + imports = imports + .then(ClientCommandManager.literal("distant_horizons") + .then(ClientCommandManager.argument("sqlDbPath", StringArgumentType.string()) + .executes(VoxyCommands::importDistantHorizons))); + } + return ClientCommandManager.literal("voxy").requires((ctx)-> VoxyCommon.getInstance() != null) .then(ClientCommandManager.literal("reload") .executes(VoxyCommands::reloadInstance)) - .then(ClientCommandManager.literal("import") - .then(ClientCommandManager.literal("world") - .then(ClientCommandManager.argument("world_name", StringArgumentType.string()) - .suggests(VoxyCommands::importWorldSuggester) - .executes(VoxyCommands::importWorld))) - .then(ClientCommandManager.literal("bobby") - .then(ClientCommandManager.argument("world_name", StringArgumentType.string()) - .suggests(VoxyCommands::importBobbySuggester) - .executes(VoxyCommands::importBobby))) - .then(ClientCommandManager.literal("raw") - .then(ClientCommandManager.argument("path", StringArgumentType.string()) - .executes(VoxyCommands::importRaw))) - .then(ClientCommandManager.literal("zip") - .then(ClientCommandManager.argument("zipPath", StringArgumentType.string()) - .executes(VoxyCommands::importZip) - .then(ClientCommandManager.argument("innerPath", StringArgumentType.string()) - .executes(VoxyCommands::importZip)))) - .then(ClientCommandManager.literal("distant_horizons") - .then(ClientCommandManager.argument("sqlDbPath", StringArgumentType.string()) - .executes(VoxyCommands::importDistantHorizons))) - .then(ClientCommandManager.literal("cancel") - .executes(VoxyCommands::cancelImport)) - ); + .then(imports); } private static int reloadInstance(CommandContext ctx) { diff --git a/src/main/java/me/cortex/voxy/commonImpl/importers/DHImporter.java b/src/main/java/me/cortex/voxy/commonImpl/importers/DHImporter.java index ad57399f..b53823b5 100644 --- a/src/main/java/me/cortex/voxy/commonImpl/importers/DHImporter.java +++ b/src/main/java/me/cortex/voxy/commonImpl/importers/DHImporter.java @@ -376,13 +376,20 @@ public class DHImporter implements IDataImporter { private static VarHandle create(Class viewArrayClass) { return MethodHandles.byteArrayViewVarHandle(viewArrayClass, ByteOrder.BIG_ENDIAN); } + + public static final boolean HasRequiredLibraries; + private static final VarHandle LONG = create(long[].class); static { + boolean hasJDBC = false; try { Class.forName("org.sqlite.JDBC"); + hasJDBC = true; } catch (ClassNotFoundException e) { - throw new RuntimeException(e); + //throw new RuntimeException(e); + Logger.error("Unable to load sqlite JDBC, DHImporting wont be available", e); } + HasRequiredLibraries = hasJDBC; } }