This commit is contained in:
JFronny 2020-11-25 21:58:21 +01:00
parent b638df9fa6
commit 3ae53a4200
8 changed files with 52 additions and 23 deletions

View File

@ -12,6 +12,8 @@ group = project.maven_group
repositories {
maven { url = 'https://server.bbkr.space/artifactory/libs-release'; name = "Cotton" }
maven { url = "https://maven.dblsaiko.net/"; name = "dblsaiko" }
maven { url = "https://minecraft.curseforge.com/api/maven"; name = "CurseForge" }
}
dependencies {
@ -34,6 +36,8 @@ dependencies {
}
modApi "io.github.cottonmc:LibCD:3.0.3+1.16.3"
modCompile "grondag:frex-mc116:4.0+"
modCompile "grondag:canvas-mc116:1.0.+"
}
processResources {

View File

@ -42,7 +42,6 @@ public class GuiFactory {
config.addEntry(entryBuilder.startBooleanToggle(getText(n, b), currentValue)
.setDefaultValue(defaultValue)
.setSaveConsumer(v -> {
Respackopts.updateShaders();
Respackopts.boolVals.get(screenId).put(n, v);
})
.build());
@ -57,7 +56,6 @@ public class GuiFactory {
config.addEntry(entryBuilder.startDoubleField(getText(n, b), currentValue)
.setDefaultValue(defaultValue)
.setSaveConsumer(v -> {
Respackopts.updateShaders();
Respackopts.numVals.get(screenId).put(n, v);
})
.build());
@ -72,7 +70,6 @@ public class GuiFactory {
config.addEntry(entryBuilder.startStrField(getText(n, b), currentValue)
.setDefaultValue(defaultValue)
.setSaveConsumer(v -> {
Respackopts.updateShaders();
Respackopts.strVals.get(screenId).put(n, v);
})
.build());
@ -84,14 +81,18 @@ public class GuiFactory {
}
}
public Screen buildGui(JsonObject source, String resourcepackid, Screen parent, Runnable respackReload) {
public Screen buildGui(JsonObject source, String resourcepackid, Screen parent) {
try {
ConfigBuilder builder;
builder = ConfigBuilder.create()
.setParentScreen(parent)
.setTitle(getText(resourcepackid, "respackopts.title"));
ConfigEntryBuilder entryBuilder = builder.entryBuilder();
builder.setSavingRunnable(respackReload);
builder.setSavingRunnable(() -> {
System.out.println("Save");
Respackopts.updateShaders();
Respackopts.save();
});
ConfigCategory config = builder.getOrCreateCategory(getText(resourcepackid, "respackopts.category"));
buildCategory(source, resourcepackid, config, entryBuilder);
return builder.build();

View File

@ -19,7 +19,7 @@ public class MMI implements ModMenuApi {
.setTitle(new TranslatableText("respackopts.mainconfig"));
ConfigEntryBuilder entryBuilder = builder.entryBuilder();
builder.setSavingRunnable(() -> {
//TODO implement reload
Respackopts.updateShaders();
Respackopts.save();
});
Respackopts.resPackMetas.forEach((s, v) -> {

View File

@ -12,6 +12,8 @@ import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.HashMap;
import java.util.HashSet;
import java.util.function.Consumer;
@Environment(EnvType.CLIENT)
public class Respackopts implements ClientModInitializer {
@ -24,10 +26,13 @@ public class Respackopts implements ClientModInitializer {
public static HashMap<String, Respackmeta> resPackMetas = new HashMap<>();
public static final String ID = "respackopts";
static final Path p = FabricLoader.getInstance().getConfigDir().resolve("respackopts");
public static final HashSet<Consumer<String>> shaderConsumers = new HashSet<>();
@Override
public void onInitializeClient() {
load();
Respackopts.updateShaders();
if (FabricLoader.getInstance().isDevelopmentEnvironment())
shaderConsumers.add(System.out::println);
}
public static void save() {
@ -114,6 +119,8 @@ public class Respackopts implements ClientModInitializer {
sb.append(s1);
}
}));
System.out.println(sb.toString());
for (Consumer<String> consumer : shaderConsumers) {
consumer.accept(sb.toString());
}
}
}

View File

@ -0,0 +1,26 @@
package io.gitlab.jfronny.respackopts.integration;
import grondag.frex.FrexInitializer;
import grondag.frex.api.config.ShaderConfig;
import io.gitlab.jfronny.respackopts.Respackopts;
import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.util.Identifier;
public class FrexCompat implements FrexInitializer {
String currentShaderCode = "";
@Override
public void onInitalizeFrex() {
System.out.println("[respackopts] enabling canvas support");
ShaderConfig.registerShaderConfigSupplier(new Identifier(Respackopts.ID, "config_supplier"), () -> currentShaderCode);
Respackopts.shaderConsumers.add((s) -> {
currentShaderCode = s;
try {
ShaderConfig.invalidateShaderConfig();
}
catch (Throwable e) {
if (FabricLoader.getInstance().isDevelopmentEnvironment())
e.printStackTrace();
}
});
}
}

View File

@ -1,8 +1,9 @@
package io.gitlab.jfronny.respackopts;
package io.gitlab.jfronny.respackopts.integration;
import io.github.cottonmc.libcd.api.CDSyntaxError;
import io.github.cottonmc.libcd.api.condition.ConditionManager;
import io.github.cottonmc.libcd.api.init.ConditionInitializer;
import io.gitlab.jfronny.respackopts.Respackopts;
import net.minecraft.util.Identifier;
import java.util.HashMap;

View File

@ -1,23 +1,14 @@
package io.gitlab.jfronny.respackopts.mixin;
import com.mojang.blaze3d.systems.RenderSystem;
import io.github.prospector.modmenu.ModMenu;
import io.github.prospector.modmenu.gui.ModListEntry;
import io.github.prospector.modmenu.gui.ModMenuTexturedButtonWidget;
import io.github.prospector.modmenu.gui.ModsScreen;
import io.gitlab.jfronny.respackopts.Respackopts;
import io.gitlab.jfronny.respackopts.TexturedButtonWidget;
import io.gitlab.jfronny.respackopts.data.Respackmeta;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.DrawableHelper;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screen.pack.PackListWidget;
import net.minecraft.client.gui.screen.pack.ResourcePackOrganizer;
import net.minecraft.client.gui.widget.AlwaysSelectedEntryListWidget;
import net.minecraft.client.gui.widget.ButtonWidget;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.resource.ResourceManager;
import net.minecraft.text.TranslatableText;
import net.minecraft.util.Identifier;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
@ -27,8 +18,6 @@ import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import java.util.Objects;
@Mixin(PackListWidget.ResourcePackEntry.class)
public abstract class ResourcePackEntryMixin extends AlwaysSelectedEntryListWidget.Entry<PackListWidget.ResourcePackEntry> {
@Shadow private PackListWidget widget;
@ -57,9 +46,7 @@ public abstract class ResourcePackEntryMixin extends AlwaysSelectedEntryListWidg
if (Respackopts.resPackMetas.containsKey(k) && respackopts$selected) {
Respackmeta meta = Respackopts.resPackMetas.get(k);
MinecraftClient c = MinecraftClient.getInstance();
c.openScreen(Respackopts.factory.buildGui(meta.conf, meta.id, c.currentScreen, () -> {
Respackopts.save();
}));
c.openScreen(Respackopts.factory.buildGui(meta.conf, meta.id, c.currentScreen));
}
//TODO mark resource packs as changed if config modified
}

View File

@ -19,7 +19,10 @@
"io.gitlab.jfronny.respackopts.MMI"
],
"libcd:conditions": [
"io.gitlab.jfronny.respackopts.LibCDCompat"
"io.gitlab.jfronny.respackopts.integration.LibCDCompat"
],
"frex": [
"io.gitlab.jfronny.respackopts.integration.FrexCompat"
]
},
"mixins": [