shedaniel 5 سال پیش
والد
کامیت
e3cbe293b3

+ 1 - 1
build.gradle

@@ -38,7 +38,7 @@ dependencies {
     mappings "net.fabricmc:yarn:${project.yarn_version}"
     modApi "net.fabricmc:fabric-loader:${project.fabric_loader_version}"
     modApi "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
-    api "me.shedaniel.cloth:basic-math:0.3.0"
+    modApi "me.shedaniel.cloth:basic-math:0.3.0"
     include "me.shedaniel.cloth:basic-math:0.3.0"
     modImplementation "io.github.prospector:modmenu:${modmenu_version}"
     compileOnly "com.google.code.findbugs:jsr305:3.0.2"

+ 1 - 1
gradle.properties

@@ -2,6 +2,6 @@ minecraft_version=1.15
 yarn_version=1.15+build.1
 fabric_loader_version=0.7.2+build.174
 fabric_version=0.4.20+build.273-1.15
-mod_version=2.8.1
+mod_version=2.8.3
 modmenu_version=1.7.14-unstable.19w42a+build.10
 nec_version=1.1.5+1.15.1

+ 23 - 1
src/main/java/me/shedaniel/clothconfig2/api/ModifierKeyCode.java

@@ -1,6 +1,8 @@
 package me.shedaniel.clothconfig2.api;
 
 import me.shedaniel.clothconfig2.impl.ModifierKeyCodeImpl;
+import me.shedaniel.clothconfig2.mixin.MouseHooks;
+import net.minecraft.client.MinecraftClient;
 import net.minecraft.client.util.InputUtil;
 
 public interface ModifierKeyCode {
@@ -13,10 +15,12 @@ public interface ModifierKeyCode {
     Modifier getModifier();
     
     default boolean matchesMouse(int button) {
-        return getType() == InputUtil.Type.MOUSE && getKeyCode().getKeyCode() == button && getModifier().matchesCurrent();
+        return !isUnknown() && getType() == InputUtil.Type.MOUSE && getKeyCode().getKeyCode() == button && getModifier().matchesCurrent();
     }
     
     default boolean matchesKey(int keyCode, int scanCode) {
+        if (isUnknown())
+            return false;
         if (keyCode == InputUtil.UNKNOWN_KEYCODE.getKeyCode()) {
             return getType() == InputUtil.Type.SCANCODE && getKeyCode().getKeyCode() == scanCode && getModifier().matchesCurrent();
         } else {
@@ -24,6 +28,24 @@ public interface ModifierKeyCode {
         }
     }
     
+    default boolean matchesCurrentMouse() {
+        if (!isUnknown() && getType() == InputUtil.Type.MOUSE && getModifier().matchesCurrent()) {
+            switch (getKeyCode().getKeyCode()) {
+                case 0:
+                    return MinecraftClient.getInstance().mouse.wasLeftButtonClicked();
+                case 1:
+                    return MinecraftClient.getInstance().mouse.wasRightButtonClicked();
+                case 2:
+                    return ((MouseHooks) MinecraftClient.getInstance().mouse).middleButtonClicked();
+            }
+        }
+        return false;
+    }
+    
+    default boolean matchesCurrentKey() {
+        return !isUnknown() && getType() == InputUtil.Type.KEYSYM && getModifier().matchesCurrent() && InputUtil.isKeyPressed(MinecraftClient.getInstance().getWindow().getHandle(), getKeyCode().getKeyCode());
+    }
+    
     ModifierKeyCode setKeyCode(InputUtil.KeyCode keyCode);
     
     ModifierKeyCode setModifier(Modifier modifier);

+ 11 - 0
src/main/java/me/shedaniel/clothconfig2/mixin/MouseHooks.java

@@ -0,0 +1,11 @@
+package me.shedaniel.clothconfig2.mixin;
+
+import net.minecraft.client.Mouse;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.gen.Accessor;
+
+@Mixin(Mouse.class)
+public interface MouseHooks {
+    @Accessor("middleButtonClicked")
+    boolean middleButtonClicked();
+}

+ 2 - 1
src/main/resources/mixin.cloth-config2.json

@@ -7,7 +7,8 @@
   "client": [
     "MixinControlsOptionsScreen",
     "MixinGameOptions",
-    "MixinKeyBinding"
+    "MixinKeyBinding",
+    "MouseHooks"
   ],
   "injectors": {
     "defaultRequire": 1