1
0
forked from Clones/Controlify

Fix F3+Esc crashing on controller mode (close #156)

This commit is contained in:
isXander
2023-09-03 23:15:27 +01:00
parent 431a46dcb3
commit bd9bb7e69d
2 changed files with 27 additions and 21 deletions

View File

@ -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() {

View File

@ -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
);
}
}
}