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": [ ],