1.0.0-SNAPSHOT-U198

+ Added an aspect to disable every feature on the boss editing if the boss isn't enabled for editing.
+ Added feature for displaying which Targeting System is selected
This commit is contained in:
Charles 2019-01-12 22:31:33 +08:00
parent 42893e10b2
commit 3638fb8590
18 changed files with 145 additions and 16 deletions

View File

@ -31,6 +31,10 @@
"type": "STICK",
"name": "&c&lDefault Custom Skill Type Item"
},
"DefaultSelectedTargetingItem": {
"type": "EMERALD_BLOCK",
"name": "&c&lDefault Selected Targeting System Item"
},
"DefaultSelectedCustomSkillTypeItem": {
"type": "BLAZE_ROD",
"name": "&c&lDefault Selected Custom Skill Type Item"

View File

@ -760,7 +760,7 @@ public class BossPanelManager implements ILoadable, IReloadable {
private void loadTargetingEditMenu() {
PanelBuilder panelBuilder = new PanelBuilder(this.customBosses.getEditor().getConfigurationSection("TargetingPanel"));
this.targetingEditMenu = new TargetingEditorPanel(this, panelBuilder, this.customBosses.getBossesFileManager());
this.targetingEditMenu = new TargetingEditorPanel(this, panelBuilder, this.customBosses);
}
private void reloadTargetingEditMenu() {

View File

@ -9,6 +9,7 @@ import com.songoda.epicbosses.entity.elements.HandsElement;
import com.songoda.epicbosses.entity.elements.MainStatsElement;
import com.songoda.epicbosses.managers.BossPanelManager;
import com.songoda.epicbosses.managers.files.BossesFileManager;
import com.songoda.epicbosses.utils.Message;
import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.itemstack.ItemStackConverter;
import com.songoda.epicbosses.utils.itemstack.ItemStackUtils;
@ -75,6 +76,11 @@ public abstract class BossListEditorPanel extends VariablePanelHandler<BossEntit
if (click == ClickType.LEFT || click == ClickType.SHIFT_LEFT) {
getAction(bossEntity, entityStatsElement).onClick(event);
} else {
if(!bossEntity.isEditing()) {
Message.Boss_Edit_CannotBeModified.msg(event.getWhoClicked());
return;
}
if (entityStatsElement.getMainStats().getPosition() > 1) {
bossEntity.getEntityStats().remove(entityStatsElement);
this.bossesFileManager.save();
@ -108,6 +114,11 @@ public abstract class BossListEditorPanel extends VariablePanelHandler<BossEntit
fillPanel(panel, bossEntity);
panel.getPanelBuilderCounter().getSlotsWith("CreateEntity").forEach(slot -> panel.setOnClick(slot, event -> {
if(!bossEntity.isEditing()) {
Message.Boss_Edit_CannotBeModified.msg(event.getWhoClicked());
return;
}
MainStatsElement mainStatsElement = new MainStatsElement(nextNumber, "", 50.0, "");
EquipmentElement equipmentElement = new EquipmentElement("", "", "", "");
HandsElement handsElement = new HandsElement("", "");

View File

@ -132,7 +132,7 @@ public class DropsEditorPanel extends VariablePanelHandler<BossEntity> {
panel.setItem(realisticSlot, itemStack, e -> {
if(!bossEntity.isEditing()) {
Message.General_CannotBecauseLive.msg(e.getWhoClicked());
Message.Boss_Edit_CannotBeModified.msg(e.getWhoClicked());
return;
}

View File

@ -5,6 +5,7 @@ import com.songoda.epicbosses.api.BossAPI;
import com.songoda.epicbosses.entity.BossEntity;
import com.songoda.epicbosses.managers.BossPanelManager;
import com.songoda.epicbosses.managers.files.BossesFileManager;
import com.songoda.epicbosses.utils.Message;
import com.songoda.epicbosses.utils.NumberUtils;
import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.panel.Panel;
@ -81,6 +82,11 @@ public class DropsMainEditorPanel extends VariablePanelHandler<BossEntity> {
private ClickAction getNaturalDropsAction(BossEntity bossEntity, Boolean current) {
return event -> {
if(!bossEntity.isEditing()) {
Message.Boss_Edit_CannotBeModified.msg(event.getWhoClicked());
return;
}
bossEntity.getDrops().setNaturalDrops(!current);
this.bossesFileManager.save();
@ -90,6 +96,11 @@ public class DropsMainEditorPanel extends VariablePanelHandler<BossEntity> {
private ClickAction getNaturalExpAction(BossEntity bossEntity, Boolean current) {
return event -> {
if(!bossEntity.isEditing()) {
Message.Boss_Edit_CannotBeModified.msg(event.getWhoClicked());
return;
}
bossEntity.getDrops().setDropExp(!current);
this.bossesFileManager.save();

View File

@ -6,6 +6,7 @@ import com.songoda.epicbosses.entity.BossEntity;
import com.songoda.epicbosses.managers.BossPanelManager;
import com.songoda.epicbosses.managers.files.SkillsFileManager;
import com.songoda.epicbosses.skills.Skill;
import com.songoda.epicbosses.utils.Message;
import com.songoda.epicbosses.utils.NumberUtils;
import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.StringUtils;
@ -110,6 +111,11 @@ public class SkillListEditorPanel extends VariablePanelHandler<BossEntity> {
ItemStackUtils.applyDisplayLore(itemStack, this.plugin.getConfig().getStringList("Display.Boss.Skills.lore"), replaceMap);
panel.setItem(realisticSlot, itemStack, e -> {
if(!bossEntity.isEditing()) {
Message.Boss_Edit_CannotBeModified.msg(e.getWhoClicked());
return;
}
List<String> currentSkillList = bossEntity.getSkills().getSkills();
if(currentSkillList.contains(name)) {

View File

@ -74,6 +74,11 @@ public class SkillMainEditorPanel extends VariablePanelHandler<BossEntity> {
private ClickAction getOverallChanceAction(BossEntity bossEntity) {
return event -> {
if(!bossEntity.isEditing()) {
Message.Boss_Edit_CannotBeModified.msg(event.getWhoClicked());
return;
}
ClickType clickType = event.getClick();
double chanceToModifyBy = 0.0;

View File

@ -6,6 +6,7 @@ import com.songoda.epicbosses.entity.BossEntity;
import com.songoda.epicbosses.managers.BossPanelManager;
import com.songoda.epicbosses.managers.files.BossesFileManager;
import com.songoda.epicbosses.managers.files.ItemsFileManager;
import com.songoda.epicbosses.utils.Message;
import com.songoda.epicbosses.utils.ObjectUtils;
import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.itemstack.ItemStackUtils;
@ -73,6 +74,11 @@ public class SpawnItemEditorPanel extends VariablePanelHandler<BossEntity> {
ServerUtils.get().runTaskAsync(() -> {
panelBuilderCounter.getSlotsWith("AddNew").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getAddItemsMenu().openFor(player)));
panelBuilderCounter.getSlotsWith("Remove").forEach(slot -> panel.setOnClick(slot, event -> {
if(!bossEntity.isEditing()) {
Message.Boss_Edit_CannotBeModified.msg(event.getWhoClicked());
return;
}
bossEntity.setSpawnItem("");
this.bossesFileManager.save();
@ -114,6 +120,11 @@ public class SpawnItemEditorPanel extends VariablePanelHandler<BossEntity> {
}
panel.setItem(realisticSlot, itemStack, e -> {
if(!bossEntity.isEditing()) {
Message.Boss_Edit_CannotBeModified.msg(e.getWhoClicked());
return;
}
bossEntity.setSpawnItem(name);
this.bossesFileManager.save();

View File

@ -87,6 +87,11 @@ public class StatisticMainEditorPanel extends SubVariablePanelHandler<BossEntity
private ClickAction getDisplayNameAction(BossEntity bossEntity, EntityStatsElement entityStatsElement) {
return event -> {
if(!bossEntity.isEditing()) {
Message.Boss_Edit_CannotBeModified.msg(event.getWhoClicked());
return;
}
Player humanEntity = (Player) event.getWhoClicked();
BossDisplayNameHandler bossDisplayNameHandler = new BossDisplayNameHandler(humanEntity, bossEntity, entityStatsElement, this.bossesFileManager, this);
@ -98,6 +103,11 @@ public class StatisticMainEditorPanel extends SubVariablePanelHandler<BossEntity
private ClickAction getHealthAction(BossEntity bossEntity, EntityStatsElement entityStatsElement) {
return event -> {
if(!bossEntity.isEditing()) {
Message.Boss_Edit_CannotBeModified.msg(event.getWhoClicked());
return;
}
ClickType clickType = event.getClick();
double healthToModifyBy = 0.0;

View File

@ -1,15 +1,19 @@
package com.songoda.epicbosses.panel.bosses;
import com.songoda.epicbosses.CustomBosses;
import com.songoda.epicbosses.api.BossAPI;
import com.songoda.epicbosses.entity.BossEntity;
import com.songoda.epicbosses.managers.BossPanelManager;
import com.songoda.epicbosses.managers.files.BossesFileManager;
import com.songoda.epicbosses.managers.files.ItemsFileManager;
import com.songoda.epicbosses.utils.Message;
import com.songoda.epicbosses.utils.ServerUtils;
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 com.songoda.epicbosses.utils.panel.builder.PanelBuilderCounter;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import java.util.HashMap;
import java.util.Map;
@ -22,11 +26,13 @@ import java.util.Map;
public class TargetingEditorPanel extends VariablePanelHandler<BossEntity> {
private BossesFileManager bossesFileManager;
private ItemsFileManager itemsFileManager;
public TargetingEditorPanel(BossPanelManager bossPanelManager, PanelBuilder panelBuilder, BossesFileManager bossesFileManager) {
public TargetingEditorPanel(BossPanelManager bossPanelManager, PanelBuilder panelBuilder, CustomBosses plugin) {
super(bossPanelManager, panelBuilder);
this.bossesFileManager = bossesFileManager;
this.bossesFileManager = plugin.getBossesFileManager();
this.itemsFileManager = plugin.getItemStackManager();
}
@Override
@ -37,29 +43,34 @@ public class TargetingEditorPanel extends VariablePanelHandler<BossEntity> {
@Override
public void openFor(Player player, BossEntity bossEntity) {
Map<String, String> replaceMap = new HashMap<>();
String current = bossEntity.getTargetingValue();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
PanelBuilderCounter counter = panelBuilder.getPanelBuilderCounter();
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
replaceMap.put("{selected}", bossEntity.getTargetingValue());
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
replaceMap.put("{selected}", current);
panelBuilder.addReplaceData(replaceMap);
counter.addSpecialCounter("TargetingSystem");
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelLowerClick(true)
.setCancelClick(true)
.setParentPanelHandler(this.bossPanelManager.getMainBossEditMenu(), bossEntity);
PanelBuilderCounter panelBuilderCounter = panel.getPanelBuilderCounter();
ServerUtils.get().runTaskAsync(() -> {
panelBuilderCounter.getSpecialSlotsWith("TargetingSystem").forEach((slot, returnValue) -> panel.setOnClick(slot, event -> {
counter.getSpecialSlotsWith("TargetingSystem").forEach((slot, returnValue) -> {
ItemStack currentStack = panel.getInventory().getItem(slot);
ItemStack newItemStack = getItemStack(current, (String) returnValue, currentStack);
panel.setItem(slot, newItemStack , event -> {
if(!bossEntity.isEditing()) {
Message.Boss_Edit_CannotBeModified.msg(event.getWhoClicked());
return;
}
bossEntity.setTargeting((String) returnValue);
this.bossesFileManager.save();
openFor(player, bossEntity);
}));
});
});
panel.openFor(player);
@ -69,4 +80,15 @@ public class TargetingEditorPanel extends VariablePanelHandler<BossEntity> {
public void initializePanel(PanelBuilder panelBuilder) {
}
private ItemStack getItemStack(String current, String thisType, ItemStack currentItemStack) {
ItemStack itemStack = this.itemsFileManager.getItemStackConverter().from(this.itemsFileManager.getItemStackHolder("DefaultSelectedTargetingItem"));
ItemStack cloneStack = currentItemStack.clone();
if(thisType.equalsIgnoreCase(current)) {
cloneStack.setType(itemStack.getType());
}
return cloneStack;
}
}

View File

@ -5,6 +5,7 @@ import com.songoda.epicbosses.api.BossAPI;
import com.songoda.epicbosses.entity.BossEntity;
import com.songoda.epicbosses.managers.BossPanelManager;
import com.songoda.epicbosses.managers.files.CommandsFileManager;
import com.songoda.epicbosses.utils.Message;
import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.StringUtils;
import com.songoda.epicbosses.utils.itemstack.ItemStackConverter;
@ -120,6 +121,11 @@ public class OnDeathCommandEditor extends VariablePanelHandler<BossEntity> {
itemStack.setItemMeta(itemMeta);
panel.setItem(realisticSlot, itemStack, e -> {
if(!bossEntity.isEditing()) {
Message.Boss_Edit_CannotBeModified.msg(e.getWhoClicked());
return;
}
bossEntity.getCommands().setOnDeath(name);
this.plugin.getBossesFileManager().save();
loadPage(panel, page, currentCommands, entryList, bossEntity);

View File

@ -5,6 +5,7 @@ import com.songoda.epicbosses.api.BossAPI;
import com.songoda.epicbosses.entity.BossEntity;
import com.songoda.epicbosses.managers.BossPanelManager;
import com.songoda.epicbosses.managers.files.CommandsFileManager;
import com.songoda.epicbosses.utils.Message;
import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.StringUtils;
import com.songoda.epicbosses.utils.itemstack.ItemStackConverter;
@ -120,6 +121,11 @@ public class OnSpawnCommandEditor extends VariablePanelHandler<BossEntity> {
itemStack.setItemMeta(itemMeta);
panel.setItem(realisticSlot, itemStack, e -> {
if(!bossEntity.isEditing()) {
Message.Boss_Edit_CannotBeModified.msg(e.getWhoClicked());
return;
}
bossEntity.getCommands().setOnSpawn(name);
this.plugin.getBossesFileManager().save();
loadPage(panel, page, currentCommands, entryList, bossEntity);

View File

@ -86,6 +86,11 @@ public class DeathTextEditorPanel extends VariablePanelHandler<BossEntity> {
private ClickAction getRadiusAction(BossEntity bossEntity) {
return event -> {
if(!bossEntity.isEditing()) {
Message.Boss_Edit_CannotBeModified.msg(event.getWhoClicked());
return;
}
ClickType clickType = event.getClick();
int radiusToModifyBy = 0;
@ -119,6 +124,11 @@ public class DeathTextEditorPanel extends VariablePanelHandler<BossEntity> {
private ClickAction getOnlyShowAction(BossEntity bossEntity) {
return event -> {
if(!bossEntity.isEditing()) {
Message.Boss_Edit_CannotBeModified.msg(event.getWhoClicked());
return;
}
ClickType clickType = event.getClick();
int amountToModifyBy = 0;

View File

@ -77,6 +77,11 @@ public class SpawnTextEditorPanel extends VariablePanelHandler<BossEntity> {
private ClickAction getRadiusAction(BossEntity bossEntity) {
return event -> {
if(!bossEntity.isEditing()) {
Message.Boss_Edit_CannotBeModified.msg(event.getWhoClicked());
return;
}
ClickType clickType = event.getClick();
int radiusToModifyBy = 0;

View File

@ -85,6 +85,11 @@ public class TauntTextEditorPanel extends VariablePanelHandler<BossEntity> {
private ClickAction getRadiusAction(BossEntity bossEntity) {
return event -> {
if(!bossEntity.isEditing()) {
Message.Boss_Edit_CannotBeModified.msg(event.getWhoClicked());
return;
}
ClickType clickType = event.getClick();
int radiusToModifyBy = 0;
@ -118,6 +123,11 @@ public class TauntTextEditorPanel extends VariablePanelHandler<BossEntity> {
private ClickAction getDelayAction(BossEntity bossEntity) {
return event -> {
if(!bossEntity.isEditing()) {
Message.Boss_Edit_CannotBeModified.msg(event.getWhoClicked());
return;
}
ClickType clickType = event.getClick();
int delayToModifyBy = 0;

View File

@ -7,6 +7,7 @@ import com.songoda.epicbosses.entity.elements.EntityStatsElement;
import com.songoda.epicbosses.managers.BossPanelManager;
import com.songoda.epicbosses.managers.files.BossesFileManager;
import com.songoda.epicbosses.managers.files.ItemsFileManager;
import com.songoda.epicbosses.utils.Message;
import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.itemstack.ItemStackConverter;
import com.songoda.epicbosses.utils.itemstack.ItemStackUtils;
@ -90,6 +91,11 @@ public abstract class ItemStackSubListPanelHandler extends SubVariablePanelHandl
ServerUtils.get().runTaskAsync(() -> {
panelBuilderCounter.getSlotsWith("AddNew").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getAddItemsMenu().openFor(player)));
panelBuilderCounter.getSlotsWith("Remove").forEach(slot -> panel.setOnClick(slot, event -> {
if(!bossEntity.isEditing()) {
Message.Boss_Edit_CannotBeModified.msg(event.getWhoClicked());
return;
}
getUpdateAction(entityStatsElement, "");
this.bossesFileManager.save();
@ -131,6 +137,11 @@ public abstract class ItemStackSubListPanelHandler extends SubVariablePanelHandl
}
panel.setItem(realisticSlot, itemStack, e -> {
if(!bossEntity.isEditing()) {
Message.Boss_Edit_CannotBeModified.msg(e.getWhoClicked());
return;
}
getUpdateAction(entityStatsElement, name);
this.bossesFileManager.save();

View File

@ -62,6 +62,7 @@ public enum Message {
Boss_Edit_NoPermission("&c&l(!) &cYou do not have access to this command."),
Boss_Edit_ItemStackHolderNull("&c&l(!) &cThe itemstack name that is provided for the spawn item doesn't exist or wasn't found."),
Boss_Edit_CannotSpawn("&c&l(!) &cYou cannot spawn this boss while editing is enabled. If you think this is a mistake please contact an administrator to disable the editing of the boss."),
Boss_Edit_CannotBeModified("&c&l(!) &cYou cannot modify this aspect because you do not have editing mode enabled on this boss."),
Boss_Edit_Toggled("&b&lEpicBosses &8» &7You have toggled the editing mode for &f{0}&7 to &f{1}&7."),
Boss_Edit_NotCompleteEnough("&c&l(!) &cThe boss is not set up enough to be enabled. Please make sure it has the following things: &f{0}&c Once these things are set try toggling again."),
Boss_Edit_DoesntExist("&c&l(!) &cThe specified boss does not exist. Please try again with the proper name. If you cannot figure it out please check the bosses.json file to find the one you're looking for."),

View File

@ -19,7 +19,7 @@
</modules>
<properties>
<plugin.version>1.0.0-U197</plugin.version>
<plugin.version>1.0.0-U198</plugin.version>
<plugin.name>EpicBosses</plugin.name>
<plugin.main>com.songoda.epicbosses.CustomBosses</plugin.main>
<plugin.author>AMinecraftDev</plugin.author>