45 lines
1.5 KiB
Java
45 lines
1.5 KiB
Java
package com.replaymod.compat.optifine;
|
|
|
|
import net.minecraft.client.options.GameOptions;
|
|
|
|
import java.lang.reflect.Field;
|
|
import java.lang.reflect.InvocationTargetException;
|
|
|
|
public class OptifineReflection {
|
|
|
|
// GameSettings.ofFastRender
|
|
public static Field gameSettings_ofFastRender;
|
|
|
|
static {
|
|
try {
|
|
// this throws an ignored ClassNotFoundException if Optifine isn't installed
|
|
Class.forName("Config");
|
|
|
|
gameSettings_ofFastRender = GameOptions.class.getDeclaredField("ofFastRender");
|
|
gameSettings_ofFastRender.setAccessible(true);
|
|
} catch (ClassNotFoundException ignore) {
|
|
// no optifine installed
|
|
} catch (NoSuchFieldException e) {
|
|
// the field wasn't found. Has it been renamed?
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
public static void reloadLang() {
|
|
try {
|
|
Class<?> langClass;
|
|
try {
|
|
langClass = Class.forName("Lang"); // Pre Optifine 1.12.2 E1
|
|
} catch (ClassNotFoundException ignore) {
|
|
langClass = Class.forName("net.optifine.Lang"); // Post Optifine 1.12.2 E1
|
|
}
|
|
langClass.getDeclaredMethod("resourcesReloaded").invoke(null);
|
|
} catch (ClassNotFoundException ignore) {
|
|
// no optifine installed
|
|
} catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
}
|