1.0.0-SNAPSHOT-U194

+ Added /Boss New AutoSpawn command
+ Made all the panel opening Async to remove any lag from spam button clicking
+ Connected AutoSpawn right click in MainMenu to the /boss new autospawn command
+ Connected DropTable Editing Button in the DropsEditorPanel
This commit is contained in:
Charles 2019-01-09 02:37:11 +08:00
parent 0dc48bf1ea
commit d0e2dd008d
62 changed files with 1002 additions and 799 deletions

View File

@ -4,6 +4,8 @@ import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.songoda.epicbosses.CustomBosses;
import com.songoda.epicbosses.autospawns.AutoSpawn;
import com.songoda.epicbosses.autospawns.settings.AutoSpawnSettings;
import com.songoda.epicbosses.autospawns.types.IntervalSpawnElement;
import com.songoda.epicbosses.droptable.DropTable;
import com.songoda.epicbosses.droptable.elements.DropTableElement;
import com.songoda.epicbosses.droptable.elements.GiveTableElement;
@ -433,6 +435,28 @@ public class BossAPI {
return minionEntity;
}
/**
* Used to create a new base auto spawn
* with the specified arguments.
*
* @param name - name of the auto spawn.
* @return an instance of the auto spawn if successful
*/
public static AutoSpawn createBaseAutoSpawn(String name) {
if(PLUGIN.getAutoSpawnFileManager().getAutoSpawn(name) != null) {
Debug.AUTOSPAWN_NAME_EXISTS.debug(name);
return null;
}
IntervalSpawnElement intervalSpawnElement = new IntervalSpawnElement("world,0,100,0", "{boss_" + name + "}", 30, false);
AutoSpawn autoSpawn = new AutoSpawn(true, new ArrayList<>(), new AutoSpawnSettings(1, 1, false, false));
autoSpawn.setCustomData(BossAPI.convertObjectToJsonObject(intervalSpawnElement));
PLUGIN.getAutoSpawnFileManager().saveAutoSpawn(name, autoSpawn);
return autoSpawn;
}
/**
* Used to spawn a new active boss for the
* specified bossEntity.

View File

@ -4,19 +4,13 @@ import com.google.gson.JsonObject;
import com.songoda.epicbosses.CustomBosses;
import com.songoda.epicbosses.api.BossAPI;
import com.songoda.epicbosses.autospawns.AutoSpawn;
import com.songoda.epicbosses.autospawns.settings.AutoSpawnSettings;
import com.songoda.epicbosses.autospawns.types.IntervalSpawnElement;
import com.songoda.epicbosses.entity.BossEntity;
import com.songoda.epicbosses.handlers.AutoSpawnVariableHandler;
import com.songoda.epicbosses.handlers.variables.AutoSpawnLocationVariableHandler;
import com.songoda.epicbosses.handlers.variables.AutoSpawnPlaceholderVariableHandler;
import com.songoda.epicbosses.holder.ActiveBossHolder;
import com.songoda.epicbosses.holder.autospawn.ActiveIntervalAutoSpawnHolder;
import com.songoda.epicbosses.listeners.IBossDeathHandler;
import com.songoda.epicbosses.utils.*;
import com.songoda.epicbosses.utils.panel.base.ClickAction;
import com.songoda.epicbosses.utils.panel.base.handlers.VariablePanelHandler;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;

View File

@ -2,13 +2,12 @@ package com.songoda.epicbosses.commands.boss;
import com.songoda.epicbosses.CustomBosses;
import com.songoda.epicbosses.api.BossAPI;
import com.songoda.epicbosses.autospawns.AutoSpawn;
import com.songoda.epicbosses.autospawns.SpawnType;
import com.songoda.epicbosses.droptable.DropTable;
import com.songoda.epicbosses.managers.BossDropTableManager;
import com.songoda.epicbosses.managers.BossSkillManager;
import com.songoda.epicbosses.managers.files.CommandsFileManager;
import com.songoda.epicbosses.managers.files.DropTableFileManager;
import com.songoda.epicbosses.managers.files.MessagesFileManager;
import com.songoda.epicbosses.managers.files.SkillsFileManager;
import com.songoda.epicbosses.managers.files.*;
import com.songoda.epicbosses.skills.Skill;
import com.songoda.epicbosses.skills.SkillMode;
import com.songoda.epicbosses.utils.Message;
@ -28,9 +27,11 @@ import java.util.List;
* boss new skill [name] [type] [mode]
* boss new command [name] [commands]
* boss new message [name] [message]
* boss new autospawn [name] [type]
*/
public class BossNewCmd extends SubCommand {
private AutoSpawnFileManager autoSpawnFileManager;
private DropTableFileManager dropTableFileManager;
private BossDropTableManager bossDropTableManager;
private MessagesFileManager messagesFileManager;
@ -47,6 +48,7 @@ public class BossNewCmd extends SubCommand {
this.bossDropTableManager = plugin.getBossDropTableManager();
this.messagesFileManager = plugin.getBossMessagesFileManager();
this.commandsFileManager = plugin.getBossCommandFileManager();
this.autoSpawnFileManager = plugin.getAutoSpawnFileManager();
}
@Override
@ -56,6 +58,29 @@ public class BossNewCmd extends SubCommand {
return;
}
//--------------------
// A U T O S P A W N
//--------------------
if(args.length == 4 && args[1].equalsIgnoreCase("autospawn")) {
String nameInput = args[2];
if(this.autoSpawnFileManager.getAutoSpawn(nameInput) != null) {
Message.Boss_New_AlreadyExists.msg(sender, "AutoSpawn");
return;
}
AutoSpawn autoSpawn = BossAPI.createBaseAutoSpawn(nameInput);
if(autoSpawn == null) {
Message.Boss_New_SomethingWentWrong.msg(sender, "AutoSpawn");
} else {
Message.Boss_New_AutoSpawn.msg(sender, nameInput);
}
return;
}
//-------------------
// C O M M A N D
//-------------------

View File

@ -4,6 +4,7 @@ import com.songoda.epicbosses.CustomBosses;
import com.songoda.epicbosses.managers.BossPanelManager;
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.ClickAction;
import com.songoda.epicbosses.utils.panel.base.PanelHandler;
@ -50,32 +51,34 @@ public class AddItemsPanel extends PanelHandler {
@Override
public void openFor(Player player) {
Panel panel = getPanelBuilder().getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(false);
ServerUtils.get().runTaskAsync(() -> {
Panel panel = getPanelBuilder().getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(false);
panel.setOnClick(event -> {
Player playerWhoClicked = (Player) event.getWhoClicked();
UUID uuid = playerWhoClicked.getUniqueId();
int rawSlot = event.getRawSlot();
int slot = event.getSlot();
panel.setOnClick(event -> {
Player playerWhoClicked = (Player) event.getWhoClicked();
UUID uuid = playerWhoClicked.getUniqueId();
int rawSlot = event.getRawSlot();
int slot = event.getSlot();
if(panel.isLowerClick(rawSlot)) {
if(this.storedItemStacks.containsKey(uuid)) {
Message.Boss_Items_AlreadySet.msg(playerWhoClicked);
return;
if(panel.isLowerClick(rawSlot)) {
if(this.storedItemStacks.containsKey(uuid)) {
Message.Boss_Items_AlreadySet.msg(playerWhoClicked);
return;
}
ItemStack itemStack = event.getClickedInventory().getItem(slot);
this.storedItemStacks.put(uuid, itemStack.clone());
panel.getPanelBuilderCounter().getSlotsWith("SelectedSlot").forEach(s -> event.getInventory().setItem(s, itemStack.clone()));
event.getClickedInventory().setItem(slot, new ItemStack(Material.AIR));
}
});
ItemStack itemStack = event.getClickedInventory().getItem(slot);
this.storedItemStacks.put(uuid, itemStack.clone());
panel.getPanelBuilderCounter().getSlotsWith("SelectedSlot").forEach(s -> event.getInventory().setItem(s, itemStack.clone()));
event.getClickedInventory().setItem(slot, new ItemStack(Material.AIR));
}
panel.openFor(player);
});
panel.openFor(player);
}
private ClickAction getSelectedSlotAction(PanelBuilderCounter panelBuilderCounter) {

View File

@ -52,21 +52,23 @@ public class EntityTypeEditorPanel extends SubVariablePanelHandler<BossEntity, E
@Override
public void openFor(Player player, BossEntity bossEntity, EntityStatsElement entityStatsElement) {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
ServerUtils.get().runTaskAsync(() -> {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
panelBuilder.addReplaceData(replaceMap);
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanelHandler(this.bossPanelManager.getStatisticMainEditMenu(), bossEntity, entityStatsElement);
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanelHandler(this.bossPanelManager.getStatisticMainEditMenu(), bossEntity, entityStatsElement);
fillPanel(panel, bossEntity, entityStatsElement);
fillPanel(panel, bossEntity, entityStatsElement);
panel.openFor(player);
panel.openFor(player);
});
}
@Override

View File

@ -81,7 +81,7 @@ public class MainMenuPanel extends PanelHandler {
if(event.getClick() == ClickType.LEFT || event.getClick() == ClickType.SHIFT_LEFT) {
this.bossPanelManager.getAutoSpawns().openFor(player);
} else if(event.getClick() == ClickType.RIGHT || event.getClick() == ClickType.SHIFT_RIGHT) {
//TODO: Set up create auto spawn command
Message.Boss_New_CreateArgumentsAutoSpawn.msg(event.getWhoClicked());
player.closeInventory();
}
};

View File

@ -6,6 +6,7 @@ import com.songoda.epicbosses.autospawns.AutoSpawn;
import com.songoda.epicbosses.managers.BossPanelManager;
import com.songoda.epicbosses.skills.interfaces.ICustomSettingAction;
import com.songoda.epicbosses.utils.Message;
import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.itemstack.ItemStackUtils;
import com.songoda.epicbosses.utils.panel.Panel;
import com.songoda.epicbosses.utils.panel.base.ClickAction;
@ -57,17 +58,19 @@ public class AutoSpawnCustomSettingsEditorPanel extends VariablePanelHandler<Aut
@Override
public void openFor(Player player, AutoSpawn autoSpawn) {
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
Map<String, String> replaceMap = new HashMap<>();
ServerUtils.get().runTaskAsync(() -> {
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
Map<String, String> replaceMap = new HashMap<>();
replaceMap.put("{name}", BossAPI.getAutoSpawnName(autoSpawn));
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{name}", BossAPI.getAutoSpawnName(autoSpawn));
panelBuilder.addReplaceData(replaceMap);
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getMainAutoSpawnEditPanel(), autoSpawn);
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getMainAutoSpawnEditPanel(), autoSpawn);
fillPanel(panel, autoSpawn);
panel.openFor(player);
fillPanel(panel, autoSpawn);
panel.openFor(player);
});
}
@Override

View File

@ -10,6 +10,7 @@ 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;
import com.songoda.epicbosses.utils.itemstack.holder.ItemStackHolder;
import com.songoda.epicbosses.utils.panel.Panel;
@ -63,17 +64,19 @@ public class AutoSpawnEntitiesEditorPanel extends VariablePanelHandler<AutoSpawn
@Override
public void openFor(Player player, AutoSpawn autoSpawn) {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
ServerUtils.get().runTaskAsync(() -> {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
replaceMap.put("{name}", BossAPI.getAutoSpawnName(autoSpawn));
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{name}", BossAPI.getAutoSpawnName(autoSpawn));
panelBuilder.addReplaceData(replaceMap);
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getMainAutoSpawnEditPanel(), autoSpawn);
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getMainAutoSpawnEditPanel(), autoSpawn);
fillPanel(panel, autoSpawn);
panel.openFor(player);
fillPanel(panel, autoSpawn);
panel.openFor(player);
});
}
@Override

View File

@ -9,6 +9,7 @@ import com.songoda.epicbosses.managers.files.AutoSpawnFileManager;
import com.songoda.epicbosses.utils.Message;
import com.songoda.epicbosses.utils.NumberUtils;
import com.songoda.epicbosses.utils.ObjectUtils;
import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.panel.Panel;
import com.songoda.epicbosses.utils.panel.base.ClickAction;
import com.songoda.epicbosses.utils.panel.base.handlers.VariablePanelHandler;
@ -29,13 +30,11 @@ import java.util.Map;
public class AutoSpawnSpecialSettingsEditorPanel extends VariablePanelHandler<AutoSpawn> {
private AutoSpawnFileManager autoSpawnFileManager;
private CustomBosses plugin;
public AutoSpawnSpecialSettingsEditorPanel(BossPanelManager bossPanelManager, PanelBuilder panelBuilder, CustomBosses plugin) {
super(bossPanelManager, panelBuilder);
this.autoSpawnFileManager = plugin.getAutoSpawnFileManager();
this.plugin = plugin;
}
@Override
@ -45,37 +44,39 @@ public class AutoSpawnSpecialSettingsEditorPanel extends VariablePanelHandler<Au
@Override
public void openFor(Player player, AutoSpawn autoSpawn) {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
AutoSpawnSettings autoSpawnSettings = autoSpawn.getAutoSpawnSettings();
String shuffleEntities = ObjectUtils.getValue(autoSpawnSettings.getShuffleEntitiesList(), false)+"";
String maxAliveAtOnce = NumberUtils.get().formatDouble(ObjectUtils.getValue(autoSpawnSettings.getMaxAliveAtOnce(), 1));
String amountPerSpawn = NumberUtils.get().formatDouble(ObjectUtils.getValue(autoSpawnSettings.getAmountPerSpawn(), 1));
String chunkIsntLoaded = ObjectUtils.getValue(autoSpawnSettings.getSpawnWhenChunkIsntLoaded(), false)+"";
String overrideSpawnMessage = ObjectUtils.getValue(autoSpawnSettings.getOverrideDefaultSpawnMessage(), false)+"";
String spawnMessage = ObjectUtils.getValue(autoSpawnSettings.getSpawnMessage(), "");
ServerUtils.get().runTaskAsync(() -> {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
AutoSpawnSettings autoSpawnSettings = autoSpawn.getAutoSpawnSettings();
String shuffleEntities = ObjectUtils.getValue(autoSpawnSettings.getShuffleEntitiesList(), false)+"";
String maxAliveAtOnce = NumberUtils.get().formatDouble(ObjectUtils.getValue(autoSpawnSettings.getMaxAliveAtOnce(), 1));
String amountPerSpawn = NumberUtils.get().formatDouble(ObjectUtils.getValue(autoSpawnSettings.getAmountPerSpawn(), 1));
String chunkIsntLoaded = ObjectUtils.getValue(autoSpawnSettings.getSpawnWhenChunkIsntLoaded(), false)+"";
String overrideSpawnMessage = ObjectUtils.getValue(autoSpawnSettings.getOverrideDefaultSpawnMessage(), false)+"";
String spawnMessage = ObjectUtils.getValue(autoSpawnSettings.getSpawnMessage(), "");
replaceMap.put("{name}", BossAPI.getAutoSpawnName(autoSpawn));
replaceMap.put("{shuffleEntities}", shuffleEntities);
replaceMap.put("{maxAliveEntities}", maxAliveAtOnce);
replaceMap.put("{amountPerSpawn}", amountPerSpawn);
replaceMap.put("{chunkIsntLoaded}", chunkIsntLoaded);
replaceMap.put("{overrideDefaultMessage}", overrideSpawnMessage);
replaceMap.put("{spawnMessage}", spawnMessage);
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{name}", BossAPI.getAutoSpawnName(autoSpawn));
replaceMap.put("{shuffleEntities}", shuffleEntities);
replaceMap.put("{maxAliveEntities}", maxAliveAtOnce);
replaceMap.put("{amountPerSpawn}", amountPerSpawn);
replaceMap.put("{chunkIsntLoaded}", chunkIsntLoaded);
replaceMap.put("{overrideDefaultMessage}", overrideSpawnMessage);
replaceMap.put("{spawnMessage}", spawnMessage);
panelBuilder.addReplaceData(replaceMap);
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getMainAutoSpawnEditPanel(), autoSpawn);
PanelBuilderCounter counter = panel.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getMainAutoSpawnEditPanel(), autoSpawn);
PanelBuilderCounter counter = panel.getPanelBuilderCounter();
counter.getSlotsWith("ShuffleEntities").forEach(slot -> panel.setOnClick(slot, getShuffleEntitiesButton(autoSpawn)));
counter.getSlotsWith("MaxAliveEntities").forEach(slot -> panel.setOnClick(slot, getMaxAliveEntitiesButton(autoSpawn)));
counter.getSlotsWith("AmountPerSpawn").forEach(slot -> panel.setOnClick(slot, getAmountPerSpawnButton(autoSpawn)));
counter.getSlotsWith("ChunkIsntLoaded").forEach(slot -> panel.setOnClick(slot, getChunkIsntLoadedButton(autoSpawn)));
counter.getSlotsWith("OverrideSpawnMessage").forEach(slot -> panel.setOnClick(slot, getOverrideSpawnMessageButton(autoSpawn)));
counter.getSlotsWith("SpawnMessage").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getAutoSpawnMessageEditorPanel().openFor((Player) event.getWhoClicked(), autoSpawn)));
counter.getSlotsWith("ShuffleEntities").forEach(slot -> panel.setOnClick(slot, getShuffleEntitiesButton(autoSpawn)));
counter.getSlotsWith("MaxAliveEntities").forEach(slot -> panel.setOnClick(slot, getMaxAliveEntitiesButton(autoSpawn)));
counter.getSlotsWith("AmountPerSpawn").forEach(slot -> panel.setOnClick(slot, getAmountPerSpawnButton(autoSpawn)));
counter.getSlotsWith("ChunkIsntLoaded").forEach(slot -> panel.setOnClick(slot, getChunkIsntLoadedButton(autoSpawn)));
counter.getSlotsWith("OverrideSpawnMessage").forEach(slot -> panel.setOnClick(slot, getOverrideSpawnMessageButton(autoSpawn)));
counter.getSlotsWith("SpawnMessage").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getAutoSpawnMessageEditorPanel().openFor((Player) event.getWhoClicked(), autoSpawn)));
panel.openFor(player);
panel.openFor(player);
});
}
@Override

View File

@ -7,6 +7,7 @@ import com.songoda.epicbosses.autospawns.types.IntervalSpawnElement;
import com.songoda.epicbosses.managers.BossPanelManager;
import com.songoda.epicbosses.managers.files.AutoSpawnFileManager;
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.ClickAction;
import com.songoda.epicbosses.utils.panel.base.handlers.VariablePanelHandler;
@ -39,22 +40,24 @@ public class AutoSpawnTypeEditorPanel extends VariablePanelHandler<AutoSpawn> {
@Override
public void openFor(Player player, AutoSpawn autoSpawn) {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
ServerUtils.get().runTaskAsync(() -> {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
replaceMap.put("{name}", BossAPI.getAutoSpawnName(autoSpawn));
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{name}", BossAPI.getAutoSpawnName(autoSpawn));
panelBuilder.addReplaceData(replaceMap);
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getMainAutoSpawnEditPanel(), autoSpawn);
PanelBuilderCounter counter = panel.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getMainAutoSpawnEditPanel(), autoSpawn);
PanelBuilderCounter counter = panel.getPanelBuilderCounter();
counter.getSlotsWith("IntervalSystem").forEach(slot -> panel.setOnClick(slot, getIntervalSystem(autoSpawn)));
counter.getSlotsWith("WildernessSystem");
counter.getSlotsWith("BiomeSystem");
counter.getSlotsWith("SpawnerSystem");
counter.getSlotsWith("IntervalSystem").forEach(slot -> panel.setOnClick(slot, getIntervalSystem(autoSpawn)));
counter.getSlotsWith("WildernessSystem");
counter.getSlotsWith("BiomeSystem");
counter.getSlotsWith("SpawnerSystem");
panel.openFor(player);
panel.openFor(player);
});
}
@Override

View File

@ -11,6 +11,7 @@ import com.songoda.epicbosses.managers.BossPanelManager;
import com.songoda.epicbosses.managers.files.AutoSpawnFileManager;
import com.songoda.epicbosses.utils.Message;
import com.songoda.epicbosses.utils.ObjectUtils;
import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.StringUtils;
import com.songoda.epicbosses.utils.panel.Panel;
import com.songoda.epicbosses.utils.panel.base.ClickAction;
@ -46,28 +47,30 @@ public class MainAutoSpawnEditorPanel extends VariablePanelHandler<AutoSpawn> {
@Override
public void openFor(Player player, AutoSpawn autoSpawn) {
Map<String, String> replaceMap = new HashMap<>();
String type = ObjectUtils.getValue(autoSpawn.getType(), "INTERVAL");
String editing = ""+ObjectUtils.getValue(autoSpawn.isEditing(), false);
String entities = StringUtils.get().appendList(autoSpawn.getEntities());
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
ServerUtils.get().runTaskAsync(() -> {
Map<String, String> replaceMap = new HashMap<>();
String type = ObjectUtils.getValue(autoSpawn.getType(), "INTERVAL");
String editing = ""+ObjectUtils.getValue(autoSpawn.isEditing(), false);
String entities = StringUtils.get().appendList(autoSpawn.getEntities());
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
replaceMap.put("{name}", BossAPI.getAutoSpawnName(autoSpawn));
replaceMap.put("{type}", type);
replaceMap.put("{editing}", editing);
replaceMap.put("{entities}", entities);
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{name}", BossAPI.getAutoSpawnName(autoSpawn));
replaceMap.put("{type}", type);
replaceMap.put("{editing}", editing);
replaceMap.put("{entities}", entities);
panelBuilder.addReplaceData(replaceMap);
Panel panel = panelBuilder.getPanel();
PanelBuilderCounter counter = panel.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel();
PanelBuilderCounter counter = panel.getPanelBuilderCounter();
counter.getSlotsWith("Editing").forEach(slot -> panel.setOnClick(slot, getEditingAction(autoSpawn)));
counter.getSlotsWith("SpecialSettings").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getAutoSpawnSpecialSettingsEditorPanel().openFor(player, autoSpawn)));
counter.getSlotsWith("Type").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getAutoSpawnTypeEditorPanel().openFor(player, autoSpawn)));
counter.getSlotsWith("Entities").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getAutoSpawnEntitiesEditPanel().openFor(player, autoSpawn)));
counter.getSlotsWith("CustomSettings").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getAutoSpawnCustomSettingsEditorPanel().openFor(player, autoSpawn)));
counter.getSlotsWith("Editing").forEach(slot -> panel.setOnClick(slot, getEditingAction(autoSpawn)));
counter.getSlotsWith("SpecialSettings").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getAutoSpawnSpecialSettingsEditorPanel().openFor(player, autoSpawn)));
counter.getSlotsWith("Type").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getAutoSpawnTypeEditorPanel().openFor(player, autoSpawn)));
counter.getSlotsWith("Entities").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getAutoSpawnEntitiesEditPanel().openFor(player, autoSpawn)));
counter.getSlotsWith("CustomSettings").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getAutoSpawnCustomSettingsEditorPanel().openFor(player, autoSpawn)));
panel.openFor(player);
panel.openFor(player);
});
}
@Override

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.ServerUtils;
import com.songoda.epicbosses.utils.itemstack.ItemStackConverter;
import com.songoda.epicbosses.utils.itemstack.ItemStackUtils;
import com.songoda.epicbosses.utils.itemstack.holder.ItemStackHolder;
@ -88,37 +89,39 @@ public abstract class BossListEditorPanel extends VariablePanelHandler<BossEntit
@Override
public void openFor(Player player, BossEntity bossEntity) {
Map<String, String> replaceMap = new HashMap<>();
ServerUtils.get().runTaskAsync(() -> {
Map<String, String> replaceMap = new HashMap<>();
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
panelBuilder.addReplaceData(replaceMap);
panelBuilder.addReplaceData(replaceMap);
int nextNumber = bossEntity.getEntityStats().size() + 1;
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanelHandler(this.bossPanelManager.getMainBossEditMenu(), bossEntity);
int nextNumber = bossEntity.getEntityStats().size() + 1;
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanelHandler(this.bossPanelManager.getMainBossEditMenu(), bossEntity);
fillPanel(panel, bossEntity);
fillPanel(panel, bossEntity);
panel.getPanelBuilderCounter().getSlotsWith("CreateEntity").forEach(slot -> panel.setOnClick(slot, event -> {
MainStatsElement mainStatsElement = new MainStatsElement(nextNumber, "", 50.0, "");
EquipmentElement equipmentElement = new EquipmentElement("", "", "", "");
HandsElement handsElement = new HandsElement("", "");
panel.getPanelBuilderCounter().getSlotsWith("CreateEntity").forEach(slot -> panel.setOnClick(slot, event -> {
MainStatsElement mainStatsElement = new MainStatsElement(nextNumber, "", 50.0, "");
EquipmentElement equipmentElement = new EquipmentElement("", "", "", "");
HandsElement handsElement = new HandsElement("", "");
EntityStatsElement entityStatsElement = new EntityStatsElement(mainStatsElement, equipmentElement, handsElement, new ArrayList<>());
EntityStatsElement entityStatsElement = new EntityStatsElement(mainStatsElement, equipmentElement, handsElement, new ArrayList<>());
bossEntity.getEntityStats().add(entityStatsElement);
this.bossesFileManager.save();
bossEntity.getEntityStats().add(entityStatsElement);
this.bossesFileManager.save();
openFor((Player) event.getWhoClicked(), bossEntity);
}));
openFor((Player) event.getWhoClicked(), bossEntity);
}));
panel.openFor(player);
panel.openFor(player);
});
}
@Override

View File

@ -3,6 +3,7 @@ package com.songoda.epicbosses.panel.bosses;
import com.songoda.epicbosses.api.BossAPI;
import com.songoda.epicbosses.entity.BossEntity;
import com.songoda.epicbosses.managers.BossPanelManager;
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;
@ -30,25 +31,27 @@ public class CommandsMainEditorPanel extends VariablePanelHandler<BossEntity> {
@Override
public void openFor(Player player, BossEntity bossEntity) {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
ServerUtils.get().runTaskAsync(() -> {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
replaceMap.put("{onSpawn}", bossEntity.getCommands().getOnSpawn());
replaceMap.put("{onDeath}", bossEntity.getCommands().getOnDeath());
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
replaceMap.put("{onSpawn}", bossEntity.getCommands().getOnSpawn());
replaceMap.put("{onDeath}", bossEntity.getCommands().getOnDeath());
panelBuilder.addReplaceData(replaceMap);
PanelBuilderCounter counter = panelBuilder.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanelHandler(this.bossPanelManager.getMainBossEditMenu(), bossEntity);
PanelBuilderCounter counter = panelBuilder.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanelHandler(this.bossPanelManager.getMainBossEditMenu(), bossEntity);
counter.getSlotsWith("OnSpawn").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getOnSpawnCommandEditMenu().openFor(player, bossEntity)));
counter.getSlotsWith("OnDeath").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getOnDeathCommandEditMenu().openFor(player, bossEntity)));
counter.getSlotsWith("OnSpawn").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getOnSpawnCommandEditMenu().openFor(player, bossEntity)));
counter.getSlotsWith("OnDeath").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getOnDeathCommandEditMenu().openFor(player, bossEntity)));
panel.openFor(player);
panel.openFor(player);
});
}
@Override

View File

@ -8,6 +8,7 @@ import com.songoda.epicbosses.managers.BossPanelManager;
import com.songoda.epicbosses.managers.files.BossesFileManager;
import com.songoda.epicbosses.managers.files.DropTableFileManager;
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;
import com.songoda.epicbosses.utils.itemstack.ItemStackUtils;
@ -69,31 +70,33 @@ public class DropsEditorPanel extends VariablePanelHandler<BossEntity> {
@Override
public void openFor(Player player, BossEntity bossEntity) {
Map<String, String> replaceMap = new HashMap<>();
ServerUtils.get().runTaskAsync(() -> {
Map<String, String> replaceMap = new HashMap<>();
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
replaceMap.put("{dropTable}", bossEntity.getDrops().getDropTable());
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
replaceMap.put("{dropTable}", bossEntity.getDrops().getDropTable());
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
panelBuilder.addReplaceData(replaceMap);
panelBuilder.addReplaceData(replaceMap);
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true);
PanelBuilderCounter counter = panel.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true);
PanelBuilderCounter counter = panel.getPanelBuilderCounter();
String dropTableName = bossEntity.getDrops().getDropTable();
DropTable dropTable = this.dropTableFileManager.getDropTable(dropTableName);
fillPanel(panel, bossEntity);
counter.getSlotsWith("Selected").forEach(slot -> panel.setOnClick(slot, event -> {
/* TODO: GO TO EDIT PANEL FOR DROP TABLE */
}));
counter.getSlotsWith("CreateDropTable").forEach(slot -> panel.setOnClick(slot, event -> {
player.closeInventory();
Message.Boss_New_CreateArgumentsDropTable.msg(event.getWhoClicked());
}));
fillPanel(panel, bossEntity);
counter.getSlotsWith("Selected").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getMainDropTableEditMenu().openFor((Player) event.getWhoClicked(), dropTable)));
counter.getSlotsWith("CreateDropTable").forEach(slot -> panel.setOnClick(slot, event -> {
player.closeInventory();
Message.Boss_New_CreateArgumentsDropTable.msg(event.getWhoClicked());
}));
panel.openFor(player);
panel.openFor(player);
});
}
private void loadPage(Panel panel, int requestedPage, Map<String, DropTable> dropTableMap, List<String> entryList, BossEntity bossEntity) {

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.utils.NumberUtils;
import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.panel.Panel;
import com.songoda.epicbosses.utils.panel.base.ClickAction;
import com.songoda.epicbosses.utils.panel.base.handlers.VariablePanelHandler;
@ -38,37 +39,39 @@ public class DropsMainEditorPanel extends VariablePanelHandler<BossEntity> {
@Override
public void openFor(Player player, BossEntity bossEntity) {
Map<String, String> replaceMap = new HashMap<>();
Boolean naturalDrops = bossEntity.getDrops().getNaturalDrops();
Boolean naturalExp = bossEntity.getDrops().getDropExp();
String dropTable = bossEntity.getDrops().getDropTable();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
ServerUtils.get().runTaskAsync(() -> {
Map<String, String> replaceMap = new HashMap<>();
Boolean naturalDrops = bossEntity.getDrops().getNaturalDrops();
Boolean naturalExp = bossEntity.getDrops().getDropExp();
String dropTable = bossEntity.getDrops().getDropTable();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
if(naturalDrops == null) naturalDrops = true;
if(naturalExp == null) naturalExp = true;
if(dropTable == null) dropTable = "N/A";
if(naturalDrops == null) naturalDrops = true;
if(naturalExp == null) naturalExp = true;
if(dropTable == null) dropTable = "N/A";
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
replaceMap.put("{naturalDrops}", ""+naturalDrops);
replaceMap.put("{naturalExp}", ""+naturalExp);
replaceMap.put("{dropTable}", dropTable);
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
replaceMap.put("{naturalDrops}", ""+naturalDrops);
replaceMap.put("{naturalExp}", ""+naturalExp);
replaceMap.put("{dropTable}", dropTable);
panelBuilder.addReplaceData(replaceMap);
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanelHandler(this.bossPanelManager.getMainBossEditMenu(), bossEntity);
PanelBuilderCounter counter = panel.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanelHandler(this.bossPanelManager.getMainBossEditMenu(), bossEntity);
PanelBuilderCounter counter = panel.getPanelBuilderCounter();
Boolean finalNaturalDrops = naturalDrops;
Boolean finalNaturalEXP = naturalExp;
Boolean finalNaturalDrops = naturalDrops;
Boolean finalNaturalEXP = naturalExp;
counter.getSlotsWith("NaturalDrops").forEach(slot -> panel.setOnClick(slot, getNaturalDropsAction(bossEntity, finalNaturalDrops)));
counter.getSlotsWith("DropTable").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getDropsEditMenu().openFor((Player) event.getWhoClicked(), bossEntity)));
counter.getSlotsWith("NaturalEXP").forEach(slot -> panel.setOnClick(slot, getNaturalExpAction(bossEntity, finalNaturalEXP)));
counter.getSlotsWith("NaturalDrops").forEach(slot -> panel.setOnClick(slot, getNaturalDropsAction(bossEntity, finalNaturalDrops)));
counter.getSlotsWith("DropTable").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getDropsEditMenu().openFor((Player) event.getWhoClicked(), bossEntity)));
counter.getSlotsWith("NaturalEXP").forEach(slot -> panel.setOnClick(slot, getNaturalExpAction(bossEntity, finalNaturalEXP)));
panel.openFor(player);
panel.openFor(player);
});
}
@Override

View File

@ -4,6 +4,7 @@ import com.songoda.epicbosses.api.BossAPI;
import com.songoda.epicbosses.entity.BossEntity;
import com.songoda.epicbosses.entity.elements.EntityStatsElement;
import com.songoda.epicbosses.managers.BossPanelManager;
import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.panel.Panel;
import com.songoda.epicbosses.utils.panel.base.handlers.SubVariablePanelHandler;
import com.songoda.epicbosses.utils.panel.builder.PanelBuilder;
@ -36,26 +37,28 @@ public class EquipmentEditorPanel extends SubVariablePanelHandler<BossEntity, En
@Override
public void openFor(Player player, BossEntity bossEntity, EntityStatsElement entityStatsElement) {
Map<String, String> replaceMap = new HashMap<>();
ServerUtils.get().runTaskAsync(() -> {
Map<String, String> replaceMap = new HashMap<>();
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
panelBuilder.addReplaceData(replaceMap);
panelBuilder.addReplaceData(replaceMap);
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelLowerClick(true)
.setCancelClick(true)
.setParentPanelHandler(this.bossPanelManager.getEquipmentListEditMenu(), bossEntity);
PanelBuilderCounter panelBuilderCounter = panel.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelLowerClick(true)
.setCancelClick(true)
.setParentPanelHandler(this.bossPanelManager.getEquipmentListEditMenu(), bossEntity);
PanelBuilderCounter panelBuilderCounter = panel.getPanelBuilderCounter();
panelBuilderCounter.getSlotsWith("Helmet").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getHelmetEditorMenu().openFor(player, bossEntity, entityStatsElement)));
panelBuilderCounter.getSlotsWith("Chestplate").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getChestplateEditorMenu().openFor(player, bossEntity, entityStatsElement)));
panelBuilderCounter.getSlotsWith("Leggings").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getLeggingsEditorMenu().openFor(player, bossEntity, entityStatsElement)));
panelBuilderCounter.getSlotsWith("Boots").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getBootsEditorMenu().openFor(player, bossEntity, entityStatsElement)));
panelBuilderCounter.getSlotsWith("Helmet").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getHelmetEditorMenu().openFor(player, bossEntity, entityStatsElement)));
panelBuilderCounter.getSlotsWith("Chestplate").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getChestplateEditorMenu().openFor(player, bossEntity, entityStatsElement)));
panelBuilderCounter.getSlotsWith("Leggings").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getLeggingsEditorMenu().openFor(player, bossEntity, entityStatsElement)));
panelBuilderCounter.getSlotsWith("Boots").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getBootsEditorMenu().openFor(player, bossEntity, entityStatsElement)));
panel.openFor(player);
panel.openFor(player);
});
}
}

View File

@ -7,6 +7,7 @@ import com.songoda.epicbosses.managers.BossEntityManager;
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.panel.Panel;
import com.songoda.epicbosses.utils.panel.base.ClickAction;
import com.songoda.epicbosses.utils.panel.base.handlers.VariablePanelHandler;
@ -47,32 +48,34 @@ public class MainBossEditPanel extends VariablePanelHandler<BossEntity> {
@Override
public void openFor(Player player, BossEntity bossEntity) {
Map<String, String> replaceMap = new HashMap<>();
ServerUtils.get().runTaskAsync(() -> {
Map<String, String> replaceMap = new HashMap<>();
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
replaceMap.put("{mode}", bossEntity.getEditingValue());
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
replaceMap.put("{mode}", bossEntity.getEditingValue());
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
panelBuilder.addReplaceData(replaceMap);
panelBuilder.addReplaceData(replaceMap);
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true);
PanelBuilderCounter counter = panel.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true);
PanelBuilderCounter counter = panel.getPanelBuilderCounter();
counter.getSlotsWith("Editing").forEach(slot -> panel.setOnClick(slot, getEditingAction(bossEntity)));
counter.getSlotsWith("Drops").forEach(slot -> panel.setOnClick(slot, e -> this.bossPanelManager.getMainDropsEditMenu().openFor((Player) e.getWhoClicked(), bossEntity)));
counter.getSlotsWith("Targeting").forEach(slot -> panel.setOnClick(slot, e -> this.bossPanelManager.getTargetingEditMenu().openFor((Player) e.getWhoClicked(), bossEntity)));
counter.getSlotsWith("Equipment").forEach(slot -> panel.setOnClick(slot, e -> this.bossPanelManager.getEquipmentListEditMenu().openFor((Player) e.getWhoClicked(), bossEntity)));
counter.getSlotsWith("Weapon").forEach(slot -> panel.setOnClick(slot, e -> this.bossPanelManager.getWeaponListEditMenu().openFor((Player) e.getWhoClicked(), bossEntity)));
counter.getSlotsWith("Skill").forEach(slot -> panel.setOnClick(slot, e -> this.bossPanelManager.getSkillsBossEditMenu().openFor((Player) e.getWhoClicked(), bossEntity)));
counter.getSlotsWith("Stats").forEach(slot -> panel.setOnClick(slot, e -> this.bossPanelManager.getStatisticListEditMenu().openFor((Player) e.getWhoClicked(), bossEntity)));
counter.getSlotsWith("Command").forEach(slot -> panel.setOnClick(slot, e -> this.bossPanelManager.getCommandsMainEditMenu().openFor((Player) e.getWhoClicked(), bossEntity)));
counter.getSlotsWith("Text").forEach(slot -> panel.setOnClick(slot, e -> this.bossPanelManager.getMainTextEditMenu().openFor((Player) e.getWhoClicked(), bossEntity)));
counter.getSlotsWith("Editing").forEach(slot -> panel.setOnClick(slot, getEditingAction(bossEntity)));
counter.getSlotsWith("Drops").forEach(slot -> panel.setOnClick(slot, e -> this.bossPanelManager.getMainDropsEditMenu().openFor((Player) e.getWhoClicked(), bossEntity)));
counter.getSlotsWith("Targeting").forEach(slot -> panel.setOnClick(slot, e -> this.bossPanelManager.getTargetingEditMenu().openFor((Player) e.getWhoClicked(), bossEntity)));
counter.getSlotsWith("Equipment").forEach(slot -> panel.setOnClick(slot, e -> this.bossPanelManager.getEquipmentListEditMenu().openFor((Player) e.getWhoClicked(), bossEntity)));
counter.getSlotsWith("Weapon").forEach(slot -> panel.setOnClick(slot, e -> this.bossPanelManager.getWeaponListEditMenu().openFor((Player) e.getWhoClicked(), bossEntity)));
counter.getSlotsWith("Skill").forEach(slot -> panel.setOnClick(slot, e -> this.bossPanelManager.getSkillsBossEditMenu().openFor((Player) e.getWhoClicked(), bossEntity)));
counter.getSlotsWith("Stats").forEach(slot -> panel.setOnClick(slot, e -> this.bossPanelManager.getStatisticListEditMenu().openFor((Player) e.getWhoClicked(), bossEntity)));
counter.getSlotsWith("Command").forEach(slot -> panel.setOnClick(slot, e -> this.bossPanelManager.getCommandsMainEditMenu().openFor((Player) e.getWhoClicked(), bossEntity)));
counter.getSlotsWith("Text").forEach(slot -> panel.setOnClick(slot, e -> this.bossPanelManager.getMainTextEditMenu().openFor((Player) e.getWhoClicked(), bossEntity)));
panel.openFor(player);
panel.openFor(player);
});
}
private ClickAction getEditingAction(BossEntity bossEntity) {

View File

@ -7,6 +7,7 @@ import com.songoda.epicbosses.managers.BossPanelManager;
import com.songoda.epicbosses.managers.files.SkillsFileManager;
import com.songoda.epicbosses.skills.Skill;
import com.songoda.epicbosses.utils.NumberUtils;
import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.StringUtils;
import com.songoda.epicbosses.utils.itemstack.ItemStackConverter;
import com.songoda.epicbosses.utils.itemstack.ItemStackUtils;
@ -60,21 +61,23 @@ public class SkillListEditorPanel extends VariablePanelHandler<BossEntity> {
@Override
public void openFor(Player player, BossEntity bossEntity) {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
ServerUtils.get().runTaskAsync(() -> {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
panelBuilder.addReplaceData(replaceMap);
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanelHandler(this.bossPanelManager.getSkillsBossEditMenu(), bossEntity);
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanelHandler(this.bossPanelManager.getSkillsBossEditMenu(), bossEntity);
fillPanel(panel, bossEntity);
fillPanel(panel, bossEntity);
panel.openFor(player);
panel.openFor(player);
});
}
@Override

View File

@ -7,6 +7,7 @@ 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;
import com.songoda.epicbosses.utils.panel.base.ClickAction;
import com.songoda.epicbosses.utils.panel.base.handlers.VariablePanelHandler;
@ -40,28 +41,30 @@ public class SkillMainEditorPanel extends VariablePanelHandler<BossEntity> {
@Override
public void openFor(Player player, BossEntity bossEntity) {
Map<String, String> replaceMap = new HashMap<>();
Double chance = bossEntity.getSkills().getOverallChance();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
ServerUtils.get().runTaskAsync(() -> {
Map<String, String> replaceMap = new HashMap<>();
Double chance = bossEntity.getSkills().getOverallChance();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
if(chance == null) chance = 0.0;
if(chance == null) chance = 0.0;
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
replaceMap.put("{chance}", NumberUtils.get().formatDouble(chance));
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
replaceMap.put("{chance}", NumberUtils.get().formatDouble(chance));
panelBuilder.addReplaceData(replaceMap);
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanelHandler(this.bossPanelManager.getMainBossEditMenu(), bossEntity);
PanelBuilderCounter counter = panel.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanelHandler(this.bossPanelManager.getMainBossEditMenu(), bossEntity);
PanelBuilderCounter counter = panel.getPanelBuilderCounter();
counter.getSlotsWith("OverallChance").forEach(slot -> panel.setOnClick(slot, getOverallChanceAction(bossEntity)));
counter.getSlotsWith("SkillList").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getSkillListBossEditMenu().openFor((Player) event.getWhoClicked(), bossEntity)));
counter.getSlotsWith("Message").forEach(slot -> panel.setOnClick(slot, getMessageAction()));
counter.getSlotsWith("OverallChance").forEach(slot -> panel.setOnClick(slot, getOverallChanceAction(bossEntity)));
counter.getSlotsWith("SkillList").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getSkillListBossEditMenu().openFor((Player) event.getWhoClicked(), bossEntity)));
counter.getSlotsWith("Message").forEach(slot -> panel.setOnClick(slot, getMessageAction()));
panel.openFor(player);
panel.openFor(player);
});
}
@Override

View File

@ -10,6 +10,7 @@ import com.songoda.epicbosses.managers.files.BossesFileManager;
import com.songoda.epicbosses.utils.EntityFinder;
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;
import com.songoda.epicbosses.utils.panel.base.ClickAction;
import com.songoda.epicbosses.utils.panel.base.handlers.SubVariablePanelHandler;
@ -44,38 +45,39 @@ public class StatisticMainEditorPanel extends SubVariablePanelHandler<BossEntity
@Override
public void openFor(Player player, BossEntity bossEntity, EntityStatsElement entityStatsElement) {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
String displayName = entityStatsElement.getMainStats().getDisplayName();
Double health = entityStatsElement.getMainStats().getHealth();
PanelBuilderCounter counter = panelBuilder.getPanelBuilderCounter();
ServerUtils.get().runTaskAsync(() -> {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
String displayName = entityStatsElement.getMainStats().getDisplayName();
Double health = entityStatsElement.getMainStats().getHealth();
PanelBuilderCounter counter = panelBuilder.getPanelBuilderCounter();
if(health == null) health = 0.0;
if(displayName == null) displayName = "N/A";
if(health == null) health = 0.0;
if(displayName == null) displayName = "N/A";
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
replaceMap.put("{health}", NumberUtils.get().formatDouble(health));
replaceMap.put("{displayName}", displayName);
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
replaceMap.put("{health}", NumberUtils.get().formatDouble(health));
replaceMap.put("{displayName}", displayName);
panelBuilder.addReplaceData(replaceMap);
counter
.addSlotCounter("DisplayName")
.addSlotCounter("EntityType")
.addSlotCounter("Health");
counter.addSlotCounter("DisplayName")
.addSlotCounter("EntityType")
.addSlotCounter("Health");
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanelHandler(this.bossPanelManager.getStatisticListEditMenu(), bossEntity);
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanelHandler(this.bossPanelManager.getStatisticListEditMenu(), bossEntity);
fillPanel(panel, bossEntity, entityStatsElement);
fillPanel(panel, bossEntity, entityStatsElement);
counter.getSlotsWith("DisplayName").forEach(slot -> panel.setOnClick(slot, getDisplayNameAction(bossEntity, entityStatsElement)));
counter.getSlotsWith("EntityType").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getEntityTypeEditMenu().openFor((Player) event.getWhoClicked(), bossEntity, entityStatsElement)));
counter.getSlotsWith("Health").forEach(slot -> panel.setOnClick(slot, getHealthAction(bossEntity, entityStatsElement)));
counter.getSlotsWith("DisplayName").forEach(slot -> panel.setOnClick(slot, getDisplayNameAction(bossEntity, entityStatsElement)));
counter.getSlotsWith("EntityType").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getEntityTypeEditMenu().openFor((Player) event.getWhoClicked(), bossEntity, entityStatsElement)));
counter.getSlotsWith("Health").forEach(slot -> panel.setOnClick(slot, getHealthAction(bossEntity, entityStatsElement)));
panel.openFor(player);
panel.openFor(player);
});
}
@Override

View File

@ -4,6 +4,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.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;
@ -35,31 +36,33 @@ public class TargetingEditorPanel extends VariablePanelHandler<BossEntity> {
@Override
public void openFor(Player player, BossEntity bossEntity) {
Map<String, String> replaceMap = new HashMap<>();
ServerUtils.get().runTaskAsync(() -> {
Map<String, String> replaceMap = new HashMap<>();
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
replaceMap.put("{selected}", bossEntity.getTargetingValue());
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
replaceMap.put("{selected}", bossEntity.getTargetingValue());
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
panelBuilder.addReplaceData(replaceMap);
panelBuilder.addReplaceData(replaceMap);
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelLowerClick(true)
.setCancelClick(true)
.setParentPanelHandler(this.bossPanelManager.getMainBossEditMenu(), bossEntity);
PanelBuilderCounter panelBuilderCounter = panel.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelLowerClick(true)
.setCancelClick(true)
.setParentPanelHandler(this.bossPanelManager.getMainBossEditMenu(), bossEntity);
PanelBuilderCounter panelBuilderCounter = panel.getPanelBuilderCounter();
panelBuilderCounter.getSpecialSlotsWith("TargetingSystem").forEach((slot, returnValue) -> panel.setOnClick(slot, event -> {
bossEntity.setTargeting((String) returnValue);
this.bossesFileManager.save();
panelBuilderCounter.getSpecialSlotsWith("TargetingSystem").forEach((slot, returnValue) -> panel.setOnClick(slot, event -> {
bossEntity.setTargeting((String) returnValue);
this.bossesFileManager.save();
openFor(player, bossEntity);
openFor(player, bossEntity);
}));
}));
panel.openFor(player);
panel.openFor(player);
});
}
@Override

View File

@ -3,6 +3,7 @@ package com.songoda.epicbosses.panel.bosses;
import com.songoda.epicbosses.api.BossAPI;
import com.songoda.epicbosses.entity.BossEntity;
import com.songoda.epicbosses.managers.BossPanelManager;
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;
@ -30,24 +31,26 @@ public class TextMainEditorPanel extends VariablePanelHandler<BossEntity> {
@Override
public void openFor(Player player, BossEntity bossEntity) {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
ServerUtils.get().runTaskAsync(() -> {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
panelBuilder.addReplaceData(replaceMap);
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanelHandler(this.bossPanelManager.getMainBossEditMenu(), bossEntity);
PanelBuilderCounter counter = panel.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanelHandler(this.bossPanelManager.getMainBossEditMenu(), bossEntity);
PanelBuilderCounter counter = panel.getPanelBuilderCounter();
counter.getSlotsWith("OnSpawn").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getOnSpawnSubTextEditMenu().openFor((Player) event.getWhoClicked(), bossEntity)));
counter.getSlotsWith("OnDeath").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getOnDeathSubTextEditMenu().openFor((Player) event.getWhoClicked(), bossEntity)));
counter.getSlotsWith("Taunts").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getMainTauntEditMenu().openFor((Player) event.getWhoClicked(), bossEntity)));
counter.getSlotsWith("OnSpawn").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getOnSpawnSubTextEditMenu().openFor((Player) event.getWhoClicked(), bossEntity)));
counter.getSlotsWith("OnDeath").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getOnDeathSubTextEditMenu().openFor((Player) event.getWhoClicked(), bossEntity)));
counter.getSlotsWith("Taunts").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getMainTauntEditMenu().openFor((Player) event.getWhoClicked(), bossEntity)));
panel.openFor(player);
panel.openFor(player);
});
}
@Override

View File

@ -4,6 +4,7 @@ import com.songoda.epicbosses.api.BossAPI;
import com.songoda.epicbosses.entity.BossEntity;
import com.songoda.epicbosses.entity.elements.EntityStatsElement;
import com.songoda.epicbosses.managers.BossPanelManager;
import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.panel.Panel;
import com.songoda.epicbosses.utils.panel.base.handlers.SubVariablePanelHandler;
import com.songoda.epicbosses.utils.panel.builder.PanelBuilder;
@ -31,25 +32,27 @@ public class WeaponsEditorPanel extends SubVariablePanelHandler<BossEntity, Enti
@Override
public void openFor(Player player, BossEntity bossEntity, EntityStatsElement entityStatsElement) {
Map<String, String> replaceMap = new HashMap<>();
ServerUtils.get().runTaskAsync(() -> {
Map<String, String> replaceMap = new HashMap<>();
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
panelBuilder.addReplaceData(replaceMap);
panelBuilder.addReplaceData(replaceMap);
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelLowerClick(true)
.setCancelClick(true)
.setParentPanelHandler(this.bossPanelManager.getWeaponListEditMenu(), bossEntity);
PanelBuilderCounter panelBuilderCounter = panel.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelLowerClick(true)
.setCancelClick(true)
.setParentPanelHandler(this.bossPanelManager.getWeaponListEditMenu(), bossEntity);
PanelBuilderCounter panelBuilderCounter = panel.getPanelBuilderCounter();
panelBuilderCounter.getSlotsWith("MainHand").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getMainHandEditorMenu().openFor(player, bossEntity, entityStatsElement)));
panelBuilderCounter.getSlotsWith("OffHand").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getOffHandEditorMenu().openFor(player, bossEntity, entityStatsElement)));
panelBuilderCounter.getSlotsWith("MainHand").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getMainHandEditorMenu().openFor(player, bossEntity, entityStatsElement)));
panelBuilderCounter.getSlotsWith("OffHand").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getOffHandEditorMenu().openFor(player, bossEntity, entityStatsElement)));
panel.openFor(player);
panel.openFor(player);
});
}
@Override

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.ServerUtils;
import com.songoda.epicbosses.utils.StringUtils;
import com.songoda.epicbosses.utils.itemstack.ItemStackConverter;
import com.songoda.epicbosses.utils.itemstack.ItemStackUtils;
@ -59,21 +60,23 @@ public class OnDeathCommandEditor extends VariablePanelHandler<BossEntity> {
@Override
public void openFor(Player player, BossEntity bossEntity) {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
ServerUtils.get().runTaskAsync(() -> {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
panelBuilder.addReplaceData(replaceMap);
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanelHandler(this.bossPanelManager.getCommandsMainEditMenu(), bossEntity);
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanelHandler(this.bossPanelManager.getCommandsMainEditMenu(), bossEntity);
fillPanel(panel, bossEntity);
fillPanel(panel, bossEntity);
panel.openFor(player);
panel.openFor(player);
});
}
@Override

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.ServerUtils;
import com.songoda.epicbosses.utils.StringUtils;
import com.songoda.epicbosses.utils.itemstack.ItemStackConverter;
import com.songoda.epicbosses.utils.itemstack.ItemStackUtils;
@ -59,21 +60,23 @@ public class OnSpawnCommandEditor extends VariablePanelHandler<BossEntity> {
@Override
public void openFor(Player player, BossEntity bossEntity) {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
ServerUtils.get().runTaskAsync(() -> {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
panelBuilder.addReplaceData(replaceMap);
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanelHandler(this.bossPanelManager.getCommandsMainEditMenu(), bossEntity);
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanelHandler(this.bossPanelManager.getCommandsMainEditMenu(), bossEntity);
fillPanel(panel, bossEntity);
fillPanel(panel, bossEntity);
panel.openFor(player);
panel.openFor(player);
});
}
@Override

View File

@ -8,6 +8,7 @@ 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;
import com.songoda.epicbosses.utils.panel.base.ClickAction;
import com.songoda.epicbosses.utils.panel.base.handlers.VariablePanelHandler;
@ -41,39 +42,41 @@ public class DeathTextEditorPanel extends VariablePanelHandler<BossEntity> {
@Override
public void openFor(Player player, BossEntity bossEntity) {
Map<String, String> replaceMap = new HashMap<>();
OnDeathMessageElement onDeathMessageElement = bossEntity.getMessages().getOnDeath();
Integer radius = onDeathMessageElement.getRadius();
Integer onlyShow = onDeathMessageElement.getOnlyShow();
String mainMessage = onDeathMessageElement.getMessage();
String positionMessage = onDeathMessageElement.getPositionMessage();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
ServerUtils.get().runTaskAsync(() -> {
Map<String, String> replaceMap = new HashMap<>();
OnDeathMessageElement onDeathMessageElement = bossEntity.getMessages().getOnDeath();
Integer radius = onDeathMessageElement.getRadius();
Integer onlyShow = onDeathMessageElement.getOnlyShow();
String mainMessage = onDeathMessageElement.getMessage();
String positionMessage = onDeathMessageElement.getPositionMessage();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
if(radius == null) radius = 0;
if(onlyShow == null) onlyShow = 3;
if(mainMessage == null) mainMessage = "N/A";
if(positionMessage == null) positionMessage = "N/A";
if(radius == null) radius = 0;
if(onlyShow == null) onlyShow = 3;
if(mainMessage == null) mainMessage = "N/A";
if(positionMessage == null) positionMessage = "N/A";
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
replaceMap.put("{radius}", NumberUtils.get().formatDouble(radius));
replaceMap.put("{mainMessage}", mainMessage);
replaceMap.put("{positionMessage}", positionMessage);
replaceMap.put("{onlyShow}", NumberUtils.get().formatDouble(onlyShow));
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
replaceMap.put("{radius}", NumberUtils.get().formatDouble(radius));
replaceMap.put("{mainMessage}", mainMessage);
replaceMap.put("{positionMessage}", positionMessage);
replaceMap.put("{onlyShow}", NumberUtils.get().formatDouble(onlyShow));
panelBuilder.addReplaceData(replaceMap);
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanelHandler(this.bossPanelManager.getMainTextEditMenu(), bossEntity);
PanelBuilderCounter counter = panel.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanelHandler(this.bossPanelManager.getMainTextEditMenu(), bossEntity);
PanelBuilderCounter counter = panel.getPanelBuilderCounter();
counter.getSlotsWith("MainMessage").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getOnDeathTextEditMenu().openFor((Player) event.getWhoClicked(), bossEntity)));
counter.getSlotsWith("Radius").forEach(slot -> panel.setOnClick(slot, getRadiusAction(bossEntity)));
counter.getSlotsWith("OnlyShow").forEach(slot -> panel.setOnClick(slot, getOnlyShowAction(bossEntity)));
counter.getSlotsWith("PositionMessage").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getOnDeathPositionTextEditMenu().openFor((Player) event.getWhoClicked(), bossEntity)));
counter.getSlotsWith("MainMessage").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getOnDeathTextEditMenu().openFor((Player) event.getWhoClicked(), bossEntity)));
counter.getSlotsWith("Radius").forEach(slot -> panel.setOnClick(slot, getRadiusAction(bossEntity)));
counter.getSlotsWith("OnlyShow").forEach(slot -> panel.setOnClick(slot, getOnlyShowAction(bossEntity)));
counter.getSlotsWith("PositionMessage").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getOnDeathPositionTextEditMenu().openFor((Player) event.getWhoClicked(), bossEntity)));
panel.openFor(player);
panel.openFor(player);
});
}
@Override

View File

@ -7,6 +7,7 @@ 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;
import com.songoda.epicbosses.utils.panel.base.ClickAction;
import com.songoda.epicbosses.utils.panel.base.handlers.VariablePanelHandler;
@ -40,30 +41,32 @@ public class SpawnTextEditorPanel extends VariablePanelHandler<BossEntity> {
@Override
public void openFor(Player player, BossEntity bossEntity) {
Map<String, String> replaceMap = new HashMap<>();
Integer radius = bossEntity.getMessages().getOnSpawn().getRadius();
String message = bossEntity.getMessages().getOnDeath().getMessage();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
ServerUtils.get().runTaskAsync(() -> {
Map<String, String> replaceMap = new HashMap<>();
Integer radius = bossEntity.getMessages().getOnSpawn().getRadius();
String message = bossEntity.getMessages().getOnDeath().getMessage();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
if(radius == null) radius = 0;
if(message == null) message = "N/A";
if(radius == null) radius = 0;
if(message == null) message = "N/A";
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
replaceMap.put("{radius}", NumberUtils.get().formatDouble(radius));
replaceMap.put("{selected}", message);
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
replaceMap.put("{radius}", NumberUtils.get().formatDouble(radius));
replaceMap.put("{selected}", message);
panelBuilder.addReplaceData(replaceMap);
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanelHandler(this.bossPanelManager.getMainTextEditMenu(), bossEntity);
PanelBuilderCounter counter = panel.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanelHandler(this.bossPanelManager.getMainTextEditMenu(), bossEntity);
PanelBuilderCounter counter = panel.getPanelBuilderCounter();
counter.getSlotsWith("Select").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getOnSpawnTextEditMenu().openFor((Player) event.getWhoClicked(), bossEntity)));
counter.getSlotsWith("Radius").forEach(slot -> panel.setOnClick(slot, getRadiusAction(bossEntity)));
counter.getSlotsWith("Select").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getOnSpawnTextEditMenu().openFor((Player) event.getWhoClicked(), bossEntity)));
counter.getSlotsWith("Radius").forEach(slot -> panel.setOnClick(slot, getRadiusAction(bossEntity)));
panel.openFor(player);
panel.openFor(player);
});
}
@Override

View File

@ -8,6 +8,7 @@ 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.StringUtils;
import com.songoda.epicbosses.utils.panel.Panel;
import com.songoda.epicbosses.utils.panel.base.ClickAction;
@ -44,35 +45,37 @@ public class TauntTextEditorPanel extends VariablePanelHandler<BossEntity> {
@Override
public void openFor(Player player, BossEntity bossEntity) {
Map<String, String> replaceMap = new HashMap<>();
TauntElement tauntElement = bossEntity.getMessages().getTaunts();
Integer radius = tauntElement.getRadius();
Integer delay = tauntElement.getDelay();
List<String> taunts = tauntElement.getTaunts();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
ServerUtils.get().runTaskAsync(() -> {
Map<String, String> replaceMap = new HashMap<>();
TauntElement tauntElement = bossEntity.getMessages().getTaunts();
Integer radius = tauntElement.getRadius();
Integer delay = tauntElement.getDelay();
List<String> taunts = tauntElement.getTaunts();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
if(radius == null) radius = 100;
if(delay == null) delay = 60;
if(taunts == null || taunts.isEmpty()) taunts = Arrays.asList("N/A");
if(radius == null) radius = 100;
if(delay == null) delay = 60;
if(taunts == null || taunts.isEmpty()) taunts = Arrays.asList("N/A");
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
replaceMap.put("{radius}", NumberUtils.get().formatDouble(radius));
replaceMap.put("{delay}", NumberUtils.get().formatDouble(delay));
replaceMap.put("{taunts}", StringUtils.get().appendList(taunts));
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
replaceMap.put("{radius}", NumberUtils.get().formatDouble(radius));
replaceMap.put("{delay}", NumberUtils.get().formatDouble(delay));
replaceMap.put("{taunts}", StringUtils.get().appendList(taunts));
panelBuilder.addReplaceData(replaceMap);
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanelHandler(this.bossPanelManager.getMainTextEditMenu(), bossEntity);
PanelBuilderCounter counter = panel.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanelHandler(this.bossPanelManager.getMainTextEditMenu(), bossEntity);
PanelBuilderCounter counter = panel.getPanelBuilderCounter();
counter.getSlotsWith("Radius").forEach(slot -> panel.setOnClick(slot, getRadiusAction(bossEntity)));
counter.getSlotsWith("Delay").forEach(slot -> panel.setOnClick(slot, getDelayAction(bossEntity)));
counter.getSlotsWith("Taunts").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getOnTauntTextEditMenu().openFor((Player) event.getWhoClicked(), bossEntity)));
counter.getSlotsWith("Radius").forEach(slot -> panel.setOnClick(slot, getRadiusAction(bossEntity)));
counter.getSlotsWith("Delay").forEach(slot -> panel.setOnClick(slot, getDelayAction(bossEntity)));
counter.getSlotsWith("Taunts").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getOnTauntTextEditMenu().openFor((Player) event.getWhoClicked(), bossEntity)));
panel.openFor(player);
panel.openFor(player);
});
}
@Override

View File

@ -4,6 +4,7 @@ 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.ServerUtils;
import com.songoda.epicbosses.utils.panel.Panel;
import com.songoda.epicbosses.utils.panel.base.ClickAction;
import com.songoda.epicbosses.utils.panel.base.handlers.VariablePanelHandler;
@ -37,21 +38,23 @@ public class DropTableTypeEditorPanel extends VariablePanelHandler<DropTable> {
@Override
public void openFor(Player player, DropTable dropTable) {
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
Map<String, String> replaceMap = new HashMap<>();
ServerUtils.get().runTaskAsync(() -> {
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
Map<String, String> replaceMap = new HashMap<>();
replaceMap.put("{name}", BossAPI.getDropTableName(dropTable));
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{name}", BossAPI.getDropTableName(dropTable));
panelBuilder.addReplaceData(replaceMap);
PanelBuilderCounter panelBuilderCounter = panelBuilder.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getMainDropTableEditMenu(), dropTable);
PanelBuilderCounter panelBuilderCounter = panelBuilder.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getMainDropTableEditMenu(), dropTable);
panelBuilderCounter.getSlotsWith("Spray").forEach(slot -> panel.setOnClick(slot, getSprayAction(dropTable)));
panelBuilderCounter.getSlotsWith("Drop").forEach(slot -> panel.setOnClick(slot, getDropAction(dropTable)));
panelBuilderCounter.getSlotsWith("Give").forEach(slot -> panel.setOnClick(slot, getGiveAction(dropTable)));
panelBuilderCounter.getSlotsWith("Spray").forEach(slot -> panel.setOnClick(slot, getSprayAction(dropTable)));
panelBuilderCounter.getSlotsWith("Drop").forEach(slot -> panel.setOnClick(slot, getDropAction(dropTable)));
panelBuilderCounter.getSlotsWith("Give").forEach(slot -> panel.setOnClick(slot, getGiveAction(dropTable)));
panel.openFor(player);
panel.openFor(player);
});
}
@Override

View File

@ -7,6 +7,7 @@ import com.songoda.epicbosses.droptable.elements.GiveTableElement;
import com.songoda.epicbosses.droptable.elements.SprayTableElement;
import com.songoda.epicbosses.managers.BossPanelManager;
import com.songoda.epicbosses.utils.Debug;
import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.StringUtils;
import com.songoda.epicbosses.utils.panel.Panel;
import com.songoda.epicbosses.utils.panel.base.ClickAction;
@ -36,21 +37,23 @@ public class MainDropTableEditorPanel extends VariablePanelHandler<DropTable> {
@Override
public void openFor(Player player, DropTable dropTable) {
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
Map<String, String> replaceMap = new HashMap<>();
ServerUtils.get().runTaskAsync(() -> {
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
Map<String, String> replaceMap = new HashMap<>();
replaceMap.put("{name}", BossAPI.getDropTableName(dropTable));
replaceMap.put("{type}", StringUtils.get().formatString(dropTable.getDropType()));
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{name}", BossAPI.getDropTableName(dropTable));
replaceMap.put("{type}", StringUtils.get().formatString(dropTable.getDropType()));
panelBuilder.addReplaceData(replaceMap);
PanelBuilderCounter panelBuilderCounter = panelBuilder.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getDropTables());
PanelBuilderCounter panelBuilderCounter = panelBuilder.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getDropTables());
panelBuilderCounter.getSlotsWith("Type").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getDropTableTypeEditMenu().openFor(player, dropTable)));
panelBuilderCounter.getSlotsWith("Rewards").forEach(slot -> panel.setOnClick(slot, getRewardsAction(dropTable)));
panelBuilderCounter.getSlotsWith("Type").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getDropTableTypeEditMenu().openFor(player, dropTable)));
panelBuilderCounter.getSlotsWith("Rewards").forEach(slot -> panel.setOnClick(slot, getRewardsAction(dropTable)));
panel.openFor(player);
panel.openFor(player);
});
}
@Override

View File

@ -7,6 +7,7 @@ import com.songoda.epicbosses.managers.BossPanelManager;
import com.songoda.epicbosses.managers.files.ItemsFileManager;
import com.songoda.epicbosses.panel.droptables.rewards.interfaces.IDropTableNewRewardEditor;
import com.songoda.epicbosses.utils.Message;
import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.itemstack.holder.ItemStackHolder;
import com.songoda.epicbosses.utils.panel.Panel;
import com.songoda.epicbosses.utils.panel.base.handlers.SubVariablePanelHandler;
@ -55,11 +56,13 @@ public abstract class DropTableNewRewardEditorPanel<SubVariable> extends SubVari
@Override
public void openFor(Player player, DropTable dropTable, SubVariable subVariable) {
Panel panel = getPanelBuilder().getPanel()
.setParentPanelHandler(getParentPanelHandler(), dropTable, subVariable);
ServerUtils.get().runTaskAsync(() -> {
Panel panel = getPanelBuilder().getPanel()
.setParentPanelHandler(getParentPanelHandler(), dropTable, subVariable);
fillPanel(panel, dropTable, subVariable);
panel.openFor(player);
fillPanel(panel, dropTable, subVariable);
panel.openFor(player);
});
}
@Override

View File

@ -9,6 +9,7 @@ import com.songoda.epicbosses.panel.droptables.rewards.interfaces.IDropTableRewa
import com.songoda.epicbosses.utils.Message;
import com.songoda.epicbosses.utils.NumberUtils;
import com.songoda.epicbosses.utils.ObjectUtils;
import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.panel.Panel;
import com.songoda.epicbosses.utils.panel.base.ClickAction;
import com.songoda.epicbosses.utils.panel.base.handlers.SubSubVariablePanelHandler;
@ -37,22 +38,24 @@ public abstract class DropTableRewardMainEditorPanel<SubVariable> extends SubSub
@Override
public void openFor(Player player, DropTable dropTable, SubVariable subVariable, String s) {
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
Map<String, String> replaceMap = new HashMap<>();
double chance = ObjectUtils.getValue(getChance(subVariable, s), 50.0);
ServerUtils.get().runTaskAsync(() -> {
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
Map<String, String> replaceMap = new HashMap<>();
double chance = ObjectUtils.getValue(getChance(subVariable, s), 50.0);
replaceMap.put("{chance}", NumberUtils.get().formatDouble(chance));
replaceMap.put("{itemStack}", s);
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{chance}", NumberUtils.get().formatDouble(chance));
replaceMap.put("{itemStack}", s);
panelBuilder.addReplaceData(replaceMap);
PanelBuilderCounter panelBuilderCounter = panelBuilder.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(getParentPanelHandler(), dropTable, subVariable);
PanelBuilderCounter panelBuilderCounter = panelBuilder.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(getParentPanelHandler(), dropTable, subVariable);
panelBuilderCounter.getSlotsWith("Chance").forEach(slot -> panel.setOnClick(slot, getChanceAction(dropTable, subVariable, s)));
panelBuilderCounter.getSlotsWith("Remove").forEach(slot -> panel.setOnClick(slot, getRemoveAction(dropTable, subVariable, s)));
panelBuilderCounter.getSlotsWith("Chance").forEach(slot -> panel.setOnClick(slot, getChanceAction(dropTable, subVariable, s)));
panelBuilderCounter.getSlotsWith("Remove").forEach(slot -> panel.setOnClick(slot, getRemoveAction(dropTable, subVariable, s)));
panel.openFor(player);
panel.openFor(player);
});
}
@Override

View File

@ -7,6 +7,7 @@ import com.songoda.epicbosses.managers.BossPanelManager;
import com.songoda.epicbosses.managers.files.ItemsFileManager;
import com.songoda.epicbosses.panel.droptables.rewards.interfaces.IDropTableRewardsListEditor;
import com.songoda.epicbosses.utils.NumberUtils;
import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.itemstack.ItemStackUtils;
import com.songoda.epicbosses.utils.panel.Panel;
import com.songoda.epicbosses.utils.panel.base.handlers.SubVariablePanelHandler;
@ -56,20 +57,22 @@ public abstract class DropTableRewardsListEditorPanel<SubVariable> extends SubVa
@Override
public void openFor(Player player, DropTable dropTable, SubVariable subVariable) {
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
Map<String, String> replaceMap = new HashMap<>();
ServerUtils.get().runTaskAsync(() -> {
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
Map<String, String> replaceMap = new HashMap<>();
replaceMap.put("{name}", BossAPI.getDropTableName(dropTable));
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{name}", BossAPI.getDropTableName(dropTable));
panelBuilder.addReplaceData(replaceMap);
PanelBuilderCounter panelBuilderCounter = panelBuilder.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(getParentPanelHandler(), dropTable, subVariable);
PanelBuilderCounter panelBuilderCounter = panelBuilder.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(getParentPanelHandler(), dropTable, subVariable);
panelBuilderCounter.getSlotsWith("NewReward").forEach(slot -> panel.setOnClick(slot, event -> getNewRewardPanelHandler().openFor((Player) event.getWhoClicked(), dropTable, subVariable)));
fillPanel(panel, dropTable, subVariable);
panelBuilderCounter.getSlotsWith("NewReward").forEach(slot -> panel.setOnClick(slot, event -> getNewRewardPanelHandler().openFor((Player) event.getWhoClicked(), dropTable, subVariable)));
fillPanel(panel, dropTable, subVariable);
panel.openFor(player);
panel.openFor(player);
});
}
@Override

View File

@ -11,6 +11,7 @@ import com.songoda.epicbosses.panel.droptables.types.give.handlers.GiveRewardEdi
import com.songoda.epicbosses.utils.Message;
import com.songoda.epicbosses.utils.NumberUtils;
import com.songoda.epicbosses.utils.ObjectUtils;
import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.panel.Panel;
import com.songoda.epicbosses.utils.panel.base.ClickAction;
import com.songoda.epicbosses.utils.panel.base.handlers.SubVariablePanelHandler;
@ -40,41 +41,43 @@ public class GiveRewardMainEditPanel extends SubVariablePanelHandler<DropTable,
@Override
public void openFor(Player player, DropTable dropTable, GiveRewardEditHandler giveRewardEditHandler) {
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
Map<String, String> replaceMap = new HashMap<>();
GiveTableSubElement giveTableSubElement = giveRewardEditHandler.getGiveTableSubElement();
Integer itemDrops = giveTableSubElement.getItems().size();
Integer commandDrops = giveTableSubElement.getCommands().size();
Double requiredPercentage = ObjectUtils.getValue(giveTableSubElement.getRequiredPercentage(), 0.0);
Integer maxDrops = ObjectUtils.getValue(giveTableSubElement.getMaxDrops(), 3);
Integer maxCommands = ObjectUtils.getValue(giveTableSubElement.getMaxCommands(), 3);
Boolean randomDrops = ObjectUtils.getValue(giveTableSubElement.getRandomDrops(), false);
Boolean randomCommands = ObjectUtils.getValue(giveTableSubElement.getRandomCommands(), false);
ServerUtils.get().runTaskAsync(() -> {
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
Map<String, String> replaceMap = new HashMap<>();
GiveTableSubElement giveTableSubElement = giveRewardEditHandler.getGiveTableSubElement();
Integer itemDrops = giveTableSubElement.getItems().size();
Integer commandDrops = giveTableSubElement.getCommands().size();
Double requiredPercentage = ObjectUtils.getValue(giveTableSubElement.getRequiredPercentage(), 0.0);
Integer maxDrops = ObjectUtils.getValue(giveTableSubElement.getMaxDrops(), 3);
Integer maxCommands = ObjectUtils.getValue(giveTableSubElement.getMaxCommands(), 3);
Boolean randomDrops = ObjectUtils.getValue(giveTableSubElement.getRandomDrops(), false);
Boolean randomCommands = ObjectUtils.getValue(giveTableSubElement.getRandomCommands(), false);
replaceMap.put("{name}", BossAPI.getDropTableName(dropTable));
replaceMap.put("{position}", giveRewardEditHandler.getDamagePosition());
replaceMap.put("{randomDrops}", ""+randomDrops);
replaceMap.put("{maxDrops}", NumberUtils.get().formatDouble(maxDrops));
replaceMap.put("{drops}", NumberUtils.get().formatDouble(itemDrops));
replaceMap.put("{requiredPercentage}", NumberUtils.get().formatDouble(requiredPercentage));
replaceMap.put("{commands}", NumberUtils.get().formatDouble(commandDrops));
replaceMap.put("{maxCommands}", NumberUtils.get().formatDouble(maxCommands));
replaceMap.put("{randomCommands}", ""+randomCommands);
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{name}", BossAPI.getDropTableName(dropTable));
replaceMap.put("{position}", giveRewardEditHandler.getDamagePosition());
replaceMap.put("{randomDrops}", ""+randomDrops);
replaceMap.put("{maxDrops}", NumberUtils.get().formatDouble(maxDrops));
replaceMap.put("{drops}", NumberUtils.get().formatDouble(itemDrops));
replaceMap.put("{requiredPercentage}", NumberUtils.get().formatDouble(requiredPercentage));
replaceMap.put("{commands}", NumberUtils.get().formatDouble(commandDrops));
replaceMap.put("{maxCommands}", NumberUtils.get().formatDouble(maxCommands));
replaceMap.put("{randomCommands}", ""+randomCommands);
panelBuilder.addReplaceData(replaceMap);
PanelBuilderCounter counter = panelBuilder.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getGiveRewardRewardsListMenu(), dropTable, giveRewardEditHandler.getGiveTableElement(), giveRewardEditHandler.getDamagePosition());
PanelBuilderCounter counter = panelBuilder.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getGiveRewardRewardsListMenu(), dropTable, giveRewardEditHandler.getGiveTableElement(), giveRewardEditHandler.getDamagePosition());
counter.getSlotsWith("RandomDrops").forEach(slot -> panel.setOnClick(slot, getRandomDropsAction(dropTable, giveRewardEditHandler)));
counter.getSlotsWith("MaxDrops").forEach(slot -> panel.setOnClick(slot, getMaxDropsAction(dropTable, giveRewardEditHandler)));
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 -> panel.setOnClick(slot, event -> this.bossPanelManager.getGiveCommandRewardListPanel().openFor((Player) event.getWhoClicked(), dropTable, giveRewardEditHandler)));
counter.getSlotsWith("MaxCommands").forEach(slot -> panel.setOnClick(slot, getMaxCommandsAction(dropTable, giveRewardEditHandler)));
counter.getSlotsWith("RandomDrops").forEach(slot -> panel.setOnClick(slot, getRandomCommandsAction(dropTable, giveRewardEditHandler)));
counter.getSlotsWith("RandomDrops").forEach(slot -> panel.setOnClick(slot, getRandomDropsAction(dropTable, giveRewardEditHandler)));
counter.getSlotsWith("MaxDrops").forEach(slot -> panel.setOnClick(slot, getMaxDropsAction(dropTable, giveRewardEditHandler)));
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 -> panel.setOnClick(slot, event -> this.bossPanelManager.getGiveCommandRewardListPanel().openFor((Player) event.getWhoClicked(), dropTable, giveRewardEditHandler)));
counter.getSlotsWith("MaxCommands").forEach(slot -> panel.setOnClick(slot, getMaxCommandsAction(dropTable, giveRewardEditHandler)));
counter.getSlotsWith("RandomDrops").forEach(slot -> panel.setOnClick(slot, getRandomCommandsAction(dropTable, giveRewardEditHandler)));
panel.openFor(player);
panel.openFor(player);
});
}
@Override

View File

@ -12,6 +12,7 @@ import com.songoda.epicbosses.managers.files.ItemsFileManager;
import com.songoda.epicbosses.utils.Debug;
import com.songoda.epicbosses.utils.Message;
import com.songoda.epicbosses.utils.NumberUtils;
import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.itemstack.ItemStackUtils;
import com.songoda.epicbosses.utils.itemstack.holder.ItemStackHolder;
import com.songoda.epicbosses.utils.panel.Panel;
@ -61,19 +62,21 @@ public class GiveRewardPositionListPanel extends SubVariablePanelHandler<DropTab
@Override
public void openFor(Player player, DropTable dropTable, GiveTableElement giveTableElement) {
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
Map<String, String> replaceMap = new HashMap<>();
ServerUtils.get().runTaskAsync(() -> {
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
Map<String, String> replaceMap = new HashMap<>();
replaceMap.put("{name}", BossAPI.getDropTableName(dropTable));
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{name}", BossAPI.getDropTableName(dropTable));
panelBuilder.addReplaceData(replaceMap);
PanelBuilderCounter panelBuilderCounter = panelBuilder.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getMainDropTableEditMenu(), dropTable);
PanelBuilderCounter panelBuilderCounter = panelBuilder.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getMainDropTableEditMenu(), dropTable);
panelBuilderCounter.getSlotsWith("NewPosition").forEach(slot -> panel.setOnClick(slot, getNewPositionAction(dropTable, giveTableElement)));
fillPanel(panel, dropTable, giveTableElement);
panel.openFor(player);
panelBuilderCounter.getSlotsWith("NewPosition").forEach(slot -> panel.setOnClick(slot, getNewPositionAction(dropTable, giveTableElement)));
fillPanel(panel, dropTable, giveTableElement);
panel.openFor(player);
});
}
@Override

View File

@ -11,6 +11,7 @@ import com.songoda.epicbosses.panel.droptables.types.give.handlers.GiveRewardEdi
import com.songoda.epicbosses.utils.Debug;
import com.songoda.epicbosses.utils.NumberUtils;
import com.songoda.epicbosses.utils.ObjectUtils;
import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.itemstack.ItemStackUtils;
import com.songoda.epicbosses.utils.panel.Panel;
import com.songoda.epicbosses.utils.panel.base.ClickAction;
@ -46,19 +47,21 @@ public class GiveRewardRewardsListPanel extends SubSubVariablePanelHandler<DropT
@Override
public void openFor(Player player, DropTable dropTable, GiveTableElement giveTableElement, String s) {
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
Map<String, String> replaceMap = new HashMap<>();
ServerUtils.get().runTaskAsync(() -> {
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
Map<String, String> replaceMap = new HashMap<>();
replaceMap.put("{name}", BossAPI.getDropTableName(dropTable));
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{name}", BossAPI.getDropTableName(dropTable));
panelBuilder.addReplaceData(replaceMap);
PanelBuilderCounter panelBuilderCounter = panelBuilder.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getGiveRewardPositionListMenu(), dropTable, giveTableElement);
PanelBuilderCounter panelBuilderCounter = panelBuilder.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getGiveRewardPositionListMenu(), dropTable, giveTableElement);
panelBuilderCounter.getSlotsWith("NewRewardSection").forEach(slot -> panel.setOnClick(slot, getNewRewardSectionAction(dropTable, giveTableElement, s)));
fillPanel(panel, dropTable, giveTableElement, s);
panel.openFor(player);
panelBuilderCounter.getSlotsWith("NewRewardSection").forEach(slot -> panel.setOnClick(slot, getNewRewardSectionAction(dropTable, giveTableElement, s)));
fillPanel(panel, dropTable, giveTableElement, s);
panel.openFor(player);
});
}
@Override

View File

@ -10,6 +10,7 @@ import com.songoda.epicbosses.managers.files.CommandsFileManager;
import com.songoda.epicbosses.managers.files.DropTableFileManager;
import com.songoda.epicbosses.panel.droptables.types.give.handlers.GiveRewardEditHandler;
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;
import com.songoda.epicbosses.utils.itemstack.ItemStackUtils;
@ -67,11 +68,13 @@ public class GiveCommandNewRewardPanel extends SubVariablePanelHandler<DropTable
@Override
public void openFor(Player player, DropTable dropTable, GiveRewardEditHandler giveRewardEditHandler) {
Panel panel = getPanelBuilder().getPanel()
.setParentPanelHandler(this.bossPanelManager.getGiveCommandRewardListPanel(), dropTable, giveRewardEditHandler);
ServerUtils.get().runTaskAsync(() -> {
Panel panel = getPanelBuilder().getPanel()
.setParentPanelHandler(this.bossPanelManager.getGiveCommandRewardListPanel(), dropTable, giveRewardEditHandler);
fillPanel(panel, dropTable, giveRewardEditHandler);
panel.openFor(player);
fillPanel(panel, dropTable, giveRewardEditHandler);
panel.openFor(player);
});
}
@Override

View File

@ -7,6 +7,7 @@ import com.songoda.epicbosses.managers.BossPanelManager;
import com.songoda.epicbosses.managers.files.ItemsFileManager;
import com.songoda.epicbosses.panel.droptables.types.give.handlers.GiveRewardEditHandler;
import com.songoda.epicbosses.utils.NumberUtils;
import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.itemstack.ItemStackUtils;
import com.songoda.epicbosses.utils.itemstack.holder.ItemStackHolder;
import com.songoda.epicbosses.utils.panel.Panel;
@ -57,20 +58,22 @@ public class GiveCommandRewardListPanel extends SubVariablePanelHandler<DropTabl
@Override
public void openFor(Player player, DropTable dropTable, GiveRewardEditHandler giveRewardEditHandler) {
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
Map<String, String> replaceMap = new HashMap<>();
ServerUtils.get().runTaskAsync(() -> {
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
Map<String, String> replaceMap = new HashMap<>();
replaceMap.put("{name}", BossAPI.getDropTableName(dropTable));
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{name}", BossAPI.getDropTableName(dropTable));
panelBuilder.addReplaceData(replaceMap);
PanelBuilderCounter panelBuilderCounter = panelBuilder.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getGiveRewardMainEditMenu(), dropTable, giveRewardEditHandler);
PanelBuilderCounter panelBuilderCounter = panelBuilder.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getGiveRewardMainEditMenu(), dropTable, giveRewardEditHandler);
panelBuilderCounter.getSlotsWith("NewReward").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getGiveCommandNewRewardPanel().openFor((Player) event.getWhoClicked(), dropTable, giveRewardEditHandler)));
fillPanel(panel, dropTable, giveRewardEditHandler);
panelBuilderCounter.getSlotsWith("NewReward").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getGiveCommandNewRewardPanel().openFor((Player) event.getWhoClicked(), dropTable, giveRewardEditHandler)));
fillPanel(panel, dropTable, giveRewardEditHandler);
panel.openFor(player);
panel.openFor(player);
});
}
@Override

View File

@ -11,6 +11,7 @@ import com.songoda.epicbosses.panel.droptables.types.give.handlers.GiveRewardEdi
import com.songoda.epicbosses.utils.Message;
import com.songoda.epicbosses.utils.NumberUtils;
import com.songoda.epicbosses.utils.ObjectUtils;
import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.panel.Panel;
import com.songoda.epicbosses.utils.panel.base.ClickAction;
import com.songoda.epicbosses.utils.panel.base.handlers.SubSubVariablePanelHandler;
@ -39,23 +40,25 @@ public class GiveCommandRewardMainEditPanel extends SubSubVariablePanelHandler<D
@Override
public void openFor(Player player, DropTable dropTable, GiveRewardEditHandler giveRewardEditHandler, String s) {
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
Map<String, Double> rewardMap = giveRewardEditHandler.getGiveTableSubElement().getCommands();
Map<String, String> replaceMap = new HashMap<>();
double chance = ObjectUtils.getValue(rewardMap.get(s), 50.0);
ServerUtils.get().runTaskAsync(() -> {
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
Map<String, Double> rewardMap = giveRewardEditHandler.getGiveTableSubElement().getCommands();
Map<String, String> replaceMap = new HashMap<>();
double chance = ObjectUtils.getValue(rewardMap.get(s), 50.0);
replaceMap.put("{chance}", NumberUtils.get().formatDouble(chance));
replaceMap.put("{itemStack}", s);
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{chance}", NumberUtils.get().formatDouble(chance));
replaceMap.put("{itemStack}", s);
panelBuilder.addReplaceData(replaceMap);
PanelBuilderCounter panelBuilderCounter = panelBuilder.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getGiveCommandRewardListPanel(), dropTable, giveRewardEditHandler);
PanelBuilderCounter panelBuilderCounter = panelBuilder.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getGiveCommandRewardListPanel(), dropTable, giveRewardEditHandler);
panelBuilderCounter.getSlotsWith("Chance").forEach(slot -> panel.setOnClick(slot, getChanceAction(dropTable, giveRewardEditHandler, s)));
panelBuilderCounter.getSlotsWith("Remove").forEach(slot -> panel.setOnClick(slot, getRemoveAction(dropTable, giveRewardEditHandler, s)));
panelBuilderCounter.getSlotsWith("Chance").forEach(slot -> panel.setOnClick(slot, getChanceAction(dropTable, giveRewardEditHandler, s)));
panelBuilderCounter.getSlotsWith("Remove").forEach(slot -> panel.setOnClick(slot, getRemoveAction(dropTable, giveRewardEditHandler, s)));
panel.openFor(player);
panel.openFor(player);
});
}
@Override

View File

@ -8,6 +8,7 @@ import com.songoda.epicbosses.droptable.elements.SprayTableElement;
import com.songoda.epicbosses.managers.BossPanelManager;
import com.songoda.epicbosses.utils.Message;
import com.songoda.epicbosses.utils.NumberUtils;
import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.StringUtils;
import com.songoda.epicbosses.utils.panel.Panel;
import com.songoda.epicbosses.utils.panel.base.ClickAction;
@ -42,32 +43,34 @@ public class SprayDropTableMainEditorPanel extends SubVariablePanelHandler<DropT
@Override
public void openFor(Player player, DropTable dropTable, SprayTableElement sprayTableElement) {
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
Map<String, String> replaceMap = new HashMap<>();
Boolean randomSprayDrops = sprayTableElement.getRandomSprayDrops();
Integer maxDrops = sprayTableElement.getSprayMaxDrops();
Integer maxDistance = sprayTableElement.getSprayMaxDistance();
ServerUtils.get().runTaskAsync(() -> {
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
Map<String, String> replaceMap = new HashMap<>();
Boolean randomSprayDrops = sprayTableElement.getRandomSprayDrops();
Integer maxDrops = sprayTableElement.getSprayMaxDrops();
Integer maxDistance = sprayTableElement.getSprayMaxDistance();
if(randomSprayDrops == null) randomSprayDrops = false;
if(maxDrops == null) maxDrops = -1;
if(maxDistance == null) maxDistance = 100;
if(randomSprayDrops == null) randomSprayDrops = false;
if(maxDrops == null) maxDrops = -1;
if(maxDistance == null) maxDistance = 100;
replaceMap.put("{name}", BossAPI.getDropTableName(dropTable));
replaceMap.put("{randomDrops}", StringUtils.get().formatString(""+randomSprayDrops));
replaceMap.put("{maxDrops}", NumberUtils.get().formatDouble(maxDrops));
replaceMap.put("{maxDistance}", NumberUtils.get().formatDouble(maxDistance));
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{name}", BossAPI.getDropTableName(dropTable));
replaceMap.put("{randomDrops}", StringUtils.get().formatString(""+randomSprayDrops));
replaceMap.put("{maxDrops}", NumberUtils.get().formatDouble(maxDrops));
replaceMap.put("{maxDistance}", NumberUtils.get().formatDouble(maxDistance));
panelBuilder.addReplaceData(replaceMap);
PanelBuilderCounter panelBuilderCounter = panelBuilder.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getMainDropTableEditMenu(), dropTable);
PanelBuilderCounter panelBuilderCounter = panelBuilder.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getMainDropTableEditMenu(), dropTable);
panelBuilderCounter.getSlotsWith("Rewards").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getSprayDropRewardListPanel().openFor((Player) event.getWhoClicked(), dropTable, sprayTableElement)));
panelBuilderCounter.getSlotsWith("RandomDrops").forEach(slot -> panel.setOnClick(slot, getRandomDropsAction(dropTable, sprayTableElement)));
panelBuilderCounter.getSlotsWith("MaxDistance").forEach(slot -> panel.setOnClick(slot, getMaxDistanceAction(dropTable, sprayTableElement)));
panelBuilderCounter.getSlotsWith("MaxDrops").forEach(slot -> panel.setOnClick(slot, getMaxDropsAction(dropTable, sprayTableElement)));
panelBuilderCounter.getSlotsWith("Rewards").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getSprayDropRewardListPanel().openFor((Player) event.getWhoClicked(), dropTable, sprayTableElement)));
panelBuilderCounter.getSlotsWith("RandomDrops").forEach(slot -> panel.setOnClick(slot, getRandomDropsAction(dropTable, sprayTableElement)));
panelBuilderCounter.getSlotsWith("MaxDistance").forEach(slot -> panel.setOnClick(slot, getMaxDistanceAction(dropTable, sprayTableElement)));
panelBuilderCounter.getSlotsWith("MaxDrops").forEach(slot -> panel.setOnClick(slot, getMaxDropsAction(dropTable, sprayTableElement)));
panel.openFor(player);
panel.openFor(player);
});
}
@Override

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.ServerUtils;
import com.songoda.epicbosses.utils.itemstack.ItemStackConverter;
import com.songoda.epicbosses.utils.itemstack.ItemStackUtils;
import com.songoda.epicbosses.utils.itemstack.holder.ItemStackHolder;
@ -71,32 +72,34 @@ public abstract class ItemStackSubListPanelHandler extends SubVariablePanelHandl
@Override
public void openFor(Player player, BossEntity bossEntity, EntityStatsElement entityStatsElement) {
Map<String, String> replaceMap = new HashMap<>();
ServerUtils.get().runTaskAsync(() -> {
Map<String, String> replaceMap = new HashMap<>();
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
replaceMap.put("{name}", BossAPI.getBossEntityName(bossEntity));
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
panelBuilder.addReplaceData(replaceMap);
panelBuilder.addReplaceData(replaceMap);
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelLowerClick(true)
.setCancelClick(true)
.setParentPanelHandler(getParentHolder(), bossEntity, entityStatsElement);
PanelBuilderCounter panelBuilderCounter = panel.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelLowerClick(true)
.setCancelClick(true)
.setParentPanelHandler(getParentHolder(), bossEntity, entityStatsElement);
PanelBuilderCounter panelBuilderCounter = panel.getPanelBuilderCounter();
panelBuilderCounter.getSlotsWith("AddNew").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getAddItemsMenu().openFor(player)));
panelBuilderCounter.getSlotsWith("Remove").forEach(slot -> panel.setOnClick(slot, event -> {
getUpdateAction(entityStatsElement, "");
this.bossesFileManager.save();
panelBuilderCounter.getSlotsWith("AddNew").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getAddItemsMenu().openFor(player)));
panelBuilderCounter.getSlotsWith("Remove").forEach(slot -> panel.setOnClick(slot, event -> {
getUpdateAction(entityStatsElement, "");
this.bossesFileManager.save();
openFor((Player) event.getWhoClicked(), bossEntity, entityStatsElement);
}));
openFor((Player) event.getWhoClicked(), bossEntity, entityStatsElement);
}));
fillPanel(panel, bossEntity, entityStatsElement);
fillPanel(panel, bossEntity, entityStatsElement);
panel.openFor(player);
panel.openFor(player);
});
}
@Override

View File

@ -5,6 +5,7 @@ import com.songoda.epicbosses.api.BossAPI;
import com.songoda.epicbosses.managers.BossPanelManager;
import com.songoda.epicbosses.managers.files.CommandsFileManager;
import com.songoda.epicbosses.managers.files.MessagesFileManager;
import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.StringUtils;
import com.songoda.epicbosses.utils.itemstack.ItemStackConverter;
import com.songoda.epicbosses.utils.itemstack.ItemStackUtils;
@ -68,21 +69,23 @@ public abstract class ListCommandListEditor<T> extends VariablePanelHandler<T> {
@Override
public void openFor(Player player, T object) {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
ServerUtils.get().runTaskAsync(() -> {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
replaceMap.put("{name}", getName(object));
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{name}", getName(object));
panelBuilder.addReplaceData(replaceMap);
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanelHandler(getParentHolder(), object);
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanelHandler(getParentHolder(), object);
fillPanel(panel, object);
fillPanel(panel, object);
panel.openFor(player);
panel.openFor(player);
});
}
@Override

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.MessagesFileManager;
import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.StringUtils;
import com.songoda.epicbosses.utils.itemstack.ItemStackConverter;
import com.songoda.epicbosses.utils.itemstack.ItemStackUtils;
@ -68,21 +69,23 @@ public abstract class ListMessageListEditor<T> extends VariablePanelHandler<T> {
@Override
public void openFor(Player player, T object) {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
ServerUtils.get().runTaskAsync(() -> {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
replaceMap.put("{name}", getName(object));
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{name}", getName(object));
panelBuilder.addReplaceData(replaceMap);
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanelHandler(getParentHolder(), object);
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanelHandler(getParentHolder(), object);
fillPanel(panel, object);
fillPanel(panel, object);
panel.openFor(player);
panel.openFor(player);
});
}
@Override

View File

@ -1,6 +1,7 @@
package com.songoda.epicbosses.panel.handlers;
import com.songoda.epicbosses.managers.BossPanelManager;
import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.panel.Panel;
import com.songoda.epicbosses.utils.panel.base.PanelHandler;
import com.songoda.epicbosses.utils.panel.builder.PanelBuilder;
@ -24,14 +25,16 @@ public abstract class MainListPanelHandler extends PanelHandler {
@Override
public void openFor(Player player) {
Panel panel = getPanelBuilder().getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanel(this.bossPanelManager.getMainMenu().getPanel());
ServerUtils.get().runTaskAsync(() -> {
Panel panel = getPanelBuilder().getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanel(this.bossPanelManager.getMainMenu().getPanel());
fillPanel(panel);
fillPanel(panel);
panel.openFor(player);
panel.openFor(player);
});
}
}

View File

@ -4,6 +4,7 @@ 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.utils.ServerUtils;
import com.songoda.epicbosses.utils.StringUtils;
import com.songoda.epicbosses.utils.itemstack.ItemStackConverter;
import com.songoda.epicbosses.utils.itemstack.ItemStackUtils;
@ -67,21 +68,23 @@ public abstract class SingleMessageListEditor<T> extends VariablePanelHandler<T>
@Override
public void openFor(Player player, T object) {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
ServerUtils.get().runTaskAsync(() -> {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
replaceMap.put("{name}", getName(object));
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{name}", getName(object));
panelBuilder.addReplaceData(replaceMap);
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanelHandler(getParentHolder(), object);
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanelHandler(getParentHolder(), object);
fillPanel(panel, object);
fillPanel(panel, object);
panel.openFor(player);
panel.openFor(player);
});
}
@Override

View File

@ -9,6 +9,7 @@ import com.songoda.epicbosses.skills.Skill;
import com.songoda.epicbosses.skills.SkillMode;
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;
import com.songoda.epicbosses.utils.panel.base.ClickAction;
import com.songoda.epicbosses.utils.panel.base.handlers.VariablePanelHandler;
@ -41,42 +42,44 @@ public class MainSkillEditorPanel extends VariablePanelHandler<Skill> {
@Override
public void openFor(Player player, Skill skill) {
Map<String, String> replaceMap = new HashMap<>();
String customMessage = skill.getCustomMessage();
Double radius = skill.getRadius();
String mode = skill.getMode();
String displayName = skill.getDisplayName();
String type = skill.getType();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
ServerUtils.get().runTaskAsync(() -> {
Map<String, String> replaceMap = new HashMap<>();
String customMessage = skill.getCustomMessage();
Double radius = skill.getRadius();
String mode = skill.getMode();
String displayName = skill.getDisplayName();
String type = skill.getType();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
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";
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);
panelBuilder.addReplaceData(replaceMap);
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);
panelBuilder.addReplaceData(replaceMap);
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true);
PanelBuilderCounter counter = panel.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true);
PanelBuilderCounter counter = panel.getPanelBuilderCounter();
counter.getSlotsWith("Radius").forEach(slot -> panel.setOnClick(slot, getRadiusAction(skill)));
counter.getSlotsWith("CustomData").forEach(slot -> panel.setOnClick(slot, getCustomDataAction(skill)));
counter.getSlotsWith("Mode").forEach(slot -> panel.setOnClick(slot, getModeAction(skill)));
counter.getSlotsWith("DisplayName").forEach(slot -> panel.setOnClick(slot, getDisplayNameAction(skill)));
counter.getSlotsWith("CustomMessage").forEach(slot -> panel.setOnClick(slot, getCustomMessageAction(skill)));
counter.getSlotsWith("Type").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getSkillTypeEditMenu().openFor((Player) event.getWhoClicked(), skill)));
counter.getSlotsWith("Radius").forEach(slot -> panel.setOnClick(slot, getRadiusAction(skill)));
counter.getSlotsWith("CustomData").forEach(slot -> panel.setOnClick(slot, getCustomDataAction(skill)));
counter.getSlotsWith("Mode").forEach(slot -> panel.setOnClick(slot, getModeAction(skill)));
counter.getSlotsWith("DisplayName").forEach(slot -> panel.setOnClick(slot, getDisplayNameAction(skill)));
counter.getSlotsWith("CustomMessage").forEach(slot -> panel.setOnClick(slot, getCustomMessageAction(skill)));
counter.getSlotsWith("Type").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getSkillTypeEditMenu().openFor((Player) event.getWhoClicked(), skill)));
panel.openFor(player);
panel.openFor(player);
});
}
@Override

View File

@ -5,6 +5,7 @@ import com.songoda.epicbosses.api.BossAPI;
import com.songoda.epicbosses.managers.BossPanelManager;
import com.songoda.epicbosses.managers.files.SkillsFileManager;
import com.songoda.epicbosses.skills.Skill;
import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.panel.Panel;
import com.songoda.epicbosses.utils.panel.base.ClickAction;
import com.songoda.epicbosses.utils.panel.base.handlers.VariablePanelHandler;
@ -38,25 +39,27 @@ public class SkillTypeEditorPanel extends VariablePanelHandler<Skill> {
@Override
public void openFor(Player player, Skill skill) {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
ServerUtils.get().runTaskAsync(() -> {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
replaceMap.put("{name}", BossAPI.getSkillName(skill));
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{name}", BossAPI.getSkillName(skill));
panelBuilder.addReplaceData(replaceMap);
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanelHandler(this.bossPanelManager.getMainSkillEditMenu(), skill);
PanelBuilderCounter counter = panel.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanelHandler(this.bossPanelManager.getMainSkillEditMenu(), skill);
PanelBuilderCounter counter = panel.getPanelBuilderCounter();
counter.getSlotsWith("Command").forEach(slot -> panel.setOnClick(slot, getCommandAction(skill)));
counter.getSlotsWith("Custom").forEach(slot -> panel.setOnClick(slot, getCustomAction(skill)));
counter.getSlotsWith("Potion").forEach(slot -> panel.setOnClick(slot, getPotionAction(skill)));
counter.getSlotsWith("Group").forEach(slot -> panel.setOnClick(slot, getGroupAction(skill)));
counter.getSlotsWith("Command").forEach(slot -> panel.setOnClick(slot, getCommandAction(skill)));
counter.getSlotsWith("Custom").forEach(slot -> panel.setOnClick(slot, getCustomAction(skill)));
counter.getSlotsWith("Potion").forEach(slot -> panel.setOnClick(slot, getPotionAction(skill)));
counter.getSlotsWith("Group").forEach(slot -> panel.setOnClick(slot, getGroupAction(skill)));
panel.openFor(player);
panel.openFor(player);
});
}
@Override

View File

@ -8,6 +8,7 @@ import com.songoda.epicbosses.skills.Skill;
import com.songoda.epicbosses.skills.elements.SubCommandSkillElement;
import com.songoda.epicbosses.skills.types.CommandSkillElement;
import com.songoda.epicbosses.utils.NumberUtils;
import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.StringUtils;
import com.songoda.epicbosses.utils.itemstack.ItemStackUtils;
import com.songoda.epicbosses.utils.panel.Panel;
@ -54,20 +55,22 @@ public class CommandSkillEditorPanel extends VariablePanelHandler<Skill> {
@Override
public void openFor(Player player, Skill skill) {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
ServerUtils.get().runTaskAsync(() -> {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
replaceMap.put("{name}", BossAPI.getSkillName(skill));
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{name}", BossAPI.getSkillName(skill));
panelBuilder.addReplaceData(replaceMap);
PanelBuilderCounter counter = panelBuilder.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getMainSkillEditMenu(), skill);
PanelBuilderCounter counter = panelBuilder.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getMainSkillEditMenu(), skill);
counter.getSlotsWith("AddNew").forEach(slot -> panel.setOnClick(slot, getAddNewAction(skill)));
fillPanel(panel, skill);
counter.getSlotsWith("AddNew").forEach(slot -> panel.setOnClick(slot, getAddNewAction(skill)));
fillPanel(panel, skill);
panel.openFor(player);
panel.openFor(player);
});
}
@Override

View File

@ -10,6 +10,7 @@ import com.songoda.epicbosses.skills.Skill;
import com.songoda.epicbosses.skills.types.CustomSkillElement;
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;
import com.songoda.epicbosses.utils.panel.base.ClickAction;
import com.songoda.epicbosses.utils.panel.base.handlers.VariablePanelHandler;
@ -42,26 +43,28 @@ public class CustomSkillEditorPanel extends VariablePanelHandler<Skill> {
@Override
public void openFor(Player player, Skill skill) {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
CustomSkillElement customSkillElement = this.bossSkillManager.getCustomSkillElement(skill);
Double multiplier = customSkillElement.getCustom().getMultiplier();
String multiplierValue = multiplier == null? "N/A" : NumberUtils.get().formatDouble(multiplier);
ServerUtils.get().runTaskAsync(() -> {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
CustomSkillElement customSkillElement = this.bossSkillManager.getCustomSkillElement(skill);
Double multiplier = customSkillElement.getCustom().getMultiplier();
String multiplierValue = multiplier == null? "N/A" : NumberUtils.get().formatDouble(multiplier);
replaceMap.put("{name}", BossAPI.getSkillName(skill));
replaceMap.put("{type}", customSkillElement.getCustom().getType());
replaceMap.put("{multiplier}", multiplierValue);
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{name}", BossAPI.getSkillName(skill));
replaceMap.put("{type}", customSkillElement.getCustom().getType());
replaceMap.put("{multiplier}", multiplierValue);
panelBuilder.addReplaceData(replaceMap);
PanelBuilderCounter counter = panelBuilder.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getMainSkillEditMenu(), skill);
PanelBuilderCounter counter = panelBuilder.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getMainSkillEditMenu(), skill);
counter.getSlotsWith("Type").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getCustomSkillTypeEditorMenu().openFor((Player) event.getWhoClicked(), skill, customSkillElement)));
counter.getSlotsWith("SpecialSettings").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getSpecialSettingsEditorMenu().openFor((Player) event.getWhoClicked(), skill, customSkillElement)));
counter.getSlotsWith("Multiplier").forEach(slot -> panel.setOnClick(slot, getMultiplierAction(skill, customSkillElement)));
counter.getSlotsWith("Type").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getCustomSkillTypeEditorMenu().openFor((Player) event.getWhoClicked(), skill, customSkillElement)));
counter.getSlotsWith("SpecialSettings").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getSpecialSettingsEditorMenu().openFor((Player) event.getWhoClicked(), skill, customSkillElement)));
counter.getSlotsWith("Multiplier").forEach(slot -> panel.setOnClick(slot, getMultiplierAction(skill, customSkillElement)));
panel.openFor(player);
panel.openFor(player);
});
}
@Override

View File

@ -8,6 +8,7 @@ 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.ServerUtils;
import com.songoda.epicbosses.utils.itemstack.ItemStackConverter;
import com.songoda.epicbosses.utils.itemstack.ItemStackUtils;
import com.songoda.epicbosses.utils.panel.Panel;
@ -60,18 +61,20 @@ public class GroupSkillEditorPanel extends VariablePanelHandler<Skill> {
@Override
public void openFor(Player player, Skill skill) {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
ServerUtils.get().runTaskAsync(() -> {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
replaceMap.put("{name}", BossAPI.getSkillName(skill));
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{name}", BossAPI.getSkillName(skill));
panelBuilder.addReplaceData(replaceMap);
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getMainSkillEditMenu(), skill);
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getMainSkillEditMenu(), skill);
fillPanel(panel, skill);
fillPanel(panel, skill);
panel.openFor(player);
panel.openFor(player);
});
}
@Override

View File

@ -9,6 +9,7 @@ import com.songoda.epicbosses.managers.files.SkillsFileManager;
import com.songoda.epicbosses.skills.Skill;
import com.songoda.epicbosses.skills.types.PotionSkillElement;
import com.songoda.epicbosses.utils.NumberUtils;
import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.StringUtils;
import com.songoda.epicbosses.utils.itemstack.ItemStackUtils;
import com.songoda.epicbosses.utils.panel.Panel;
@ -70,24 +71,26 @@ public class PotionSkillEditorPanel extends VariablePanelHandler<Skill> {
@Override
public void openFor(Player player, Skill skill) {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
ServerUtils.get().runTaskAsync(() -> {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
replaceMap.put("{name}", BossAPI.getSkillName(skill));
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{name}", BossAPI.getSkillName(skill));
panelBuilder.addReplaceData(replaceMap);
PanelBuilderCounter counter = panelBuilder.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanelHandler(this.bossPanelManager.getMainSkillEditMenu(), skill);
PanelBuilderCounter counter = panelBuilder.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setDestroyWhenDone(true)
.setCancelClick(true)
.setCancelLowerClick(true)
.setParentPanelHandler(this.bossPanelManager.getMainSkillEditMenu(), skill);
counter.getSlotsWith("PotionEffect").forEach(slot -> panel.setOnClick(slot,
event -> this.bossPanelManager.getCreatePotionEffectMenu().openFor((Player) event.getWhoClicked(), skill, new PotionEffectHolder("", 1, 1))));
fillPanel(panel, skill);
counter.getSlotsWith("PotionEffect").forEach(slot -> panel.setOnClick(slot,
event -> this.bossPanelManager.getCreatePotionEffectMenu().openFor((Player) event.getWhoClicked(), skill, new PotionEffectHolder("", 1, 1))));
fillPanel(panel, skill);
panel.openFor(player);
panel.openFor(player);
});
}
@Override

View File

@ -67,18 +67,20 @@ public class CommandListSkillEditorPanel extends SubVariablePanelHandler<Skill,
@Override
public void openFor(Player player, Skill skill, SubCommandSkillElement subCommandSkillElement) {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
ServerUtils.get().runTaskAsync(() -> {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
replaceMap.put("{name}", BossAPI.getSkillName(skill));
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{name}", BossAPI.getSkillName(skill));
panelBuilder.addReplaceData(replaceMap);
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getCommandSkillEditorPanel(), skill);
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getCommandSkillEditorPanel(), skill);
fillPanel(panel, skill, subCommandSkillElement);
fillPanel(panel, skill, subCommandSkillElement);
panel.openFor(player);
panel.openFor(player);
});
}
@Override

View File

@ -11,6 +11,7 @@ import com.songoda.epicbosses.skills.elements.SubCommandSkillElement;
import com.songoda.epicbosses.skills.types.CommandSkillElement;
import com.songoda.epicbosses.utils.Message;
import com.songoda.epicbosses.utils.NumberUtils;
import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.StringUtils;
import com.songoda.epicbosses.utils.panel.Panel;
import com.songoda.epicbosses.utils.panel.base.ClickAction;
@ -49,26 +50,28 @@ public class ModifyCommandEditorPanel extends SubVariablePanelHandler<Skill, Sub
@Override
public void openFor(Player player, Skill skill, SubCommandSkillElement subCommandSkillElement) {
Map<String, String> replaceMap = new HashMap<>();
List<String> commands = subCommandSkillElement.getCommands();
Double chance = subCommandSkillElement.getChance();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
ServerUtils.get().runTaskAsync(() -> {
Map<String, String> replaceMap = new HashMap<>();
List<String> commands = subCommandSkillElement.getCommands();
Double chance = subCommandSkillElement.getChance();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
if(commands == null) commands = new ArrayList<>();
if(chance == null) chance = 100.0;
if(commands == null) commands = new ArrayList<>();
if(chance == null) chance = 100.0;
replaceMap.put("{commands}", StringUtils.get().appendList(commands));
replaceMap.put("{chance}", NumberUtils.get().formatDouble(chance));
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{commands}", StringUtils.get().appendList(commands));
replaceMap.put("{chance}", NumberUtils.get().formatDouble(chance));
panelBuilder.addReplaceData(replaceMap);
PanelBuilderCounter counter = panelBuilder.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getCommandSkillEditorPanel(), skill);
PanelBuilderCounter counter = panelBuilder.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getCommandSkillEditorPanel(), skill);
counter.getSlotsWith("Chance").forEach(slot -> panel.setOnClick(slot, getChanceAction(skill, subCommandSkillElement)));
counter.getSlotsWith("Commands").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getCommandListSkillEditMenu().openFor((Player) event.getWhoClicked(), skill, subCommandSkillElement)));
counter.getSlotsWith("Chance").forEach(slot -> panel.setOnClick(slot, getChanceAction(skill, subCommandSkillElement)));
counter.getSlotsWith("Commands").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getCommandListSkillEditMenu().openFor((Player) event.getWhoClicked(), skill, subCommandSkillElement)));
panel.openFor(player);
panel.openFor(player);
});
}
@Override

View File

@ -9,6 +9,7 @@ import com.songoda.epicbosses.skills.CustomSkillHandler;
import com.songoda.epicbosses.skills.Skill;
import com.songoda.epicbosses.skills.interfaces.IOtherSkillDataElement;
import com.songoda.epicbosses.skills.types.CustomSkillElement;
import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.itemstack.ItemStackConverter;
import com.songoda.epicbosses.utils.itemstack.ItemStackUtils;
import com.songoda.epicbosses.utils.panel.Panel;
@ -43,19 +44,21 @@ public class CustomSkillTypeEditorPanel extends SubVariablePanelHandler<Skill, C
@Override
public void openFor(Player player, Skill skill, CustomSkillElement customSkillElement) {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
ServerUtils.get().runTaskAsync(() -> {
Map<String, String> replaceMap = new HashMap<>();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
replaceMap.put("{name}", BossAPI.getSkillName(skill));
replaceMap.put("{selected}", customSkillElement.getCustom().getType());
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{name}", BossAPI.getSkillName(skill));
replaceMap.put("{selected}", customSkillElement.getCustom().getType());
panelBuilder.addReplaceData(replaceMap);
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getCustomSkillEditorPanel(), skill);
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getCustomSkillEditorPanel(), skill);
fillPanel(panel, skill, customSkillElement);
fillPanel(panel, skill, customSkillElement);
panel.openFor(player);
panel.openFor(player);
});
}
@Override

View File

@ -4,6 +4,7 @@ import com.songoda.epicbosses.CustomBosses;
import com.songoda.epicbosses.managers.BossPanelManager;
import com.songoda.epicbosses.skills.Skill;
import com.songoda.epicbosses.skills.types.CustomSkillElement;
import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.StringUtils;
import com.songoda.epicbosses.utils.itemstack.ItemStackUtils;
import com.songoda.epicbosses.utils.panel.Panel;
@ -56,11 +57,13 @@ public abstract class MaterialTypeEditorPanel extends SubVariablePanelHandler<Sk
@Override
public void openFor(Player player, Skill skill, CustomSkillElement customSkillElement) {
Panel panel = getPanelBuilder().getPanel()
.setParentPanelHandler(getParentHolder(), skill, customSkillElement);
ServerUtils.get().runTaskAsync(() -> {
Panel panel = getPanelBuilder().getPanel()
.setParentPanelHandler(getParentHolder(), skill, customSkillElement);
fillPanel(panel, skill, customSkillElement);
panel.openFor(player);
fillPanel(panel, skill, customSkillElement);
panel.openFor(player);
});
}
@Override

View File

@ -10,6 +10,7 @@ import com.songoda.epicbosses.managers.files.MinionsFileManager;
import com.songoda.epicbosses.skills.Skill;
import com.songoda.epicbosses.skills.elements.CustomMinionSkillElement;
import com.songoda.epicbosses.skills.types.CustomSkillElement;
import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.StringUtils;
import com.songoda.epicbosses.utils.itemstack.ItemStackConverter;
import com.songoda.epicbosses.utils.itemstack.ItemStackUtils;
@ -65,11 +66,13 @@ public class MinionSelectEditorPanel extends SubVariablePanelHandler<Skill, Cust
@Override
public void openFor(Player player, Skill skill, CustomSkillElement customSkillElement) {
Panel panel = getPanelBuilder().getPanel()
.setParentPanelHandler(this.bossPanelManager.getSpecialSettingsEditorMenu(), skill, customSkillElement);
ServerUtils.get().runTaskAsync(() -> {
Panel panel = getPanelBuilder().getPanel()
.setParentPanelHandler(this.bossPanelManager.getSpecialSettingsEditorMenu(), skill, customSkillElement);
fillPanel(panel, skill, customSkillElement);
panel.openFor(player);
fillPanel(panel, skill, customSkillElement);
panel.openFor(player);
});
}
@Override

View File

@ -9,6 +9,7 @@ import com.songoda.epicbosses.skills.interfaces.ICustomSettingAction;
import com.songoda.epicbosses.skills.Skill;
import com.songoda.epicbosses.skills.types.CustomSkillElement;
import com.songoda.epicbosses.utils.Debug;
import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.itemstack.ItemStackUtils;
import com.songoda.epicbosses.utils.panel.Panel;
import com.songoda.epicbosses.utils.panel.base.ClickAction;
@ -41,19 +42,21 @@ public class SpecialSettingsEditorPanel extends SubVariablePanelHandler<Skill, C
@Override
public void openFor(Player player, Skill skill, CustomSkillElement customSkillElement) {
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
Map<String, String> replaceMap = new HashMap<>();
ServerUtils.get().runTaskAsync(() -> {
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
Map<String, String> replaceMap = new HashMap<>();
replaceMap.put("{name}", BossAPI.getSkillName(skill));
replaceMap.put("{selected}", customSkillElement.getCustom().getType());
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{name}", BossAPI.getSkillName(skill));
replaceMap.put("{selected}", customSkillElement.getCustom().getType());
panelBuilder.addReplaceData(replaceMap);
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getCustomSkillEditorPanel(), skill);
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getCustomSkillEditorPanel(), skill);
fillPanel(panel, skill, customSkillElement);
fillPanel(panel, skill, customSkillElement);
panel.openFor(player);
panel.openFor(player);
});
}
@Override

View File

@ -11,6 +11,7 @@ import com.songoda.epicbosses.skills.types.PotionSkillElement;
import com.songoda.epicbosses.utils.Message;
import com.songoda.epicbosses.utils.NumberUtils;
import com.songoda.epicbosses.utils.PotionEffectFinder;
import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.panel.Panel;
import com.songoda.epicbosses.utils.panel.base.ClickAction;
import com.songoda.epicbosses.utils.panel.base.handlers.SubVariablePanelHandler;
@ -53,36 +54,36 @@ public class CreatePotionEffectEditorPanel extends SubVariablePanelHandler<Skill
@Override
public void openFor(Player player, Skill skill, PotionEffectHolder potionEffectHolder) {
Map<String, String> replaceMap = new HashMap<>();
String effect = potionEffectHolder.getType();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
ServerUtils.get().runTaskAsync(() -> {
Map<String, String> replaceMap = new HashMap<>();
String effect = potionEffectHolder.getType();
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
if(effect == null || effect.isEmpty()) effect = "N/A";
if(effect == null || effect.isEmpty()) effect = "N/A";
replaceMap.put("{duration}", NumberUtils.get().formatDouble(potionEffectHolder.getDuration()));
replaceMap.put("{level}", NumberUtils.get().formatDouble(potionEffectHolder.getLevel()));
replaceMap.put("{effect}", effect);
panelBuilder.addReplaceData(replaceMap);
replaceMap.put("{duration}", NumberUtils.get().formatDouble(potionEffectHolder.getDuration()));
replaceMap.put("{level}", NumberUtils.get().formatDouble(potionEffectHolder.getLevel()));
replaceMap.put("{effect}", effect);
panelBuilder.addReplaceData(replaceMap);
Panel panel = panelBuilder.getPanel()
.setCancelClick(true)
.setCancelLowerClick(true)
.setDestroyWhenDone(true)
.setParentPanelHandler(this.bossPanelManager.getPotionSkillEditorPanel(), skill);
Panel panel = panelBuilder.getPanel()
.setCancelClick(true)
.setCancelLowerClick(true)
.setDestroyWhenDone(true)
.setParentPanelHandler(this.bossPanelManager.getPotionSkillEditorPanel(), skill);
PanelBuilderCounter counter = panel.getPanelBuilderCounter();
PanelBuilderCounter counter = panel.getPanelBuilderCounter();
counter.getSlotsWith("Cancel").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getPotionSkillEditorPanel().openFor((Player) event.getWhoClicked(), skill)));
counter.getSlotsWith("Confirm").forEach(slot -> panel.setOnClick(slot, getConfirmAction(skill, potionEffectHolder)));
counter.getSlotsWith("Level").forEach(slot -> panel.setOnClick(slot, getLevelAction(skill, potionEffectHolder)));
counter.getSlotsWith("Duration").forEach(slot -> panel.setOnClick(slot, getDurationAction(skill, potionEffectHolder)));
counter.getSlotsWith("Effect").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getPotionEffectTypeEditMenu().openFor((Player) event.getWhoClicked(), skill, potionEffectHolder)));
counter.getSlotsWith("Cancel").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getPotionSkillEditorPanel().openFor((Player) event.getWhoClicked(), skill)));
counter.getSlotsWith("Confirm").forEach(slot -> panel.setOnClick(slot, getConfirmAction(skill, potionEffectHolder)));
counter.getSlotsWith("Level").forEach(slot -> panel.setOnClick(slot, getLevelAction(skill, potionEffectHolder)));
counter.getSlotsWith("Duration").forEach(slot -> panel.setOnClick(slot, getDurationAction(skill, potionEffectHolder)));
counter.getSlotsWith("Effect").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getPotionEffectTypeEditMenu().openFor((Player) event.getWhoClicked(), skill, potionEffectHolder)));
panel.openFor(player);
panel.openFor(player);
});
}
private ClickAction getDurationAction(Skill skill, PotionEffectHolder potionEffectHolder) {
return event -> {
ClickType clickType = event.getClick();

View File

@ -59,12 +59,14 @@ public class PotionEffectTypeEditorPanel extends SubVariablePanelHandler<Skill,
@Override
public void openFor(Player player, Skill skill, PotionEffectHolder potionEffectHolder) {
Panel panel = getPanelBuilder().getPanel()
.setParentPanelHandler(this.bossPanelManager.getCreatePotionEffectMenu(), skill, potionEffectHolder);
ServerUtils.get().runTaskAsync(() -> {
Panel panel = getPanelBuilder().getPanel()
.setParentPanelHandler(this.bossPanelManager.getCreatePotionEffectMenu(), skill, potionEffectHolder);
fillPanel(panel, skill, potionEffectHolder);
fillPanel(panel, skill, potionEffectHolder);
panel.openFor(player);
panel.openFor(player);
});
}
@Override

View File

@ -17,6 +17,7 @@ public enum Debug {
MECHANIC_APPLICATION_FAILED("Some mechanics have failed to be applied. It got stuck at {0} mechanic."),
BOSS_NAME_EXISTS("A boss was attempted to be created with the name {0} but there is already a boss with that name."),
DROPTABLE_NAME_EXISTS("A droptable was attempted to be created with the name {0} but there is already a drop table with that name."),
AUTOSPAWN_NAME_EXISTS("A autospawn was attempted to be created with the name {0} but there is already an auto spawn with that name."),
SKILL_NAME_EXISTS("A skill was attempted to be created with the name {0} but there is already a skill with that name."),
MINION_NAME_EXISTS("A minion was attempted to be created with the name {0} but there is already a minion with that name."),
BOSS_CONTAINER_SAVE("The BossEntity map was saved in, {0} succeeded, and {1} failed. Listed below are the saved data which already existed in the container: \n{2}"),

View File

@ -115,7 +115,7 @@ public enum Message {
"&7&o(To add a new line use &7||&7&o in-between the messages.)\n" +
"&b/boss new message [name] [messages] &8» &7Used to create a new message section.\n" +
"&7&o(To add a new line use &7||&7&o in-between the messages.)\n" +
"&7\n" +
"&7/boss new autospawn [name] &8» &7Used to create a new auto spawn section.\n" +
"&7\n" +
"&7\n" +
"&7\n" +
@ -165,11 +165,13 @@ public enum Message {
Boss_New_CreateArgumentsSkill("&b&lEpicBosses &8» &7Create a new skill with the command &f/boss new skill [name] [type] [mode]&7."),
Boss_New_CreateArgumentsMessage("&b&lEpicBosses &8» &7Create a new message with the command &f/boss new message [name] [message(s)]. \n&7&oUse &f|| &7&oto reference a new line."),
Boss_New_CreateArgumentsCommand("&b&lEpicBosses &8» &7Create a new command with the command &f/boss new command [name] [command(s)]. \n&7&oUse &f|| &7&oto reference a new line."),
Boss_New_CreateArgumentsAutoSpawn("&b&lEpicBosses &8» &7Create a new auto spawn with the command &f/boss new autospawn [name]."),
Boss_New_AlreadyExists("&c&l(!) &cThe specified {0} name already exists. Please try another name."),
Boss_New_InvalidDropTableType("&c&l(!) &cThe specified DropTable type is invalid. Please use &fGive, Drop, Spray&c."),
Boss_New_InvalidSkillType("&c&l(!) &cThe specified Skill type is invalid. Please use &fCustom, Command, Group, Potion&c."),
Boss_New_InvalidSkillMode("&c&l(!) &cThe specified Skill mode is invalid. Please use &fAll, Random, One, Boss&c."),
Boss_New_DropTable("&b&lEpicBosses &8» &7You have created a new drop table with the name &f{0}&7 and type &f{1}&7."),
Boss_New_AutoSpawn("&b&lEpicBosses &8» &7You have created a new auto spawn with the name &f{0}&7."),
Boss_New_Skill("&b&lEpicBosses &8» &7You have created a new skill with the name &f{0}&7 and type &f{1}&7."),
Boss_New_Command("&b&lEpicBosses &8» &7You have created a new command with the name &f{0}&7."),
Boss_New_Message("&b&lEpicBosses &8» &7You have created a new message with the name &f{0}&7."),

View File

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