mirror of
https://github.com/chylex/Better-Controls.git
synced 2025-05-12 13:34:04 +02:00
Disable toggle sprint/sneak buttons in vanilla accessibility options screen
This commit is contained in:
parent
85f86b52ed
commit
572e1f16c8
src/main/java/chylex/bettercontrols
@ -2,17 +2,19 @@ package chylex.bettercontrols.gui;
|
||||
import chylex.bettercontrols.mixin.AccessScreenButtons;
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
import net.minecraft.client.gui.Element;
|
||||
import net.minecraft.client.gui.screen.options.AccessibilityOptionsScreen;
|
||||
import net.minecraft.client.gui.screen.options.ControlsOptionsScreen;
|
||||
import net.minecraft.client.gui.widget.AbstractButtonWidget;
|
||||
import net.minecraft.client.gui.widget.ButtonListWidget;
|
||||
import net.minecraft.client.gui.widget.ButtonWidget;
|
||||
import net.minecraft.client.gui.widget.OptionButtonWidget;
|
||||
import net.minecraft.client.options.Option;
|
||||
import java.util.List;
|
||||
|
||||
public final class ControlsScreenPatcher{
|
||||
private ControlsScreenPatcher(){}
|
||||
public final class ScreenPatcher{
|
||||
private ScreenPatcher(){}
|
||||
|
||||
public static void onOpened(final ControlsOptionsScreen screen){
|
||||
public static void onControlsScreenOpened(final ControlsOptionsScreen screen){
|
||||
final AccessScreenButtons accessor = (AccessScreenButtons)screen;
|
||||
|
||||
final List<? extends Element> children = screen.children();
|
||||
@ -33,4 +35,23 @@ public final class ControlsScreenPatcher{
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
public static void onAccessibilityScreenOpened(final AccessibilityOptionsScreen screen){
|
||||
final AccessScreenButtons accessor = (AccessScreenButtons)screen;
|
||||
|
||||
screen.children()
|
||||
.stream()
|
||||
.filter(it -> it instanceof ButtonListWidget)
|
||||
.flatMap(it -> ((ButtonListWidget)it).children().stream())
|
||||
.flatMap(it -> it.children().stream())
|
||||
.filter(it -> it instanceof OptionButtonWidget)
|
||||
.forEach(it -> {
|
||||
final OptionButtonWidget button = (OptionButtonWidget)it;
|
||||
final Option option = button.getOption();
|
||||
|
||||
if (option == Option.SPRINT_TOGGLED || option == Option.SNEAK_TOGGLED){
|
||||
button.active = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
@ -1,7 +1,8 @@
|
||||
package chylex.bettercontrols.mixin;
|
||||
import chylex.bettercontrols.gui.ControlsScreenPatcher;
|
||||
import chylex.bettercontrols.gui.ScreenPatcher;
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
import net.minecraft.client.gui.screen.Screen;
|
||||
import net.minecraft.client.gui.screen.options.AccessibilityOptionsScreen;
|
||||
import net.minecraft.client.gui.screen.options.ControlsOptionsScreen;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
@ -15,8 +16,13 @@ public abstract class HookOpenScreen{
|
||||
final MinecraftClient mc = MinecraftClient.getInstance();
|
||||
final Screen screen = mc.currentScreen;
|
||||
|
||||
if (screen != null && screen.getClass() == ControlsOptionsScreen.class && !Screen.hasAltDown()){
|
||||
ControlsScreenPatcher.onOpened((ControlsOptionsScreen)screen);
|
||||
if (screen != null && !Screen.hasAltDown()){
|
||||
if (screen.getClass() == ControlsOptionsScreen.class){
|
||||
ScreenPatcher.onControlsScreenOpened((ControlsOptionsScreen)screen);
|
||||
}
|
||||
else if (screen.getClass() == AccessibilityOptionsScreen.class){
|
||||
ScreenPatcher.onAccessibilityScreenOpened((AccessibilityOptionsScreen)screen);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user