feat: add keybind for quickly toggling the mod if FAPI is present

This commit is contained in:
Johannes Frohnmeyer 2024-02-12 09:19:42 +01:00
parent e1d19df4c1
commit e1be8aeed9
Signed by: Johannes
GPG Key ID: E76429612C2929F4
4 changed files with 50 additions and 2 deletions

View File

@ -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")
}

View File

@ -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();
}
});
}
}

View File

@ -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"
}

View File

@ -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": [
{