diff --git a/.idea/modules.xml b/.idea/modules.xml
index 119e8f5e..90f60140 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -4,9 +4,10 @@
+
+
-
diff --git a/.idea/modules/cyberflame.IdeaProjects.viewmodel-changer.main.iml b/.idea/modules/cyberflame.IdeaProjects.viewmodel-changer.main.iml
new file mode 100644
index 00000000..10551296
--- /dev/null
+++ b/.idea/modules/cyberflame.IdeaProjects.viewmodel-changer.main.iml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+ FABRIC
+ MIXIN
+ MCP
+
+ 1
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules/cyberflame.IdeaProjects.viewmodel-changer.test.iml b/.idea/modules/cyberflame.IdeaProjects.viewmodel-changer.test.iml
new file mode 100644
index 00000000..10551296
--- /dev/null
+++ b/.idea/modules/cyberflame.IdeaProjects.viewmodel-changer.test.iml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+ FABRIC
+ MIXIN
+ MCP
+
+ 1
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/Minecraft_Server.xml b/.idea/runConfigurations/Minecraft_Server.xml
index 49c9e738..60834613 100644
--- a/.idea/runConfigurations/Minecraft_Server.xml
+++ b/.idea/runConfigurations/Minecraft_Server.xml
@@ -12,5 +12,5 @@
-
+
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
index e9b92349..f86ef3e6 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -5,9 +5,9 @@ org.gradle.jvmargs=-Xmx4G
# check these on https://modmuss50.me/fabric.html
minecraft_version=1.21.1
yarn_mappings=1.21.1+build.3
-loader_version=0.16.5
+loader_version=0.16.7
# Mod Properties
-mod_version=1.10.2
+mod_version=1.10.3
maven_group=net.cyberflame
archives_base_name=viewmodel
# Dependencies
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index 2c352119..a4b76b95 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/settings.gradle b/settings.gradle
index 0613a5bb..b02216ba 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,6 +1,5 @@
pluginManagement {
repositories {
- jcenter()
maven {
name = 'Fabric'
url = 'https://maven.fabricmc.net/'
diff --git a/src/main/java/net/cyberflame/viewmodel/Viewmodel.java b/src/main/java/net/cyberflame/viewmodel/Viewmodel.java
index 057c60d1..7b3eebf2 100644
--- a/src/main/java/net/cyberflame/viewmodel/Viewmodel.java
+++ b/src/main/java/net/cyberflame/viewmodel/Viewmodel.java
@@ -2,14 +2,20 @@
import net.cyberflame.viewmodel.config.LoadConfig;
import net.cyberflame.viewmodel.config.SaveConfig;
+import net.cyberflame.viewmodel.gui.ViewmodelScreen;
import net.cyberflame.viewmodel.settings.Setting;
import net.cyberflame.viewmodel.settings.SettingType;
import net.fabricmc.api.ModInitializer;
+import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
+import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper;
+import net.minecraft.client.option.KeyBinding;
+import net.minecraft.client.util.InputUtil;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
+import org.lwjgl.glfw.GLFW;
import java.io.IOException;
import java.util.ArrayList;
@@ -25,6 +31,7 @@ public class Viewmodel implements ModInitializer {
private static final List> SETTINGS = Arrays.stream(SettingType.values())
.map(SettingType::getSetting)
.collect(Collectors.toList());
+ private static KeyBinding keyBinding;
@Contract(value = " -> new", pure = true)
public static @NotNull List> getSettings() {
@@ -45,6 +52,16 @@ public final void onInitialize() {
} catch (IOException e) {
LOGGER.error("Failed to load settings!", e);
}
+ keyBinding = KeyBindingHelper.registerKeyBinding(
+ new KeyBinding("key.viewmodel.open", InputUtil.Type.KEYSYM,
+ GLFW.GLFW_KEY_BACKSLASH, "category.viewmodel.menu"));
+ ClientTickEvents.END_CLIENT_TICK.register(client -> {
+ while (keyBinding.wasPressed()) {
+ if (client.world != null) {
+ client.setScreen(new ViewmodelScreen());
+ }
+ }
+ });
getRuntime().addShutdownHook(new Thread(SaveConfig::saveAllSettings));
}
diff --git a/src/main/java/net/cyberflame/viewmodel/mixin/MixinKeyboard.java b/src/main/java/net/cyberflame/viewmodel/mixin/MixinKeyboard.java
deleted file mode 100644
index 1ecce513..00000000
--- a/src/main/java/net/cyberflame/viewmodel/mixin/MixinKeyboard.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package net.cyberflame.viewmodel.mixin;
-
-import net.cyberflame.viewmodel.gui.ViewmodelScreen;
-import net.minecraft.client.Keyboard;
-import net.minecraft.client.MinecraftClient;
-import org.lwjgl.glfw.GLFW;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-
-@Mixin(Keyboard.class)
-public class MixinKeyboard {
-
- @Inject(at = @At("HEAD"), method = "onKey(JIIII)V")
- private void onOnKey(long windowHandle, int keyCode, int scanCode, int action, int modifiers, CallbackInfo ci) {
- if (null != MinecraftClient.getInstance().world && GLFW.GLFW_PRESS == action && GLFW.GLFW_KEY_BACKSLASH == keyCode) {
- MinecraftClient.getInstance().setScreen(new ViewmodelScreen());
- }
- }
-
-}
diff --git a/src/main/resources/assets/viewmodel/lang/en_us.json b/src/main/resources/assets/viewmodel/lang/en_us.json
new file mode 100644
index 00000000..cb42a6bb
--- /dev/null
+++ b/src/main/resources/assets/viewmodel/lang/en_us.json
@@ -0,0 +1,4 @@
+{
+ "category.viewmodel.menu": "Viewmodel",
+ "key.viewmodel.open": "Open Viewmodel Settings"
+}
\ No newline at end of file
diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json
index fc584939..c55cf1d0 100644
--- a/src/main/resources/fabric.mod.json
+++ b/src/main/resources/fabric.mod.json
@@ -26,6 +26,7 @@
"fabricloader": ">=0.15.1",
"minecraft": "~1.21.1",
"java": ">=21",
- "fabric-api": "*"
+ "fabric-api": "*",
+ "fabric-key-binding-api-v1": "*"
}
}
diff --git a/src/main/resources/viewmodel.mixins.json b/src/main/resources/viewmodel.mixins.json
index 92c2acec..4e54fe8b 100644
--- a/src/main/resources/viewmodel.mixins.json
+++ b/src/main/resources/viewmodel.mixins.json
@@ -4,8 +4,7 @@
"package": "net.cyberflame.viewmodel.mixin",
"compatibilityLevel": "JAVA_21",
"mixins": [
- "MixinHeldItemRenderer",
- "MixinKeyboard"
+ "MixinHeldItemRenderer"
],
"client": [
],