1.0.0-SNAPSHOT-U116
+ Added the GroupSkillEditorPanel + Connected to the other editors + Updated CommandSkillEditorPanel removed un-needed imports
This commit is contained in:
parent
8301c9783e
commit
7333c17a28
1
TODO
1
TODO
|
@ -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)
|
||||
|
|
|
@ -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}'
|
|
@ -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"));
|
||||
}
|
||||
|
||||
//---------------------------------------------
|
||||
|
|
|
@ -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")) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
});
|
||||
}
|
||||
}));
|
||||
}
|
||||
}
|
2
pom.xml
2
pom.xml
|
@ -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>
|
||||
|
|
Loading…
Reference in New Issue