Frex
This commit is contained in:
parent
b638df9fa6
commit
3ae53a4200
@ -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 {
|
||||
|
@ -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();
|
||||
|
@ -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) -> {
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
@ -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;
|
@ -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
|
||||
}
|
||||
|
@ -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": [
|
||||
|
Loading…
Reference in New Issue
Block a user