Quick hack to "fix" DashLoader
This commit is contained in:
parent
ae2e2276bc
commit
649ca78d6c
19
build.gradle
19
build.gradle
@ -7,6 +7,12 @@ repositories {
|
||||
maven { url = 'https://server.bbkr.space/artifactory/libs-release'; name = "Required for canvas" }
|
||||
maven { url = "https://minecraft.curseforge.com/api/maven"; name = "CurseForge (for canvas)" }
|
||||
maven { url = "https://jitpack.io"; name = "jitpack (for StarScript)" }
|
||||
maven {
|
||||
url "https://oskarstrom.net/maven"
|
||||
content {
|
||||
includeGroup "net.oskarstrom"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
@ -14,17 +20,22 @@ dependencies {
|
||||
mappings "net.fabricmc:yarn:${project.minecraft_version}+${project.yarn_mappings}:v2"
|
||||
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
|
||||
|
||||
modImplementation "net.fabricmc.fabric-api:fabric-api:0.38.2+1.17"
|
||||
modImplementation "net.fabricmc.fabric-api:fabric-api:0.39.2+1.17"
|
||||
modImplementation "com.terraformersmc:modmenu:2.0.5"
|
||||
download("https://gitlab.com/jfmods/LibJF/-/jobs/artifacts/master/raw/latest-dev.jar?job=build_test", "libjf")
|
||||
include modImplementation("com.github.MeteorDevelopment:starscript:0.1.5")
|
||||
modApi("me.shedaniel.cloth:cloth-config-fabric:5.0.38")
|
||||
modCompileOnly "grondag:frex-mc117:+"
|
||||
modRuntime("grondag:canvas-mc117-1.17:+") {
|
||||
exclude(group: "me.shedaniel.cloth")
|
||||
}
|
||||
//modRuntime("grondag:canvas-mc117-1.17:+") {
|
||||
// exclude(group: "me.shedaniel.cloth")
|
||||
//}
|
||||
|
||||
testImplementation('org.junit.jupiter:junit-jupiter:5.6.2')
|
||||
|
||||
//DashLoader "compatibility"
|
||||
modImplementation ('net.oskarstrom:DashLoader:2.1-dev7') {
|
||||
exclude group: 'net.fabricmc.fabric-api'
|
||||
}
|
||||
}
|
||||
|
||||
test {
|
||||
|
@ -1,5 +1,6 @@
|
||||
package io.gitlab.jfronny.respackopts;
|
||||
|
||||
import io.gitlab.jfronny.respackopts.integration.dashloader.DashLoaderCompat;
|
||||
import io.gitlab.jfronny.respackopts.data.entry.ConfigBranch;
|
||||
import io.gitlab.jfronny.respackopts.data.entry.ConfigEntry;
|
||||
import me.shedaniel.clothconfig2.api.AbstractConfigListEntry;
|
||||
@ -58,6 +59,7 @@ public class GuiFactory {
|
||||
builder.setSavingRunnable(() -> {
|
||||
Respackopts.save();
|
||||
Respackopts.forceRespackReload = true;
|
||||
DashLoaderCompat.forceReload = true;
|
||||
Respackopts.reloadData();
|
||||
});
|
||||
ConfigCategory config = builder.getOrCreateCategory(getText(resourcepackid, source.getVersion() < 4 ? "respackopts.title" : "rpo"));
|
||||
|
@ -3,6 +3,7 @@ package io.gitlab.jfronny.respackopts;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import io.gitlab.jfronny.libjf.data.WrappedPack;
|
||||
import io.gitlab.jfronny.respackopts.integration.dashloader.DashLoaderCompat;
|
||||
import io.gitlab.jfronny.respackopts.data.DirRpo;
|
||||
import io.gitlab.jfronny.respackopts.data.PackCapability;
|
||||
import io.gitlab.jfronny.respackopts.data.Respackmeta;
|
||||
@ -53,6 +54,8 @@ public class Respackopts implements ClientModInitializer {
|
||||
|
||||
public static Starscript STAR_SCRIPT;
|
||||
|
||||
public static final Boolean DASHLOADER_PRESENT = FabricLoader.getInstance().isModLoaded("dashloader");
|
||||
|
||||
public static final Gson GSON;
|
||||
public static GuiFactory factory = new GuiFactory();
|
||||
public static boolean forceRespackReload = false;
|
||||
@ -98,6 +101,7 @@ public class Respackopts implements ClientModInitializer {
|
||||
} catch (IOException e) {
|
||||
LOGGER.error("Could not initialize config directory", e);
|
||||
}
|
||||
if (DASHLOADER_PRESENT) DashLoaderCompat.hookDashLoader();
|
||||
if (FabricLoader.getInstance().isDevelopmentEnvironment())
|
||||
SAVE_ACTIONS.add(() -> LOGGER.info("Save"));
|
||||
SAVE_ACTIONS.add(() -> {
|
||||
|
@ -3,6 +3,7 @@ package io.gitlab.jfronny.respackopts.integration;
|
||||
import com.terraformersmc.modmenu.api.ConfigScreenFactory;
|
||||
import com.terraformersmc.modmenu.api.ModMenuApi;
|
||||
import io.gitlab.jfronny.respackopts.Respackopts;
|
||||
import io.gitlab.jfronny.respackopts.integration.dashloader.DashLoaderCompat;
|
||||
import me.shedaniel.clothconfig2.api.ConfigBuilder;
|
||||
import me.shedaniel.clothconfig2.api.ConfigCategory;
|
||||
import me.shedaniel.clothconfig2.api.ConfigEntryBuilder;
|
||||
@ -23,6 +24,7 @@ public class ModMenuCompat implements ModMenuApi {
|
||||
ConfigEntryBuilder entryBuilder = builder.entryBuilder();
|
||||
builder.setSavingRunnable(() -> {
|
||||
Respackopts.save();
|
||||
DashLoaderCompat.forceReload = true;
|
||||
Respackopts.forceReloadResources();
|
||||
});
|
||||
AtomicBoolean categoryAdded = new AtomicBoolean(false);
|
||||
|
@ -0,0 +1,19 @@
|
||||
package io.gitlab.jfronny.respackopts.integration.dashloader;
|
||||
|
||||
import net.oskarstrom.dashloader.DashLoader;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
public class DashLoaderCompat {
|
||||
public static boolean forceReload = false;
|
||||
|
||||
public static void hookDashLoader() {
|
||||
try {
|
||||
Field instance = DashLoader.class.getDeclaredField("instance");
|
||||
instance.setAccessible(true);
|
||||
instance.set(null, new HackedDashLoader((DashLoader) instance.get(null)));
|
||||
} catch (NoSuchFieldException | IllegalAccessException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
package io.gitlab.jfronny.respackopts.integration.dashloader;
|
||||
|
||||
import net.oskarstrom.dashloader.DashLoader;
|
||||
import net.oskarstrom.dashloader.util.enums.DashCachePaths;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.util.Collection;
|
||||
|
||||
public class HackedDashLoader extends DashLoader {
|
||||
public HackedDashLoader(DashLoader previous) {
|
||||
super(previous.getAssignedClassLoader().getParent());
|
||||
initialize();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reload(Collection<String> resourcePacks) {
|
||||
if (DashLoaderCompat.forceReload)
|
||||
for (DashCachePaths value : DashCachePaths.values()) {
|
||||
try {
|
||||
Files.deleteIfExists(value.getPath());
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
super.reload(resourcePacks);
|
||||
DashLoaderCompat.forceReload = false;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user