1.0.0-SNAPSHOT-U116

+ Added the GroupSkillEditorPanel
+ Connected to the other editors
+ Updated CommandSkillEditorPanel removed un-needed imports
This commit is contained in:
Charles 2018-12-10 21:49:40 +08:00
parent 8301c9783e
commit 7333c17a28
7 changed files with 157 additions and 18 deletions

1
TODO
View File

@ -1,4 +1,3 @@
-> Add the Group Skill Editing GUIs
-> Add the Custom Skill Editing GUIs
-> Add the new Command aspect (via command)
-> Add the new Message aspect (via command)

View File

@ -150,4 +150,14 @@ Display:
name: '&bCommand: &f{name}'
lore:
- '&fCommands within this section:'
- '{commands}'
- '{commands}'
Group:
menuName: '&b&l{name} Skill Editor'
selectedName: '&bSkill: &f{name} &a&l** Selected **'
name: '&bSkill: &f{name}'
lore:
- '&3Mode: &7{mode}'
- '&3Type: &7{type}'
- '&3Display Name: &7{displayName}'
- '&3Custom Message: &7{customMessage}'
- '&3Radius: &7{radius}'

View File

@ -22,6 +22,7 @@ import com.songoda.epicbosses.panel.handlers.*;
import com.songoda.epicbosses.panel.skills.MainSkillEditorPanel;
import com.songoda.epicbosses.panel.skills.SkillTypeEditorPanel;
import com.songoda.epicbosses.panel.skills.custom.CommandSkillEditorPanel;
import com.songoda.epicbosses.panel.skills.custom.GroupSkillEditorPanel;
import com.songoda.epicbosses.panel.skills.custom.commands.CommandListSkillEditorPanel;
import com.songoda.epicbosses.panel.skills.custom.commands.ModifyCommandEditorPanel;
import com.songoda.epicbosses.panel.skills.custom.potions.CreatePotionEffectEditorPanel;
@ -68,7 +69,7 @@ public class BossPanelManager implements ILoadable, IReloadable {
onTauntTextEditMenu;
@Getter private BossListEditorPanel equipmentListEditMenu, weaponListEditMenu, statisticListEditMenu;
@Getter private IVariablePanelHandler<Skill> mainSkillEditMenu, customMessageEditMenu, skillTypeEditMenu, potionSkillEditorPanel, commandSkillEditorPanel;
@Getter private IVariablePanelHandler<Skill> mainSkillEditMenu, customMessageEditMenu, skillTypeEditMenu, potionSkillEditorPanel, commandSkillEditorPanel, groupSkillEditorPanel;
@Getter private ISubVariablePanelHandler<Skill, PotionEffectHolder> createPotionEffectMenu, potionEffectTypeEditMenu;
@Getter private ISubVariablePanelHandler<Skill, SubCommandSkillElement> modifyCommandEditMenu, commandListSkillEditMenu;
@ -204,6 +205,7 @@ public class BossPanelManager implements ILoadable, IReloadable {
this.commandSkillEditorPanel = new CommandSkillEditorPanel(this, panelBuilder4, this.customBosses);
this.modifyCommandEditMenu = new ModifyCommandEditorPanel(this, panelBuilder5, this.customBosses);
this.commandListSkillEditMenu = new CommandListSkillEditorPanel(this, getListMenu("Skills.CommandList"), this.customBosses);
this.groupSkillEditorPanel = new GroupSkillEditorPanel(this, getListMenu("Skills.Group"), this.customBosses);
}
private void reloadSkillEditMenus() {
@ -224,6 +226,7 @@ public class BossPanelManager implements ILoadable, IReloadable {
this.commandSkillEditorPanel.initializePanel(panelBuilder4);
this.modifyCommandEditMenu.initializePanel(panelBuilder5);
this.commandListSkillEditMenu.initializePanel(getListMenu("Skills.CommandList"));
this.groupSkillEditorPanel.initializePanel(getListMenu("Skills.Group"));
}
//---------------------------------------------

View File

@ -92,7 +92,7 @@ public class MainSkillEditorPanel extends VariablePanelHandler<Skill> {
if(type.equalsIgnoreCase("POTION")) {
this.bossPanelManager.getPotionSkillEditorPanel().openFor(player, skill);
} else if(type.equalsIgnoreCase("GROUP")) {
this.bossPanelManager.getGroupSkillEditorPanel().openFor(player, skill);
} else if(type.equalsIgnoreCase("CUSTOM")) {
} else if(type.equalsIgnoreCase("COMMAND")) {

View File

@ -3,31 +3,20 @@ package com.songoda.epicbosses.panel.skills.custom;
import com.songoda.epicbosses.CustomBosses;
import com.songoda.epicbosses.api.BossAPI;
import com.songoda.epicbosses.managers.BossPanelManager;
import com.songoda.epicbosses.managers.files.MessagesFileManager;
import com.songoda.epicbosses.skills.Skill;
import com.songoda.epicbosses.skills.elements.SubCommandSkillElement;
import com.songoda.epicbosses.skills.types.CommandSkillElement;
import com.songoda.epicbosses.skills.types.PotionSkillElement;
import com.songoda.epicbosses.utils.NumberUtils;
import com.songoda.epicbosses.utils.StringUtils;
import com.songoda.epicbosses.utils.command.SubCommand;
import com.songoda.epicbosses.utils.itemstack.ItemStackConverter;
import com.songoda.epicbosses.utils.itemstack.ItemStackUtils;
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 com.songoda.epicbosses.utils.potion.holder.PotionEffectHolder;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.PotionMeta;
import org.bukkit.potion.PotionData;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.potion.PotionType;
import java.util.ArrayList;
import java.util.HashMap;
@ -41,8 +30,6 @@ import java.util.Map;
*/
public class CommandSkillEditorPanel extends VariablePanelHandler<Skill> {
private MessagesFileManager messagesFileManager;
private ItemStackConverter itemStackConverter;
private CustomBosses plugin;
public CommandSkillEditorPanel(BossPanelManager bossPanelManager, PanelBuilder panelBuilder, CustomBosses plugin) {

View File

@ -0,0 +1,140 @@
package com.songoda.epicbosses.panel.skills.custom;
import com.google.gson.JsonObject;
import com.songoda.epicbosses.CustomBosses;
import com.songoda.epicbosses.api.BossAPI;
import com.songoda.epicbosses.managers.BossPanelManager;
import com.songoda.epicbosses.managers.files.ItemsFileManager;
import com.songoda.epicbosses.skills.Skill;
import com.songoda.epicbosses.skills.types.GroupSkillElement;
import com.songoda.epicbosses.utils.NumberUtils;
import com.songoda.epicbosses.utils.itemstack.ItemStackConverter;
import com.songoda.epicbosses.utils.itemstack.ItemStackUtils;
import com.songoda.epicbosses.utils.panel.Panel;
import com.songoda.epicbosses.utils.panel.base.handlers.VariablePanelHandler;
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.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author Charles Cullen
* @version 1.0.0
* @since 10-Dec-18
*/
public class GroupSkillEditorPanel extends VariablePanelHandler<Skill> {
private ItemStackConverter itemStackConverter;
private ItemsFileManager itemsFileManager;
private CustomBosses plugin;
public GroupSkillEditorPanel(BossPanelManager bossPanelManager, PanelBuilder panelBuilder, CustomBosses plugin) {
super(bossPanelManager, panelBuilder);
this.plugin = plugin;
this.itemsFileManager = plugin.getItemStackManager();
this.itemStackConverter = new ItemStackConverter();
}
@Override
public void fillPanel(Panel panel, Skill skill) {
GroupSkillElement groupSkillElement = this.plugin.getBossSkillManager().getGroupSkillElement(skill);
Map<String, Skill> skillMap = this.plugin.getSkillsFileManager().getSkillMap();
List<String> entryList = new ArrayList<>(skillMap.keySet());
int maxPage = panel.getMaxPage(entryList);
panel.setOnPageChange(((player, currentPage, requestedPage) -> {
if(requestedPage < 0 || requestedPage > maxPage) return false;
loadPage(panel, requestedPage, skill, groupSkillElement, skillMap, entryList);
return true;
}));
loadPage(panel, 0, skill, groupSkillElement, skillMap, entryList);
}
@Override
public void openFor(Player player, Skill skill) {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
replaceMap.put("{name}", BossAPI.getSkillName(skill));
panelBuilder.addReplaceData(replaceMap);
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getMainSkillEditMenu(), skill);
fillPanel(panel, skill);
panel.openFor(player);
}
@Override
public void initializePanel(PanelBuilder panelBuilder) {
}
private void loadPage(Panel panel, int page, Skill skill, GroupSkillElement groupSkillElement, Map<String, Skill> skillMap, List<String> entryList) {
List<String> currentSkills = groupSkillElement.getGroupedSkills();
panel.loadPage(page, ((slot, realisticSlot) -> {
if(slot >= skillMap.size()) {
panel.setItem(realisticSlot, new ItemStack(Material.AIR), e -> {});
} else {
String name = entryList.get(slot);
Skill innerSkill = skillMap.get(name);
Map<String, String> replaceMap = new HashMap<>();
String type = innerSkill.getType();
String displayName = innerSkill.getDisplayName();
String customMessage = innerSkill.getCustomMessage();
Double radius = innerSkill.getRadius();
String mode = innerSkill.getMode();
ItemStack itemStack = this.itemStackConverter.from(this.itemsFileManager.getItemStackHolder("DefaultSkillMenuItem"));
boolean isCurrent = currentSkills.contains(name);
if(customMessage == null || customMessage.equals("")) customMessage = "N/A";
if(radius == null) radius = 100.0;
if(mode == null || mode.equals("")) mode = "N/A";
if(displayName == null || displayName.equals("")) displayName = "N/A";
if(type == null || type.equals("")) type = "N/A";
replaceMap.put("{name}", BossAPI.getSkillName(skill));
replaceMap.put("{customMessage}", customMessage);
replaceMap.put("{radius}", NumberUtils.get().formatDouble(radius));
replaceMap.put("{mode}", mode);
replaceMap.put("{displayName}", displayName);
replaceMap.put("{type}", type);
if(isCurrent) {
ItemStackUtils.applyDisplayName(itemStack, this.plugin.getConfig().getString("Display.Skills.Group.selectedName"), replaceMap);
} else {
ItemStackUtils.applyDisplayName(itemStack, this.plugin.getConfig().getString("Display.Skills.Group.name"), replaceMap);
}
ItemStackUtils.applyDisplayLore(itemStack, this.plugin.getConfig().getStringList("Display.Skills.Group.lore"), replaceMap);
panel.setItem(realisticSlot, itemStack, event -> {
if(isCurrent) {
currentSkills.remove(name);
} else {
currentSkills.add(name);
}
groupSkillElement.setGroupedSkills(currentSkills);
JsonObject jsonObject = BossAPI.convertObjectToJsonObject(groupSkillElement);
skill.setCustomData(jsonObject);
this.plugin.getSkillsFileManager().save();
loadPage(panel, page, skill, groupSkillElement, skillMap, entryList);
});
}
}));
}
}

View File

@ -20,7 +20,7 @@
<properties>
<!--<plugin.version>maven-version-number-SNAPSHOT-U90</plugin.version>-->
<plugin.version>1.0.0-U115</plugin.version>
<plugin.version>1.0.0-U116</plugin.version>
<plugin.name>EpicBosses</plugin.name>
<plugin.main>com.songoda.epicbosses.CustomBosses</plugin.main>
<plugin.author>AMinecraftDev</plugin.author>