diff --git a/src/main/java/ru/bclib/gui/gridlayout/GridScreen.java b/src/main/java/ru/bclib/gui/gridlayout/GridScreen.java index 8e17a168..7dbbffd8 100644 --- a/src/main/java/ru/bclib/gui/gridlayout/GridScreen.java +++ b/src/main/java/ru/bclib/gui/gridlayout/GridScreen.java @@ -9,6 +9,7 @@ import net.minecraft.client.gui.components.events.GuiEventListener; import net.minecraft.client.gui.narration.NarratableEntry; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; +import org.jetbrains.annotations.Nullable; import ru.bclib.gui.gridlayout.GridLayout.Alignment; @@ -18,23 +19,43 @@ public abstract class GridScreen extends Screen { public final int topPadding; public final int sidePadding; public final boolean centerVertically; + @Nullable + public final Screen parent; public GridScreen(Component title) { - this(title, 0, true); + this(null, title); + } + + public GridScreen(@Nullable Screen parent, Component title){ + this(parent, title, 0, true); } public GridScreen(Component title, int topPadding, boolean centerVertically) { - this(title, topPadding, 20, centerVertically); + this(null, title, topPadding, 20, centerVertically); + } + + public GridScreen(@Nullable Screen parent, Component title, int topPadding, boolean centerVertically) { + this(parent, title, topPadding, 20, centerVertically); } public GridScreen(Component title, int topPadding, int sidePadding, boolean centerVertically) { + this(null, title, topPadding, sidePadding, centerVertically); + } + + public GridScreen(@Nullable Screen parent, Component title, int topPadding, int sidePadding, boolean centerVertically) { super(title); + this.parent = parent; this.topPadding = topPadding; this.sidePadding = sidePadding; this.centerVertically = centerVertically; } + @Override + public void onClose() { + this.minecraft.setScreen(parent); + } + public Font getFont(){ return this.font; } diff --git a/src/main/java/ru/bclib/gui/screens/BCLibScreen.java b/src/main/java/ru/bclib/gui/screens/BCLibScreen.java index 95e51a91..89158355 100644 --- a/src/main/java/ru/bclib/gui/screens/BCLibScreen.java +++ b/src/main/java/ru/bclib/gui/screens/BCLibScreen.java @@ -3,8 +3,10 @@ package ru.bclib.gui.screens; import com.mojang.blaze3d.vertex.PoseStack; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; +import org.jetbrains.annotations.Nullable; import ru.bclib.BCLib; import ru.bclib.gui.gridlayout.GridLayout.GridValueType; import ru.bclib.gui.gridlayout.GridLayout.VerticalAlignment; @@ -19,14 +21,27 @@ abstract class BCLibScreen extends GridScreen { super(title); } + public BCLibScreen(@Nullable Screen parent, Component title){ + super(parent, title); + } + public BCLibScreen(Component title, int topPadding, boolean centerVertically) { - super(title, topPadding, centerVertically); + super(title, topPadding, 20, centerVertically); + } + + public BCLibScreen(@Nullable Screen parent, Component title, int topPadding, boolean centerVertically) { + super(parent, title, topPadding, centerVertically); } public BCLibScreen(Component title, int topPadding, int sidePadding, boolean centerVertically) { super(title, topPadding, sidePadding, centerVertically); } + public BCLibScreen(@Nullable Screen parent, Component title, int topPadding, int sidePadding, boolean centerVertically) { + super(parent, title, topPadding, sidePadding, centerVertically); + } + + protected void addTitle(){ GridRow row = grid.addRow(VerticalAlignment.CENTER); row.addFiller(); diff --git a/src/main/java/ru/bclib/gui/screens/ConfirmFixScreen.java b/src/main/java/ru/bclib/gui/screens/ConfirmFixScreen.java index 194ec2df..20f983eb 100644 --- a/src/main/java/ru/bclib/gui/screens/ConfirmFixScreen.java +++ b/src/main/java/ru/bclib/gui/screens/ConfirmFixScreen.java @@ -14,16 +14,12 @@ import ru.bclib.gui.gridlayout.GridRow; @Environment(EnvType.CLIENT) public class ConfirmFixScreen extends BCLibScreen { - - @Nullable - private final Screen lastScreen; protected final ConfirmFixScreen.Listener listener; private final Component description; protected int id; - public ConfirmFixScreen(@Nullable Screen screen, ConfirmFixScreen.Listener listener) { - super(new TranslatableComponent("bclib.datafixer.backupWarning.title")); - this.lastScreen = screen; + public ConfirmFixScreen(@Nullable Screen parent, ConfirmFixScreen.Listener listener) { + super(parent, new TranslatableComponent("bclib.datafixer.backupWarning.title")); this.listener = listener; this.description = new TranslatableComponent("bclib.datafixer.backupWarning.message"); @@ -48,7 +44,7 @@ public class ConfirmFixScreen extends BCLibScreen { row = grid.addRow(); row.addFiller(); row.addButton(CommonComponents.GUI_CANCEL, BUTTON_HEIGHT, this.font, (button) -> { - this.minecraft.setScreen(this.lastScreen); + onClose(); }); row.addSpacer(); row.addButton(CommonComponents.GUI_PROCEED, BUTTON_HEIGHT, this.font, (button) -> { @@ -58,16 +54,7 @@ public class ConfirmFixScreen extends BCLibScreen { } public boolean shouldCloseOnEsc() { - return false; - } - - public boolean keyPressed(int i, int j, int k) { - if (i == 256) { - this.minecraft.setScreen(this.lastScreen); - return true; - } else { - return super.keyPressed(i, j, k); - } + return true; } @Environment(EnvType.CLIENT) diff --git a/src/main/java/ru/bclib/gui/screens/ConfirmRestartScreen.java b/src/main/java/ru/bclib/gui/screens/ConfirmRestartScreen.java index 712afcc8..f4138f50 100644 --- a/src/main/java/ru/bclib/gui/screens/ConfirmRestartScreen.java +++ b/src/main/java/ru/bclib/gui/screens/ConfirmRestartScreen.java @@ -34,7 +34,7 @@ public class ConfirmRestartScreen extends BCLibScreen { GridRow row = grid.addRow(); row.addFiller(); - row.addButton(CommonComponents.GUI_PROCEED, BUTTON_HEIGHT, (button) -> { + row.addButton(CommonComponents.GUI_PROCEED, BUTTON_HEIGHT, font, (button) -> { listener.proceed(); }); row.addFiller();