diff --git a/build.gradle.kts b/build.gradle.kts index 7044edb..5cb9f1c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -28,9 +28,13 @@ dependencies { modImplementation("io.gitlab.jfronny.libjf:libjf-config-core-v2:${jfMod.libJfVersion.get()}") modImplementation("io.gitlab.jfronny.libjf:libjf-translate-v1:${jfMod.libJfVersion.get()}") include(modImplementation(fabricApi.module("fabric-message-api-v1", fabricVersion))!!) + // Keybind + modCompileOnly(fabricApi.module("fabric-key-binding-api-v1", fabricVersion)) + modCompileOnly(fabricApi.module("fabric-lifecycle-events-v1", fabricVersion)) // Dev env modLocalRuntime("io.gitlab.jfronny.libjf:libjf-config-ui-tiny:${jfMod.libJfVersion.get()}") modLocalRuntime("io.gitlab.jfronny.libjf:libjf-devutil:${jfMod.libJfVersion.get()}") + modLocalRuntime(fabricApi.module("fabric-resource-loader-v0", fabricVersion)) modLocalRuntime("com.terraformersmc:modmenu:9.0.0-pre.1") } diff --git a/src/client/java/io/gitlab/jfronny/googlechat/client/GoogleChatClient.java b/src/client/java/io/gitlab/jfronny/googlechat/client/GoogleChatClient.java new file mode 100644 index 0000000..39381cd --- /dev/null +++ b/src/client/java/io/gitlab/jfronny/googlechat/client/GoogleChatClient.java @@ -0,0 +1,41 @@ +package io.gitlab.jfronny.googlechat.client; + +import io.gitlab.jfronny.googlechat.GoogleChat; +import io.gitlab.jfronny.googlechat.GoogleChatConfig; +import io.gitlab.jfronny.libjf.config.api.v2.ConfigHolder; +import io.gitlab.jfronny.libjf.config.api.v2.ConfigInstance; +import net.fabricmc.api.ClientModInitializer; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; +import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.client.option.KeyBinding; +import net.minecraft.client.util.InputUtil; +import org.jetbrains.annotations.NotNull; + +public class GoogleChatClient implements ClientModInitializer { + @Override + public void onInitializeClient() { + ConfigInstance ci = ConfigHolder.getInstance().get(GoogleChat.MOD_ID); + if (ci != null + && FabricLoader.getInstance().isModLoaded("fabric-key-binding-api-v1") + && FabricLoader.getInstance().isModLoaded("fabric-lifecycle-events-v1")) { + setupKeybind(ci); + } + } + + private static void setupKeybind(@NotNull ConfigInstance ci) { + // Factored out to prevent loading classes if mods are not present + KeyBinding keyBinding = KeyBindingHelper.registerKeyBinding(new KeyBinding( + "key." + GoogleChat.MOD_ID + ".toggle", + InputUtil.Type.KEYSYM, + -1, + KeyBinding.MULTIPLAYER_CATEGORY + )); + ClientTickEvents.END_CLIENT_TICK.register(client -> { + if (keyBinding.wasPressed()) { + GoogleChatConfig.General.enabled = !GoogleChatConfig.General.enabled; + ci.write(); + } + }); + } +} diff --git a/src/main/resources/assets/google-chat/lang/en_us.json b/src/main/resources/assets/google-chat/lang/en_us.json index 0c88b47..da6f6eb 100644 --- a/src/main/resources/assets/google-chat/lang/en_us.json +++ b/src/main/resources/assets/google-chat/lang/en_us.json @@ -29,5 +29,7 @@ "google-chat.jfconfig.advanced.debugLogs.tooltips": "Log additional information about message processing. Useful for debugging", "google-chat.jfconfig.client": "Client", - "google-chat.jfconfig.server": "Server" + "google-chat.jfconfig.server": "Server", + + "key.google-chat.toggle": "Toggle GoogleChat" } \ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index d7f0d8b..dd8ce8c 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -17,7 +17,8 @@ "entrypoints": { "libjf:config": ["io.gitlab.jfronny.googlechat.JFC_GoogleChatConfig"], "server": ["io.gitlab.jfronny.googlechat.server.GoogleChatServer"], - "main": ["io.gitlab.jfronny.googlechat.GoogleChat"] + "main": ["io.gitlab.jfronny.googlechat.GoogleChat"], + "client": ["io.gitlab.jfronny.googlechat.client.GoogleChatClient"] }, "mixins": [ {