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