diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 08c2ed1..2f7a5ac 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,7 +12,7 @@ jobs: matrix: # Use these Java versions java: [ - 17, # Current Java LTS & minimum supported by Minecraft + 21, # Current Java LTS & minimum supported by Minecraft ] # and run on macOS only since it needs xcode tools os: [macOS-latest] @@ -37,7 +37,7 @@ jobs: - name: build run: ./gradlew build - name: capture build artifacts - if: ${{ runner.os == 'macOS' && matrix.java == '17' }} # Only upload artifacts built from latest java on one OS + if: ${{ runner.os == 'macOS' && matrix.java == '21' }} # Only upload artifacts built from latest java on one OS uses: actions/upload-artifact@v4 with: name: Artifacts diff --git a/README.md b/README.md index 24fa0cc..0e3e2a5 100644 --- a/README.md +++ b/README.md @@ -64,6 +64,7 @@ If you make changes, you should test everything works properly on the following - 1.21 - 1.21.2 - 1.21.5 +- 1.21.9 ## Mixin Naming Scheme @@ -79,6 +80,8 @@ Some mixins are in a folder called `gui`, these mixins are to do with the option 9. 1 and has `MouseOptionsScreen.init()` (1.19-1.20.x) 10. Has `PlayerInventory.scrollInHotbar(double)` (1.14-1.21.1) 11. Doesn't have `PlayerInventory.scrollInHotbar(double)` (1.21.2+) +12. Has `Screen.hasControlDown()` / doesn't have `KeyInput` (1.14-1.21.8) +13. Doesn't have `Screen.hasControlDown()` / has `KeyInput` (1.21.9+) ## License diff --git a/build.gradle b/build.gradle index 70c4ca5..86fa60a 100644 --- a/build.gradle +++ b/build.gradle @@ -1,15 +1,15 @@ plugins { - id 'fabric-loom' version '1.0-SNAPSHOT' + id 'fabric-loom' version "${loom_version}" id 'maven-publish' } -sourceCompatibility = JavaVersion.VERSION_1_8 -targetCompatibility = JavaVersion.VERSION_1_8 - -archivesBaseName = project.archives_base_name version = project.mod_version group = project.maven_group +base { + archivesName = project.archives_base_name +} + repositories { // Add repositories to retrieve artifacts from in here. // You should only use this when depending on other mods because @@ -18,6 +18,18 @@ repositories { // for more information about repositories. } +loom { + splitEnvironmentSourceSets() + + mods { + "macos_input_fixes" { + sourceSet sourceSets.main + sourceSet sourceSets.client + } + } + +} + dependencies { // To change the versions see the gradle.properties file minecraft "com.mojang:minecraft:${project.minecraft_version}" @@ -48,11 +60,16 @@ java { // if it is present. // If you remove this line, sources will not be generated. withSourcesJar() + + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 } jar { + inputs.property "archivesName", project.base.archivesName + from("LICENSE") { - rename { "${it}_${project.archivesBaseName}"} + rename { "${it}_${inputs.properties.archivesName}"} } } diff --git a/gradle.properties b/gradle.properties index 4d3a79c..5f81e82 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,9 +3,10 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/develop - minecraft_version=1.20.2 - yarn_mappings=1.20.2+build.4 - loader_version=0.14.22 + minecraft_version=1.21.9 + yarn_mappings=1.21.9+build.1 + loader_version=0.15.0 + loom_version=1.11-SNAPSHOT # Mod Properties mod_version = 1.10 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 41d9927..8bdaf60 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ae04661..2e11132 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip +networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/settings.gradle b/settings.gradle index fbbe4a2..bd7c142 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,13 +1,13 @@ pluginManagement { - repositories - { - maven - { - name = 'Fabric' - url = 'https://maven.fabricmc.net/' - } - mavenCentral() - gradlePluginPortal() - } + repositories + { + maven + { + name = 'Fabric' + url = 'https://maven.fabricmc.net/' + } + mavenCentral() + gradlePluginPortal() + } } diff --git a/src/main/java/com/hamarb123/macos_input_fixes/Common.java b/src/client/java/com/hamarb123/macos_input_fixes/client/Common.java similarity index 78% rename from src/main/java/com/hamarb123/macos_input_fixes/Common.java rename to src/client/java/com/hamarb123/macos_input_fixes/client/Common.java index 9366672..955a854 100644 --- a/src/main/java/com/hamarb123/macos_input_fixes/Common.java +++ b/src/client/java/com/hamarb123/macos_input_fixes/client/Common.java @@ -1,11 +1,12 @@ -package com.hamarb123.macos_input_fixes; +package com.hamarb123.macos_input_fixes.client; -import com.hamarb123.macos_input_fixes.compat.IxerisCompat; -import com.hamarb123.macos_input_fixes.mixin.MinecraftClientAccessor; +import com.hamarb123.macos_input_fixes.client.compat.IxerisCompat; +import com.hamarb123.macos_input_fixes.client.mixin.MinecraftClientAccessor; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.util.InputUtil; +import net.minecraft.util.Util; +import net.minecraft.util.Util.OperatingSystem; @Environment(EnvType.CLIENT) public class Common @@ -18,7 +19,7 @@ public static boolean hasControlDownInjector() boolean returnValue; //if not on macOS, use normal implementation - if (!MinecraftClient.IS_SYSTEM_MAC) + if (!IS_SYSTEM_MAC) { returnValue = FabricReflectionHelper.Screen_hasControlDown(); } @@ -27,8 +28,8 @@ public static boolean hasControlDownInjector() //replace hasControlDown() on macOS with hasControlDown() (which tests command) or 'actual control down' for this function only returnValue = FabricReflectionHelper.Screen_hasControlDown() || //ctrl key check - InputUtil.isKeyPressed(((MinecraftClientAccessor)MinecraftClient.getInstance()).getWindow().getHandle(), 341) || - InputUtil.isKeyPressed(((MinecraftClientAccessor)MinecraftClient.getInstance()).getWindow().getHandle(), 345); + FabricReflectionHelper.InputUtil_isKeyPressed_1(((MinecraftClientAccessor)MinecraftClient.getInstance()).getWindow().getHandle(), 341) || + FabricReflectionHelper.InputUtil_isKeyPressed_1(((MinecraftClientAccessor)MinecraftClient.getInstance()).getWindow().getHandle(), 345); } //restore injector and return @@ -108,4 +109,12 @@ public static void runOnRenderThreadHelper(Runnable runnable) runnable.run(); } } + + //helper for when java struggles with undefined types + public static Object asObject(Object o) + { + return o; + } + + public static final boolean IS_SYSTEM_MAC = Util.getOperatingSystem() == OperatingSystem.OSX; } diff --git a/src/main/java/com/hamarb123/macos_input_fixes/FabricReflectionHelper.java b/src/client/java/com/hamarb123/macos_input_fixes/client/FabricReflectionHelper.java similarity index 84% rename from src/main/java/com/hamarb123/macos_input_fixes/FabricReflectionHelper.java rename to src/client/java/com/hamarb123/macos_input_fixes/client/FabricReflectionHelper.java index fbec04f..4674594 100644 --- a/src/main/java/com/hamarb123/macos_input_fixes/FabricReflectionHelper.java +++ b/src/client/java/com/hamarb123/macos_input_fixes/client/FabricReflectionHelper.java @@ -1,4 +1,4 @@ -package com.hamarb123.macos_input_fixes; +package com.hamarb123.macos_input_fixes.client; import java.lang.invoke.LambdaMetafactory; import java.lang.invoke.MethodHandle; @@ -7,6 +7,7 @@ import java.lang.invoke.MethodHandles.Lookup; import java.lang.reflect.Constructor; import java.lang.reflect.Field; +import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.List; import java.util.Optional; @@ -16,12 +17,14 @@ import java.util.function.Function; import net.fabricmc.loader.api.FabricLoader; import net.fabricmc.loader.api.MappingResolver; +import net.minecraft.client.Keyboard; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.option.GameOptionsScreen; import net.minecraft.client.gui.widget.OptionListWidget; import net.minecraft.client.option.GameOptions; +import net.minecraft.client.util.InputUtil; import net.minecraft.nbt.NbtCompound; import net.minecraft.text.Style; import net.minecraft.text.Text; @@ -64,10 +67,21 @@ private static MethodHandle lookupMethod(String unmappedContainingType, String u { MappingResolver resolver = FabricLoader.getInstance().getMappingResolver(); String methodName = resolver.mapMethodName("intermediary", unmappedContainingType, unmappedName, unmappedDescriptor); - MethodType methodType = MethodType.methodType(rType, pTypes); - Lookup lookup = isPrivate ? MethodHandles.lookup() : MethodHandles.publicLookup(); - if (isStatic) return lookup.findStatic(containingType, methodName, methodType); - else return lookup.findVirtual(containingType, methodName, methodType); + if (!isPrivate) + { + MethodType methodType = MethodType.methodType(rType, pTypes); + Lookup lookup = MethodHandles.publicLookup(); + if (isStatic) return lookup.findStatic(containingType, methodName, methodType); + else return lookup.findVirtual(containingType, methodName, methodType); + } + else + { + Method m = containingType.getDeclaredMethod(methodName, pTypes); + if (!m.getReturnType().equals(rType)) throw new RuntimeException("Found method, but with incorrect return type."); + if (Modifier.isStatic(m.getModifiers()) != isStatic) throw new RuntimeException("Found method, but with incorrect staticity."); + m.setAccessible(true); + return MethodHandles.lookup().unreflect(m); + } } catch (Throwable t) { @@ -223,7 +237,7 @@ private static MethodHandle makeLambdaConverter(String toUnmapped, String method //Classes: /** - *

Intemediary name: {@code net.minecraft.class_316}

+ *

Intermediary name: {@code net.minecraft.class_316}

*

Mapped name: {@code net.minecraft.client.option.Option}

*

Versions: 1.14-1.18.x

*/ @@ -235,7 +249,7 @@ public static Class Option() private static Class _OptionClass; /** - *

Intemediary name: {@code net.minecraft.class_349}

+ *

Intermediary name: {@code net.minecraft.class_349}

*

Mapped name: {@code net.minecraft.client.gui.widget.OptionButtonWidget}

*

Versions: 1.14.1-1.16.x

*/ @@ -247,7 +261,7 @@ public static Class OptionButtonWidget() private static Class _OptionButtonWidgetClass; /** - *

Intemediary name: {@code net.minecraft.class_2585}

+ *

Intermediary name: {@code net.minecraft.class_2585}

*

Mapped name: {@code net.minecraft.text.LiteralText} (1.14.3+), {@code net.minecraft.text.TextComponent} (1.14-1.14.2)

*

Versions: 1.14-1.18.x

*/ @@ -260,7 +274,7 @@ public static Class LiteralText() private static Class _LiteralTextClass; /** - *

Intemediary name: {@code net.minecraft.class_4040}

+ *

Intermediary name: {@code net.minecraft.class_4040}

*

Mapped name: {@code net.minecraft.client.gui.widget.DoubleOptionSliderWidget}

*

Versions: 1.14-1.18.x

*/ @@ -272,7 +286,7 @@ public static Class DoubleOptionSliderWidget() private static Class _DoubleOptionSliderWidgetClass; /** - *

Intemediary name: {@code net.minecraft.class_4064}

+ *

Intermediary name: {@code net.minecraft.class_4064}

*

Mapped name: {@code net.minecraft.client.option.CyclingOption}

*

Versions: 1.14-1.18.x

*/ @@ -288,7 +302,7 @@ public static Class CyclingOption() private static Class _CyclingOptionClass; /** - *

Intemediary name: {@code net.minecraft.class_4064}

+ *

Intermediary name: {@code net.minecraft.class_4064}

*

Mapped name: {@code net.minecraft.client.option.CyclingOption}

*

Versions: 1.14-1.18.x

*/ @@ -304,7 +318,7 @@ public static Class Try_CyclingOption() private static boolean _triedCyclingOptionClass; /** - *

Intemediary name: {@code net.minecraft.class_4064$class_5675}

+ *

Intermediary name: {@code net.minecraft.class_4064$class_5675}

*

Mapped name: {@code net.minecraft.client.option.CyclingOption$Setter}

*

Versions: 1.17-1.18.x

*/ @@ -320,7 +334,7 @@ public static Class CyclingOption_Setter() private static Class _CyclingOption_SetterClass; /** - *

Intemediary name: {@code net.minecraft.class_4064$class_5675}

+ *

Intermediary name: {@code net.minecraft.class_4064$class_5675}

*

Mapped name: {@code net.minecraft.client.option.CyclingOption$Setter}

*

Versions: 1.17-1.18.x

*/ @@ -336,7 +350,7 @@ public static Class Try_CyclingOption_Setter() private static boolean _triedCyclingOption_SetterClass; /** - *

Intemediary name: {@code net.minecraft.class_4067}

+ *

Intermediary name: {@code net.minecraft.class_4067}

*

Mapped name: {@code net.minecraft.client.option.DoubleOption}

*

Versions: 1.14-1.18.x

*/ @@ -352,7 +366,7 @@ public static Class DoubleOption() private static Class _DoubleOptionClass; /** - *

Intemediary name: {@code net.minecraft.class_4067}

+ *

Intermediary name: {@code net.minecraft.class_4067}

*

Mapped name: {@code net.minecraft.client.option.DoubleOption}

*

Versions: 1.14-1.18.x

*/ @@ -368,7 +382,7 @@ public static Class Try_DoubleOption() private static boolean _triedDoubleOptionClass; /** - *

Intemediary name: {@code net.minecraft.class_5225}

+ *

Intermediary name: {@code net.minecraft.class_5225}

*

Mapped name: {@code net.minecraft.client.font.TextHandler}

*

Versions: 1.16+

*/ @@ -380,7 +394,7 @@ public static Class TextHandler() private static Class _TextHandlerClass; /** - *

Intemediary name: {@code net.minecraft.class_5250}

+ *

Intermediary name: {@code net.minecraft.class_5250}

*

Mapped name: {@code net.minecraft.text.MutableText}

*

Versions: 1.16+

*/ @@ -396,7 +410,7 @@ public static Class MutableText() private static Class _MutableTextClass; /** - *

Intemediary name: {@code net.minecraft.class_5250}

+ *

Intermediary name: {@code net.minecraft.class_5250}

*

Mapped name: {@code net.minecraft.text.MutableText}

*

Versions: 1.16+

*/ @@ -412,7 +426,7 @@ public static Class Try_MutableText() private static boolean _triedMutableTextClass; /** - *

Intemediary name: {@code net.minecraft.class_5348}

+ *

Intermediary name: {@code net.minecraft.class_5348}

*

Mapped name: {@code net.minecraft.text.StringVisitable} (1.16.2+), {@code net.minecraft.text.StringRenderable} (1.16-1.16.1)

*

Versions: 1.16+

*/ @@ -424,7 +438,7 @@ public static Class StringVisitable() private static Class _StringVisitableClass; /** - *

Intemediary name: {@code net.minecraft.class_5481}

+ *

Intermediary name: {@code net.minecraft.class_5481}

*

Mapped name: {@code net.minecraft.text.OrderedText}

*

Versions: 1.16.2+

*/ @@ -440,7 +454,7 @@ public static Class OrderedText() private static Class _OrderedTextClass; /** - *

Intemediary name: {@code net.minecraft.class_5481}

+ *

Intermediary name: {@code net.minecraft.class_5481}

*

Mapped name: {@code net.minecraft.text.OrderedText}

*

Versions: 1.16.2+

*/ @@ -456,7 +470,7 @@ public static Class Try_OrderedText() private static boolean _triedOrderedTextClass; /** - *

Intemediary name: {@code net.minecraft.class_5676$class_5679}

+ *

Intermediary name: {@code net.minecraft.class_5676$class_5679}

*

Mapped name: {@code net.minecraft.client.gui.widget.CyclingButtonWidget$TooltipFactory}

*

Versions: 1.17-1.18.2

*/ @@ -468,7 +482,7 @@ public static Class CyclingButtonWidget_TooltipFactory() private static Class _CyclingButtonWidget_TooltipFactoryClass; /** - *

Intemediary name: {@code net.minecraft.class_7172}

+ *

Intermediary name: {@code net.minecraft.class_7172}

*

Mapped name: {@code net.minecraft.text.SimpleOption}

*

Versions: 1.19+

*/ @@ -484,7 +498,7 @@ public static Class SimpleOption() private static Class _SimpleOptionClass; /** - *

Intemediary name: {@code net.minecraft.class_7172}

+ *

Intermediary name: {@code net.minecraft.class_7172}

*

Mapped name: {@code net.minecraft.text.SimpleOption}

*

Versions: 1.19+

*/ @@ -500,7 +514,7 @@ public static Class Try_SimpleOption() private static boolean _triedSimpleOptionClass; /** - *

Intemediary name: {@code net.minecraft.class_7172$class_7173}

+ *

Intermediary name: {@code net.minecraft.class_7172$class_7173}

*

Mapped name: {@code net.minecraft.client.option.SimpleOption$PotentialValuesBasedCallbacks}

*

Versions: 1.19+

*/ @@ -512,7 +526,7 @@ public static Class SimpleOption_PotentialValuesBasedCallbacks() private static Class _SimpleOption_PotentialValuesBasedCallbacksClass; /** - *

Intemediary name: {@code net.minecraft.class_7172$class_7177}

+ *

Intermediary name: {@code net.minecraft.class_7172$class_7177}

*

Mapped name: {@code net.minecraft.client.option.SimpleOption$DoubleSliderCallbacks}

*

Versions: 1.19+

*/ @@ -524,7 +538,7 @@ public static Class SimpleOption_DoubleSliderCallbacks() private static Class _SimpleOption_DoubleSliderCallbacksClass; /** - *

Intemediary name: {@code net.minecraft.class_7172$class_7178}

+ *

Intermediary name: {@code net.minecraft.class_7172$class_7178}

*

Mapped name: {@code net.minecraft.client.option.SimpleOption$Callbacks}

*

Versions: 1.19+

*/ @@ -536,7 +550,7 @@ public static Class SimpleOption_Callbacks() private static Class _SimpleOption_CallbacksClass; /** - *

Intemediary name: {@code net.minecraft.class_7172$class_7277}

+ *

Intermediary name: {@code net.minecraft.class_7172$class_7277}

*

Mapped name: {@code net.minecraft.client.option.SimpleOption$TooltipFactoryGetter}

*

Versions: 1.19-1.19.2

*/ @@ -548,7 +562,7 @@ public static Class SimpleOption_TooltipFactory() private static Class _SimpleOption_TooltipFactoryClass; /** - *

Intemediary name: {@code net.minecraft.class_7172$class_7303}

+ *

Intermediary name: {@code net.minecraft.class_7172$class_7303}

*

Mapped name: {@code net.minecraft.client.option.SimpleOption$ValueTextGetter}

*

Versions: 1.19+

*/ @@ -560,7 +574,7 @@ public static Class SimpleOption_ValueTextGetter() private static Class _SimpleOption_ValueTextGetterClass; /** - *

Intemediary name: {@code net.minecraft.class_7172$class_7307}

+ *

Intermediary name: {@code net.minecraft.class_7172$class_7307}

*

Mapped name: {@code net.minecraft.client.option.SimpleOption$TooltipFactoryGetter}

*

Versions: 1.19-1.19.2

*/ @@ -576,7 +590,7 @@ public static Class SimpleOption_TooltipFactoryGetter() private static Class _SimpleOption_TooltipFactoryGetterClass; /** - *

Intemediary name: {@code net.minecraft.class_7172$class_7307}

+ *

Intermediary name: {@code net.minecraft.class_7172$class_7307}

*

Mapped name: {@code net.minecraft.client.option.SimpleOption$TooltipFactoryGetter}

*

Versions: 1.19-1.19.2

*/ @@ -591,11 +605,102 @@ public static Class Try_SimpleOption_TooltipFactoryGetter() } private static boolean _triedSimpleOption_TooltipFactoryGetterClass; + /** + *

Intermediary name: {@code net.minecraft.class_11908}

+ *

Mapped name: {@code net.minecraft.client.input.KeyInput}

+ *

Versions: 1.21.9+

+ */ + public static Class KeyInput() + { + if (_KeyInputClass == null) + { + _triedKeyInputClass = true; + _KeyInputClass = lookupClass("net.minecraft.class_11908", "net.minecraft.client.input.KeyInput"); + } + return _KeyInputClass; + } + private static Class _KeyInputClass; + + /** + *

Intermediary name: {@code net.minecraft.class_11908}

+ *

Mapped name: {@code net.minecraft.client.input.KeyInput}

+ *

Versions: 1.21.9+

+ */ + public static Class Try_KeyInput() + { + if (!_triedKeyInputClass) + { + _triedKeyInputClass = true; + _KeyInputClass = tryLookupClass("net.minecraft.class_11908", "net.minecraft.client.input.KeyInput"); + } + return _KeyInputClass; + } + private static boolean _triedKeyInputClass; + //Methods: /** - *

Intemediary name: {@code method_10558}

+ *

Intermediary name: {@code method_1466}

+ *

Mapped name: {@code onKey}

+ *

Containing class: {@code net.minecraft.class_309} ({@code Keyboard})

+ *

Descriptor: {@code (JIIII)V}

+ *

Return type: {@code void}

+ *

Parameters types: (long window, int key, int scancode, int action, int modifiers)

+ *

Static: no

+ *

Versions: 1.14-1.21.8

+ */ + public static void Keyboard_onKey_1(Keyboard instance, long window, int key, int scancode, int action, int modifiers) + { + if (_Keyboard_onKey_1Method == null) _Keyboard_onKey_1Method = lookupMethod("net.minecraft.class_309", "method_1466", "(JIIII)V", false, false, Keyboard.class, "onKey", void.class, long.class, int.class, int.class, int.class, int.class); + invokeMethod("onKey", _Keyboard_onKey_1Method, instance, window, key, scancode, action, modifiers); + } + private static MethodHandle _Keyboard_onKey_1Method; + + /** + *

Intermediary name: {@code method_1466}

+ *

Mapped name: {@code onKey}

+ *

Containing class: {@code net.minecraft.class_309} ({@code Keyboard})

+ *

Descriptor: {@code (JILnet/minecraft/class_11908;)V}

+ *

Return type: {@code void}

+ *

Parameters types: (long window, int action, KeyInput input)

+ *

Static: no

+ *

Versions: 1.21.9+

+ */ + public static void Keyboard_onKey_2(Keyboard instance, long window, int action, Object input) + { + if (_Keyboard_onKey_2Method == null) + { + _triedKeyboard_onKey_2Method = true; + _Keyboard_onKey_2Method = lookupMethod("net.minecraft.class_309", "method_1466", "(JILnet/minecraft/class_11908;)V", false, true, Keyboard.class, "onKey", void.class, long.class, int.class, KeyInput()); + } + invokeMethod("onKey", _Keyboard_onKey_2Method, instance, window, action, input); + } + private static MethodHandle _Keyboard_onKey_2Method; + + /** + *

Intermediary name: {@code method_1466}

+ *

Mapped name: {@code onKey}

+ *

Containing class: {@code net.minecraft.class_309} ({@code Keyboard})

+ *

Descriptor: {@code (JILnet/minecraft/class_11908;)V}

+ *

Return type: {@code void}

+ *

Parameters types: (long window, int action, KeyInput input)

+ *

Static: no

+ *

Versions: 1.21.9+

+ */ + public static boolean Has_Keyboard_onKey_2() + { + if (!_triedKeyboard_onKey_2Method) + { + _triedKeyboard_onKey_2Method = true; + if (Try_KeyInput() != null) _Keyboard_onKey_2Method = tryLookupMethod("net.minecraft.class_309", "method_1466", "(JILnet/minecraft/class_11908;)V", false, true, Keyboard.class, "onKey", void.class, long.class, int.class, KeyInput()); + } + return _Keyboard_onKey_2Method != null; + } + private static boolean _triedKeyboard_onKey_2Method; + + /** + *

Intermediary name: {@code method_10558}

*

Mapped name: {@code getString}

*

Containing class: {@code net.minecraft.class_2487} ({@code NbtCompound})

*

Descriptor: {@code (Ljava/lang/String;)Ljava/lang/String;}

@@ -615,14 +720,31 @@ public static String NbtCompound_getString_1(NbtCompound instance, String key) private static MethodHandle _NbtCompound_getString_1Method; /** - *

Intemediary names: {@code method_25441} (1.16+), {@code hasControlDown} (1.14-1.15.x)

+ *

Intermediary name: {@code method_15987}

+ *

Mapped name: {@code isKeyPressed}

+ *

Containing class: {@code net.minecraft.class_3675} ({@code InputUtil})

+ *

Descriptor: {@code (JI)Z}

+ *

Return type: {@code boolean}

+ *

Parameters types: (long handle, int code)

+ *

Static: yes

+ *

Versions: 1.14-1.21.8

+ */ + public static boolean InputUtil_isKeyPressed_1(long handle, int code) + { + if (_InputUtil_isKeyPressed_1Method == null) _InputUtil_isKeyPressed_1Method = lookupMethod("net.minecraft.class_3675", "method_15987", "(JI)Z", true, false, InputUtil.class, "isKeyPressed", boolean.class, long.class, int.class); + return (boolean)invokeMethod("isKeyPressed", _InputUtil_isKeyPressed_1Method, handle, code); + } + private static MethodHandle _InputUtil_isKeyPressed_1Method; + + /** + *

Intermediary names: {@code method_25441} (1.16+), {@code hasControlDown} (1.14-1.15.x)

*

Mapped name: {@code hasControlDown}

*

Containing class: {@code net.minecraft.class_437} ({@code net.minecraft.client.gui.screen.Screen})

*

Descriptor: {@code ()Z}

*

Return type: {@code boolean}

*

Parameters types: (none)

*

Static: yes

- *

Versions: 1.14+

+ *

Versions: 1.14-1.21.8

*/ public static boolean Screen_hasControlDown() { @@ -643,7 +765,7 @@ private static void get_Screen_hasControlDown() } /** - *

Intemediary name: {@code method_27498}

+ *

Intermediary name: {@code method_27498}

*

Mapped name: {@code wrapLines}

*

Containing class: {@code net.minecraft.class_5225} ({@code TextHandler})

*

Descriptor: {@code (Ljava/lang/String;ILnet/minecraft/class_2583;)Ljava/util/List;}

@@ -660,7 +782,7 @@ public static List TextHandler_wrapLines(Object instance, String text, int ma private static MethodHandle _TextHandler_wrapLinesMethod; /** - *

Intemediary name: {@code method_27527}

+ *

Intermediary name: {@code method_27527}

*

Mapped name: {@code getTextHandler}

*

Containing class: {@code net.minecraft.class_327} ({@code TextRenderer})

*

Descriptor: {@code ()Lnet/minecraft/class_5225;}

@@ -677,7 +799,7 @@ public static Object TextRenderer_getTextHandler(TextRenderer instance) private static MethodHandle _TextRenderer_getTextHandlerMethod; /** - *

Intemediary name: {@code method_29431}

+ *

Intermediary name: {@code method_29431}

*

Mapped name: {@code styled}

*

Containing class: {@code net.minecraft.class_5348} ({@code StringVisitable})

*

Descriptor: {@code (Ljava/lang/String;Lnet/minecraft/class_2583;)Lnet/minecraft/class_5348;}

@@ -694,7 +816,7 @@ public static Object StringVisitable_styled(String string, Style style) private static MethodHandle _StringVisitable_styledMethod; /** - *

Intemediary name: {@code method_29618}

+ *

Intermediary name: {@code method_29618}

*

Mapped name: {@code setTooltip} (1.16.1+)

*

Containing class: {@code net.minecraft.class_316} ({@code Option})

*

Descriptor: {@code ()Ljava/util/Optional;}

@@ -712,7 +834,7 @@ public static Optional> Option_setTooltip(Object instance, List toolt private static MethodHandle _Option_setTooltipMethod; /** - *

Intemediary name: {@code method_29619}

+ *

Intermediary name: {@code method_29619}

*

Mapped name: {@code getTooltip} (1.16.1+)

*

Containing class: {@code net.minecraft.class_316} ({@code Option})

*

Descriptor: {@code ()Ljava/util/Optional;}

@@ -730,7 +852,7 @@ public static Optional> Option_getTooltip(Object instance) private static MethodHandle _Option_getTooltipMethod; /** - *

Intemediary name: {@code method_29623}

+ *

Intermediary name: {@code method_29623}

*

Mapped name: {@code getOption} (1.16.1+)

*

Containing class: {@code net.minecraft.class_349} ({@code OptionButtonWidget})

*

Descriptor: {@code ()Lnet/minecraft/class_316;}

@@ -747,7 +869,24 @@ public static Object OptionButtonWidget_getOption(Object instance) private static MethodHandle _OptionButtonWidget_getOptionMethod; /** - *

Intemediary name: {@code method_30747}

+ *

Intermediary name: {@code method_29624}

+ *

Mapped name: {@code getHoveredButton} (1.16.1-1.19.3), {@code getHoveredWidget} (1.19.4+)

+ *

Containing class: {@code net.minecraft.class_353} ({@code OptionListWidget})

+ *

Descriptor: {@code (DD)Ljava/util/Optional;}

+ *

Return type: {@code java.util.Optional}

+ *

Parameters types: (double mouseX, double mouseY)

+ *

Static: no

+ *

Versions: 1.16-1.21.8

+ */ + public static Optional OptionButtonWidget_getHoveredWidget(Object instance, double mouseX, double mouseY) + { + if (_OptionButtonWidget_getHoveredWidgetMethod == null) _OptionButtonWidget_getHoveredWidgetMethod = lookupMethod("net.minecraft.class_353", "method_29624", "(DD)Ljava/util/Optional;", false, false, OptionListWidget.class, "getHoveredWidget", Optional.class, double.class, double.class); + return (Optional)invokeMethod("getHoveredWidget", _OptionButtonWidget_getHoveredWidgetMethod, instance, mouseX, mouseY); + } + private static MethodHandle _OptionButtonWidget_getHoveredWidgetMethod; + + /** + *

Intermediary name: {@code method_30747}

*

Mapped name: {@code styledForwardsVisitedString} (1.16.5+), {@code styledString} (1.16.2-1.16.4)

*

Containing class: {@code net.minecraft.class_5481} ({@code OrderedText})

*

Descriptor: {@code (Ljava/lang/String;Lnet/minecraft/class_2583;)Lnet/minecraft/class_5481;}

@@ -764,7 +903,7 @@ public static Object OrderedText_styledForwardsVisitedString(String string, Styl private static MethodHandle _OrderedText_styledForwardsVisitedStringMethod; /** - *

Intemediary name: {@code method_31048}

+ *

Intermediary name: {@code method_31048}

*

Mapped name: {@code getHoveredButtonTooltip} (1.16.3+)

*

Containing class: {@code net.minecraft.class_4667} ({@code GameOptionsScreen})

*

Descriptor: {@code (Lnet/minecraft/class_353;II)Ljava/util/List;}

@@ -781,7 +920,7 @@ public static List GameOptionsScreen_getHoveredButtonTooltip(OptionListWidget private static MethodHandle _GameOptionsScreen_getHoveredButtonTooltipMethod; /** - *

Intemediary name: {@code method_32525}

+ *

Intermediary name: {@code method_32525}

*

Mapped name: {@code create}

*

Containing class: {@code net.minecraft.class_4064} ({@code CyclingOption})

*

Descriptor: {@code (Ljava/lang/String;Lnet/minecraft/class_2561;Lnet/minecraft/class_2561;Ljava/util/function/Function;Lnet/minecraft/class_4064$class_5675;)Lnet/minecraft/class_4064;}

@@ -803,7 +942,7 @@ public static Object CyclingOption_create(String key, Text on, Text off, Functio private static MethodHandle _CyclingOption_createMethod; /** - *

Intemediary name: {@code method_32528}

+ *

Intermediary name: {@code method_32528}

*

Mapped name: {@code tooltip}

*

Containing class: {@code net.minecraft.class_4064} ({@code CyclingOption})

*

Descriptor: {@code (Ljava/util/function/Function;)Lnet/minecraft/class_4064;}

@@ -820,7 +959,7 @@ public static Object CyclingOption_tooltip(Object instance, FunctionIntemediary name: {@code method_41753}

+ *

Intermediary name: {@code method_41753}

*

Mapped name: {@code getValue}

*

Containing class: {@code net.minecraft.class_7172} ({@code SimpleOption})

*

Descriptor: {@code ()Ljava/lang/Object;}

@@ -837,7 +976,7 @@ public static Object SimpleOption_getValue(Object instance) private static MethodHandle _SimpleOption_getValueMethod; /** - *

Intemediary name: {@code method_42717}

+ *

Intermediary name: {@code method_42717}

*

Mapped name: {@code constantTooltip}

*

Containing class: {@code net.minecraft.class_7172} ({@code SimpleOption})

*

Descriptor: {@code (Lnet/minecraft/class_2561;)Lnet/minecraft/class_7172$class_7307;}

@@ -854,7 +993,7 @@ public static Object SimpleOption_constantTooltip_1(Text text) private static MethodHandle _SimpleOption_constantTooltip1Method; /** - *

Intemediary name: {@code method_42717}

+ *

Intermediary name: {@code method_42717}

*

Mapped name: {@code constantTooltip}

*

Containing class: {@code net.minecraft.class_7172} ({@code SimpleOption})

*

Descriptor: {@code (Lnet/minecraft/class_2561;)Lnet/minecraft/class_7172$class_7277;}

@@ -871,7 +1010,7 @@ public static Object SimpleOption_constantTooltip_2(Text text) private static MethodHandle _SimpleOption_constantTooltip2Method; /** - *

Intemediary name: {@code method_42399}

+ *

Intermediary name: {@code method_42399}

*

Mapped name: {@code emptyTooltip}

*

Containing class: {@code net.minecraft.class_7172} ({@code SimpleOption})

*

Descriptor: {@code ()Lnet/minecraft/class_7172$class_7307;}

@@ -888,7 +1027,7 @@ public static Object SimpleOption_emptyTooltip_1() private static MethodHandle _SimpleOption_emptyTooltip1Method; /** - *

Intemediary name: {@code method_42399}

+ *

Intermediary name: {@code method_42399}

*

Mapped name: {@code emptyTooltip}

*

Containing class: {@code net.minecraft.class_7172} ({@code SimpleOption})

*

Descriptor: {@code ()Lnet/minecraft/class_7172$class_7277;}

@@ -905,7 +1044,7 @@ public static Object SimpleOption_emptyTooltip_2() private static MethodHandle _SimpleOption_emptyTooltip2Method; /** - *

Intemediary name: {@code method_42439}

+ *

Intermediary name: {@code method_42439}

*

Mapped name: {@code getDiscreteMouseScroll}

*

Containing class: {@code net.minecraft.class_315} ({@code GameOptions})

*

Descriptor: {@code ()Lnet/minecraft/class_7172;}

@@ -922,7 +1061,7 @@ public static Object GameOptions_getDiscreteMouseScroll(GameOptions instance) private static MethodHandle _GameOptions_getDiscreteMouseScrollMethod; /** - *

Intemediary name: {@code method_43470}

+ *

Intermediary name: {@code method_43470}

*

Mapped name: {@code literal}

*

Containing class: {@code net.minecraft.class_2561} ({@code Text})

*

Descriptor: {@code (Ljava/lang/String;)Lnet/minecraft/class_5250;}

@@ -943,7 +1082,7 @@ public static Text Text_literal(String string) private static MethodHandle _Text_literalMethod; /** - *

Intemediary name: {@code method_43470}

+ *

Intermediary name: {@code method_43470}

*

Mapped name: {@code literal}

*

Containing class: {@code net.minecraft.class_2561} ({@code Text})

*

Descriptor: {@code (Ljava/lang/String;)Lnet/minecraft/class_5250;}

@@ -964,7 +1103,7 @@ public static boolean Has_Text_literal() private static boolean _triedText_literalMethod; /** - *

Intemediary name: {@code getString}

+ *

Intermediary name: {@code getString}

*

Mapped name: {@code getString}

*

Containing class: {@code net.minecraft.class_5348} ({@code StringVisitable})

*

Descriptor: {@code ()Ljava/lang/String;}

@@ -981,7 +1120,7 @@ public static String StringVisitable_getString(Object instance) private static MethodHandle _StringVisitable_getStringMethod; /** - *

Intemediary name: {@code method_68564}

+ *

Intermediary name: {@code method_68564}

*

Mapped name: {@code getString}

*

Containing class: {@code net.minecraft.class_2487} ({@code NbtCompound})

*

Descriptor: {@code (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;}

@@ -1002,7 +1141,7 @@ public static String NbtCompound_getString_2(NbtCompound instance, String key, S private static MethodHandle _NbtCompound_getString_2Method; /** - *

Intemediary name: {@code method_68564}

+ *

Intermediary name: {@code method_68564}

*

Mapped name: {@code getString}

*

Containing class: {@code net.minecraft.class_2487} ({@code net.minecraft.nbt.NbtCompound})

*

Descriptor: {@code (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;}

@@ -1025,7 +1164,7 @@ public static boolean Has_NbtCompound_getString_2() //Constructors: /** - *

Class intemediary name: {@code net.minecraft.class_2585}

+ *

Class intermediary name: {@code net.minecraft.class_2585}

*

Class mapped name: {@code net.minecraft.text.LiteralText} (1.14.3+), {@code net.minecraft.text.TextComponent} (1.14-1.14.2)

*

Constructor descriptor: (Ljava/lang/String;)V

*

Parameters types: (String string)

@@ -1040,7 +1179,7 @@ public static Text new_LiteralText(String string) private static MethodHandle _new_LiteralTextCtor1; /** - *

Class intemediary name: {@code net.minecraft.class_4064}

+ *

Class intermediary name: {@code net.minecraft.class_4064}

*

Class mapped name: {@code net.minecraft.client.option.CyclingOption}

*

Constructor descriptor: {@code (Ljava/lang/String;Ljava/util/function/BiConsumer;Ljava/util/function/BiFunction;)V}

*

Parameters types: {@code (String key, BiConsumer setter, BiFunction messageProvider)} (1.16+), {@code (String key, BiConsumer setter, BiFunction messageProvider)} (1.14-1.15.x)

@@ -1054,7 +1193,7 @@ public static Object new_CyclingOption(String key, BiConsumerClass intemediary name: {@code net.minecraft.class_4064}

+ *

Class intermediary name: {@code net.minecraft.class_4064}

*

Class mapped name: {@code net.minecraft.client.option.CyclingOption}

*

Constructor descriptor: {@code (Ljava/lang/String;Ljava/util/function/BiConsumer;Ljava/util/function/BiFunction;)V}

*

Parameters types: {@code (String key, BiConsumer setter, BiFunction messageProvider)} (1.16+), {@code (String key, BiConsumer setter, BiFunction messageProvider)} (1.14-1.15.x)

@@ -1068,7 +1207,7 @@ public static Constructor Info_new_CyclingOption3() private static Constructor _new_new_CyclingOption3_Info; /** - *

Class intemediary name: {@code net.minecraft.class_4067}

+ *

Class intermediary name: {@code net.minecraft.class_4067}

*

Class mapped name: {@code net.minecraft.client.option.DoubleOption}

*

Constructor descriptor: {@code (Ljava/lang/String;DDFLjava/util/function/Function;Ljava/util/function/BiConsumer;Ljava/util/function/BiFunction;)V}

*

Parameters types: {@code (String key, double min, double max, float step, Function getter, BiConsumer setter, BiFunction displayStringGetter)} (1.16+), {@code (String key, double min, double max, float step, Function getter, BiConsumer setter, BiFunction displayStringGetter)} (1.14-1.15.x)

@@ -1082,7 +1221,7 @@ public static Object new_DoubleOption(String key, double min, double max, float private static MethodHandle _new_DoubleOptionCtor7; /** - *

Class intemediary name: {@code net.minecraft.class_4067}

+ *

Class intermediary name: {@code net.minecraft.class_4067}

*

Class mapped name: {@code net.minecraft.client.option.DoubleOption}

*

Constructor descriptor: {@code (Ljava/lang/String;DDFLjava/util/function/Function;Ljava/util/function/BiConsumer;Ljava/util/function/BiFunction;)V}

*

Parameters types: {@code (String key, double min, double max, float step, Function getter, BiConsumer setter, BiFunction displayStringGetter)} (1.16+), {@code (String key, double min, double max, float step, Function getter, BiConsumer setter, BiFunction displayStringGetter)} (1.14-1.15.x)

@@ -1096,7 +1235,7 @@ public static Constructor Info_new_DoubleOption7() private static Constructor _new_DoubleOptionCtor7_Info; /** - *

Class intemediary name: {@code net.minecraft.class_4067}

+ *

Class intermediary name: {@code net.minecraft.class_4067}

*

Class mapped name: {@code net.minecraft.client.option.DoubleOption}

*

Constructor descriptor: {@code (Ljava/lang/String;DDFLjava/util/function/Function;Ljava/util/function/BiConsumer;Ljava/util/function/BiFunction;Ljava/util/function/Function;)V}

*

Parameters types: {@code (String key, double min, double max, float step, Function getter, BiConsumer setter, BiFunction displayStringGetter, Function> tooltipsGetter)}

@@ -1114,7 +1253,7 @@ public static Object new_DoubleOption(String key, double min, double max, float private static MethodHandle _new_DoubleOptionCtor8; /** - *

Class intemediary name: {@code net.minecraft.class_4067}

+ *

Class intermediary name: {@code net.minecraft.class_4067}

*

Class mapped name: {@code net.minecraft.client.option.DoubleOption}

*

Constructor descriptor: (Ljava/lang/String;DDFLjava/util/function/Function;Ljava/util/function/BiConsumer;Ljava/util/function/BiFunction;Ljava/util/function/Function;)V

*

Parameters types: (String key, double min, double max, float step, Function getter, BiConsumer setter, BiFunction displayStringGetter, Function> tooltipsGetter)

@@ -1132,7 +1271,7 @@ public static boolean Has_new_DoubleOption_8() private static boolean _triednew_DoubleOptionCtor8; /** - *

Class intemediary name: {@code net.minecraft.class_4067}

+ *

Class intermediary name: {@code net.minecraft.class_4067}

*

Class mapped name: {@code net.minecraft.client.option.DoubleOption}

*

Constructor descriptor: (Ljava/lang/String;DDFLjava/util/function/Function;Ljava/util/function/BiConsumer;Ljava/util/function/BiFunction;Ljava/util/function/Function;)V

*

Parameters types: (String key, double min, double max, float step, Function getter, BiConsumer setter, BiFunction displayStringGetter, Function> tooltipsGetter)

@@ -1146,7 +1285,7 @@ public static Constructor Info_new_DoubleOption8() private static Constructor _new_DoubleOptionCtor8_Info; /** - *

Class intemediary name: {@code net.minecraft.class_7172}

+ *

Class intermediary name: {@code net.minecraft.class_7172}

*

Class mapped name: {@code net.minecraft.client.option.SimpleOption}

*

Constructor descriptor: {@code (Ljava/lang/String;Lnet/minecraft/class_7172$class_7307;Lnet/minecraft/class_7172$class_7303;Lnet/minecraft/class_7172$class_7178;Ljava/lang/Object;Ljava/util/function/Consumer;)V}

*

Parameters types: {@code (String key, SimpleOption.TooltipFactoryGetter tooltipFactoryGetter, SimpleOption.ValueTextGetter valueTextGetter, SimpleOption.Callbacks callbacks, T defaultValue, Consumer changeCallback)}

@@ -1154,13 +1293,13 @@ public static Constructor Info_new_DoubleOption8() */ public static Object new_SimpleOption_1(String key, Object tooltipFactoryGetter, Object valueTextGetter, Object callbacks, Object defaultValue, Object changeCallback) { - if (_new_DoubleObjectCtor6_1 == null) _new_DoubleObjectCtor6_1 = lookupConstructor("(Ljava/lang/String;Lnet/minecraft/class_7172$class_7307;Lnet/minecraft/class_7172$class_7303;Lnet/minecraft/class_7172$class_7178;Ljava/lang/Object;Ljava/util/function/Consumer;)V", false, SimpleOption(), String.class, SimpleOption_TooltipFactoryGetter(), SimpleOption_ValueTextGetter(), SimpleOption_Callbacks(), Object.class, Consumer.class); - return invokeMethod("SimpleObject.(Ljava/lang/String;Lnet/minecraft/class_7172$class_7307;Lnet/minecraft/class_7172$class_7303;Lnet/minecraft/class_7172$class_7178;Ljava/lang/Object;Ljava/util/function/Consumer;)V", _new_DoubleObjectCtor6_1, key, tooltipFactoryGetter, valueTextGetter, callbacks, defaultValue, changeCallback); + if (_new_SimpleOptionCtor6_1 == null) _new_SimpleOptionCtor6_1 = lookupConstructor("(Ljava/lang/String;Lnet/minecraft/class_7172$class_7307;Lnet/minecraft/class_7172$class_7303;Lnet/minecraft/class_7172$class_7178;Ljava/lang/Object;Ljava/util/function/Consumer;)V", false, SimpleOption(), String.class, SimpleOption_TooltipFactoryGetter(), SimpleOption_ValueTextGetter(), SimpleOption_Callbacks(), Object.class, Consumer.class); + return invokeMethod("SimpleObject.(Ljava/lang/String;Lnet/minecraft/class_7172$class_7307;Lnet/minecraft/class_7172$class_7303;Lnet/minecraft/class_7172$class_7178;Ljava/lang/Object;Ljava/util/function/Consumer;)V", _new_SimpleOptionCtor6_1, key, tooltipFactoryGetter, valueTextGetter, callbacks, defaultValue, changeCallback); } - private static MethodHandle _new_DoubleObjectCtor6_1; + private static MethodHandle _new_SimpleOptionCtor6_1; /** - *

Class intemediary name: {@code net.minecraft.class_7172}

+ *

Class intermediary name: {@code net.minecraft.class_7172}

*

Class mapped name: {@code net.minecraft.client.option.SimpleOption}

*

Constructor descriptor: {@code (Ljava/lang/String;Lnet/minecraft/class_7172$class_7277;Lnet/minecraft/class_7172$class_7303;Lnet/minecraft/class_7172$class_7178;Ljava/lang/Object;Ljava/util/function/Consumer;)V}

*

Parameters types: {@code (String key, SimpleOption.TooltipFactory tooltipFactory, SimpleOption.ValueTextGetter valueTextGetter, SimpleOption.Callbacks callbacks, T defaultValue, Consumer changeCallback)}

@@ -1168,16 +1307,30 @@ public static Object new_SimpleOption_1(String key, Object tooltipFactoryGetter, */ public static Object new_SimpleOption_2(String key, Object tooltipFactory, Object valueTextGetter, Object callbacks, Object defaultValue, Object changeCallback) { - if (_new_DoubleObjectCtor6_2 == null) _new_DoubleObjectCtor6_2 = lookupConstructor("(Ljava/lang/String;Lnet/minecraft/class_7172$class_7277;Lnet/minecraft/class_7172$class_7303;Lnet/minecraft/class_7172$class_7178;Ljava/lang/Object;Ljava/util/function/Consumer;)V", false, SimpleOption(), String.class, SimpleOption_TooltipFactory(), SimpleOption_ValueTextGetter(), SimpleOption_Callbacks(), Object.class, Consumer.class); - return invokeMethod("SimpleObject.(Ljava/lang/String;Lnet/minecraft/class_7172$class_7277;Lnet/minecraft/class_7172$class_7303;Lnet/minecraft/class_7172$class_7178;Ljava/lang/Object;Ljava/util/function/Consumer;)V", _new_DoubleObjectCtor6_2, key, tooltipFactory, valueTextGetter, callbacks, defaultValue, changeCallback); + if (_new_SimpleOptionCtor6_2 == null) _new_SimpleOptionCtor6_2 = lookupConstructor("(Ljava/lang/String;Lnet/minecraft/class_7172$class_7277;Lnet/minecraft/class_7172$class_7303;Lnet/minecraft/class_7172$class_7178;Ljava/lang/Object;Ljava/util/function/Consumer;)V", false, SimpleOption(), String.class, SimpleOption_TooltipFactory(), SimpleOption_ValueTextGetter(), SimpleOption_Callbacks(), Object.class, Consumer.class); + return invokeMethod("SimpleObject.(Ljava/lang/String;Lnet/minecraft/class_7172$class_7277;Lnet/minecraft/class_7172$class_7303;Lnet/minecraft/class_7172$class_7178;Ljava/lang/Object;Ljava/util/function/Consumer;)V", _new_SimpleOptionCtor6_2, key, tooltipFactory, valueTextGetter, callbacks, defaultValue, changeCallback); + } + private static MethodHandle _new_SimpleOptionCtor6_2; + + /** + *

Class intermediary name: {@code net.minecraft.class_11908}

+ *

Class mapped name: {@code net.minecraft.client.input.KeyInput}

+ *

Constructor descriptor: {@code (III)V}

+ *

Parameters types: {@code (int key, int scancode, int modifiers)}

+ *

Versions: 1.21.9+

+ */ + public static Object new_KeyInput(int key, int scancode, int modifiers) + { + if (_new_KeyInputCtor3 == null) _new_KeyInputCtor3 = lookupConstructor("(III)V", false, KeyInput(), int.class, int.class, int.class); + return invokeMethod("KeyInput.(III)V", _new_KeyInputCtor3, key, scancode, modifiers); } - private static MethodHandle _new_DoubleObjectCtor6_2; + private static MethodHandle _new_KeyInputCtor3; //Fields: /** - *

Intemediary name: {@code field_18012}

+ *

Intermediary name: {@code field_18012}

*

Mapped name: {@code option}

*

Containing class: {@code net.minecraft.class_4040} ({@code DoubleOptionSliderWidget})

*

Descriptor: {@code Lnet/minecraft/class_4067;}

@@ -1194,7 +1347,7 @@ public static Object DoubleOptionSliderWidget_option(Object instance) private static Field _DoubleOptionSliderWidget_optionField; /** - *

Intemediary name: {@code field_19244}

+ *

Intermediary name: {@code field_19244}

*

Mapped name: {@code discreteMouseScroll}

*

Containing class: {@code net.minecraft.class_315} ({@code GameOptions})

*

Descriptor: {@code Z}

@@ -1211,7 +1364,7 @@ public static boolean GameOptions_discreteMouseScroll(GameOptions instance) private static Field _GameOptions_discreteMouseScrollField; /** - *

Intemediary name: {@code field_24360}

+ *

Intermediary name: {@code field_24360}

*

Mapped name: {@code EMPTY}

*

Containing class: {@code net.minecraft.class_2583} ({@code Style})

*

Descriptor: {@code Lnet/minecraft/class_2583;}

@@ -1228,7 +1381,7 @@ public static Style Style_EMPTY() private static Field _Style_EMPTYField; /** - *

Intemediary name: {@code field_37875}

+ *

Intermediary name: {@code field_37875}

*

Mapped name: {@code INSTANCE}

*

Containing class: {@code net.minecraft.class_7172$class_7177} ({@code SimpleOption.DoubleSliderCallbacks})

*

Descriptor: {@code Lnet/minecraft/class_7172$class_7177;}

@@ -1245,7 +1398,7 @@ public static Object SimpleOption_DoubleSliderCallbacks_INSTANCE() private static Field _SimpleOption_DoubleSliderCallbacks_INSTANCEField; /** - *

Intemediary name: {@code field_38278}

+ *

Intermediary name: {@code field_38278}

*

Mapped name: {@code BOOLEAN}

*

Containing class: {@code net.minecraft.class_7172} ({@code SimpleOption})

*

Descriptor: {@code Lnet/minecraft/class_7172$class_7173;}

diff --git a/src/main/java/com/hamarb123/macos_input_fixes/KeyCallback.java b/src/client/java/com/hamarb123/macos_input_fixes/client/KeyCallback.java similarity index 71% rename from src/main/java/com/hamarb123/macos_input_fixes/KeyCallback.java rename to src/client/java/com/hamarb123/macos_input_fixes/client/KeyCallback.java index 50d0183..dfafb0a 100644 --- a/src/main/java/com/hamarb123/macos_input_fixes/KeyCallback.java +++ b/src/client/java/com/hamarb123/macos_input_fixes/client/KeyCallback.java @@ -1,4 +1,4 @@ -package com.hamarb123.macos_input_fixes; +package com.hamarb123.macos_input_fixes.client; @FunctionalInterface public interface KeyCallback diff --git a/src/main/java/com/hamarb123/macos_input_fixes/MacOSInputFixesClientMod.java b/src/client/java/com/hamarb123/macos_input_fixes/client/MacOSInputFixesClientMod.java similarity index 89% rename from src/main/java/com/hamarb123/macos_input_fixes/MacOSInputFixesClientMod.java rename to src/client/java/com/hamarb123/macos_input_fixes/client/MacOSInputFixesClientMod.java index 66bad9f..d2c3ec3 100644 --- a/src/main/java/com/hamarb123/macos_input_fixes/MacOSInputFixesClientMod.java +++ b/src/client/java/com/hamarb123/macos_input_fixes/client/MacOSInputFixesClientMod.java @@ -1,8 +1,7 @@ -package com.hamarb123.macos_input_fixes; +package com.hamarb123.macos_input_fixes.client; import java.io.IOException; import net.fabricmc.api.ClientModInitializer; -import net.minecraft.util.Util; public class MacOSInputFixesClientMod implements ClientModInitializer { @@ -20,7 +19,7 @@ public void onInitializeClient() static { - if (Util.getOperatingSystem() == Util.OperatingSystem.OSX) + if (Common.IS_SYSTEM_MAC) { try { diff --git a/src/main/java/com/hamarb123/macos_input_fixes/MixinPlugin.java b/src/client/java/com/hamarb123/macos_input_fixes/client/MixinPlugin.java similarity index 75% rename from src/main/java/com/hamarb123/macos_input_fixes/MixinPlugin.java rename to src/client/java/com/hamarb123/macos_input_fixes/client/MixinPlugin.java index ae01537..fd69fe5 100644 --- a/src/main/java/com/hamarb123/macos_input_fixes/MixinPlugin.java +++ b/src/client/java/com/hamarb123/macos_input_fixes/client/MixinPlugin.java @@ -1,4 +1,4 @@ -package com.hamarb123.macos_input_fixes; +package com.hamarb123.macos_input_fixes.client; import java.util.ArrayList; import java.util.List; @@ -55,6 +55,11 @@ public List getMixins() boolean hasPlayerInventory_scrollInHotbar = isMethodPresent(resolver.mapClassName("intermediary", "net.minecraft.class_1661"), resolver.mapMethodName("intermediary", "net.minecraft.class_1661", "method_7373", "(D)V"), "(D)V"); + boolean hasScreen_hasControlDown = isMethodPresent(resolver.mapClassName("intermediary", "net.minecraft.class_437"), + resolver.mapMethodName("intermediary", "net.minecraft.class_437", "method_25441", "()Z"), + "()Z") || isMethodPresent(resolver.mapClassName("intermediary", "net.minecraft.class_437"), + resolver.mapMethodName("intermediary", "net.minecraft.class_437", "hasControlDown", "()Z"), + "()Z"); if (hasOptionClass) { li.add("gui.MouseOptionsScreenMixin2"); @@ -100,52 +105,67 @@ public List getMixins() { li.add("MouseMixin11"); } + if (hasScreen_hasControlDown) + { + li.add("HandledScreenMixin12"); + li.add("KeyboardMixin12"); + li.add("MinecraftClientMixin12"); + li.add("MouseMixin12"); + li.add("ScreenMixin12"); + } + else + { + li.add("HandledScreenMixin13"); + li.add("KeyboardMixin13"); + li.add("MinecraftClientMixin13"); + li.add("MouseMixin13"); + } return li; } private static boolean isClassPresent(String className) { - try + try { - MixinService.getService().getBytecodeProvider().getClassNode(className); - return true; - } + MixinService.getService().getBytecodeProvider().getClassNode(className); + return true; + } catch (ClassNotFoundException ignored) { - // Class isn't present, skip this mixin. - return false; - } + // Class isn't present, skip this mixin. + return false; + } catch (Exception e) { - // Something else went wrong which might be more serious. - e.printStackTrace(); - return false; - } - } + // Something else went wrong which might be more serious. + e.printStackTrace(); + return false; + } + } private static boolean isMethodPresent(String className, String methodName, String descriptor) { - try + try { - ClassNode classNode = MixinService.getService().getBytecodeProvider().getClassNode(className); + ClassNode classNode = MixinService.getService().getBytecodeProvider().getClassNode(className); for (MethodNode methodNode : classNode.methods) { if (methodNode.name.equals(methodName) && methodNode.desc.equals(descriptor)) return true; } - return false; - } + return false; + } catch (ClassNotFoundException ignored) { - // Class isn't present, skip this mixin. - return false; - } + // Class isn't present, skip this mixin. + return false; + } catch (Exception e) { - // Something else went wrong which might be more serious. - e.printStackTrace(); - return false; - } - } + // Something else went wrong which might be more serious. + e.printStackTrace(); + return false; + } + } @Override public void preApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) diff --git a/src/main/java/com/hamarb123/macos_input_fixes/ModOptions.java b/src/client/java/com/hamarb123/macos_input_fixes/client/ModOptions.java similarity index 93% rename from src/main/java/com/hamarb123/macos_input_fixes/ModOptions.java rename to src/client/java/com/hamarb123/macos_input_fixes/client/ModOptions.java index aec758e..ee2b5d9 100644 --- a/src/main/java/com/hamarb123/macos_input_fixes/ModOptions.java +++ b/src/client/java/com/hamarb123/macos_input_fixes/client/ModOptions.java @@ -1,8 +1,5 @@ -package com.hamarb123.macos_input_fixes; +package com.hamarb123.macos_input_fixes.client; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.PrintWriter; @@ -10,6 +7,8 @@ import java.lang.reflect.ParameterizedType; import java.nio.charset.StandardCharsets; import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -19,10 +18,11 @@ import java.util.function.Function; import java.util.function.Supplier; import org.apache.commons.io.IOUtils; -import com.hamarb123.macos_input_fixes.FabricReflectionHelper.CyclingOptionSetterHelper; -import com.hamarb123.macos_input_fixes.FabricReflectionHelper.ValueTextGetterHelper; -import com.hamarb123.macos_input_fixes.mixin.MinecraftClientAccessor; -import com.hamarb123.macos_input_fixes.mixin.gui.GameOptionsAccessor; + +import com.hamarb123.macos_input_fixes.client.FabricReflectionHelper.CyclingOptionSetterHelper; +import com.hamarb123.macos_input_fixes.client.FabricReflectionHelper.ValueTextGetterHelper; +import com.hamarb123.macos_input_fixes.client.mixin.MinecraftClientAccessor; +import com.hamarb123.macos_input_fixes.client.mixin.gui.GameOptionsAccessor; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.fabricmc.loader.api.FabricLoader; @@ -30,7 +30,6 @@ import net.minecraft.client.option.GameOptions; import net.minecraft.nbt.NbtCompound; import net.minecraft.text.Text; -import net.minecraft.util.Util; @Environment(EnvType.CLIENT) public class ModOptions @@ -421,7 +420,7 @@ private static Object writeTooltip(Object option, Object tooltipObject, int vers public static Object[] getModOptions() { loadInterface(); //load the elements if they are not loaded yet - if (MinecraftClient.IS_SYSTEM_MAC) + if (Common.IS_SYSTEM_MAC) { //on macOS show reverse scrolling, reverse hotbar scrolling, trackpad sensitivity, momentum scrolling, interface smooth scroll options, disable ctrl+click fix Object[] arr = new Object[6]; @@ -451,7 +450,7 @@ private static void loadInterface() try { //this is only used on macOS, so only load it here so we don't accidentally call any of these on other platforms - if (MinecraftClient.IS_SYSTEM_MAC) + if (Common.IS_SYSTEM_MAC) { TRACKPAD_SENSITIVITY = doubleOption( "options.macos_input_fixes.trackpad_sensitivity", @@ -521,41 +520,41 @@ private static String getStringHelper(NbtCompound instance, String key) } } - public static File optionsFile; + public static Path optionsFile; @SuppressWarnings("resource") public static void loadOptions() { //locate options file - optionsFile = new File(FabricLoader.getInstance().getConfigDir().toAbsolutePath().toString(), "macos_input_fixes.txt"); + optionsFile = FabricLoader.getInstance().getConfigDir().resolve("macos_input_fixes.txt"); //check if we need to migrate from the old path - if (!optionsFile.exists()) + if (!Files.exists(optionsFile)) { - File oldFile = new File(MinecraftClient.getInstance().runDirectory, "options_macos_input_fixes.txt"); - if (oldFile.exists()) + Path oldFile = Paths.get(MinecraftClient.getInstance().runDirectory.getAbsolutePath(), "options_macos_input_fixes.txt"); + if (Files.exists(oldFile)) { - optionsFile.getParentFile().mkdir(); try { - Files.copy(oldFile.toPath(), optionsFile.toPath()); + Files.createDirectories(optionsFile.getParent()); + Files.copy(oldFile, optionsFile); + Files.deleteIfExists(oldFile); } catch (IOException e) { - throw new RuntimeException("Failed to migrate old macos input fixes options file from " + oldFile.toPath() + " to " + optionsFile.toPath(), e); + throw new RuntimeException("Failed to migrate old macos input fixes options file from " + oldFile + " to " + optionsFile, e); } - oldFile.delete(); } } //load options similarly to how minecraft does try { - if (!optionsFile.exists()) + if (!Files.exists(optionsFile)) { return; } - List lines = IOUtils.readLines(new FileInputStream(optionsFile), StandardCharsets.UTF_8); //split by lines + List lines = IOUtils.readLines(Files.newInputStream(optionsFile), StandardCharsets.UTF_8); //split by lines NbtCompound compoundTag = new NbtCompound(); for (String line : lines) //read the lines into a tag { @@ -665,7 +664,7 @@ public static void loadOptions() public static void saveOptions() { //write the options to the file in a similar way to minecraft - try (PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(new FileOutputStream(optionsFile), StandardCharsets.UTF_8))) + try (PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(Files.newOutputStream(optionsFile), StandardCharsets.UTF_8))) { printWriter.println("trackpadSensitivity:" + trackpadSensitivity); printWriter.println("reverseHotbarScrolling:" + reverseHotbarScrolling); @@ -689,7 +688,7 @@ public static void saveOptions() public static void setTrackpadSensitivity(double value) { trackpadSensitivity = value; - if (Util.getOperatingSystem() != Util.OperatingSystem.OSX) return; + if (!Common.IS_SYSTEM_MAC) return; //set the value in the native library also, ensure the value is clamped here if (value < 0) value = 0.0; @@ -713,7 +712,7 @@ public static void setTrackpadSensitivity(double value) public static void setMomentumScrolling(boolean value) { momentumScrolling = value; - if (Util.getOperatingSystem() != Util.OperatingSystem.OSX) return; + if (!Common.IS_SYSTEM_MAC) return; //set the value in the native library also MacOSInputFixesClientMod.setMomentumScrolling(value); @@ -725,7 +724,7 @@ public static void setMomentumScrolling(boolean value) public static void setInterfaceSmoothScroll(boolean value) { interfaceSmoothScroll = value; - if (Util.getOperatingSystem() != Util.OperatingSystem.OSX) return; + if (!Common.IS_SYSTEM_MAC) return; //set the value in the native library also MacOSInputFixesClientMod.setInterfaceSmoothScroll(value); diff --git a/src/main/java/com/hamarb123/macos_input_fixes/NativeUtils.java b/src/client/java/com/hamarb123/macos_input_fixes/client/NativeUtils.java similarity index 99% rename from src/main/java/com/hamarb123/macos_input_fixes/NativeUtils.java rename to src/client/java/com/hamarb123/macos_input_fixes/client/NativeUtils.java index fed91f8..e22370a 100644 --- a/src/main/java/com/hamarb123/macos_input_fixes/NativeUtils.java +++ b/src/client/java/com/hamarb123/macos_input_fixes/client/NativeUtils.java @@ -1,4 +1,4 @@ -package com.hamarb123.macos_input_fixes; +package com.hamarb123.macos_input_fixes.client; /* * Class NativeUtils is published under the The MIT License: diff --git a/src/main/java/com/hamarb123/macos_input_fixes/OptionMixinHelper.java b/src/client/java/com/hamarb123/macos_input_fixes/client/OptionMixinHelper.java similarity index 81% rename from src/main/java/com/hamarb123/macos_input_fixes/OptionMixinHelper.java rename to src/client/java/com/hamarb123/macos_input_fixes/client/OptionMixinHelper.java index 156225f..2dde5c2 100644 --- a/src/main/java/com/hamarb123/macos_input_fixes/OptionMixinHelper.java +++ b/src/client/java/com/hamarb123/macos_input_fixes/client/OptionMixinHelper.java @@ -1,4 +1,4 @@ -package com.hamarb123.macos_input_fixes; +package com.hamarb123.macos_input_fixes.client; public interface OptionMixinHelper { diff --git a/src/main/java/com/hamarb123/macos_input_fixes/ScrollCallback.java b/src/client/java/com/hamarb123/macos_input_fixes/client/ScrollCallback.java similarity index 78% rename from src/main/java/com/hamarb123/macos_input_fixes/ScrollCallback.java rename to src/client/java/com/hamarb123/macos_input_fixes/client/ScrollCallback.java index fc874bc..2700af5 100644 --- a/src/main/java/com/hamarb123/macos_input_fixes/ScrollCallback.java +++ b/src/client/java/com/hamarb123/macos_input_fixes/client/ScrollCallback.java @@ -1,4 +1,4 @@ -package com.hamarb123.macos_input_fixes; +package com.hamarb123.macos_input_fixes.client; @FunctionalInterface public interface ScrollCallback diff --git a/src/main/java/com/hamarb123/macos_input_fixes/compat/IxerisCompat.java b/src/client/java/com/hamarb123/macos_input_fixes/client/compat/IxerisCompat.java similarity index 96% rename from src/main/java/com/hamarb123/macos_input_fixes/compat/IxerisCompat.java rename to src/client/java/com/hamarb123/macos_input_fixes/client/compat/IxerisCompat.java index 9a88711..accd3aa 100644 --- a/src/main/java/com/hamarb123/macos_input_fixes/compat/IxerisCompat.java +++ b/src/client/java/com/hamarb123/macos_input_fixes/client/compat/IxerisCompat.java @@ -1,4 +1,4 @@ -package com.hamarb123.macos_input_fixes.compat; +package com.hamarb123.macos_input_fixes.client.compat; import net.fabricmc.loader.api.FabricLoader; diff --git a/src/main/java/com/hamarb123/macos_input_fixes/mixin/HandledScreenMixin.java b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/HandledScreenMixin12.java similarity index 78% rename from src/main/java/com/hamarb123/macos_input_fixes/mixin/HandledScreenMixin.java rename to src/client/java/com/hamarb123/macos_input_fixes/client/mixin/HandledScreenMixin12.java index 7541446..e22282a 100644 --- a/src/main/java/com/hamarb123/macos_input_fixes/mixin/HandledScreenMixin.java +++ b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/HandledScreenMixin12.java @@ -1,22 +1,25 @@ -package com.hamarb123.macos_input_fixes.mixin; +package com.hamarb123.macos_input_fixes.client.mixin; 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.CallbackInfoReturnable; -import com.hamarb123.macos_input_fixes.Common; + +import com.hamarb123.macos_input_fixes.client.Common; + import net.minecraft.client.gui.screen.ingame.HandledScreen; @Mixin(HandledScreen.class) -public class HandledScreenMixin +public class HandledScreenMixin12 { - //`keyPressed(III)Z` is the intemediary name for 1.14/1.15, and `method_25404(III)Z` is for 1.16+ + //`keyPressed(III)Z` is the intermediary name for 1.14/1.15, and `method_25404(III)Z` is for 1.16+ @Inject(method = {"keyPressed(III)Z", "method_25404(III)Z"}, at = @At("HEAD"), remap = false) private void keyPressed_hasControlDownBegin(int a, int b, int c, CallbackInfoReturnable info) { //enable hasControlDown() injector Common.setInjectHasControlDown(true); } + @Inject(method = {"keyPressed(III)Z", "method_25404(III)Z"}, at = @At("RETURN"), remap = false) private void keyPressed_hasControlDownEnd(int a, int b, int c, CallbackInfoReturnable info) { diff --git a/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/HandledScreenMixin13.java b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/HandledScreenMixin13.java new file mode 100644 index 0000000..7d2e23e --- /dev/null +++ b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/HandledScreenMixin13.java @@ -0,0 +1,25 @@ +package com.hamarb123.macos_input_fixes.client.mixin; + +import net.minecraft.client.gui.screen.ingame.HandledScreen; +import net.minecraft.client.input.AbstractInput; +import net.minecraft.client.input.KeyInput; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import com.hamarb123.macos_input_fixes.client.Common; +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import com.llamalad7.mixinextras.sugar.Local; + +@Mixin(HandledScreen.class) +public class HandledScreenMixin13 +{ + @ModifyExpressionValue(method = "keyPressed(Lnet/minecraft/client/input/KeyInput;)Z", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/input/KeyInput;hasCtrl()Z")) + private boolean keyPressedHasCtrlAdjustment(boolean result, @Local(argsOnly = true) KeyInput input) + { + if (!result && Common.IS_SYSTEM_MAC) + { + result = (((AbstractInput)Common.asObject(input)).modifiers() & 2) != 0; + } + return result; + } +} diff --git a/src/main/java/com/hamarb123/macos_input_fixes/mixin/KeyboardMixin.java b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/KeyboardMixin12.java similarity index 72% rename from src/main/java/com/hamarb123/macos_input_fixes/mixin/KeyboardMixin.java rename to src/client/java/com/hamarb123/macos_input_fixes/client/mixin/KeyboardMixin12.java index fed9d1b..feb2a18 100644 --- a/src/main/java/com/hamarb123/macos_input_fixes/mixin/KeyboardMixin.java +++ b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/KeyboardMixin12.java @@ -1,21 +1,23 @@ -package com.hamarb123.macos_input_fixes.mixin; +package com.hamarb123.macos_input_fixes.client.mixin; 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; -import com.hamarb123.macos_input_fixes.Common; + +import com.hamarb123.macos_input_fixes.client.Common; + import net.minecraft.client.Keyboard; -import net.minecraft.client.MinecraftClient; @Mixin(Keyboard.class) -public class KeyboardMixin +public class KeyboardMixin12 { - @Inject(at = @At("HEAD"), method = "onKey(JIIII)V", cancellable = true) + //@Inject(at = @At("HEAD"), method = "onKey(JIIII)V", cancellable = true) + @Inject(at = @At("HEAD"), method = "method_1466(JIIII)V", cancellable = true, remap = false) public void onKey(long window, int key, int scancode, int action, int modifiers, CallbackInfo info) { - if (MinecraftClient.IS_SYSTEM_MAC) + if (Common.IS_SYSTEM_MAC) { //disable built-in callback for tab and escape // - these are the keys which don't get registered properly when control is pressed in some configurations diff --git a/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/KeyboardMixin13.java b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/KeyboardMixin13.java new file mode 100644 index 0000000..c0b2909 --- /dev/null +++ b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/KeyboardMixin13.java @@ -0,0 +1,37 @@ +package com.hamarb123.macos_input_fixes.client.mixin; + +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; + +import com.hamarb123.macos_input_fixes.client.Common; + +import net.minecraft.client.Keyboard; +import net.minecraft.client.input.AbstractInput; +import net.minecraft.client.input.KeyInput; + +@Mixin(Keyboard.class) +public class KeyboardMixin13 +{ + @Inject(at = @At("HEAD"), method = "onKey(JILnet/minecraft/client/input/KeyInput;)V", cancellable = true) + public void onKey(long window, int action, KeyInput input, CallbackInfo info) + { + if (Common.IS_SYSTEM_MAC) + { + //disable built-in callback for tab and escape + // - these are the keys which don't get registered properly when control is pressed in some configurations + // - space can seemingly ONLY be fixed by changing macOS settings + if (((AbstractInput)Common.asObject(input)).getKeycode() == GLFW.GLFW_KEY_TAB || ((AbstractInput)Common.asObject(input)).getKeycode() == GLFW.GLFW_KEY_ESCAPE) + { + if (!Common.allowInputOSX2()) + { + //only accept key event on macOS if it's from the native callback + info.cancel(); + return; + } + } + } + } +} diff --git a/src/main/java/com/hamarb123/macos_input_fixes/mixin/MinecraftClientAccessor.java b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/MinecraftClientAccessor.java similarity index 90% rename from src/main/java/com/hamarb123/macos_input_fixes/mixin/MinecraftClientAccessor.java rename to src/client/java/com/hamarb123/macos_input_fixes/client/mixin/MinecraftClientAccessor.java index 1aa9793..efac092 100644 --- a/src/main/java/com/hamarb123/macos_input_fixes/mixin/MinecraftClientAccessor.java +++ b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/MinecraftClientAccessor.java @@ -1,4 +1,4 @@ -package com.hamarb123.macos_input_fixes.mixin; +package com.hamarb123.macos_input_fixes.client.mixin; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; diff --git a/src/main/java/com/hamarb123/macos_input_fixes/mixin/MinecraftClientMixin.java b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/MinecraftClientMixin.java similarity index 78% rename from src/main/java/com/hamarb123/macos_input_fixes/mixin/MinecraftClientMixin.java rename to src/client/java/com/hamarb123/macos_input_fixes/client/mixin/MinecraftClientMixin.java index 5ccd583..e3e7b42 100644 --- a/src/main/java/com/hamarb123/macos_input_fixes/mixin/MinecraftClientMixin.java +++ b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/MinecraftClientMixin.java @@ -1,4 +1,4 @@ -package com.hamarb123.macos_input_fixes.mixin; +package com.hamarb123.macos_input_fixes.client.mixin; import net.minecraft.client.Keyboard; import net.minecraft.client.MinecraftClient; @@ -11,9 +11,10 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import com.hamarb123.macos_input_fixes.Common; -import com.hamarb123.macos_input_fixes.FabricReflectionHelper; -import com.hamarb123.macos_input_fixes.MacOSInputFixesClientMod; + +import com.hamarb123.macos_input_fixes.client.Common; +import com.hamarb123.macos_input_fixes.client.FabricReflectionHelper; +import com.hamarb123.macos_input_fixes.client.MacOSInputFixesClientMod; @Mixin(MinecraftClient.class) public class MinecraftClientMixin @@ -36,7 +37,7 @@ public class MinecraftClientMixin @Inject(at = @At("HEAD"), method = "onWindowFocusChanged(Z)V", cancellable = true) private void onWindowFocusChanged(boolean focused, CallbackInfo info) { - if (MinecraftClient.IS_SYSTEM_MAC) + if (Common.IS_SYSTEM_MAC) { if (!runOnce) { @@ -104,26 +105,18 @@ private void keyCallback(int key, int scancode, int action, int modifiers) //enable onKey Common.setAllowedInputOSX2(true); - //on 1.14 we need to use the window field, on 1.19 the field still exists - keyboard.onKey(((MinecraftClientAccessor)MinecraftClient.getInstance()).getWindow().getHandle(), key, scancode, action, modifiers); + if (FabricReflectionHelper.Has_Keyboard_onKey_2()) + { + FabricReflectionHelper.Keyboard_onKey_2(keyboard, MinecraftClient.getInstance().getWindow().getHandle(), action, FabricReflectionHelper.new_KeyInput(key, scancode, modifiers)); + } + else + { + //on 1.14 we need to use the window field, on 1.19 the field still exists + FabricReflectionHelper.Keyboard_onKey_1(keyboard, ((MinecraftClientAccessor)MinecraftClient.getInstance()).getWindow().getHandle(), key, scancode, action, modifiers); + } //disable onKey Common.setAllowedInputOSX2(false); }); } - - //dropping stack in game - @Inject(method = "handleInputEvents()V", at = @At("HEAD")) - private void keyPressed_hasControlDownBegin(CallbackInfo info) - { - //enable hasControlDown() injector - Common.setInjectHasControlDown(true); - } - - @Inject(method = "handleInputEvents()V", at = @At("RETURN")) - private void keyPressed_hasControlDownEnd(CallbackInfo info) - { - //disable hasControlDown() injector - Common.setInjectHasControlDown(false); - } } diff --git a/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/MinecraftClientMixin12.java b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/MinecraftClientMixin12.java new file mode 100644 index 0000000..6f3b61c --- /dev/null +++ b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/MinecraftClientMixin12.java @@ -0,0 +1,28 @@ +package com.hamarb123.macos_input_fixes.client.mixin; + +import net.minecraft.client.MinecraftClient; +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; + +import com.hamarb123.macos_input_fixes.client.Common; + +@Mixin(MinecraftClient.class) +public class MinecraftClientMixin12 +{ + //dropping stack in game + @Inject(method = "handleInputEvents()V", at = @At("HEAD")) + private void keyPressed_hasControlDownBegin(CallbackInfo info) + { + //enable hasControlDown() injector + Common.setInjectHasControlDown(true); + } + + @Inject(method = "handleInputEvents()V", at = @At("RETURN")) + private void keyPressed_hasControlDownEnd(CallbackInfo info) + { + //disable hasControlDown() injector + Common.setInjectHasControlDown(false); + } +} diff --git a/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/MinecraftClientMixin13.java b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/MinecraftClientMixin13.java new file mode 100644 index 0000000..218cfcd --- /dev/null +++ b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/MinecraftClientMixin13.java @@ -0,0 +1,28 @@ +package com.hamarb123.macos_input_fixes.client.mixin; + +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.util.InputUtil; +import net.minecraft.client.util.Window; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +import com.hamarb123.macos_input_fixes.client.Common; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; + +@Mixin(MinecraftClient.class) +public class MinecraftClientMixin13 +{ + @WrapOperation(method = "handleInputEvents()V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/MinecraftClient;isCtrlPressed()Z")) + private boolean handleInputEventsIsCtrlPressedAdjustment(MinecraftClient instance, Operation original) + { + boolean result = original.call(instance); + if (!result && Common.IS_SYSTEM_MAC) + { + Window window = instance.getWindow(); + return InputUtil.isKeyPressed(window, 341) || InputUtil.isKeyPressed(window, 345); + } + return result; + } +} diff --git a/src/main/java/com/hamarb123/macos_input_fixes/mixin/MouseInvokerMixin.java b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/MouseInvokerMixin.java similarity index 87% rename from src/main/java/com/hamarb123/macos_input_fixes/mixin/MouseInvokerMixin.java rename to src/client/java/com/hamarb123/macos_input_fixes/client/mixin/MouseInvokerMixin.java index aaddba0..86dd8b2 100644 --- a/src/main/java/com/hamarb123/macos_input_fixes/mixin/MouseInvokerMixin.java +++ b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/MouseInvokerMixin.java @@ -1,4 +1,4 @@ -package com.hamarb123.macos_input_fixes.mixin; +package com.hamarb123.macos_input_fixes.client.mixin; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; diff --git a/src/main/java/com/hamarb123/macos_input_fixes/mixin/MouseMixin.java b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/MouseMixin.java similarity index 60% rename from src/main/java/com/hamarb123/macos_input_fixes/mixin/MouseMixin.java rename to src/client/java/com/hamarb123/macos_input_fixes/client/mixin/MouseMixin.java index c560ee3..fdf7326 100644 --- a/src/main/java/com/hamarb123/macos_input_fixes/mixin/MouseMixin.java +++ b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/MouseMixin.java @@ -1,24 +1,22 @@ -package com.hamarb123.macos_input_fixes.mixin; +package com.hamarb123.macos_input_fixes.client.mixin; -import net.minecraft.client.MinecraftClient; import net.minecraft.client.Mouse; -import org.objectweb.asm.Opcodes; 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.ModifyVariable; -import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import com.hamarb123.macos_input_fixes.Common; -import com.hamarb123.macos_input_fixes.ModOptions; -@Mixin(value = Mouse.class) +import com.hamarb123.macos_input_fixes.client.Common; +import com.hamarb123.macos_input_fixes.client.ModOptions; + +@Mixin(Mouse.class) public class MouseMixin { @Inject(at = @At("HEAD"), method = "onMouseScroll(JDD)V", cancellable = true) private void onMouseScroll(long window, double horizontal, double vertical, CallbackInfo info) { - if (MinecraftClient.IS_SYSTEM_MAC) + if (Common.IS_SYSTEM_MAC) { if (vertical == 0) { @@ -48,14 +46,4 @@ private double maybeReverseVScroll(double value) //if the reverse scrolling option is enabled, reverse the vertical scroll value return ModOptions.reverseScrolling ? -value : value; } - - @Redirect(method = "onMouseButton(JIII)V", at = @At(value = "FIELD", target = "Lnet/minecraft/client/MinecraftClient;IS_SYSTEM_MAC:Z", opcode = Opcodes.GETSTATIC)) - private boolean leftMouseClick() - { - //check if we want to disable the below fix - if (ModOptions.disableCtrlClickFix) return MinecraftClient.IS_SYSTEM_MAC; - - //onMouseButton converts left click + control on macOS to right click, simply tell it we're not on macOS so it can't do that (there's no other uses of macOS in the function) - return false; - } } diff --git a/src/main/java/com/hamarb123/macos_input_fixes/mixin/MouseMixin11.java b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/MouseMixin11.java similarity index 91% rename from src/main/java/com/hamarb123/macos_input_fixes/mixin/MouseMixin11.java rename to src/client/java/com/hamarb123/macos_input_fixes/client/mixin/MouseMixin11.java index a62ae1c..4a24250 100644 --- a/src/main/java/com/hamarb123/macos_input_fixes/mixin/MouseMixin11.java +++ b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/MouseMixin11.java @@ -1,16 +1,16 @@ -package com.hamarb123.macos_input_fixes.mixin; +package com.hamarb123.macos_input_fixes.client.mixin; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.ModifyVariable; -import com.hamarb123.macos_input_fixes.ModOptions; +import com.hamarb123.macos_input_fixes.client.ModOptions; import net.minecraft.client.MinecraftClient; import net.minecraft.client.Mouse; -@Mixin(value = Mouse.class) +@Mixin(Mouse.class) public class MouseMixin11 { @Shadow diff --git a/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/MouseMixin12.java b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/MouseMixin12.java new file mode 100644 index 0000000..ccdc547 --- /dev/null +++ b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/MouseMixin12.java @@ -0,0 +1,24 @@ +package com.hamarb123.macos_input_fixes.client.mixin; + +import net.minecraft.client.Mouse; +import org.objectweb.asm.Opcodes; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; +import com.hamarb123.macos_input_fixes.client.Common; +import com.hamarb123.macos_input_fixes.client.ModOptions; + +@Mixin(Mouse.class) +public class MouseMixin12 +{ + //@Redirect(method = "onMouseButton(JIII)V", at = @At(value = "FIELD", target = "Lnet/minecraft/client/MinecraftClient;IS_SYSTEM_MAC:Z", opcode = Opcodes.GETSTATIC)) + @Redirect(method = "method_1601(JIII)V", at = @At(value = "FIELD", target = "Lnet/minecraft/class_310;field_1703:Z", opcode = Opcodes.GETSTATIC, remap = false), remap = false) + private boolean leftMouseClick() + { + //check if we want to disable the below fix + if (ModOptions.disableCtrlClickFix) return Common.IS_SYSTEM_MAC; + + //onMouseButton converts left click + control on macOS to right click, simply tell it we're not on macOS so it can't do that (there's no other uses of macOS in the function) + return false; + } +} diff --git a/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/MouseMixin13.java b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/MouseMixin13.java new file mode 100644 index 0000000..8f6f39b --- /dev/null +++ b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/MouseMixin13.java @@ -0,0 +1,24 @@ +package com.hamarb123.macos_input_fixes.client.mixin; + +import net.minecraft.client.Mouse; +import net.minecraft.client.input.SystemKeycodes; + +import org.objectweb.asm.Opcodes; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +import com.hamarb123.macos_input_fixes.client.Common; +import com.hamarb123.macos_input_fixes.client.ModOptions; + +@Mixin(Mouse.class) +public class MouseMixin13 +{ + @Redirect(method = "modifyMouseInput(Lnet/minecraft/client/input/MouseInput;Z)Lnet/minecraft/client/input/MouseInput;", at = @At(value = "FIELD", target = "Lnet/minecraft/client/input/SystemKeycodes;USE_LONG_LEFT_PRESS:Z", opcode = Opcodes.GETSTATIC)) + private static boolean modifyMouseInput_USE_LONG_LEFT_PRESS_Adjustment() + { + // Ensure control + left click doesn't get converted into right click if we don't want to do that + if (Common.IS_SYSTEM_MAC && !ModOptions.disableCtrlClickFix) return false; + return SystemKeycodes.USE_LONG_LEFT_PRESS; + } +} diff --git a/src/main/java/com/hamarb123/macos_input_fixes/mixin/PlayerInventoryMixin10.java b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/PlayerInventoryMixin10.java similarity index 63% rename from src/main/java/com/hamarb123/macos_input_fixes/mixin/PlayerInventoryMixin10.java rename to src/client/java/com/hamarb123/macos_input_fixes/client/mixin/PlayerInventoryMixin10.java index dc9a905..1e6330b 100644 --- a/src/main/java/com/hamarb123/macos_input_fixes/mixin/PlayerInventoryMixin10.java +++ b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/PlayerInventoryMixin10.java @@ -1,15 +1,18 @@ -package com.hamarb123.macos_input_fixes.mixin; +package com.hamarb123.macos_input_fixes.client.mixin; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.ModifyVariable; -import com.hamarb123.macos_input_fixes.ModOptions; + +import com.hamarb123.macos_input_fixes.client.ModOptions; + import net.minecraft.entity.player.PlayerInventory; @Mixin(PlayerInventory.class) public class PlayerInventoryMixin10 { - @ModifyVariable(method = "scrollInHotbar(D)V", at = @At("HEAD"), ordinal = 0) + //@ModifyVariable(method = "scrollInHotbar(D)V", at = @At("HEAD"), ordinal = 0) + @ModifyVariable(method = "method_7373(D)V", at = @At("HEAD"), ordinal = 0) private double fixHotbarScrollDirection(double d) { //if the reverse hotbar scrolling option is enabled, reverse the scroll value diff --git a/src/main/java/com/hamarb123/macos_input_fixes/mixin/ScreenMixin.java b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/ScreenMixin12.java similarity index 74% rename from src/main/java/com/hamarb123/macos_input_fixes/mixin/ScreenMixin.java rename to src/client/java/com/hamarb123/macos_input_fixes/client/mixin/ScreenMixin12.java index fa0ff6c..b49c845 100644 --- a/src/main/java/com/hamarb123/macos_input_fixes/mixin/ScreenMixin.java +++ b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/ScreenMixin12.java @@ -1,16 +1,18 @@ -package com.hamarb123.macos_input_fixes.mixin; +package com.hamarb123.macos_input_fixes.client.mixin; 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.CallbackInfoReturnable; -import com.hamarb123.macos_input_fixes.Common; + +import com.hamarb123.macos_input_fixes.client.Common; + import net.minecraft.client.gui.screen.Screen; @Mixin(Screen.class) -public class ScreenMixin +public class ScreenMixin12 { - //`hasControlDown()Z` is the intemediary name for 1.14-1.15, and `method_25441()Z` is for 1.16+ + //`hasControlDown()Z` is the intermediary name for 1.14-1.15, and `method_25441()Z` is for 1.16+ @Inject(method = {"hasControlDown()Z", "method_25441()Z"}, at = @At(value = "HEAD"), cancellable = true, remap = false) private static void hasControlDown(CallbackInfoReturnable info) { diff --git a/src/main/java/com/hamarb123/macos_input_fixes/mixin/gui/CyclingButtonWidgetBuilderMixin3.java b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/gui/CyclingButtonWidgetBuilderMixin3.java similarity index 87% rename from src/main/java/com/hamarb123/macos_input_fixes/mixin/gui/CyclingButtonWidgetBuilderMixin3.java rename to src/client/java/com/hamarb123/macos_input_fixes/client/mixin/gui/CyclingButtonWidgetBuilderMixin3.java index 807fb94..979582b 100644 --- a/src/main/java/com/hamarb123/macos_input_fixes/mixin/gui/CyclingButtonWidgetBuilderMixin3.java +++ b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/gui/CyclingButtonWidgetBuilderMixin3.java @@ -1,11 +1,13 @@ -package com.hamarb123.macos_input_fixes.mixin.gui; +package com.hamarb123.macos_input_fixes.client.mixin.gui; import java.util.function.Function; 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; -import com.hamarb123.macos_input_fixes.Common; + +import com.hamarb123.macos_input_fixes.client.Common; + import net.minecraft.client.gui.widget.CyclingButtonWidget; @Mixin(CyclingButtonWidget.Builder.class) diff --git a/src/main/java/com/hamarb123/macos_input_fixes/mixin/gui/CyclingOptionMixin4.java b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/gui/CyclingOptionMixin4.java similarity index 90% rename from src/main/java/com/hamarb123/macos_input_fixes/mixin/gui/CyclingOptionMixin4.java rename to src/client/java/com/hamarb123/macos_input_fixes/client/mixin/gui/CyclingOptionMixin4.java index 1ac8b3f..b5531e7 100644 --- a/src/main/java/com/hamarb123/macos_input_fixes/mixin/gui/CyclingOptionMixin4.java +++ b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/gui/CyclingOptionMixin4.java @@ -1,11 +1,13 @@ -package com.hamarb123.macos_input_fixes.mixin.gui; +package com.hamarb123.macos_input_fixes.client.mixin.gui; 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.CallbackInfoReturnable; -import com.hamarb123.macos_input_fixes.Common; -import com.hamarb123.macos_input_fixes.OptionMixinHelper; + +import com.hamarb123.macos_input_fixes.client.Common; +import com.hamarb123.macos_input_fixes.client.OptionMixinHelper; + import net.minecraft.client.option.GameOptions; @Mixin(targets = {"net.minecraft.class_4064"} /*CyclingOption*/, remap = false) diff --git a/src/main/java/com/hamarb123/macos_input_fixes/mixin/gui/GameOptionsAccessor.java b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/gui/GameOptionsAccessor.java similarity index 88% rename from src/main/java/com/hamarb123/macos_input_fixes/mixin/gui/GameOptionsAccessor.java rename to src/client/java/com/hamarb123/macos_input_fixes/client/mixin/gui/GameOptionsAccessor.java index 5b80860..3a79233 100644 --- a/src/main/java/com/hamarb123/macos_input_fixes/mixin/gui/GameOptionsAccessor.java +++ b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/gui/GameOptionsAccessor.java @@ -1,4 +1,4 @@ -package com.hamarb123.macos_input_fixes.mixin.gui; +package com.hamarb123.macos_input_fixes.client.mixin.gui; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; diff --git a/src/main/java/com/hamarb123/macos_input_fixes/mixin/gui/MouseOptionsScreenMixin2.java b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/gui/MouseOptionsScreenMixin2.java similarity index 85% rename from src/main/java/com/hamarb123/macos_input_fixes/mixin/gui/MouseOptionsScreenMixin2.java rename to src/client/java/com/hamarb123/macos_input_fixes/client/mixin/gui/MouseOptionsScreenMixin2.java index 7d7995b..59f3654 100644 --- a/src/main/java/com/hamarb123/macos_input_fixes/mixin/gui/MouseOptionsScreenMixin2.java +++ b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/gui/MouseOptionsScreenMixin2.java @@ -1,19 +1,21 @@ -package com.hamarb123.macos_input_fixes.mixin.gui; +package com.hamarb123.macos_input_fixes.client.mixin.gui; import java.lang.reflect.Array; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.ModifyArgs; import org.spongepowered.asm.mixin.injection.invoke.arg.Args; -import com.hamarb123.macos_input_fixes.FabricReflectionHelper; -import com.hamarb123.macos_input_fixes.ModOptions; + +import com.hamarb123.macos_input_fixes.client.FabricReflectionHelper; +import com.hamarb123.macos_input_fixes.client.ModOptions; + import net.minecraft.client.gui.screen.option.MouseOptionsScreen; @Mixin(MouseOptionsScreen.class) public class MouseOptionsScreenMixin2 { //ModifyArgs targets for init with yarn mappings: - //`init()V`, note: we mixin to both `init()V` (for 1.14-1.15) and `method_25426()V` (for 1.16+) as the intemediary name was changed + //`init()V`, note: we mixin to both `init()V` (for 1.14-1.15) and `method_25426()V` (for 1.16+) as the intermediary name was changed //other target for init (invoke at's target) with yarn mappings: //`net/minecraft/client/gui/widget/ButtonListWidget;addAll([Lnet/minecraft/client/option/Option;)V` diff --git a/src/main/java/com/hamarb123/macos_input_fixes/mixin/gui/MouseOptionsScreenMixin5.java b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/gui/MouseOptionsScreenMixin5.java similarity index 85% rename from src/main/java/com/hamarb123/macos_input_fixes/mixin/gui/MouseOptionsScreenMixin5.java rename to src/client/java/com/hamarb123/macos_input_fixes/client/mixin/gui/MouseOptionsScreenMixin5.java index 06bf2d6..7221499 100644 --- a/src/main/java/com/hamarb123/macos_input_fixes/mixin/gui/MouseOptionsScreenMixin5.java +++ b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/gui/MouseOptionsScreenMixin5.java @@ -1,4 +1,4 @@ -package com.hamarb123.macos_input_fixes.mixin.gui; +package com.hamarb123.macos_input_fixes.client.mixin.gui; import java.util.List; import org.spongepowered.asm.mixin.Mixin; @@ -6,7 +6,9 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import com.hamarb123.macos_input_fixes.FabricReflectionHelper; + +import com.hamarb123.macos_input_fixes.client.FabricReflectionHelper; + import net.minecraft.client.gui.screen.option.MouseOptionsScreen; import net.minecraft.client.gui.widget.OptionListWidget; import net.minecraft.client.util.math.MatrixStack; @@ -14,7 +16,7 @@ @Mixin(MouseOptionsScreen.class) public abstract class MouseOptionsScreenMixin5 { - @Shadow + @Shadow(aliases = "field_19246", remap = false) private OptionListWidget buttonList; @Inject(method = "method_25394(Lnet/minecraft/class_4587;IIF)V", at = @At("RETURN"), cancellable = true, remap = false) diff --git a/src/main/java/com/hamarb123/macos_input_fixes/mixin/gui/MouseOptionsScreenMixin6.java b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/gui/MouseOptionsScreenMixin6.java similarity index 83% rename from src/main/java/com/hamarb123/macos_input_fixes/mixin/gui/MouseOptionsScreenMixin6.java rename to src/client/java/com/hamarb123/macos_input_fixes/client/mixin/gui/MouseOptionsScreenMixin6.java index 674fc85..222a6e8 100644 --- a/src/main/java/com/hamarb123/macos_input_fixes/mixin/gui/MouseOptionsScreenMixin6.java +++ b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/gui/MouseOptionsScreenMixin6.java @@ -1,4 +1,4 @@ -package com.hamarb123.macos_input_fixes.mixin.gui; +package com.hamarb123.macos_input_fixes.client.mixin.gui; import java.util.List; import java.util.Optional; @@ -7,7 +7,9 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import com.hamarb123.macos_input_fixes.FabricReflectionHelper; + +import com.hamarb123.macos_input_fixes.client.FabricReflectionHelper; + import net.minecraft.client.gui.screen.option.MouseOptionsScreen; import net.minecraft.client.gui.widget.OptionListWidget; import net.minecraft.client.util.math.MatrixStack; @@ -15,13 +17,13 @@ @Mixin(MouseOptionsScreen.class) public class MouseOptionsScreenMixin6 { - @Shadow + @Shadow(aliases = "field_19246", remap = false) private OptionListWidget buttonList; @Inject(method = "method_25394(Lnet/minecraft/class_4587;IIF)V", at = @At("RETURN"), cancellable = true, remap = false) private void render(MatrixStack matrices, int mouseX, int mouseY, float delta, CallbackInfo info) { - Optional optional = buttonList.getHoveredWidget(mouseX, mouseY); + Optional optional = FabricReflectionHelper.OptionButtonWidget_getHoveredWidget(buttonList, mouseX, mouseY); if (optional.isPresent()) { Object option; diff --git a/src/main/java/com/hamarb123/macos_input_fixes/mixin/gui/MouseOptionsScreenMixin9.java b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/gui/MouseOptionsScreenMixin9.java similarity index 72% rename from src/main/java/com/hamarb123/macos_input_fixes/mixin/gui/MouseOptionsScreenMixin9.java rename to src/client/java/com/hamarb123/macos_input_fixes/client/mixin/gui/MouseOptionsScreenMixin9.java index 5e3bc40..d2d7e80 100644 --- a/src/main/java/com/hamarb123/macos_input_fixes/mixin/gui/MouseOptionsScreenMixin9.java +++ b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/gui/MouseOptionsScreenMixin9.java @@ -1,17 +1,20 @@ -package com.hamarb123.macos_input_fixes.mixin.gui; +package com.hamarb123.macos_input_fixes.client.mixin.gui; 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; -import com.hamarb123.macos_input_fixes.Common; + +import com.hamarb123.macos_input_fixes.client.Common; + import net.minecraft.client.gui.screen.option.MouseOptionsScreen; @Mixin(MouseOptionsScreen.class) public class MouseOptionsScreenMixin9 { //sets the modifyAddAllParameter() flag, which is checked and reset in ButtonListWidgetMixin1 - @Inject(method = "init()V", at = @At("HEAD")) + //@Inject(method = "init()V", at = @At("HEAD")) + @Inject(method = "method_25426()V", at = @At("HEAD"), remap = false) private void init_BeforeInvoke(CallbackInfo info) { //enable the mixin for addAll so that our options are added to the screen diff --git a/src/main/java/com/hamarb123/macos_input_fixes/mixin/gui/OptionListWidgetMixin8.java b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/gui/OptionListWidgetMixin8.java similarity index 92% rename from src/main/java/com/hamarb123/macos_input_fixes/mixin/gui/OptionListWidgetMixin8.java rename to src/client/java/com/hamarb123/macos_input_fixes/client/mixin/gui/OptionListWidgetMixin8.java index 8b57285..f3c7f13 100644 --- a/src/main/java/com/hamarb123/macos_input_fixes/mixin/gui/OptionListWidgetMixin8.java +++ b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/gui/OptionListWidgetMixin8.java @@ -1,10 +1,12 @@ -package com.hamarb123.macos_input_fixes.mixin.gui; +package com.hamarb123.macos_input_fixes.client.mixin.gui; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.ModifyVariable; -import com.hamarb123.macos_input_fixes.ModOptions; + +import com.hamarb123.macos_input_fixes.client.ModOptions; + import net.minecraft.client.gui.screen.option.GameOptionsScreen; import net.minecraft.client.gui.screen.option.MouseOptionsScreen; import net.minecraft.client.gui.widget.OptionListWidget; diff --git a/src/main/java/com/hamarb123/macos_input_fixes/mixin/gui/OptionListWidgetMixin9.java b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/gui/OptionListWidgetMixin9.java similarity index 88% rename from src/main/java/com/hamarb123/macos_input_fixes/mixin/gui/OptionListWidgetMixin9.java rename to src/client/java/com/hamarb123/macos_input_fixes/client/mixin/gui/OptionListWidgetMixin9.java index 2ff4515..de5765e 100644 --- a/src/main/java/com/hamarb123/macos_input_fixes/mixin/gui/OptionListWidgetMixin9.java +++ b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/gui/OptionListWidgetMixin9.java @@ -1,10 +1,12 @@ -package com.hamarb123.macos_input_fixes.mixin.gui; +package com.hamarb123.macos_input_fixes.client.mixin.gui; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.ModifyVariable; -import com.hamarb123.macos_input_fixes.Common; -import com.hamarb123.macos_input_fixes.ModOptions; + +import com.hamarb123.macos_input_fixes.client.Common; +import com.hamarb123.macos_input_fixes.client.ModOptions; + import net.minecraft.client.gui.widget.OptionListWidget; import net.minecraft.client.option.SimpleOption; diff --git a/src/main/java/com/hamarb123/macos_input_fixes/mixin/gui/ScreenAccessor7.java b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/gui/ScreenAccessor7.java similarity index 88% rename from src/main/java/com/hamarb123/macos_input_fixes/mixin/gui/ScreenAccessor7.java rename to src/client/java/com/hamarb123/macos_input_fixes/client/mixin/gui/ScreenAccessor7.java index 8ea8b95..6250f22 100644 --- a/src/main/java/com/hamarb123/macos_input_fixes/mixin/gui/ScreenAccessor7.java +++ b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/gui/ScreenAccessor7.java @@ -1,4 +1,4 @@ -package com.hamarb123.macos_input_fixes.mixin.gui; +package com.hamarb123.macos_input_fixes.client.mixin.gui; import java.util.List; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/main/java/com/hamarb123/macos_input_fixes/mixin/gui/SimpleOptionMixin1.java b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/gui/SimpleOptionMixin1.java similarity index 89% rename from src/main/java/com/hamarb123/macos_input_fixes/mixin/gui/SimpleOptionMixin1.java rename to src/client/java/com/hamarb123/macos_input_fixes/client/mixin/gui/SimpleOptionMixin1.java index b3b9817..61363a9 100644 --- a/src/main/java/com/hamarb123/macos_input_fixes/mixin/gui/SimpleOptionMixin1.java +++ b/src/client/java/com/hamarb123/macos_input_fixes/client/mixin/gui/SimpleOptionMixin1.java @@ -1,11 +1,13 @@ -package com.hamarb123.macos_input_fixes.mixin.gui; +package com.hamarb123.macos_input_fixes.client.mixin.gui; 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.CallbackInfoReturnable; -import com.hamarb123.macos_input_fixes.Common; -import com.hamarb123.macos_input_fixes.OptionMixinHelper; + +import com.hamarb123.macos_input_fixes.client.Common; +import com.hamarb123.macos_input_fixes.client.OptionMixinHelper; + import net.minecraft.client.option.GameOptions; import net.minecraft.client.option.SimpleOption; diff --git a/src/main/resources/macos_input_fixes.mixins.json b/src/client/resources/macos_input_fixes.client.mixins.json similarity index 54% rename from src/main/resources/macos_input_fixes.mixins.json rename to src/client/resources/macos_input_fixes.client.mixins.json index 2ee77ee..973ecfd 100644 --- a/src/main/resources/macos_input_fixes.mixins.json +++ b/src/client/resources/macos_input_fixes.client.mixins.json @@ -1,22 +1,16 @@ { "required": true, "minVersion": "0.8", - "plugin": "com.hamarb123.macos_input_fixes.MixinPlugin", - "package": "com.hamarb123.macos_input_fixes.mixin", + "plugin": "com.hamarb123.macos_input_fixes.client.MixinPlugin", + "package": "com.hamarb123.macos_input_fixes.client.mixin", "compatibilityLevel": "JAVA_8", - "mixins": - [ - ], "client": [ "gui.GameOptionsAccessor", - "HandledScreenMixin", - "KeyboardMixin", "MinecraftClientAccessor", "MinecraftClientMixin", "MouseInvokerMixin", - "MouseMixin", - "ScreenMixin" + "MouseMixin" ], "injectors": { diff --git a/src/main/java/com/hamarb123/macos_input_fixes/MacOSInputFixesMod.java b/src/main/java/com/hamarb123/macos_input_fixes/MacOSInputFixesMod.java deleted file mode 100644 index 7b690b6..0000000 --- a/src/main/java/com/hamarb123/macos_input_fixes/MacOSInputFixesMod.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.hamarb123.macos_input_fixes; - -import net.fabricmc.api.ModInitializer; - -public class MacOSInputFixesMod implements ModInitializer -{ - @Override - public void onInitialize() - { - } -} diff --git a/src/main/native/Makefile b/src/main/native/Makefile index 073db90..2ce3833 100644 --- a/src/main/native/Makefile +++ b/src/main/native/Makefile @@ -2,7 +2,7 @@ CC=clang++ JNIINCLUDEFOLDER="jdk8_include" CFLAGS=-c -Wall -arch x86_64 -arch arm64 -std=c++17 -I${JNIINCLUDEFOLDER} -I${JNIINCLUDEFOLDER}/darwin -mmacosx-version-min=10.9 LDFLAGS=-arch x86_64 -arch arm64 -dynamiclib -framework Foundation -framework AppKit -mmacosx-version-min=10.9 -SOURCES=com_hamarb123_macos_input_fixes_MacOSInputFixesClientMod.mm +SOURCES=com_hamarb123_macos_input_fixes_client_MacOSInputFixesClientMod.mm OBJECTS=$(SOURCES:.mm=.o) EXECUTABLE=macos_input_fixes.dylib diff --git a/src/main/native/com_hamarb123_macos_input_fixes_MacOSInputFixesClientMod.h b/src/main/native/com_hamarb123_macos_input_fixes_MacOSInputFixesClientMod.h deleted file mode 100644 index 897a4ee..0000000 --- a/src/main/native/com_hamarb123_macos_input_fixes_MacOSInputFixesClientMod.h +++ /dev/null @@ -1,45 +0,0 @@ -/* DO NOT EDIT THIS FILE - it is machine generated */ -#include -/* Header for class com_hamarb123_macos_input_fixes_MacOSInputFixesClientMod */ - -#ifndef _Included_com_hamarb123_macos_input_fixes_MacOSInputFixesClientMod -#define _Included_com_hamarb123_macos_input_fixes_MacOSInputFixesClientMod -#ifdef __cplusplus -extern "C" { -#endif -/* - * Class: com_hamarb123_macos_input_fixes_MacOSInputFixesClientMod - * Method: registerCallbacks - * Signature: (Lcom/hamarb123/macos_input_fixes/ScrollCallback;Lcom/hamarb123/macos_input_fixes/KeyCallback;J)V - */ -JNIEXPORT void JNICALL Java_com_hamarb123_macos_1input_1fixes_MacOSInputFixesClientMod_registerCallbacks - (JNIEnv *, jclass, jobject, jobject, jlong); - -/* - * Class: com_hamarb123_macos_input_fixes_MacOSInputFixesClientMod - * Method: setTrackpadSensitivity - * Signature: (D)V - */ -JNIEXPORT void JNICALL Java_com_hamarb123_macos_1input_1fixes_MacOSInputFixesClientMod_setTrackpadSensitivity - (JNIEnv *, jclass, jdouble); - -/* - * Class: com_hamarb123_macos_input_fixes_MacOSInputFixesClientMod - * Method: setMomentumScrolling - * Signature: (Z)V - */ -JNIEXPORT void JNICALL Java_com_hamarb123_macos_1input_1fixes_MacOSInputFixesClientMod_setMomentumScrolling - (JNIEnv *, jclass, jboolean); - -/* - * Class: com_hamarb123_macos_input_fixes_MacOSInputFixesClientMod - * Method: setInterfaceSmoothScroll - * Signature: (Z)V - */ -JNIEXPORT void JNICALL Java_com_hamarb123_macos_1input_1fixes_MacOSInputFixesClientMod_setInterfaceSmoothScroll - (JNIEnv *, jclass, jboolean); - -#ifdef __cplusplus -} -#endif -#endif diff --git a/src/main/native/com_hamarb123_macos_input_fixes_client_MacOSInputFixesClientMod.h b/src/main/native/com_hamarb123_macos_input_fixes_client_MacOSInputFixesClientMod.h new file mode 100644 index 0000000..d9f97ef --- /dev/null +++ b/src/main/native/com_hamarb123_macos_input_fixes_client_MacOSInputFixesClientMod.h @@ -0,0 +1,45 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class com_hamarb123_macos_input_fixes_client_MacOSInputFixesClientMod */ + +#ifndef _Included_com_hamarb123_macos_input_fixes_client_MacOSInputFixesClientMod +#define _Included_com_hamarb123_macos_input_fixes_client_MacOSInputFixesClientMod +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: com_hamarb123_macos_input_fixes_client_MacOSInputFixesClientMod + * Method: registerCallbacks + * Signature: (Lcom/hamarb123/macos_input_fixes/client/ScrollCallback;Lcom/hamarb123/macos_input_fixes/client/KeyCallback;J)V + */ +JNIEXPORT void JNICALL Java_com_hamarb123_macos_1input_1fixes_client_MacOSInputFixesClientMod_registerCallbacks + (JNIEnv *, jclass, jobject, jobject, jlong); + +/* + * Class: com_hamarb123_macos_input_fixes_client_MacOSInputFixesClientMod + * Method: setTrackpadSensitivity + * Signature: (D)V + */ +JNIEXPORT void JNICALL Java_com_hamarb123_macos_1input_1fixes_client_MacOSInputFixesClientMod_setTrackpadSensitivity + (JNIEnv *, jclass, jdouble); + +/* + * Class: com_hamarb123_macos_input_fixes_client_MacOSInputFixesClientMod + * Method: setMomentumScrolling + * Signature: (Z)V + */ +JNIEXPORT void JNICALL Java_com_hamarb123_macos_1input_1fixes_client_MacOSInputFixesClientMod_setMomentumScrolling + (JNIEnv *, jclass, jboolean); + +/* + * Class: com_hamarb123_macos_input_fixes_client_MacOSInputFixesClientMod + * Method: setInterfaceSmoothScroll + * Signature: (Z)V + */ +JNIEXPORT void JNICALL Java_com_hamarb123_macos_1input_1fixes_client_MacOSInputFixesClientMod_setInterfaceSmoothScroll + (JNIEnv *, jclass, jboolean); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/main/native/com_hamarb123_macos_input_fixes_MacOSInputFixesClientMod.mm b/src/main/native/com_hamarb123_macos_input_fixes_client_MacOSInputFixesClientMod.mm similarity index 89% rename from src/main/native/com_hamarb123_macos_input_fixes_MacOSInputFixesClientMod.mm rename to src/main/native/com_hamarb123_macos_input_fixes_client_MacOSInputFixesClientMod.mm index b2bc14b..74070b5 100644 --- a/src/main/native/com_hamarb123_macos_input_fixes_MacOSInputFixesClientMod.mm +++ b/src/main/native/com_hamarb123_macos_input_fixes_client_MacOSInputFixesClientMod.mm @@ -6,7 +6,7 @@ #include #include -#include "com_hamarb123_macos_input_fixes_MacOSInputFixesClientMod.h" +#include "com_hamarb123_macos_input_fixes_client_MacOSInputFixesClientMod.h" #import @@ -211,11 +211,11 @@ void UpdateGlobalRef(JNIEnv* old_jenv, JNIEnv* new_jenv, T& storage, T value) } /* - * Class: com_hamarb123_macos_input_fixes_MacOSInputFixesClientMod + * Class: com_hamarb123_macos_input_fixes_client_MacOSInputFixesClientMod * Method: registerCallbacks - * Signature: (Lcom/hamarb123/macos_input_fixes/ScrollCallback;Lcom/hamarb123/macos_input_fixes/KeyCallback;J)V + * Signature: (Lcom/hamarb123/macos_input_fixes/client/ScrollCallback;Lcom/hamarb123/macos_input_fixes/client/KeyCallback;J)V */ -JNIEXPORT void JNICALL Java_com_hamarb123_macos_1input_1fixes_MacOSInputFixesClientMod_registerCallbacks +JNIEXPORT void JNICALL Java_com_hamarb123_macos_1input_1fixes_client_MacOSInputFixesClientMod_registerCallbacks (JNIEnv* jenv, jclass, jobject scrollCallback, jobject keyCallback, jlong window) { //this a function that is called from java @@ -235,9 +235,9 @@ void UpdateGlobalRef(JNIEnv* old_jenv, JNIEnv* new_jenv, T& storage, T value) //cache relevant java classes and methods UpdateGlobalRef(oldJenv, jenv, _scrollCallback, scrollCallback); - _ScrollCallbackAccept = jenv->GetMethodID(jenv->FindClass("com/hamarb123/macos_input_fixes/ScrollCallback"), "accept", "(DDDDDD)V"); + _ScrollCallbackAccept = jenv->GetMethodID(jenv->FindClass("com/hamarb123/macos_input_fixes/client/ScrollCallback"), "accept", "(DDDDDD)V"); UpdateGlobalRef(oldJenv, jenv, _keyCallback, keyCallback); - _KeyCallbackAccept = jenv->GetMethodID(jenv->FindClass("com/hamarb123/macos_input_fixes/KeyCallback"), "accept", "(IIII)V"); + _KeyCallbackAccept = jenv->GetMethodID(jenv->FindClass("com/hamarb123/macos_input_fixes/client/KeyCallback"), "accept", "(IIII)V"); //store the cocoa window id _window = window; @@ -272,11 +272,11 @@ void UpdateGlobalRef(JNIEnv* old_jenv, JNIEnv* new_jenv, T& storage, T value) } /* - * Class: com_hamarb123_macos_input_fixes_MacOSInputFixesClientMod + * Class: com_hamarb123_macos_input_fixes_client_MacOSInputFixesClientMod * Method: setTrackpadSensitivity * Signature: (D)V */ -JNIEXPORT void JNICALL Java_com_hamarb123_macos_1input_1fixes_MacOSInputFixesClientMod_setTrackpadSensitivity +JNIEXPORT void JNICALL Java_com_hamarb123_macos_1input_1fixes_client_MacOSInputFixesClientMod_setTrackpadSensitivity (JNIEnv *, jclass, jdouble value) { //this a function that is called from java @@ -287,11 +287,11 @@ void UpdateGlobalRef(JNIEnv* old_jenv, JNIEnv* new_jenv, T& storage, T value) } /* - * Class: com_hamarb123_macos_input_fixes_MacOSInputFixesClientMod + * Class: com_hamarb123_macos_input_fixes_client_MacOSInputFixesClientMod * Method: setMomentumScrolling * Signature: (Z)V */ -JNIEXPORT void JNICALL Java_com_hamarb123_macos_1input_1fixes_MacOSInputFixesClientMod_setMomentumScrolling +JNIEXPORT void JNICALL Java_com_hamarb123_macos_1input_1fixes_client_MacOSInputFixesClientMod_setMomentumScrolling (JNIEnv *, jclass, jboolean value) { //this a function that is called from java @@ -302,11 +302,11 @@ void UpdateGlobalRef(JNIEnv* old_jenv, JNIEnv* new_jenv, T& storage, T value) } /* - * Class: com_hamarb123_macos_input_fixes_MacOSInputFixesClientMod + * Class: com_hamarb123_macos_input_fixes_client_MacOSInputFixesClientMod * Method: setInterfaceSmoothScroll * Signature: (Z)V */ -JNIEXPORT void JNICALL Java_com_hamarb123_macos_1input_1fixes_MacOSInputFixesClientMod_setInterfaceSmoothScroll +JNIEXPORT void JNICALL Java_com_hamarb123_macos_1input_1fixes_client_MacOSInputFixesClientMod_setInterfaceSmoothScroll (JNIEnv *, jclass, jboolean value) { //this a function that is called from java diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 0294791..9532843 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -4,7 +4,7 @@ "version": "${version}", "name": "MacOS Input Fixes", - "description": "This mod fixes MC-59810 and MC-121772. It makes scrolling with shift work properly on macOS, left click + control = left click (instead of right click) and more fixes! See the full list of fixes on the site.", + "description": "This mod fixes MC-22882, MC-59810, MC-121772, and MC-122296. It makes scrolling with shift work properly on macOS, left click + control = left click (instead of right click) and more fixes! See the full list of fixes on the site.", "authors": [ "hamarb123" @@ -23,21 +23,23 @@ { "main": [ - "com.hamarb123.macos_input_fixes.MacOSInputFixesMod" ], "client": [ - "com.hamarb123.macos_input_fixes.MacOSInputFixesClientMod" + "com.hamarb123.macos_input_fixes.client.MacOSInputFixesClientMod" ] }, "mixins": [ - "macos_input_fixes.mixins.json" + { + "config": "macos_input_fixes.client.mixins.json", + "environment": "client" + } ], "depends": { - "fabricloader": ">=0.14.22", + "fabricloader": ">=0.15.0", "minecraft": ">=1.14", "java": ">=8" },