1 package com.irtimaled.bbor.client.gui;
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;
11 import java.util.List;
13 public class LoadSavesScreen extends ListScreen {
14 private SelectableControlList controlList;
16 public static void show() {
17 ClientInterop.displayScreen(new LoadSavesScreen(MinecraftClient.getInstance().currentScreen));
20 public LoadSavesScreen(Screen lastScreen) {
25 protected ControlList buildList(int top, int bottom) {
26 controlList = new SelectableControlList(this.width, this.height, top, bottom);
28 final LevelStorage saveLoader = this.client.getLevelStorage();
29 List<LevelSummary> saveList = saveLoader.getLevelList();
31 saveList.forEach(world -> controlList.add(new WorldSaveRow(world, saveLoader, controlList::setSelectedEntry)));
32 } catch (LevelStorageException e) {
39 protected void onDoneClicked() {
40 getSelectedEntry().done();
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);
50 private ControlListEntry getSelectedEntry() {
51 return this.controlList.getSelectedEntry();