mirror of
https://github.com/PuzzleMC/Puzzle.git
synced 2025-12-16 03:45:10 +01:00
Puzzle 1.1.0 - Use IrisAPI, Deactivatable Integrations, Remove puzzle-blocks
- Use the new Iris API - Builtin mod support is now configurable - Puzzle button in Options screen can be disabled - Remove puzzle-blocks (Already covered by Continuity) - Fix #4 - Fix #5 - Fix #6 - Fix #7
This commit is contained in:
@@ -1,41 +1,25 @@
|
||||
package net.puzzlemc.gui;
|
||||
|
||||
import net.coderbot.iris.Iris;
|
||||
import net.coderbot.iris.config.IrisConfig;
|
||||
import net.coderbot.iris.gui.screen.ShaderPackScreen;
|
||||
import net.fabricmc.loader.api.FabricLoader;
|
||||
import net.irisshaders.iris.api.v0.IrisApi;
|
||||
import net.irisshaders.iris.api.v0.IrisApiConfig;
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
import net.minecraft.client.gui.screen.Screen;
|
||||
import net.minecraft.text.Text;
|
||||
import net.minecraft.text.TranslatableText;
|
||||
import net.puzzlemc.gui.screen.widget.PuzzleWidget;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public class IrisCompat {
|
||||
public static void init() {
|
||||
if (FabricLoader.getInstance().isModLoaded("iris")) {
|
||||
PuzzleApi.addToGraphicsOptions(new PuzzleWidget(Text.of("Iris")));
|
||||
PuzzleApi.addToGraphicsOptions(new PuzzleWidget(Text.of("Enable Shaders"), (button) -> button.setMessage(Iris.getIrisConfig().areShadersEnabled() ? PuzzleClient.YES : PuzzleClient.NO), (button) -> {
|
||||
IrisConfig irisConfig = Iris.getIrisConfig();
|
||||
irisConfig.setShadersEnabled(!irisConfig.areShadersEnabled());
|
||||
try {
|
||||
Iris.getIrisConfig().save();
|
||||
} catch (IOException e) {
|
||||
Iris.logger.error("Error saving configuration file!");
|
||||
Iris.logger.catching(e);
|
||||
}
|
||||
|
||||
try {
|
||||
Iris.reload();
|
||||
} catch (IOException e) {
|
||||
Iris.logger.error("Error reloading shader pack while applying changes!");
|
||||
Iris.logger.catching(e);
|
||||
}
|
||||
PuzzleApi.addToGraphicsOptions(new PuzzleWidget(Text.of("Enable Shaders"), (button) -> button.setMessage(IrisApi.getInstance().getConfig().areShadersEnabled() ? PuzzleClient.YES : PuzzleClient.NO), (button) -> {
|
||||
IrisApiConfig irisConfig = IrisApi.getInstance().getConfig();
|
||||
irisConfig.setShadersEnabledAndApply(!irisConfig.areShadersEnabled());
|
||||
}));
|
||||
PuzzleApi.addToGraphicsOptions(new PuzzleWidget(new TranslatableText("options.iris.shaderPackSelection.title"), (button) -> button.setMessage(Text.of("OPEN")), (button) -> {
|
||||
MinecraftClient client = MinecraftClient.getInstance();
|
||||
ShaderPackScreen shaderPackPage = new ShaderPackScreen(client.currentScreen);
|
||||
client.setScreen(shaderPackPage);
|
||||
client.setScreen((Screen) IrisApi.getInstance().openMainIrisScreenObj(client.currentScreen));
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@ public class PuzzleClient implements ClientModInitializer {
|
||||
|
||||
@Override
|
||||
public void onInitializeClient() {
|
||||
MinecraftClient client = MinecraftClient.getInstance();
|
||||
PuzzleApi.addToMiscOptions(new PuzzleWidget(Text.of("Puzzle")));
|
||||
PuzzleApi.addToMiscOptions(new PuzzleWidget(new TranslatableText("puzzle.option.check_for_updates"), (button) -> button.setMessage(PuzzleConfig.checkUpdates ? YES : NO), (button) -> {
|
||||
PuzzleConfig.checkUpdates = !PuzzleConfig.checkUpdates;
|
||||
@@ -39,8 +40,11 @@ public class PuzzleClient implements ClientModInitializer {
|
||||
PuzzleConfig.showPuzzleInfo = !PuzzleConfig.showPuzzleInfo;
|
||||
PuzzleConfig.write(id);
|
||||
}));
|
||||
PuzzleApi.addToMiscOptions(new PuzzleWidget(new TranslatableText("puzzle.midnightconfig.title"), (button) -> button.setMessage(Text.of("OPEN")), (button) -> {
|
||||
client.setScreen(PuzzleConfig.getScreen(client.currentScreen, "puzzle"));
|
||||
}));
|
||||
PuzzleApi.addToResourceOptions(new PuzzleWidget(Text.of("Puzzle")));
|
||||
if (FabricLoader.getInstance().isModLoaded("puzzle-splashscreen")) {
|
||||
if (FabricLoader.getInstance().isModLoaded("puzzle-splashscreen") && !PuzzleConfig.disabledIntegrations.contains("puzzle-splashscreen")) {
|
||||
PuzzleApi.addToResourceOptions(new PuzzleWidget(new TranslatableText("puzzle.option.resourcepack_splash_screen"), (button) -> button.setMessage(PuzzleConfig.resourcepackSplashScreen ? YES : NO), (button) -> {
|
||||
PuzzleConfig.resourcepackSplashScreen = !PuzzleConfig.resourcepackSplashScreen;
|
||||
PuzzleConfig.write(id);
|
||||
@@ -52,13 +56,13 @@ public class PuzzleClient implements ClientModInitializer {
|
||||
PuzzleConfig.write(id);
|
||||
}));
|
||||
}
|
||||
if (FabricLoader.getInstance().isModLoaded("puzzle-emissives")) {
|
||||
if (FabricLoader.getInstance().isModLoaded("puzzle-emissives") && !PuzzleConfig.disabledIntegrations.contains("puzzle-emissives")) {
|
||||
PuzzleApi.addToResourceOptions(new PuzzleWidget(new TranslatableText("puzzle.option.emissive_textures"), (button) -> button.setMessage(PuzzleConfig.emissiveTextures ? YES : NO), (button) -> {
|
||||
PuzzleConfig.emissiveTextures = !PuzzleConfig.emissiveTextures;
|
||||
PuzzleConfig.write(id);
|
||||
}));
|
||||
}
|
||||
if (FabricLoader.getInstance().isModLoaded("puzzle-models")) {
|
||||
if (FabricLoader.getInstance().isModLoaded("puzzle-models") && !PuzzleConfig.disabledIntegrations.contains("puzzle-models")) {
|
||||
PuzzleApi.addToResourceOptions(new PuzzleWidget(new TranslatableText("puzzle.option.unlimited_model_rotations"), (button) -> button.setMessage(PuzzleConfig.unlimitedRotations ? YES : NO), (button) -> {
|
||||
PuzzleConfig.unlimitedRotations = !PuzzleConfig.unlimitedRotations;
|
||||
PuzzleConfig.write(id);
|
||||
@@ -68,14 +72,7 @@ public class PuzzleClient implements ClientModInitializer {
|
||||
PuzzleConfig.write(id);
|
||||
}));
|
||||
}
|
||||
if (FabricLoader.getInstance().isModLoaded("puzzle-blocks")) {
|
||||
PuzzleApi.addToResourceOptions(new PuzzleWidget(new TranslatableText("puzzle.option.render_layer_overrides"), (button) -> button.setMessage(PuzzleConfig.customRenderLayers ? YES : NO), (button) -> {
|
||||
PuzzleConfig.customRenderLayers = !PuzzleConfig.customRenderLayers;
|
||||
PuzzleConfig.write(id);
|
||||
}));
|
||||
}
|
||||
|
||||
if (FabricLoader.getInstance().isModLoaded("cullleaves")) {
|
||||
if (FabricLoader.getInstance().isModLoaded("cullleaves") && !PuzzleConfig.disabledIntegrations.contains("cullleaves")) {
|
||||
PuzzleApi.addToPerformanceOptions(new PuzzleWidget(Text.of("CullLeaves")));
|
||||
PuzzleApi.addToPerformanceOptions(new PuzzleWidget(Text.of("Cull Leaves"), (button) -> button.setMessage(CullLeavesConfig.enabled ? YES : NO), (button) -> {
|
||||
CullLeavesConfig.enabled = !CullLeavesConfig.enabled;
|
||||
@@ -83,11 +80,11 @@ public class PuzzleClient implements ClientModInitializer {
|
||||
MinecraftClient.getInstance().worldRenderer.reload();
|
||||
}));
|
||||
}
|
||||
if (FabricLoader.getInstance().isModLoaded("iris")) {
|
||||
if (FabricLoader.getInstance().isModLoaded("iris") && !PuzzleConfig.disabledIntegrations.contains("iris")) {
|
||||
IrisCompat.init();
|
||||
}
|
||||
|
||||
if (FabricLoader.getInstance().isModLoaded("continuity")) {
|
||||
if (FabricLoader.getInstance().isModLoaded("continuity") && !PuzzleConfig.disabledIntegrations.contains("continuity")) {
|
||||
PuzzleApi.addToResourceOptions(new PuzzleWidget(Text.of("Continuity")));
|
||||
ContinuityConfig contConfig = ContinuityConfig.INSTANCE;
|
||||
PuzzleApi.addToResourceOptions(new PuzzleWidget(new TranslatableText("options.continuity.disable_ctm"), (button) -> button.setMessage(contConfig.disableCTM.get() ? YES : NO), (button) -> {
|
||||
@@ -104,7 +101,7 @@ public class PuzzleClient implements ClientModInitializer {
|
||||
}
|
||||
public static boolean lateInitDone = false;
|
||||
public static void lateInit() { // Some mods are initialized after Puzzle, so we can't access them in our ClientModInitializer
|
||||
if (FabricLoader.getInstance().isModLoaded("lambdynlights")) {
|
||||
if (FabricLoader.getInstance().isModLoaded("lambdynlights") && !PuzzleConfig.disabledIntegrations.contains("lambdynlights")) {
|
||||
DynamicLightsConfig ldlConfig = LambDynLights.get().config;
|
||||
|
||||
PuzzleApi.addToGraphicsOptions(new PuzzleWidget(Text.of("LambDynamicLights")));
|
||||
@@ -115,7 +112,7 @@ public class PuzzleClient implements ClientModInitializer {
|
||||
PuzzleApi.addToGraphicsOptions(new PuzzleWidget(new TranslatableText("").append("DynLights: ").append(new TranslatableText("block.minecraft.tnt")), (button) -> button.setMessage(ldlConfig.getTntLightingMode().getTranslatedText()), (button) -> ldlConfig.setTntLightingMode(ldlConfig.getTntLightingMode().next())));
|
||||
PuzzleApi.addToGraphicsOptions(new PuzzleWidget(new TranslatableText("").append("DynLights: ").append(new TranslatableText("lambdynlights.option.light_sources.water_sensitive_check")), (button) -> button.setMessage(ldlConfig.getWaterSensitiveCheck().get() ? YES : NO), (button) -> ldlConfig.getWaterSensitiveCheck().set(!ldlConfig.getWaterSensitiveCheck().get())));
|
||||
}
|
||||
if (FabricLoader.getInstance().isModLoaded("citresewn") && CITResewn.INSTANCE != null && CITResewnConfig.INSTANCE() != null) {
|
||||
if (FabricLoader.getInstance().isModLoaded("citresewn") && !PuzzleConfig.disabledIntegrations.contains("citresewn") && CITResewn.INSTANCE != null && CITResewnConfig.INSTANCE() != null) {
|
||||
PuzzleApi.addToResourceOptions(new PuzzleWidget(Text.of("CIT Resewn")));
|
||||
CITResewnConfig citConfig = CITResewnConfig.INSTANCE();
|
||||
PuzzleApi.addToResourceOptions(new PuzzleWidget(new TranslatableText("config.citresewn.enabled.title"), (button) -> button.setMessage(citConfig.enabled ? YES : NO), (button) -> {
|
||||
@@ -145,13 +142,13 @@ public class PuzzleClient implements ClientModInitializer {
|
||||
citConfig.write();
|
||||
}));
|
||||
}
|
||||
if (FabricLoader.getInstance().isModLoaded("lambdabettergrass")) {
|
||||
if (FabricLoader.getInstance().isModLoaded("lambdabettergrass") && !PuzzleConfig.disabledIntegrations.contains("lambdabettergrass")) {
|
||||
LBGConfig lbgConfig = LambdaBetterGrass.get().config;
|
||||
PuzzleApi.addToGraphicsOptions(new PuzzleWidget(Text.of("LambdaBetterGrass")));
|
||||
PuzzleApi.addToGraphicsOptions(new PuzzleWidget(new TranslatableText("lambdabettergrass.option.mode"), (button) -> button.setMessage(lbgConfig.getMode().getTranslatedText()), (button) -> lbgConfig.setMode(lbgConfig.getMode().next())));
|
||||
PuzzleApi.addToGraphicsOptions(new PuzzleWidget(new TranslatableText("lambdabettergrass.option.better_snow"), (button) -> button.setMessage(lbgConfig.hasBetterLayer() ? YES : NO), (button) -> lbgConfig.setBetterLayer(!lbgConfig.hasBetterLayer())));
|
||||
}
|
||||
if (FabricLoader.getInstance().isModLoaded("cem") && FabricLoader.getInstance().isModLoaded("completeconfig")) {
|
||||
if (FabricLoader.getInstance().isModLoaded("cem") && FabricLoader.getInstance().isModLoaded("completeconfig") && !PuzzleConfig.disabledIntegrations.contains("cem")) {
|
||||
PuzzleApi.addToResourceOptions(new PuzzleWidget(Text.of("Custom Entity Models")));
|
||||
CemConfig cemConfig = (CemConfig) CemConfigFairy.getConfig();
|
||||
CemOptions cemOptions = CemConfigFairy.getConfig();
|
||||
|
||||
@@ -11,8 +11,12 @@ import java.util.Map;
|
||||
|
||||
@Environment(EnvType.CLIENT)
|
||||
public class ModMenuIntegration implements ModMenuApi {
|
||||
@Override
|
||||
public ConfigScreenFactory<?> getModConfigScreenFactory() {
|
||||
return PuzzleOptionsScreen::new;
|
||||
}
|
||||
|
||||
//Used to set the config screen for all modules //
|
||||
//Used to set the config screen for all modules //
|
||||
@Override
|
||||
public Map<String, ConfigScreenFactory<?>> getProvidedConfigScreenFactories() {
|
||||
Map<String, ConfigScreenFactory<?>> map = new HashMap<>();
|
||||
@@ -21,7 +25,7 @@ public class ModMenuIntegration implements ModMenuApi {
|
||||
map.put("puzzle-blocks",PuzzleOptionsScreen::new);
|
||||
map.put("puzzle-base",PuzzleOptionsScreen::new);
|
||||
map.put("puzzle-models",PuzzleOptionsScreen::new);
|
||||
map.put("puzzle-randomentities",PuzzleOptionsScreen::new);
|
||||
map.put("puzzle-emissives",PuzzleOptionsScreen::new);
|
||||
map.put("puzzle-splashscreen",PuzzleOptionsScreen::new);
|
||||
return map;
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package net.puzzlemc.gui.mixin;
|
||||
|
||||
import eu.midnightdust.lib.util.screen.TexturedOverlayButtonWidget;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.puzzlemc.core.config.PuzzleConfig;
|
||||
import net.puzzlemc.gui.PuzzleClient;
|
||||
import net.puzzlemc.gui.screen.PuzzleOptionsScreen;
|
||||
import net.minecraft.client.gui.screen.Screen;
|
||||
@@ -25,6 +26,7 @@ public abstract class MixinOptionsScreen extends Screen {
|
||||
|
||||
@Inject(at = @At("HEAD"), method = "init")
|
||||
private void midnightlib$init(CallbackInfo ci) {
|
||||
if (PuzzleConfig.enablePuzzleButton)
|
||||
this.addDrawableChild(new TexturedOverlayButtonWidget(this.width / 2 - 178, this.height / 6 - 12, 20, 20, 0, 0, 20, PUZZLE_ICON_TEXTURE, 32, 64, (buttonWidget) -> (Objects.requireNonNull(this.client)).setScreen(new PuzzleOptionsScreen(this)), new TranslatableText("midnightlib.overview.title")));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user