From 5d26a6371a1bf02d50dc25cb0f3550e55fa32996 Mon Sep 17 00:00:00 2001 From: Charles Date: Wed, 2 Jan 2019 17:06:06 +0800 Subject: [PATCH] 1.0.0-SNAPSHOT-U164 + Started implementing GiveCommand Panels --- .../types/give/GiveRewardMainEditPanel.java | 2 +- .../commands/GiveCommandNewRewardPanel.java | 108 ++++++++++++++++++ .../commands/GiveCommandRewardListPanel.java | 9 ++ .../GiveCommandRewardMainEditPanel.java | 9 ++ pom.xml | 2 +- 5 files changed, 128 insertions(+), 2 deletions(-) create mode 100644 plugin-modules/Core/src/com/songoda/epicbosses/panel/droptables/types/give/commands/GiveCommandNewRewardPanel.java create mode 100644 plugin-modules/Core/src/com/songoda/epicbosses/panel/droptables/types/give/commands/GiveCommandRewardListPanel.java create mode 100644 plugin-modules/Core/src/com/songoda/epicbosses/panel/droptables/types/give/commands/GiveCommandRewardMainEditPanel.java diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/panel/droptables/types/give/GiveRewardMainEditPanel.java b/plugin-modules/Core/src/com/songoda/epicbosses/panel/droptables/types/give/GiveRewardMainEditPanel.java index 0954ced..1ad1b6a 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/panel/droptables/types/give/GiveRewardMainEditPanel.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/panel/droptables/types/give/GiveRewardMainEditPanel.java @@ -69,7 +69,7 @@ public class GiveRewardMainEditPanel extends SubVariablePanelHandler panel.setOnClick(slot, getRandomDropsAction(dropTable, giveRewardEditHandler))); counter.getSlotsWith("MaxDrops").forEach(slot -> panel.setOnClick(slot, getMaxDropsAction(dropTable, giveRewardEditHandler))); - counter.getSlotsWith("ItemDrops").forEach(slot -> {}); + counter.getSlotsWith("ItemDrops").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getGiveDropRewardListPanel().openFor((Player) event.getWhoClicked(), dropTable, giveRewardEditHandler))); counter.getSlotsWith("RequiredPercentage").forEach(slot -> panel.setOnClick(slot, getRequiredPercentageAction(dropTable, giveRewardEditHandler))); counter.getSlotsWith("CommandDrops").forEach(slot -> {}); counter.getSlotsWith("MaxCommands").forEach(slot -> panel.setOnClick(slot, getMaxCommandsAction(dropTable, giveRewardEditHandler))); diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/panel/droptables/types/give/commands/GiveCommandNewRewardPanel.java b/plugin-modules/Core/src/com/songoda/epicbosses/panel/droptables/types/give/commands/GiveCommandNewRewardPanel.java new file mode 100644 index 0000000..ef17ce3 --- /dev/null +++ b/plugin-modules/Core/src/com/songoda/epicbosses/panel/droptables/types/give/commands/GiveCommandNewRewardPanel.java @@ -0,0 +1,108 @@ +package com.songoda.epicbosses.panel.droptables.types.give.commands; + +import com.songoda.epicbosses.CustomBosses; +import com.songoda.epicbosses.api.BossAPI; +import com.songoda.epicbosses.droptable.DropTable; +import com.songoda.epicbosses.managers.BossPanelManager; +import com.songoda.epicbosses.managers.files.CommandsFileManager; +import com.songoda.epicbosses.panel.droptables.types.give.handlers.GiveRewardEditHandler; +import com.songoda.epicbosses.utils.Message; +import com.songoda.epicbosses.utils.itemstack.holder.ItemStackHolder; +import com.songoda.epicbosses.utils.panel.Panel; +import com.songoda.epicbosses.utils.panel.base.handlers.SubVariablePanelHandler; +import com.songoda.epicbosses.utils.panel.builder.PanelBuilder; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * @author Charles Cullen + * @version 1.0.0 + * @since 02-Jan-19 + */ +public class GiveCommandNewRewardPanel extends SubVariablePanelHandler { + + private CommandsFileManager commandsFileManager; + private CustomBosses plugin; + + public GiveCommandNewRewardPanel(BossPanelManager bossPanelManager, PanelBuilder panelBuilder, CustomBosses plugin) { + super(bossPanelManager, panelBuilder); + + this.commandsFileManager = plugin.getBossCommandFileManager(); + this.plugin = plugin; + } + + @Override + public void fillPanel(Panel panel, DropTable dropTable, GiveRewardEditHandler giveRewardEditHandler) { + Map> commands = this.commandsFileManager.getCommandsMap(); + List currentKeys = getCurrentKeys(giveRewardEditHandler); + List filteredKeys = getFilteredKeys(commands, currentKeys); + int maxPage = panel.getMaxPage(filteredKeys); + + panel.setOnPageChange(((player, currentPage, requestedPage) -> { + if(requestedPage < 0 || requestedPage > maxPage) return false; + + loadPage(panel, requestedPage, dropTable, giveRewardEditHandler, filteredKeys, commands); + return true; + })); + + loadPage(panel, 0, dropTable, giveRewardEditHandler, filteredKeys, commands); + } + + @Override + public void openFor(Player player, DropTable dropTable, GiveRewardEditHandler giveRewardEditHandler) { + Panel panel = getPanelBuilder().getPanel(); +// .setParentPanelHandler(this.bossPanelManager.getGiveCommandRewardListPanel(), dropTable, giveRewardEditHandler); + + fillPanel(panel, dropTable, giveRewardEditHandler); + panel.openFor(player); + } + + @Override + public void initializePanel(PanelBuilder panelBuilder) { + + } + + private void loadPage(Panel panel, int page, DropTable dropTable, GiveRewardEditHandler subVariable, List filteredKeys, Map> commands) { + panel.loadPage(page, (slot, realisticSlot) -> { + if(slot >= filteredKeys.size()) { + panel.setItem(realisticSlot, new ItemStack(Material.AIR), e->{}); + } else { + String name = filteredKeys.get(slot); +// ItemStackHolder itemStackHolder = itemStacks.get(name); +// ItemStack itemStack = this.itemsFileManager.getItemStackConverter().from(itemStackHolder); + +// panel.setItem(realisticSlot, itemStack, event -> { +// Map currentRewards = getRewards(subVariable); +// +// currentRewards.put(name, 50.0); +// saveDropTable(this.plugin.getDropTableFileManager(), dropTable, subVariable); +// +// getRewardMainEditMenu().openFor((Player) event.getWhoClicked(), dropTable, subVariable, name); +// Message.Boss_DropTable_AddedNewReward.msg(event.getWhoClicked(), BossAPI.getDropTableName(dropTable)); +// }); + } + }); + } + + + private List getCurrentKeys(GiveRewardEditHandler giveRewardEditHandler) { + return new ArrayList<>(giveRewardEditHandler.getGiveTableSubElement().getCommands().keySet()); + } + + private List getFilteredKeys(Map> commands, List currentKeys) { + List filteredList = new ArrayList<>(); + + commands.keySet().forEach(string -> { + if(currentKeys.contains(string)) return; + + filteredList.add(string); + }); + + return filteredList; + } +} diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/panel/droptables/types/give/commands/GiveCommandRewardListPanel.java b/plugin-modules/Core/src/com/songoda/epicbosses/panel/droptables/types/give/commands/GiveCommandRewardListPanel.java new file mode 100644 index 0000000..9d467fd --- /dev/null +++ b/plugin-modules/Core/src/com/songoda/epicbosses/panel/droptables/types/give/commands/GiveCommandRewardListPanel.java @@ -0,0 +1,9 @@ +package com.songoda.epicbosses.panel.droptables.types.give.commands; + +/** + * @author Charles Cullen + * @version 1.0.0 + * @since 02-Jan-19 + */ +public class GiveCommandRewardListPanel { +} diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/panel/droptables/types/give/commands/GiveCommandRewardMainEditPanel.java b/plugin-modules/Core/src/com/songoda/epicbosses/panel/droptables/types/give/commands/GiveCommandRewardMainEditPanel.java new file mode 100644 index 0000000..eb27c72 --- /dev/null +++ b/plugin-modules/Core/src/com/songoda/epicbosses/panel/droptables/types/give/commands/GiveCommandRewardMainEditPanel.java @@ -0,0 +1,9 @@ +package com.songoda.epicbosses.panel.droptables.types.give.commands; + +/** + * @author Charles Cullen + * @version 1.0.0 + * @since 02-Jan-19 + */ +public class GiveCommandRewardMainEditPanel { +} diff --git a/pom.xml b/pom.xml index 639203a..afd5f5b 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ - 1.0.0-U163 + 1.0.0-U164 EpicBosses com.songoda.epicbosses.CustomBosses AMinecraftDev