Skip to content

Commit

Permalink
Fixed skip-one-item feature not working at all (#1494)
Browse files Browse the repository at this point in the history
  • Loading branch information
OmerBenGera committed Dec 9, 2022
1 parent e7c24b2 commit f1a0645
Show file tree
Hide file tree
Showing 10 changed files with 68 additions and 16 deletions.
@@ -1,11 +1,11 @@
package com.bgsoftware.superiorskyblock.commands.admin;

import com.bgsoftware.superiorskyblock.core.menu.view.MenuViewWrapper;
import com.bgsoftware.superiorskyblock.core.messages.Message;
import com.bgsoftware.superiorskyblock.SuperiorSkyblockPlugin;
import com.bgsoftware.superiorskyblock.api.island.Island;
import com.bgsoftware.superiorskyblock.api.wrappers.SuperiorPlayer;
import com.bgsoftware.superiorskyblock.commands.IAdminIslandCommand;
import com.bgsoftware.superiorskyblock.core.menu.Menus;
import com.bgsoftware.superiorskyblock.core.messages.Message;
import org.bukkit.command.CommandSender;

import java.util.Collections;
Expand Down Expand Up @@ -58,7 +58,7 @@ public boolean supportMultipleIslands() {
@Override
public void execute(SuperiorSkyblockPlugin plugin, CommandSender sender, SuperiorPlayer targetPlayer, Island island, String[] args) {
SuperiorPlayer superiorPlayer = plugin.getPlayers().getSuperiorPlayer(sender);
plugin.getMenus().openIslandChest(superiorPlayer, MenuViewWrapper.fromView(superiorPlayer.getOpenedView()), island);
Menus.MENU_ISLAND_CHEST.openMenu(superiorPlayer, superiorPlayer.getOpenedView(), island);
}

}
Expand Up @@ -9,7 +9,7 @@
import com.bgsoftware.superiorskyblock.commands.IPermissibleCommand;
import com.bgsoftware.superiorskyblock.commands.arguments.CommandArguments;
import com.bgsoftware.superiorskyblock.commands.arguments.NumberArgument;
import com.bgsoftware.superiorskyblock.core.menu.view.MenuViewWrapper;
import com.bgsoftware.superiorskyblock.core.menu.Menus;
import com.bgsoftware.superiorskyblock.core.messages.Message;
import com.bgsoftware.superiorskyblock.island.privilege.IslandPrivileges;

Expand Down Expand Up @@ -83,7 +83,7 @@ public void execute(SuperiorSkyblockPlugin plugin, SuperiorPlayer superiorPlayer

islandChests[page].openChest(superiorPlayer);
} else {
plugin.getMenus().openIslandChest(superiorPlayer, MenuViewWrapper.fromView(superiorPlayer.getOpenedView()), island);
Menus.MENU_ISLAND_CHEST.openMenu(superiorPlayer, superiorPlayer.getOpenedView(), island);
}
}

Expand Down
Expand Up @@ -6,7 +6,6 @@
import com.bgsoftware.superiorskyblock.commands.CommandTabCompletes;
import com.bgsoftware.superiorskyblock.commands.ISuperiorCommand;
import com.bgsoftware.superiorskyblock.core.menu.Menus;
import com.bgsoftware.superiorskyblock.core.menu.view.MenuViewWrapper;
import com.bgsoftware.superiorskyblock.core.messages.Message;
import com.bgsoftware.superiorskyblock.island.IslandNames;
import org.bukkit.command.CommandSender;
Expand Down Expand Up @@ -105,7 +104,7 @@ public void execute(SuperiorSkyblockPlugin plugin, CommandSender sender, String[
}

if (schematicName == null) {
plugin.getMenus().openIslandCreation(superiorPlayer, MenuViewWrapper.fromView(superiorPlayer.getOpenedView()), islandName);
Menus.MENU_ISLAND_CREATION.openMenu(superiorPlayer, superiorPlayer.getOpenedView(), islandName);
} else {
Menus.MENU_ISLAND_CREATION.simulateClick(superiorPlayer, islandName, schematicName, false);
}
Expand Down
@@ -1,11 +1,11 @@
package com.bgsoftware.superiorskyblock.core.menu.button.impl;

import com.bgsoftware.superiorskyblock.api.menu.button.MenuTemplateButton;
import com.bgsoftware.superiorskyblock.core.menu.Menus;
import com.bgsoftware.superiorskyblock.core.menu.button.AbstractMenuTemplateButton;
import com.bgsoftware.superiorskyblock.core.menu.button.AbstractMenuViewButton;
import com.bgsoftware.superiorskyblock.core.menu.button.MenuTemplateButtonImpl;
import com.bgsoftware.superiorskyblock.core.menu.impl.MenuWarpCategoryManage;
import com.bgsoftware.superiorskyblock.core.menu.view.MenuViewWrapper;
import org.bukkit.event.inventory.InventoryClickEvent;

public class WarpCategoryManageWarpsButton extends AbstractMenuViewButton<MenuWarpCategoryManage.View> {
Expand All @@ -17,7 +17,7 @@ private WarpCategoryManageWarpsButton(AbstractMenuTemplateButton<MenuWarpCategor
@Override
public void onButtonClick(InventoryClickEvent clickEvent) {
menuView.setPreviousMove(false);
plugin.getMenus().openWarps(menuView.getInventoryViewer(), MenuViewWrapper.fromView(menuView), menuView.getWarpCategory());
Menus.MENU_WARPS.openMenu(menuView.getInventoryViewer(), menuView, menuView.getWarpCategory());
}

public static class Builder extends AbstractMenuTemplateButton.AbstractBuilder<MenuWarpCategoryManage.View> {
Expand Down
Expand Up @@ -49,7 +49,7 @@ public void onButtonClick(InventoryClickEvent clickEvent) {
if (menuView.hasManagePerms() && clickEvent.getClick().isRightClick()) {
plugin.getMenus().openWarpCategoryManage(menuView.getInventoryViewer(), MenuViewWrapper.fromView(menuView), pagedObject);
} else {
plugin.getMenus().openWarps(menuView.getInventoryViewer(), MenuViewWrapper.fromView(menuView), pagedObject);
Menus.MENU_WARPS.openMenu(menuView.getInventoryViewer(), menuView, pagedObject);
}
}

Expand Down
Expand Up @@ -30,7 +30,7 @@ public void onButtonClick(InventoryClickEvent clickEvent) {
menuView.setPreviousMove(false);
plugin.getMenus().openWarpManage(clickedPlayer, MenuViewWrapper.fromView(menuView), pagedObject);
} else {
Menus.MENU_WARPS.simulateClick(clickedPlayer, menuView.getWarpCategory().getIsland(), pagedObject.getName());
Menus.MENU_WARPS.simulateClick(clickedPlayer, menuView.getWarpCategory().getIsland(), pagedObject);
BukkitExecutor.sync(() -> menuView.setPreviousMove(false), 1L);
}
}
Expand Down
Expand Up @@ -15,6 +15,7 @@
import com.bgsoftware.superiorskyblock.core.menu.button.impl.IslandChestPagedObjectButton;
import com.bgsoftware.superiorskyblock.core.menu.layout.PagedMenuLayoutImpl;
import com.bgsoftware.superiorskyblock.core.menu.view.AbstractPagedMenuView;
import com.bgsoftware.superiorskyblock.core.menu.view.MenuViewWrapper;
import com.bgsoftware.superiorskyblock.core.menu.view.args.IslandViewArgs;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.YamlConfiguration;
Expand All @@ -39,6 +40,18 @@ public void refreshViews(Island island) {
refreshViews(view -> view.island.equals(island));
}

public void openMenu(SuperiorPlayer superiorPlayer, @Nullable MenuView<?, ?> previousMenu, Island island) {
if (isSkipOneItem()) {
IslandChest[] islandChest = island.getChest();
if (islandChest.length == 1) {
islandChest[0].openChest(superiorPlayer);
return;
}
}

plugin.getMenus().openIslandChest(superiorPlayer, MenuViewWrapper.fromView(previousMenu), island);
}

@Nullable
public static MenuIslandChest createInstance() {
MenuParseResult<View> menuParseResult = MenuParserImpl.getInstance().loadMenu("island-chest.yml",
Expand Down
Expand Up @@ -17,6 +17,7 @@
import com.bgsoftware.superiorskyblock.core.menu.converter.MenuConverter;
import com.bgsoftware.superiorskyblock.core.menu.layout.AbstractMenuLayout;
import com.bgsoftware.superiorskyblock.core.menu.view.AbstractMenuView;
import com.bgsoftware.superiorskyblock.core.menu.view.MenuViewWrapper;
import org.bukkit.block.Biome;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.YamlConfiguration;
Expand All @@ -25,7 +26,9 @@
import java.io.File;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import java.util.stream.Collectors;

public class MenuIslandCreation extends AbstractMenu<MenuIslandCreation.View, MenuIslandCreation.Args> {

Expand All @@ -39,10 +42,10 @@ protected View createViewInternal(SuperiorPlayer superiorPlayer, Args args,
return new View(superiorPlayer, previousMenuView, this, args);
}

public void simulateClick(SuperiorPlayer superiorPlayer, String islandName, String schematic, boolean rightClick) {
public void simulateClick(SuperiorPlayer superiorPlayer, String islandName, String schematic, boolean isPreviewMode) {
IslandCreationButton button = getButtonForSchematic(schematic);
if (button != null)
button.clickButton(plugin, superiorPlayer.asPlayer(), rightClick, islandName, null);
button.clickButton(plugin, superiorPlayer.asPlayer(), isPreviewMode, islandName, null);
}

private IslandCreationButton getButtonForSchematic(String schematicName) {
Expand All @@ -52,6 +55,22 @@ private IslandCreationButton getButtonForSchematic(String schematicName) {
.findFirst().orElse(null);
}

public void openMenu(SuperiorPlayer superiorPlayer, @Nullable MenuView<?, ?> previousMenu, String islandName) {
if (isSkipOneItem()) {
List<String> schematicButtons = menuLayout.getButtons().stream()
.filter(button -> button instanceof IslandCreationButton)
.map(button -> ((IslandCreationButton) button).getTemplate().getSchematic().getName())
.collect(Collectors.toList());

if (schematicButtons.size() == 1) {
simulateClick(superiorPlayer, islandName, schematicButtons.get(0), false);
return;
}
}

plugin.getMenus().openIslandCreation(superiorPlayer, MenuViewWrapper.fromView(previousMenu), islandName);
}

@Nullable
public static MenuIslandCreation createInstance() {
MenuParseResult<View> menuParseResult = MenuParserImpl.getInstance().loadMenu("island-creation.yml",
Expand Down
Expand Up @@ -10,6 +10,7 @@
import com.bgsoftware.superiorskyblock.core.menu.AbstractPagedMenu;
import com.bgsoftware.superiorskyblock.core.menu.MenuIdentifiers;
import com.bgsoftware.superiorskyblock.core.menu.MenuParseResult;
import com.bgsoftware.superiorskyblock.core.menu.Menus;
import com.bgsoftware.superiorskyblock.core.menu.button.impl.WarpCategoryPagedObjectButton;
import com.bgsoftware.superiorskyblock.core.menu.view.AbstractPagedMenuView;
import com.bgsoftware.superiorskyblock.core.menu.view.MenuViewWrapper;
Expand Down Expand Up @@ -60,7 +61,7 @@ public void openMenu(SuperiorPlayer superiorPlayer, @Nullable MenuView<?, ?> pre
} else {
WarpCategory warpCategory = island.getWarpCategories().values().stream().findFirst()
.orElseGet(() -> island.createWarpCategory("Default Category"));
plugin.getMenus().openWarps(superiorPlayer, MenuViewWrapper.fromView(previousMenu), warpCategory);
Menus.MENU_WARPS.openMenu(superiorPlayer, previousMenu, warpCategory);
}
}

Expand Down
Expand Up @@ -19,6 +19,7 @@
import com.bgsoftware.superiorskyblock.core.menu.converter.MenuConverter;
import com.bgsoftware.superiorskyblock.core.menu.layout.AbstractMenuLayout;
import com.bgsoftware.superiorskyblock.core.menu.view.AbstractPagedMenuView;
import com.bgsoftware.superiorskyblock.core.menu.view.MenuViewWrapper;
import com.bgsoftware.superiorskyblock.core.menu.view.args.IslandViewArgs;
import com.bgsoftware.superiorskyblock.core.messages.Message;
import com.bgsoftware.superiorskyblock.core.threads.BukkitExecutor;
Expand All @@ -35,6 +36,7 @@
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class MenuWarps extends AbstractPagedMenu<MenuWarps.View, MenuWarps.Args, IslandWarp> {

Expand Down Expand Up @@ -63,7 +65,7 @@ public void closeViews(WarpCategory warpCategory) {
closeViews(view -> view.getWarpCategory().equals(warpCategory));
}

public void simulateClick(SuperiorPlayer superiorPlayer, Island island, String warpName) {
public void simulateClick(SuperiorPlayer superiorPlayer, Island island, IslandWarp islandWarp) {
if (!superiorPlayer.hasBypassModeEnabled() && plugin.getSettings().getChargeOnWarp() > 0) {
if (plugin.getProviders().getEconomyProvider().getBalance(superiorPlayer)
.compareTo(BigDecimal.valueOf(plugin.getSettings().getChargeOnWarp())) < 0) {
Expand All @@ -77,10 +79,28 @@ public void simulateClick(SuperiorPlayer superiorPlayer, Island island, String w

BukkitExecutor.sync(() -> {
superiorPlayer.runIfOnline(Player::closeInventory);
island.warpPlayer(superiorPlayer, warpName);
island.warpPlayer(superiorPlayer, islandWarp.getName());
}, 1L);
}

public void openMenu(SuperiorPlayer superiorPlayer, @Nullable MenuView<?, ?> previousMenu, WarpCategory warpCategory) {
// We want skip one item to only work if the player can't edit warps, otherwise he
// won't be able to edit them as the menu will get skipped if only one warp exists.
if (isSkipOneItem() && !warpCategory.getIsland().hasPermission(superiorPlayer, IslandPrivileges.SET_WARP)) {
List<IslandWarp> availableWarps = warpCategory.getIsland().isMember(superiorPlayer) ? warpCategory.getWarps() :
warpCategory.getWarps().stream()
.filter(islandWarp -> !islandWarp.hasPrivateFlag())
.collect(Collectors.toList());

if (availableWarps.size() == 1) {
simulateClick(superiorPlayer, warpCategory.getIsland(), availableWarps.get(0));
return;
}
}

plugin.getMenus().openWarps(superiorPlayer, MenuViewWrapper.fromView(previousMenu), warpCategory);
}

@Nullable
public static MenuWarps createInstance() {
MenuParseResult<View> menuParseResult = MenuParserImpl.getInstance().loadMenu("warps.yml",
Expand Down

0 comments on commit f1a0645

Please sign in to comment.