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