forked from Clones/Controlify
Fix F3+Esc crashing on controller mode (close #156)
This commit is contained in:
@ -6,6 +6,7 @@ import dev.isxander.controlify.screenop.compat.vanilla.PauseScreenProcessor;
|
||||
import net.minecraft.client.gui.components.Button;
|
||||
import net.minecraft.client.gui.screens.PauseScreen;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.spongepowered.asm.mixin.Final;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
import org.spongepowered.asm.mixin.Unique;
|
||||
@ -13,9 +14,10 @@ import org.spongepowered.asm.mixin.Unique;
|
||||
@Mixin(PauseScreen.class)
|
||||
public class PauseScreenMixin implements ScreenProcessorProvider {
|
||||
@Shadow private @Nullable Button disconnectButton;
|
||||
@Shadow @Final private boolean showPauseMenu;
|
||||
|
||||
@Unique private final PauseScreenProcessor processor
|
||||
= new PauseScreenProcessor((PauseScreen) (Object) this, () -> disconnectButton);
|
||||
@Unique private final PauseScreenProcessor processor =
|
||||
new PauseScreenProcessor((PauseScreen) (Object) this, showPauseMenu, () -> disconnectButton);
|
||||
|
||||
@Override
|
||||
public ScreenProcessor<?> screenProcessor() {
|
||||
|
@ -14,9 +14,11 @@ import java.util.function.Supplier;
|
||||
|
||||
public class PauseScreenProcessor extends ScreenProcessor<PauseScreen> {
|
||||
private final Supplier<Button> disconnectButtonSupplier;
|
||||
private final boolean showButtons;
|
||||
|
||||
public PauseScreenProcessor(PauseScreen screen, Supplier<Button> disconnectButtonSupplier) {
|
||||
public PauseScreenProcessor(PauseScreen screen, boolean showButtons, Supplier<Button> disconnectButtonSupplier) {
|
||||
super(screen);
|
||||
this.showButtons = showButtons;
|
||||
this.disconnectButtonSupplier = disconnectButtonSupplier;
|
||||
}
|
||||
|
||||
@ -36,23 +38,25 @@ public class PauseScreenProcessor extends ScreenProcessor<PauseScreen> {
|
||||
public void onWidgetRebuild() {
|
||||
super.onWidgetRebuild();
|
||||
|
||||
ButtonGuideApi.addGuideToButtonBuiltin(
|
||||
(AbstractButton) getWidget("menu.returnToGame").orElseThrow(),
|
||||
bindings -> bindings.GUI_BACK,
|
||||
ButtonRenderPosition.TEXT,
|
||||
ButtonGuidePredicate.ALWAYS
|
||||
);
|
||||
ButtonGuideApi.addGuideToButtonBuiltin(
|
||||
(AbstractButton) getWidget("menu.options").orElseThrow(),
|
||||
bindings -> bindings.GUI_ABSTRACT_ACTION_1,
|
||||
ButtonRenderPosition.TEXT,
|
||||
ButtonGuidePredicate.ALWAYS
|
||||
);
|
||||
ButtonGuideApi.addGuideToButtonBuiltin(
|
||||
disconnectButtonSupplier.get(),
|
||||
bindings -> bindings.GUI_ABSTRACT_ACTION_2,
|
||||
ButtonRenderPosition.TEXT,
|
||||
ButtonGuidePredicate.ALWAYS
|
||||
);
|
||||
if (showButtons) {
|
||||
ButtonGuideApi.addGuideToButtonBuiltin(
|
||||
(AbstractButton) getWidget("menu.returnToGame").orElseThrow(),
|
||||
bindings -> bindings.GUI_BACK,
|
||||
ButtonRenderPosition.TEXT,
|
||||
ButtonGuidePredicate.ALWAYS
|
||||
);
|
||||
ButtonGuideApi.addGuideToButtonBuiltin(
|
||||
(AbstractButton) getWidget("menu.options").orElseThrow(),
|
||||
bindings -> bindings.GUI_ABSTRACT_ACTION_1,
|
||||
ButtonRenderPosition.TEXT,
|
||||
ButtonGuidePredicate.ALWAYS
|
||||
);
|
||||
ButtonGuideApi.addGuideToButtonBuiltin(
|
||||
disconnectButtonSupplier.get(),
|
||||
bindings -> bindings.GUI_ABSTRACT_ACTION_2,
|
||||
ButtonRenderPosition.TEXT,
|
||||
ButtonGuidePredicate.ALWAYS
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user