]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blob - src/main/java/com/irtimaled/bbor/client/gui/LoadSavesScreen.java
Port to 1.19
[BoundingBoxOutlineReloaded.git] / src / main / java / com / irtimaled / bbor / client / gui / LoadSavesScreen.java
1 package com.irtimaled.bbor.client.gui;
2
3 import com.irtimaled.bbor.client.interop.ClientInterop;
4 import net.minecraft.client.MinecraftClient;
5 import net.minecraft.client.gui.screen.Screen;
6 import net.minecraft.client.util.math.MatrixStack;
7 import net.minecraft.world.level.storage.LevelStorage;
8 import net.minecraft.world.level.storage.LevelStorageException;
9 import net.minecraft.world.level.storage.LevelSummary;
10
11 import java.util.List;
12 import java.util.concurrent.ExecutionException;
13
14 public class LoadSavesScreen extends ListScreen {
15     private SelectableControlList controlList;
16
17     public static void show() {
18         ClientInterop.displayScreen(new LoadSavesScreen(MinecraftClient.getInstance().currentScreen));
19     }
20
21     public LoadSavesScreen(Screen lastScreen) {
22         super(lastScreen);
23     }
24
25     @Override
26     protected ControlList buildList(int top, int bottom) {
27         controlList = new SelectableControlList(this.width, this.height, top, bottom);
28         try {
29             final LevelStorage saveLoader = this.client.getLevelStorage();
30             List<LevelSummary> saveList = saveLoader.loadSummaries(saveLoader.getLevelList()).get();
31             saveList.sort(null);
32             saveList.forEach(world -> controlList.add(new WorldSaveRow(world, saveLoader, controlList::setSelectedEntry)));
33         } catch (LevelStorageException | InterruptedException | ExecutionException e) {
34             e.printStackTrace();
35         }
36         return controlList;
37     }
38
39     @Override
40     protected void onDoneClicked() {
41         getSelectedEntry().done();
42     }
43
44     @Override
45     public void render(MatrixStack matrixStack, int mouseX, int mouseY, float unknown) {
46         ControlListEntry selectedEntry = getSelectedEntry();
47         this.setCanExit(selectedEntry != null && selectedEntry.isVisible());
48         super.render(matrixStack, mouseX, mouseY, unknown);
49     }
50
51     private ControlListEntry getSelectedEntry() {
52         return this.controlList.getSelectedEntry();
53     }
54 }