From 1d426ba587dcd0e34001fb71c7e464fe0e3c4d30 Mon Sep 17 00:00:00 2001 From: Charles Date: Mon, 24 Dec 2018 01:18:50 +0800 Subject: [PATCH] 1.0.0-SNAPSHOT-U139 + Implemented DropTableTypeEditorPanel + Connected a few of the drop table panels --- plugin-modules/Core/resources-yml/editor.yml | 60 ++++++++++++++++++- .../epicbosses/managers/BossPanelManager.java | 7 ++- .../droptables/DropTableTypeEditorPanel.java | 40 ++++++++++++- .../droptables/MainDropTableEditorPanel.java | 2 +- .../panel/skills/SkillTypeEditorPanel.java | 8 +-- pom.xml | 2 +- 6 files changed, 106 insertions(+), 13 deletions(-) diff --git a/plugin-modules/Core/resources-yml/editor.yml b/plugin-modules/Core/resources-yml/editor.yml index c31e5ae..c1d88ea 100644 --- a/plugin-modules/Core/resources-yml/editor.yml +++ b/plugin-modules/Core/resources-yml/editor.yml @@ -1882,7 +1882,7 @@ SpecialSettingsEditorPanel: - '&7the skill editor panel to configure' - '&7the general skill options.' DropTableMainEditorPanel: - name: '&b&l{name} Editor' + name: '&b&l{name} Drop Table Editor' slots: 9 Settings: emptySpaceFiller: true @@ -1925,4 +1925,60 @@ DropTableMainEditorPanel: name: '&cClick here to go back' lore: - '&7Click this button to go back to' - - '&7the drop table list page.' \ No newline at end of file + - '&7the drop table list page.' +DropTableTypeEditorPanel: + name: '&b&l{name} Drop Table Editor' + slots: 9 + Settings: + backButton: true + emptySpaceFiller: true + EmptySpaceFiller: + type: WHITE_STAINED_GLASS_PANE + name: '&7' + Buttons: + backButton: 5 + Items: + '3': + type: SPLASH_POTION + name: '&e&lSpray Drop Table Type' + lore: + - '&7If you set this to the drop table type' + - '&7then you will be able to set rewards that' + - '&7will be sprayed out from the bosses' + - '&7location in to random locations around him.' + - '&7' + - '&c&lWARNING' + - '&7This will remove any previous' + - '&7custom reward data.' + Button: Spray + '5': + type: HOPPER + name: '&e&lDrop Drop Table Type' + lore: + - '&7If you set this to the drop table type' + - '&7then you will be able to set rewards that' + - '&7will be drop on the bosses death location' + - '&7for players to loot.' + - '&7' + - '&c&lWARNING' + - '&7This will remove any previous' + - '&7custom reward data.' + Button: Drop + '7': + type: EMERALD + name: '&e&lGive Drop Table Type' + lore: + - '&7If you set this to the drop table type' + - '&7then you will be able to set rewards that' + - '&7will be given to the specified damaging' + - '&7positions on the boss damage map.' + - '&7' + - '&c&lWARNING' + - '&7This will remove any previous' + - '&7custom reward data.' + Button: Give + '9': + type: PAPER + name: '&e&lGo Back' + lore: + - '&7Click here to go back.' \ No newline at end of file diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/managers/BossPanelManager.java b/plugin-modules/Core/src/com/songoda/epicbosses/managers/BossPanelManager.java index 78e7a7d..021ef06 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/managers/BossPanelManager.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/managers/BossPanelManager.java @@ -19,6 +19,7 @@ import com.songoda.epicbosses.panel.bosses.list.BossListWeaponEditorPanel; import com.songoda.epicbosses.panel.bosses.text.*; import com.songoda.epicbosses.panel.bosses.weapons.MainHandEditorPanel; import com.songoda.epicbosses.panel.bosses.weapons.OffHandEditorPanel; +import com.songoda.epicbosses.panel.droptables.DropTableTypeEditorPanel; import com.songoda.epicbosses.panel.droptables.MainDropTableEditorPanel; import com.songoda.epicbosses.panel.handlers.*; import com.songoda.epicbosses.panel.skills.MainSkillEditorPanel; @@ -83,7 +84,7 @@ public class BossPanelManager implements ILoadable, IReloadable { @Getter private ISubVariablePanelHandler modifyCommandEditMenu, commandListSkillEditMenu; @Getter private ISubVariablePanelHandler customSkillTypeEditorMenu, specialSettingsEditorMenu, minionSelectEditorMenu; - @Getter private IVariablePanelHandler mainDropTableEditMenu; + @Getter private IVariablePanelHandler mainDropTableEditMenu, dropTableTypeEditMenu; private final CustomBosses customBosses; @@ -197,15 +198,19 @@ public class BossPanelManager implements ILoadable, IReloadable { private void loadDropTableEditMenus() { FileConfiguration editor = this.customBosses.getEditor(); PanelBuilder panelBuilder = new PanelBuilder(editor.getConfigurationSection("DropTableMainEditorPanel")); + PanelBuilder panelBuilder1 = new PanelBuilder(editor.getConfigurationSection("DropTableTypeEditorPanel")); this.mainDropTableEditMenu = new MainDropTableEditorPanel(this, panelBuilder); + this.dropTableTypeEditMenu = new DropTableTypeEditorPanel(this, panelBuilder1, this.customBosses); } private void reloadDropTableEditMenus() { FileConfiguration editor = this.customBosses.getEditor(); PanelBuilder panelBuilder = new PanelBuilder(editor.getConfigurationSection("DropTableMainEditorPanel")); + PanelBuilder panelBuilder1 = new PanelBuilder(editor.getConfigurationSection("DropTableTypeEditorPanel")); this.mainDropTableEditMenu.initializePanel(panelBuilder); + this.dropTableTypeEditMenu.initializePanel(panelBuilder1); } //--------------------------------------------- diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/panel/droptables/DropTableTypeEditorPanel.java b/plugin-modules/Core/src/com/songoda/epicbosses/panel/droptables/DropTableTypeEditorPanel.java index 22c48c9..8930a16 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/panel/droptables/DropTableTypeEditorPanel.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/panel/droptables/DropTableTypeEditorPanel.java @@ -1,11 +1,19 @@ package com.songoda.epicbosses.panel.droptables; +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.utils.panel.Panel; +import com.songoda.epicbosses.utils.panel.base.ClickAction; import com.songoda.epicbosses.utils.panel.base.handlers.VariablePanelHandler; import com.songoda.epicbosses.utils.panel.builder.PanelBuilder; +import com.songoda.epicbosses.utils.panel.builder.PanelBuilderCounter; import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryClickEvent; + +import java.util.HashMap; +import java.util.Map; /** * @author Charles Cullen @@ -14,8 +22,12 @@ import org.bukkit.entity.Player; */ public class DropTableTypeEditorPanel extends VariablePanelHandler { - public DropTableTypeEditorPanel(BossPanelManager bossPanelManager, PanelBuilder panelBuilder) { + private CustomBosses plugin; + + public DropTableTypeEditorPanel(BossPanelManager bossPanelManager, PanelBuilder panelBuilder, CustomBosses plugin) { super(bossPanelManager, panelBuilder); + + this.plugin = plugin; } @Override @@ -25,11 +37,37 @@ public class DropTableTypeEditorPanel extends VariablePanelHandler { @Override public void openFor(Player player, DropTable dropTable) { + PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder(); + Map replaceMap = new HashMap<>(); + replaceMap.put("{name}", BossAPI.getDropTableName(dropTable)); + panelBuilder.addReplaceData(replaceMap); + + PanelBuilderCounter panelBuilderCounter = panelBuilder.getPanelBuilderCounter(); + Panel panel = panelBuilder.getPanel() + .setParentPanelHandler(this.bossPanelManager.getMainDropTableEditMenu(), dropTable); + + panelBuilderCounter.getSlotsWith("Spray").forEach(slot -> panel.setOnClick(slot, getAction(dropTable, "Spray"))); + panelBuilderCounter.getSlotsWith("Drop").forEach(slot -> panel.setOnClick(slot, getAction(dropTable, "Drop"))); + panelBuilderCounter.getSlotsWith("Give").forEach(slot -> panel.setOnClick(slot, getAction(dropTable, "Give"))); + + panel.openFor(player); } @Override public void initializePanel(PanelBuilder panelBuilder) { } + + private ClickAction getAction(DropTable dropTable, String button) { + return event -> { + dropTable.setDropType(button.toUpperCase()); + save(dropTable, event); + }; + } + + private void save(DropTable dropTable, InventoryClickEvent event) { + this.plugin.getDropTableFileManager().save(); + this.bossPanelManager.getMainDropTableEditMenu().openFor((Player) event.getWhoClicked(), dropTable); + } } diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/panel/droptables/MainDropTableEditorPanel.java b/plugin-modules/Core/src/com/songoda/epicbosses/panel/droptables/MainDropTableEditorPanel.java index 0b1a03a..8427070 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/panel/droptables/MainDropTableEditorPanel.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/panel/droptables/MainDropTableEditorPanel.java @@ -40,7 +40,7 @@ public class MainDropTableEditorPanel extends VariablePanelHandler { Panel panel = panelBuilder.getPanel() .setParentPanelHandler(this.bossPanelManager.getDropTables()); - panelBuilderCounter.getSlotsWith("Type").forEach(slot -> panel.setOnClick(slot, event -> {})); + panelBuilderCounter.getSlotsWith("Type").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getDropTableTypeEditMenu().openFor(player, dropTable))); panelBuilderCounter.getSlotsWith("Rewards").forEach(slot -> panel.setOnClick(slot, event -> {})); panel.openFor(player); diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/panel/skills/SkillTypeEditorPanel.java b/plugin-modules/Core/src/com/songoda/epicbosses/panel/skills/SkillTypeEditorPanel.java index 30c9693..5d86a23 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/panel/skills/SkillTypeEditorPanel.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/panel/skills/SkillTypeEditorPanel.java @@ -61,13 +61,7 @@ public class SkillTypeEditorPanel extends VariablePanelHandler { @Override public void initializePanel(PanelBuilder panelBuilder) { -// PanelBuilderCounter panelBuilderCounter = panelBuilder.getPanelBuilderCounter(); -// -// panelBuilderCounter -// .addSlotCounter("Command") -// .addSlotCounter("Custom") -// .addSlotCounter("Potion") -// .addSlotCounter("Group"); + } private ClickAction getCommandAction(Skill skill) { diff --git a/pom.xml b/pom.xml index 5cd7ab5..34b49a4 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ - 1.0.0-U138 + 1.0.0-U139 EpicBosses com.songoda.epicbosses.CustomBosses AMinecraftDev