diff --git a/plugin-modules/Core/resources-yml/editor.yml b/plugin-modules/Core/resources-yml/editor.yml index 8fe3d95..d18845f 100644 --- a/plugin-modules/Core/resources-yml/editor.yml +++ b/plugin-modules/Core/resources-yml/editor.yml @@ -2682,4 +2682,95 @@ AutoSpawnCustomSettingsEditMenu: name: '&7' '54': type: GLASS_PANE - name: '&7' \ No newline at end of file + name: '&7' +AutoSpawnSpecialSettingsEditMenu: + name: '&b&l{name} AutoSpawn' + slots: 9 + Settings: + backButton: true + emptySpaceFiller: true + EmptySpaceFiller: + type: WHITE_STAINED_GLASS_PANE + name: '&7' + Buttons: + backButton: 5 + Items: + '1': + type: DIAMOND + name: '&e&lShuffle Entities' + lore: + - '&bCurrently: &f{shuffleEntities}' + - '&7' + - '&7Click here to toggle the entities being' + - '&7shuffled before being called.' + Button: ShuffleEntities + '2': + type: GUNPOWDER + name: '&e&lMax Alive Entities At Once' + lore: + - '&bCurrently: &f{maxAliveEntities}' + - '&7' + - '&7This is the max alive entities from this' + - '&7auto spawn section at once. If more then' + - '&7this amount of entities is spawned at once' + - '&7then you will have to kill all entities' + - '&7before another can spawn.' + - '&7' + - '&bLeft Click &8» &f+1' + - '&bRight Click &8» &f-1' + Button: MaxAliveEntities + '3': + type: FIREWORK_CHARGE + name: '&e&lAmount of Bosses Per Spawn' + lore: + - '&bCurrently: &f{amountPerSpawn}' + - '&7' + - '&7This is the amount of bosses to be spawned' + - '&7at one interval. This can be higher then the' + - '&7max alive entities at once but you will need' + - '&7to kill the amount of bosses till it the currently' + - '&7active amount is less then the max amount so' + - '&7it can spawn again.' + - '&7' + - '&bLeft Click &8» &f+1' + - '&bRight Click &8» &f-1' + Button: AmountPerSpawn + '5': + type: REDSTONE + name: '&cClick here to go back' + lore: + - '&7Click this button to go back.' + '7': + type: PAPER + name: '&e&lSpawn When Chunk Isn''t Loaded' + lore: + - '&bCurrently: &f{chunkIsntLoaded}' + - '&7' + - '&7This will determine if the boss can spawn' + - '&7even when the chunk is unloaded. This will' + - '&7load the chunk and keep it loaded while the' + - '&7boss is alive if this is set to true.' + Button: ChunkIsntLoaded + '8': + type: EMERALD + name: '&e&lOverride Default Spawn Message' + lore: + - '&bCurrently: &f{overrideDefaultMessage}' + - '&7' + - '&7Click here to toggle the overriding of the' + - '&7default spawn messages. If this is set to' + - '&7true it won''t use the default boss spawn' + - '&7messages and it will use the one assigned' + - '&7to this auto spawn section.' + Button: OverrideSpawnMessage + '9': + type: CHEST + name: '&e&lSpawn Message' + lore: + - '&bCurrently: &f{spawnMessage}' + - '&7' + - '&7Click here to change which spawn message' + - '&7is used for the auto spawn section. If the' + - '&7overriding of the default message is true' + - '&7only then will this message be used.' + Button: SpawnMessage \ No newline at end of file diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/panel/autospawns/AutoSpawnSpecialSettingsEditorPanel.java b/plugin-modules/Core/src/com/songoda/epicbosses/panel/autospawns/AutoSpawnSpecialSettingsEditorPanel.java index c3b2114..1c43f4f 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/panel/autospawns/AutoSpawnSpecialSettingsEditorPanel.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/panel/autospawns/AutoSpawnSpecialSettingsEditorPanel.java @@ -1,9 +1,81 @@ package com.songoda.epicbosses.panel.autospawns; +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.managers.BossPanelManager; +import com.songoda.epicbosses.managers.files.AutoSpawnFileManager; +import com.songoda.epicbosses.utils.NumberUtils; +import com.songoda.epicbosses.utils.ObjectUtils; +import com.songoda.epicbosses.utils.panel.Panel; +import com.songoda.epicbosses.utils.panel.base.handlers.VariablePanelHandler; +import com.songoda.epicbosses.utils.panel.builder.PanelBuilder; +import com.songoda.epicbosses.utils.panel.builder.PanelBuilderCounter; +import org.bukkit.entity.Player; + +import java.util.HashMap; +import java.util.Map; + /** * @author Charles Cullen * @version 1.0.0 * @since 07-Jan-19 */ -public class AutoSpawnSpecialSettingsEditorPanel { +public class AutoSpawnSpecialSettingsEditorPanel extends VariablePanelHandler { + + 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 + public void fillPanel(Panel panel, AutoSpawn autoSpawn) { + + } + + @Override + public void openFor(Player player, AutoSpawn autoSpawn) { + Map 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); + + Panel panel = panelBuilder.getPanel() + .setParentPanelHandler(this.bossPanelManager.getMainAutoSpawnEditPanel(), autoSpawn); + PanelBuilderCounter counter = panel.getPanelBuilderCounter(); + + counter.getSlotsWith("ShuffleEntities").forEach(slot -> {}); + counter.getSlotsWith("MaxAliveEntities").forEach(slot -> {}); + counter.getSlotsWith("AmountPerSpawn").forEach(slot -> {}); + counter.getSlotsWith("ChunkIsntLoaded").forEach(slot -> {}); + counter.getSlotsWith("OverrideSpawnMessage").forEach(slot -> {}); + counter.getSlotsWith("SpawnMessage").forEach(slot -> {}); + + panel.openFor(player); + } + + @Override + public void initializePanel(PanelBuilder panelBuilder) { + + } } diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/panel/autospawns/MainAutoSpawnEditorPanel.java b/plugin-modules/Core/src/com/songoda/epicbosses/panel/autospawns/MainAutoSpawnEditorPanel.java index 70bbeba..ac84460 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/panel/autospawns/MainAutoSpawnEditorPanel.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/panel/autospawns/MainAutoSpawnEditorPanel.java @@ -78,29 +78,35 @@ public class MainAutoSpawnEditorPanel extends VariablePanelHandler { private ClickAction getEditingAction(AutoSpawn autoSpawn) { return event -> { Player player = (Player) event.getWhoClicked(); + boolean editing = autoSpawn.isEditing(); - if(autoSpawn.isCompleteEnoughToSpawn()) { - autoSpawn.setEditing(!autoSpawn.isEditing()); - this.autoSpawnFileManager.save(); - player.closeInventory(); + if(!editing) { + autoSpawn.setEditing(true); + } else { + if(!autoSpawn.isCompleteEnoughToSpawn()) { + Message.Boss_AutoSpawn_NotCompleteEnough.msg(player); + return; + } - Message.Boss_AutoSpawn_ToggleEditing.msg(player, BossAPI.getAutoSpawnName(autoSpawn), autoSpawn.isEditing()); + autoSpawn.setEditing(false); + } - if(autoSpawn.isEditing()) { - this.autoSpawnManager.stopInterval(autoSpawn); - } else { - ActiveAutoSpawnHolder autoSpawnHolder = this.autoSpawnManager.getActiveAutoSpawnHolder(autoSpawn); + Message.Boss_AutoSpawn_ToggleEditing.msg(player, BossAPI.getAutoSpawnName(autoSpawn), autoSpawn.isEditing()); + this.autoSpawnFileManager.save(); + player.closeInventory(); - if(autoSpawnHolder != null) { - if(autoSpawnHolder.getSpawnType() == SpawnType.INTERVAL) { - ActiveIntervalAutoSpawnHolder intervalAutoSpawnHolder = (ActiveIntervalAutoSpawnHolder) autoSpawnHolder; + if(autoSpawn.isEditing()) { + this.autoSpawnManager.stopInterval(autoSpawn); + } else { + ActiveAutoSpawnHolder autoSpawnHolder = this.autoSpawnManager.getActiveAutoSpawnHolder(autoSpawn); - intervalAutoSpawnHolder.restartInterval(); - } + if(autoSpawnHolder != null) { + if(autoSpawnHolder.getSpawnType() == SpawnType.INTERVAL) { + ActiveIntervalAutoSpawnHolder intervalAutoSpawnHolder = (ActiveIntervalAutoSpawnHolder) autoSpawnHolder; + + intervalAutoSpawnHolder.restartInterval(); } } - } else { - Message.Boss_AutoSpawn_NotCompleteEnough.msg(player); } }; } diff --git a/pom.xml b/pom.xml index 8e73159..f8b717f 100644 --- a/pom.xml +++ b/pom.xml @@ -19,7 +19,7 @@ - 1.0.0-U188 + 1.0.0-U189 EpicBosses com.songoda.epicbosses.CustomBosses AMinecraftDev