-
Notifications
You must be signed in to change notification settings - Fork 16
/
KeyReflectionHelper.java
31 lines (25 loc) · 1.14 KB
/
KeyReflectionHelper.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package dmillerw.menu.helper;
import dmillerw.menu.handler.LogHandler;
import net.minecraft.client.settings.KeyBinding;
import net.minecraftforge.fml.relauncher.ReflectionHelper;
import java.lang.reflect.Field;
public class KeyReflectionHelper {
private static Field pressTimeField;
public static void gatherFields() {
pressTimeField = ReflectionHelper.findField(KeyBinding.class, "pressTime", "field_151474_i");
pressTimeField.setAccessible(true);
}
public static void setPressTime(KeyBinding keyBinding, int pressTime) {
try {
pressTimeField.set(keyBinding, pressTime == 0 ? 0 : pressTimeField.getInt(keyBinding) + pressTime);
} catch (IllegalAccessException e) {
e.printStackTrace();
throwReflectionError("pressTime", KeyBinding.class);
}
}
private static void throwReflectionError(String field, Class<?> clazz) {
String error = String.format("Ran into an issue regarding reflection with field %s from %s. REPORT THIS TO THE MOD AUTHOR!", field, clazz.getName());
LogHandler.fatal(error);
throw new RuntimeException(error);
}
}