]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blob - src/main/java/com/irtimaled/bbor/client/gui/LoadSavesScreen.java
Update to 1.17.1 (#124)
[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
13 public class LoadSavesScreen extends ListScreen {
14     private SelectableControlList controlList;
15
16     public static void show() {
17         ClientInterop.displayScreen(new LoadSavesScreen(MinecraftClient.getInstance().currentScreen));
18     }
19
20     public LoadSavesScreen(Screen lastScreen) {
21         super(lastScreen);
22     }
23
24     @Override
25     protected ControlList buildList(int top, int bottom) {
26         controlList = new SelectableControlList(this.width, this.height, top, bottom);
27         try {
28             final LevelStorage saveLoader = this.client.getLevelStorage();
29             List<LevelSummary> saveList = saveLoader.getLevelList();
30             saveList.sort(null);
31             saveList.forEach(world -> controlList.add(new WorldSaveRow(world, saveLoader, controlList::setSelectedEntry)));
32         } catch (LevelStorageException e) {
33             e.printStackTrace();
34         }
35         return controlList;
36     }
37
38     @Override
39     protected void onDoneClicked() {
40         getSelectedEntry().done();
41     }
42
43     @Override
44     public void render(MatrixStack matrixStack, int mouseX, int mouseY, float unknown) {
45         ControlListEntry selectedEntry = getSelectedEntry();
46         this.setCanExit(selectedEntry != null && selectedEntry.isVisible());
47         super.render(matrixStack, mouseX, mouseY, unknown);
48     }
49
50     private ControlListEntry getSelectedEntry() {
51         return this.controlList.getSelectedEntry();
52     }
53 }