diff --git a/gradle.properties b/gradle.properties index a711cb4..4032e04 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ minecraft_version=1.16.4 yarn_mappings=1.16.4+build.7 loader_version=0.10.8 # Mod Properties -mod_version=1.1.1 +mod_version=1.2.0 maven_group=io.gitlab.jfronny archives_base_name=resclone # Dependencies diff --git a/src/main/java/io/gitlab/jfronny/resclone/Resclone.java b/src/main/java/io/gitlab/jfronny/resclone/Resclone.java index 4efdaff..f527c68 100644 --- a/src/main/java/io/gitlab/jfronny/resclone/Resclone.java +++ b/src/main/java/io/gitlab/jfronny/resclone/Resclone.java @@ -10,11 +10,8 @@ import io.gitlab.jfronny.resclone.fetchers.PackFetcher; import io.gitlab.jfronny.resclone.processors.PackProcessor; import io.gitlab.jfronny.resclone.processors.RemoveEmptyProcessor; import io.gitlab.jfronny.resclone.processors.RootPathProcessor; -import net.fabricmc.api.ClientModInitializer; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; +import net.fabricmc.api.ModInitializer; import net.fabricmc.loader.api.FabricLoader; -import net.minecraft.client.MinecraftClient; import java.io.IOException; import java.net.URI; @@ -24,8 +21,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.*; -@Environment(EnvType.CLIENT) -public class Resclone implements ClientModInitializer, RescloneApi { +public class Resclone implements ModInitializer, RescloneApi { public static final Set conf = new LinkedHashSet<>(); public static final Map fetcherInstances = new LinkedHashMap<>(); public static final Set processors = new LinkedHashSet<>(); @@ -34,7 +30,7 @@ public class Resclone implements ClientModInitializer, RescloneApi { public static final String MOD_ID = "resclone"; @Override - public void onInitializeClient() { + public void onInitialize() { conf.clear(); fetcherInstances.clear(); processors.clear(); @@ -48,7 +44,7 @@ public class Resclone implements ClientModInitializer, RescloneApi { } } addProcessor(new RemoveEmptyProcessor()); - reload(false); + reload(); } @Override @@ -67,7 +63,7 @@ public class Resclone implements ClientModInitializer, RescloneApi { } @Override - public void reload(boolean forceResourceReload) { + public void reload() { //Get paths from patchers. Downloading is implemented in PackFetcher to allow for unconsidered sources //TODO implement downloading again after a set time if downloadable Set metas = new LinkedHashSet<>(); @@ -105,23 +101,24 @@ public class Resclone implements ClientModInitializer, RescloneApi { } catch (Throwable e) { if (!p1.equals(p.zipPath)) { + e.printStackTrace(); System.err.println("Failed to download, using cache"); Files.deleteIfExists(p.zipPath); Files.move(p1, p.zipPath); } else - throw new RescloneException("Failed to download initial"); + throw new RescloneException("Failed to download initial", e); } if (!p1.equals(p.zipPath)) Files.deleteIfExists(p1); metas.add(p); } catch (Throwable e) { + System.err.println("Encountered issue while preparing " + s.name); e.printStackTrace(); } } //Set variable downloadedPacks.clear(); downloadedPacks.addAll(metas); - if (forceResourceReload) MinecraftClient.getInstance().reloadResources(); } @Override diff --git a/src/main/java/io/gitlab/jfronny/resclone/RescloneEntryDefault.java b/src/main/java/io/gitlab/jfronny/resclone/RescloneEntryDefault.java index ca4985d..1151d64 100644 --- a/src/main/java/io/gitlab/jfronny/resclone/RescloneEntryDefault.java +++ b/src/main/java/io/gitlab/jfronny/resclone/RescloneEntryDefault.java @@ -8,6 +8,8 @@ import io.gitlab.jfronny.resclone.fetchers.CurseforgeFetcher; import io.gitlab.jfronny.resclone.fetchers.GithubMasterFetcher; import io.gitlab.jfronny.resclone.fetchers.GithubReleaseFetcher; import io.gitlab.jfronny.resclone.processors.PruneVanillaProcessor; +import net.fabricmc.api.EnvType; +import net.fabricmc.loader.api.FabricLoader; public class RescloneEntryDefault implements RescloneEntry { @Override @@ -16,7 +18,8 @@ public class RescloneEntryDefault implements RescloneEntry { api.addFetcher(new GithubMasterFetcher()); api.addFetcher(new GithubReleaseFetcher()); api.addFetcher(new CurseforgeFetcher()); - api.addProcessor(new PruneVanillaProcessor()); + if (FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT) + api.addProcessor(new PruneVanillaProcessor()); ConfigLoader.load(api); } } diff --git a/src/main/java/io/gitlab/jfronny/resclone/api/RescloneApi.java b/src/main/java/io/gitlab/jfronny/resclone/api/RescloneApi.java index beded48..8020be7 100644 --- a/src/main/java/io/gitlab/jfronny/resclone/api/RescloneApi.java +++ b/src/main/java/io/gitlab/jfronny/resclone/api/RescloneApi.java @@ -9,6 +9,6 @@ public interface RescloneApi { void addFetcher(PackFetcher fetcher); void addProcessor(PackProcessor processor); void addPack(String fetcher, String pack, String name); - void reload(boolean forceResourceReload); + void reload(); Path getConfigPath(); } diff --git a/src/main/java/io/gitlab/jfronny/resclone/fetchers/CurseforgeFetcher.java b/src/main/java/io/gitlab/jfronny/resclone/fetchers/CurseforgeFetcher.java index 9ac035f..27c243a 100644 --- a/src/main/java/io/gitlab/jfronny/resclone/fetchers/CurseforgeFetcher.java +++ b/src/main/java/io/gitlab/jfronny/resclone/fetchers/CurseforgeFetcher.java @@ -16,7 +16,7 @@ public class CurseforgeFetcher extends PackFetcher { JsonObject latest = (JsonObject)readJsonFromURL("https://addons-ecs.forgesvc.net/api/v2/addon/" + baseUrl + "/files", JsonArray.class).get(0); return latest.get("downloadUrl").getAsString(); } catch (Throwable e) { - throw new RescloneException("Could not get CF download", e); + throw new RescloneException("Could not get CF download for " + baseUrl, e); } } } diff --git a/src/main/java/io/gitlab/jfronny/resclone/processors/RemoveEmptyProcessor.java b/src/main/java/io/gitlab/jfronny/resclone/processors/RemoveEmptyProcessor.java index bf7ab1e..aacd7fc 100644 --- a/src/main/java/io/gitlab/jfronny/resclone/processors/RemoveEmptyProcessor.java +++ b/src/main/java/io/gitlab/jfronny/resclone/processors/RemoveEmptyProcessor.java @@ -10,19 +10,21 @@ import java.nio.file.Files; public class RemoveEmptyProcessor extends PackProcessor { @Override public void process(FileSystem p) throws RescloneException { - try { - Files.walkFileTree(p.getPath("/assets"), new PathPruneVisitor(s -> { - if (Files.isDirectory(s)) { - try { - return !Files.newDirectoryStream(s).iterator().hasNext(); - } catch (IOException e) { - e.printStackTrace(); + if (Files.exists(p.getPath("/assets"))) { + try { + Files.walkFileTree(p.getPath("/assets"), new PathPruneVisitor(s -> { + if (Files.isDirectory(s)) { + try { + return !Files.newDirectoryStream(s).iterator().hasNext(); + } catch (IOException e) { + e.printStackTrace(); + } } - } - return false; - })); - } catch (Throwable e) { - throw new RescloneException("Failed to prune empty directories", e); + return false; + })); + } catch (Throwable e) { + throw new RescloneException("Failed to prune empty directories", e); + } } } } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index dd34d8d..202312f 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -12,7 +12,7 @@ "icon": "assets/resclone/icon.png", "environment": "*", "entrypoints": { - "client": [ + "main": [ "io.gitlab.jfronny.resclone.Resclone" ], "resclone": [ diff --git a/src/main/resources/resclone.mixins.json b/src/main/resources/resclone.mixins.json index 9ab6132..d09311d 100644 --- a/src/main/resources/resclone.mixins.json +++ b/src/main/resources/resclone.mixins.json @@ -3,7 +3,7 @@ "minVersion": "0.8", "package": "io.gitlab.jfronny.resclone.mixin", "compatibilityLevel": "JAVA_8", - "client": [ + "mixins": [ "FileResourcePackProviderMixin" ], "injectors": {