HookOpenScreen.java 1.1 KB

123456789101112131415161718192021222324252627
  1. package chylex.bettercontrols.mixin;
  2. import chylex.bettercontrols.gui.ScreenPatcher;
  3. import net.minecraft.client.Minecraft;
  4. import net.minecraft.client.gui.screens.AccessibilityOptionsScreen;
  5. import net.minecraft.client.gui.screens.Screen;
  6. import net.minecraft.client.gui.screens.controls.ControlsScreen;
  7. import org.spongepowered.asm.mixin.Mixin;
  8. import org.spongepowered.asm.mixin.injection.At;
  9. import org.spongepowered.asm.mixin.injection.Inject;
  10. import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
  11. @Mixin(value = Minecraft.class, priority = 100)
  12. public abstract class HookOpenScreen {
  13. @Inject(method = "setScreen", at = @At("TAIL"))
  14. private void openScreen(final Screen ignore, final CallbackInfo ci) {
  15. final Screen screen = Minecraft.getInstance().screen;
  16. if (screen != null && !Screen.hasAltDown()) {
  17. if (screen.getClass() == ControlsScreen.class) {
  18. ScreenPatcher.onControlsScreenOpened((ControlsScreen)screen);
  19. }
  20. else if (screen.getClass() == AccessibilityOptionsScreen.class) {
  21. ScreenPatcher.onAccessibilityScreenOpened((AccessibilityOptionsScreen)screen);
  22. }
  23. }
  24. }
  25. }