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