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.components.Button;
import net.minecraft.client.gui.screens.PauseScreen; import net.minecraft.client.gui.screens.PauseScreen;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.Unique;
@ -13,9 +14,10 @@ import org.spongepowered.asm.mixin.Unique;
@Mixin(PauseScreen.class) @Mixin(PauseScreen.class)
public class PauseScreenMixin implements ScreenProcessorProvider { public class PauseScreenMixin implements ScreenProcessorProvider {
@Shadow private @Nullable Button disconnectButton; @Shadow private @Nullable Button disconnectButton;
@Shadow @Final private boolean showPauseMenu;
@Unique private final PauseScreenProcessor processor @Unique private final PauseScreenProcessor processor =
= new PauseScreenProcessor((PauseScreen) (Object) this, () -> disconnectButton); new PauseScreenProcessor((PauseScreen) (Object) this, showPauseMenu, () -> disconnectButton);
@Override @Override
public ScreenProcessor<?> screenProcessor() { public ScreenProcessor<?> screenProcessor() {

View File

@ -14,9 +14,11 @@ import java.util.function.Supplier;
public class PauseScreenProcessor extends ScreenProcessor<PauseScreen> { public class PauseScreenProcessor extends ScreenProcessor<PauseScreen> {
private final Supplier<Button> disconnectButtonSupplier; 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); super(screen);
this.showButtons = showButtons;
this.disconnectButtonSupplier = disconnectButtonSupplier; this.disconnectButtonSupplier = disconnectButtonSupplier;
} }
@ -36,6 +38,7 @@ public class PauseScreenProcessor extends ScreenProcessor<PauseScreen> {
public void onWidgetRebuild() { public void onWidgetRebuild() {
super.onWidgetRebuild(); super.onWidgetRebuild();
if (showButtons) {
ButtonGuideApi.addGuideToButtonBuiltin( ButtonGuideApi.addGuideToButtonBuiltin(
(AbstractButton) getWidget("menu.returnToGame").orElseThrow(), (AbstractButton) getWidget("menu.returnToGame").orElseThrow(),
bindings -> bindings.GUI_BACK, bindings -> bindings.GUI_BACK,
@ -56,3 +59,4 @@ public class PauseScreenProcessor extends ScreenProcessor<PauseScreen> {
); );
} }
} }
}