diff options
| author | shedaniel <daniel@shedaniel.me> | 2020-04-12 02:13:15 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2020-04-12 02:42:37 +0800 |
| commit | 7f2cea976276ef14030964eea6c91ebee9f39204 (patch) | |
| tree | 1da33b7298641e7a5879350df1aa3c46685024d2 /src/main/java/me/shedaniel/rei/gui/FailedToLoadScreen.java | |
| parent | 7121053d7b8a54dff0089ad60e3c3082be5572e0 (diff) | |
| download | RoughlyEnoughItems-7f2cea976276ef14030964eea6c91ebee9f39204.tar.gz RoughlyEnoughItems-7f2cea976276ef14030964eea6c91ebee9f39204.tar.bz2 RoughlyEnoughItems-7f2cea976276ef14030964eea6c91ebee9f39204.zip | |
Adds warning screen
Signed-off-by: shedaniel <daniel@shedaniel.me>
Diffstat (limited to 'src/main/java/me/shedaniel/rei/gui/FailedToLoadScreen.java')
| -rw-r--r-- | src/main/java/me/shedaniel/rei/gui/FailedToLoadScreen.java | 71 |
1 files changed, 61 insertions, 10 deletions
diff --git a/src/main/java/me/shedaniel/rei/gui/FailedToLoadScreen.java b/src/main/java/me/shedaniel/rei/gui/FailedToLoadScreen.java index 4f1f48917..a1d4ca3a3 100644 --- a/src/main/java/me/shedaniel/rei/gui/FailedToLoadScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/FailedToLoadScreen.java @@ -31,8 +31,8 @@ import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.widget.AbstractButtonWidget; import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.sound.PositionedSoundInstance; +import net.minecraft.client.util.NarratorManager; import net.minecraft.sound.SoundEvents; -import net.minecraft.text.LiteralText; import net.minecraft.text.Text; import net.minecraft.util.Lazy; import net.minecraft.util.Pair; @@ -47,9 +47,10 @@ public class FailedToLoadScreen extends Screen { public static final Lazy<FailedToLoadScreen> INSTANCE = new Lazy<>(FailedToLoadScreen::new); private AbstractButtonWidget buttonExit; private StringEntryListWidget listWidget; + private Screen parent; private FailedToLoadScreen() { - super(new LiteralText("REI has failed to init")); + super(NarratorManager.EMPTY); } @Override @@ -57,16 +58,47 @@ public class FailedToLoadScreen extends Screen { return false; } + public void setParent(Screen parent) { + this.parent = parent; + } + + private void addText(String string) { + for (String s : textRenderer.wrapStringToWidthAsList(string, width - 80)) { + listWidget.creditsAddEntry(new TextItem(s)); + } + } + + private void addLink(String string, String link) { + for (String s : textRenderer.wrapStringToWidthAsList(string, width - 80)) { + listWidget.creditsAddEntry(new LinkItem(s, link)); + } + } + @Override protected void init() { children.add(listWidget = new StringEntryListWidget(client, width, height, 32, height - 32)); listWidget.max = 80; listWidget.creditsClearEntries(); listWidget.creditsAddEntry(new EmptyItem()); - for (Pair<String, String> pair : RoughlyEnoughItemsState.getFailedToLoad()) { - listWidget.creditsAddEntry(new TextItem(pair.getLeft())); + if (!RoughlyEnoughItemsState.getWarnings().isEmpty()) + listWidget.creditsAddEntry(new TextItem("§6Warnings:")); + for (Pair<String, String> pair : RoughlyEnoughItemsState.getWarnings()) { + addText(pair.getLeft()); if (pair.getRight() != null) - listWidget.creditsAddEntry(this.new LinkItem(pair.getRight())); + addLink(pair.getRight(), pair.getRight()); + for (int i = 0; i < 2; i++) { + listWidget.creditsAddEntry(new EmptyItem()); + } + } + if (!RoughlyEnoughItemsState.getWarnings().isEmpty() && !RoughlyEnoughItemsState.getErrors().isEmpty()) { + listWidget.creditsAddEntry(new EmptyItem()); + } + if (!RoughlyEnoughItemsState.getErrors().isEmpty()) + listWidget.creditsAddEntry(new TextItem("§cErrors:")); + for (Pair<String, String> pair : RoughlyEnoughItemsState.getErrors()) { + addText(pair.getLeft()); + if (pair.getRight() != null) + addLink(pair.getRight(), pair.getRight()); for (int i = 0; i < 2; i++) { listWidget.creditsAddEntry(new EmptyItem()); } @@ -74,9 +106,18 @@ public class FailedToLoadScreen extends Screen { for (StringItem child : listWidget.children()) { listWidget.max = Math.max(listWidget.max, child.getWidth()); } - children.add(buttonExit = new ButtonWidget(width / 2 - 100, height - 26, 200, 20, "Exit", button -> { - MinecraftClient.getInstance().scheduleStop(); - })); + children.add(buttonExit = new ButtonWidget(width / 2 - 100, height - 26, 200, 20, + RoughlyEnoughItemsState.getErrors().isEmpty() ? "Continue" : "Exit", + button -> { + if (RoughlyEnoughItemsState.getErrors().isEmpty()) { + RoughlyEnoughItemsState.clear(); + RoughlyEnoughItemsState.continues(); + MinecraftClient.getInstance().openScreen(parent); + setParent(null); + } else { + MinecraftClient.getInstance().scheduleStop(); + } + })); } @Override @@ -88,7 +129,11 @@ public class FailedToLoadScreen extends Screen { public void render(int int_1, int int_2, float float_1) { this.renderDirtBackground(0); this.listWidget.render(int_1, int_2, float_1); - this.drawCenteredString(this.textRenderer, this.title.asFormattedString(), this.width / 2, 16, 16777215); + if (RoughlyEnoughItemsState.getErrors().isEmpty()) { + this.drawCenteredString(this.textRenderer, "Warnings during Roughly Enough Items' initialization", this.width / 2, 16, 16777215); + } else { + this.drawCenteredString(this.textRenderer, "Errors during Roughly Enough Items' initialization", this.width / 2, 16, 16777215); + } super.render(int_1, int_2, float_1); this.buttonExit.render(int_1, int_2, float_1); } @@ -195,6 +240,7 @@ public class FailedToLoadScreen extends Screen { private class LinkItem extends StringItem { private String text; + private String link; private boolean contains; public LinkItem(Text textComponent) { @@ -202,7 +248,12 @@ public class FailedToLoadScreen extends Screen { } public LinkItem(String text) { + this(text, text); + } + + public LinkItem(String text, String link) { this.text = text; + this.link = link; } @Override @@ -236,7 +287,7 @@ public class FailedToLoadScreen extends Screen { if (contains && button == 0) { MinecraftClient.getInstance().getSoundManager().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F)); try { - Util.getOperatingSystem().open(new URI(text)); + Util.getOperatingSystem().open(new URI(link)); return true; } catch (URISyntaxException e) { e.printStackTrace(); |
