Skip to content

Commit

Permalink
Fixed issues with top menu not working properly (#1462)
Browse files Browse the repository at this point in the history
  • Loading branch information
OmerBenGera committed Nov 27, 2022
1 parent d5e615f commit 644cd17
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 3 deletions.
Expand Up @@ -8,6 +8,7 @@
import com.bgsoftware.superiorskyblock.api.menu.layout.PagedMenuLayout;
import com.bgsoftware.superiorskyblock.api.menu.view.ViewArgs;
import com.bgsoftware.superiorskyblock.core.menu.view.AbstractPagedMenuView;
import com.google.common.base.Preconditions;
import org.bukkit.event.inventory.InventoryClickEvent;

import java.util.List;
Expand All @@ -19,6 +20,7 @@ public abstract class AbstractPagedMenu<V extends AbstractPagedMenuView<V, A, E>

protected AbstractPagedMenu(String identifier, MenuParseResult<V> parseResult, boolean acceptNull) {
super(identifier, parseResult);
Preconditions.checkState(parseResult.getLayoutBuilder() instanceof PagedMenuLayout.Builder, "Paged menu " + identifier + " doesn't use the correct layout.");
this.acceptNull = acceptNull;
}

Expand Down
Expand Up @@ -34,7 +34,11 @@ public void onButtonClick(InventoryClickEvent clickEvent) {

@Override
public ItemStack modifyViewItem(ItemStack buttonItem) {
return TopIslandsSelfIslandButton.modifyViewItem(menuView, pagedObject, getTemplate().islandItem);
if (pagedObject == null) {
return getTemplate().getNullTemplateItem().build();
} else {
return TopIslandsSelfIslandButton.modifyViewItem(menuView, pagedObject, getTemplate().islandItem);
}
}

public static class Builder extends PagedMenuTemplateButtonImpl.AbstractBuilder<MenuTopIslands.View, Island> {
Expand Down Expand Up @@ -93,7 +97,8 @@ public static class Template extends PagedMenuTemplateButtonImpl<MenuTopIslands.
this.islandCommands = islandCommands == null ? Collections.emptyList() : islandCommands;
this.noIslandSound = noIslandSound;
this.noIslandCommands = noIslandCommands == null ? Collections.emptyList() : noIslandCommands;
this.getNullTemplateItem().getEditableBuilder().asSkullOf((SuperiorPlayer) null);
if (this.getNullTemplateItem() != null)
this.getNullTemplateItem().getEditableBuilder().asSkullOf((SuperiorPlayer) null);
}

}
Expand Down
Expand Up @@ -226,6 +226,8 @@ public static class Template extends MenuTemplateButtonImpl<MenuTopIslands.View>
this.islandCommands = islandCommands == null ? Collections.emptyList() : islandCommands;
this.noIslandSound = noIslandSound;
this.noIslandCommands = noIslandCommands == null ? Collections.emptyList() : noIslandCommands;
if (noIslandItem != null)
noIslandItem.getEditableBuilder().asSkullOf((SuperiorPlayer) null);
}

}
Expand Down
Expand Up @@ -30,6 +30,7 @@
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.concurrent.CompletableFuture;

public class MenuTopIslands extends AbstractPagedMenu<MenuTopIslands.View, MenuTopIslands.Args, Island> {

Expand All @@ -50,14 +51,29 @@ protected View createViewInternal(SuperiorPlayer superiorPlayer, Args args,
return new View(superiorPlayer, previousMenuView, this, args);
}

@Override
public CompletableFuture<View> refreshView(View view) {
CompletableFuture<View> res = new CompletableFuture<>();
plugin.getGrid().sortIslands(view.sortingType, () -> {
super.refreshView(view).whenComplete((v, err) -> {
if (err != null) {
res.completeExceptionally(err);
} else {
res.complete(v);
}
});
});
return res;
}

public void refreshViews(SortingType sortingType) {
refreshViews(view -> view.sortingType.equals(sortingType));
}

@Nullable
public static MenuTopIslands createInstance() {
MenuParseResult<View> menuParseResult = MenuParserImpl.getInstance().loadMenu("top-islands.yml",
MenuTopIslands::convertOldGUI);
MenuTopIslands::convertOldGUI, new TopIslandsPagedObjectButton.Builder());

if (menuParseResult == null)
return null;
Expand Down

0 comments on commit 644cd17

Please sign in to comment.