1.0.0-SNAPSHOT-U190

+ Completed the AutoSpawnSpecialSettingsEditorPanel
+ Updated the AutoSpawnEditor Panels so that they cannot be modified unless the edit mode is enabled on the auto spawn section
+ Begun working on AutoSpawnMessageEditorPanel
This commit is contained in:
Charles 2019-01-09 00:08:23 +08:00
parent 1f8bd1cf91
commit 7f4c380dd7
8 changed files with 142 additions and 17 deletions

View File

@ -5,13 +5,10 @@ import com.songoda.epicbosses.autospawns.AutoSpawn;
import com.songoda.epicbosses.autospawns.types.IntervalSpawnElement; import com.songoda.epicbosses.autospawns.types.IntervalSpawnElement;
import com.songoda.epicbosses.managers.files.AutoSpawnFileManager; import com.songoda.epicbosses.managers.files.AutoSpawnFileManager;
import com.songoda.epicbosses.utils.IHandler; import com.songoda.epicbosses.utils.IHandler;
import com.songoda.epicbosses.utils.Message;
import com.songoda.epicbosses.utils.ServerUtils; import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.StringUtils;
import com.songoda.epicbosses.utils.panel.base.IVariablePanelHandler; import com.songoda.epicbosses.utils.panel.base.IVariablePanelHandler;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import org.bukkit.Location;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;

View File

@ -12,6 +12,7 @@ import com.songoda.epicbosses.entity.elements.EquipmentElement;
import com.songoda.epicbosses.entity.elements.HandsElement; import com.songoda.epicbosses.entity.elements.HandsElement;
import com.songoda.epicbosses.panel.autospawns.AutoSpawnCustomSettingsEditorPanel; import com.songoda.epicbosses.panel.autospawns.AutoSpawnCustomSettingsEditorPanel;
import com.songoda.epicbosses.panel.autospawns.AutoSpawnEntitiesEditorPanel; import com.songoda.epicbosses.panel.autospawns.AutoSpawnEntitiesEditorPanel;
import com.songoda.epicbosses.panel.autospawns.AutoSpawnSpecialSettingsEditorPanel;
import com.songoda.epicbosses.panel.autospawns.MainAutoSpawnEditorPanel; import com.songoda.epicbosses.panel.autospawns.MainAutoSpawnEditorPanel;
import com.songoda.epicbosses.panel.bosses.*; import com.songoda.epicbosses.panel.bosses.*;
import com.songoda.epicbosses.panel.bosses.commands.OnDeathCommandEditor; import com.songoda.epicbosses.panel.bosses.commands.OnDeathCommandEditor;
@ -131,7 +132,8 @@ public class BossPanelManager implements ILoadable, IReloadable {
@Getter private DropTableNewRewardEditorPanel<DropTableElement> dropDropNewRewardEditPanel; @Getter private DropTableNewRewardEditorPanel<DropTableElement> dropDropNewRewardEditPanel;
@Getter private DropTableRewardsListEditorPanel<DropTableElement> dropDropRewardListPanel; @Getter private DropTableRewardsListEditorPanel<DropTableElement> dropDropRewardListPanel;
@Getter private IVariablePanelHandler<AutoSpawn> mainAutoSpawnEditPanel, autoSpawnEntitiesEditPanel, autoSpawnSpecialSettingsEditorPanel, autoSpawnTypeEditorPanel; @Getter private IVariablePanelHandler<AutoSpawn> mainAutoSpawnEditPanel, autoSpawnEntitiesEditPanel, autoSpawnSpecialSettingsEditorPanel, autoSpawnTypeEditorPanel, autoSpawnCustomSettingsEditorPanel,
autoSpawnMessageEditorPanel;
private final CustomBosses customBosses; private final CustomBosses customBosses;
@ -249,10 +251,12 @@ public class BossPanelManager implements ILoadable, IReloadable {
PanelBuilder panelBuilder = new PanelBuilder(editor.getConfigurationSection("MainAutoSpawnEditMenu")); PanelBuilder panelBuilder = new PanelBuilder(editor.getConfigurationSection("MainAutoSpawnEditMenu"));
PanelBuilder panelBuilder1 = new PanelBuilder(editor.getConfigurationSection("AutoSpawnEntitiesEditMenu")); PanelBuilder panelBuilder1 = new PanelBuilder(editor.getConfigurationSection("AutoSpawnEntitiesEditMenu"));
PanelBuilder panelBuilder2 = new PanelBuilder(editor.getConfigurationSection("AutoSpawnCustomSettingsEditMenu")); PanelBuilder panelBuilder2 = new PanelBuilder(editor.getConfigurationSection("AutoSpawnCustomSettingsEditMenu"));
PanelBuilder panelBuilder3 = new PanelBuilder(editor.getConfigurationSection("AutoSpawnSpecialSettingsEditMenu"));
this.mainAutoSpawnEditPanel = new MainAutoSpawnEditorPanel(this, panelBuilder, this.customBosses); this.mainAutoSpawnEditPanel = new MainAutoSpawnEditorPanel(this, panelBuilder, this.customBosses);
this.autoSpawnEntitiesEditPanel = new AutoSpawnEntitiesEditorPanel(this, panelBuilder1, this.customBosses); this.autoSpawnEntitiesEditPanel = new AutoSpawnEntitiesEditorPanel(this, panelBuilder1, this.customBosses);
this.autoSpawnSpecialSettingsEditorPanel = new AutoSpawnCustomSettingsEditorPanel(this, panelBuilder2, this.customBosses); this.autoSpawnCustomSettingsEditorPanel = new AutoSpawnCustomSettingsEditorPanel(this, panelBuilder2, this.customBosses);
this.autoSpawnSpecialSettingsEditorPanel = new AutoSpawnSpecialSettingsEditorPanel(this, panelBuilder3, this.customBosses);
} }
private void reloadAutoSpawnEditMenus() { private void reloadAutoSpawnEditMenus() {
@ -260,10 +264,12 @@ public class BossPanelManager implements ILoadable, IReloadable {
PanelBuilder panelBuilder = new PanelBuilder(editor.getConfigurationSection("MainAutoSpawnEditMenu")); PanelBuilder panelBuilder = new PanelBuilder(editor.getConfigurationSection("MainAutoSpawnEditMenu"));
PanelBuilder panelBuilder1 = new PanelBuilder(editor.getConfigurationSection("AutoSpawnEntitiesEditMenu")); PanelBuilder panelBuilder1 = new PanelBuilder(editor.getConfigurationSection("AutoSpawnEntitiesEditMenu"));
PanelBuilder panelBuilder2 = new PanelBuilder(editor.getConfigurationSection("AutoSpawnCustomSettingsEditMenu")); PanelBuilder panelBuilder2 = new PanelBuilder(editor.getConfigurationSection("AutoSpawnCustomSettingsEditMenu"));
PanelBuilder panelBuilder3 = new PanelBuilder(editor.getConfigurationSection("AutoSpawnSpecialSettingsEditMenu"));
this.mainAutoSpawnEditPanel.initializePanel(panelBuilder); this.mainAutoSpawnEditPanel.initializePanel(panelBuilder);
this.autoSpawnEntitiesEditPanel.initializePanel(panelBuilder1); this.autoSpawnEntitiesEditPanel.initializePanel(panelBuilder1);
this.autoSpawnSpecialSettingsEditorPanel.initializePanel(panelBuilder2); this.autoSpawnCustomSettingsEditorPanel.initializePanel(panelBuilder2);
this.autoSpawnSpecialSettingsEditorPanel.initializePanel(panelBuilder3);
} }
//--------------------------------------------- //---------------------------------------------

View File

@ -5,6 +5,7 @@ import com.songoda.epicbosses.api.BossAPI;
import com.songoda.epicbosses.autospawns.AutoSpawn; import com.songoda.epicbosses.autospawns.AutoSpawn;
import com.songoda.epicbosses.managers.BossPanelManager; import com.songoda.epicbosses.managers.BossPanelManager;
import com.songoda.epicbosses.skills.interfaces.ICustomSettingAction; import com.songoda.epicbosses.skills.interfaces.ICustomSettingAction;
import com.songoda.epicbosses.utils.Message;
import com.songoda.epicbosses.utils.itemstack.ItemStackUtils; import com.songoda.epicbosses.utils.itemstack.ItemStackUtils;
import com.songoda.epicbosses.utils.panel.Panel; import com.songoda.epicbosses.utils.panel.Panel;
import com.songoda.epicbosses.utils.panel.base.ClickAction; import com.songoda.epicbosses.utils.panel.base.ClickAction;
@ -46,12 +47,12 @@ public class AutoSpawnCustomSettingsEditorPanel extends VariablePanelHandler<Aut
panel.setOnPageChange(((player, currentPage, requestedPage) -> { panel.setOnPageChange(((player, currentPage, requestedPage) -> {
if(requestedPage < 0 || requestedPage > maxPage) return false; if(requestedPage < 0 || requestedPage > maxPage) return false;
loadPage(panel, requestedPage, customButtons); loadPage(panel, requestedPage, customButtons, autoSpawn);
return true; return true;
})); }));
loadPage(panel, 0, customButtons); loadPage(panel, 0, customButtons, autoSpawn);
} }
@Override @Override
@ -74,7 +75,7 @@ public class AutoSpawnCustomSettingsEditorPanel extends VariablePanelHandler<Aut
} }
private void loadPage(Panel panel, int page, List<ICustomSettingAction> clickActions) { private void loadPage(Panel panel, int page, List<ICustomSettingAction> clickActions, AutoSpawn autoSpawn) {
panel.loadPage(page, ((slot, realisticSlot) -> { panel.loadPage(page, ((slot, realisticSlot) -> {
if(slot >= clickActions.size()) { if(slot >= clickActions.size()) {
panel.setItem(realisticSlot, new ItemStack(Material.AIR), e -> {}); panel.setItem(realisticSlot, new ItemStack(Material.AIR), e -> {});
@ -120,7 +121,13 @@ public class AutoSpawnCustomSettingsEditorPanel extends VariablePanelHandler<Aut
itemMeta.setLore(newLore); itemMeta.setLore(newLore);
displayStack.setItemMeta(itemMeta); displayStack.setItemMeta(itemMeta);
panel.setItem(realisticSlot, displayStack, clickAction); panel.setItem(realisticSlot, displayStack, event -> {
if(!autoSpawn.isEditing()) {
Message.Boss_AutoSpawn_MustToggleEditing.msg(event.getWhoClicked());
} else {
clickAction.onClick(event);
}
});
} }
})); }));
} }

View File

@ -7,6 +7,7 @@ import com.songoda.epicbosses.managers.BossPanelManager;
import com.songoda.epicbosses.managers.files.AutoSpawnFileManager; import com.songoda.epicbosses.managers.files.AutoSpawnFileManager;
import com.songoda.epicbosses.managers.files.BossesFileManager; import com.songoda.epicbosses.managers.files.BossesFileManager;
import com.songoda.epicbosses.managers.files.ItemsFileManager; import com.songoda.epicbosses.managers.files.ItemsFileManager;
import com.songoda.epicbosses.utils.Message;
import com.songoda.epicbosses.utils.ObjectUtils; import com.songoda.epicbosses.utils.ObjectUtils;
import com.songoda.epicbosses.utils.itemstack.ItemStackUtils; import com.songoda.epicbosses.utils.itemstack.ItemStackUtils;
import com.songoda.epicbosses.utils.itemstack.holder.ItemStackHolder; import com.songoda.epicbosses.utils.itemstack.holder.ItemStackHolder;
@ -100,6 +101,11 @@ public class AutoSpawnEntitiesEditorPanel extends VariablePanelHandler<AutoSpawn
ItemStackUtils.applyDisplayLore(itemStack, this.plugin.getConfig().getStringList("Display.AutoSpawns.Entities.lore"), replaceMap); ItemStackUtils.applyDisplayLore(itemStack, this.plugin.getConfig().getStringList("Display.AutoSpawns.Entities.lore"), replaceMap);
panel.setItem(realisticSlot, itemStack, event -> { panel.setItem(realisticSlot, itemStack, event -> {
if(!autoSpawn.isEditing()) {
Message.Boss_AutoSpawn_MustToggleEditing.msg(event.getWhoClicked());
return;
}
if(current.contains(name)) { if(current.contains(name)) {
current.remove(name); current.remove(name);
} else { } else {

View File

@ -0,0 +1,9 @@
package com.songoda.epicbosses.panel.autospawns;
/**
* @author Charles Cullen
* @version 1.0.0
* @since 09-Jan-19
*/
public class AutoSpawnSpawnMessageEditorPanel {
}

View File

@ -6,13 +6,17 @@ import com.songoda.epicbosses.autospawns.AutoSpawn;
import com.songoda.epicbosses.autospawns.settings.AutoSpawnSettings; import com.songoda.epicbosses.autospawns.settings.AutoSpawnSettings;
import com.songoda.epicbosses.managers.BossPanelManager; import com.songoda.epicbosses.managers.BossPanelManager;
import com.songoda.epicbosses.managers.files.AutoSpawnFileManager; import com.songoda.epicbosses.managers.files.AutoSpawnFileManager;
import com.songoda.epicbosses.utils.Message;
import com.songoda.epicbosses.utils.NumberUtils; import com.songoda.epicbosses.utils.NumberUtils;
import com.songoda.epicbosses.utils.ObjectUtils; import com.songoda.epicbosses.utils.ObjectUtils;
import com.songoda.epicbosses.utils.panel.Panel; import com.songoda.epicbosses.utils.panel.Panel;
import com.songoda.epicbosses.utils.panel.base.ClickAction;
import com.songoda.epicbosses.utils.panel.base.handlers.VariablePanelHandler; import com.songoda.epicbosses.utils.panel.base.handlers.VariablePanelHandler;
import com.songoda.epicbosses.utils.panel.builder.PanelBuilder; import com.songoda.epicbosses.utils.panel.builder.PanelBuilder;
import com.songoda.epicbosses.utils.panel.builder.PanelBuilderCounter; import com.songoda.epicbosses.utils.panel.builder.PanelBuilderCounter;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;
import org.bukkit.event.inventory.InventoryClickEvent;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@ -64,12 +68,12 @@ public class AutoSpawnSpecialSettingsEditorPanel extends VariablePanelHandler<Au
.setParentPanelHandler(this.bossPanelManager.getMainAutoSpawnEditPanel(), autoSpawn); .setParentPanelHandler(this.bossPanelManager.getMainAutoSpawnEditPanel(), autoSpawn);
PanelBuilderCounter counter = panel.getPanelBuilderCounter(); PanelBuilderCounter counter = panel.getPanelBuilderCounter();
counter.getSlotsWith("ShuffleEntities").forEach(slot -> {}); counter.getSlotsWith("ShuffleEntities").forEach(slot -> panel.setOnClick(slot, getShuffleEntitiesButton(autoSpawn)));
counter.getSlotsWith("MaxAliveEntities").forEach(slot -> {}); counter.getSlotsWith("MaxAliveEntities").forEach(slot -> panel.setOnClick(slot, getMaxAliveEntitiesButton(autoSpawn)));
counter.getSlotsWith("AmountPerSpawn").forEach(slot -> {}); counter.getSlotsWith("AmountPerSpawn").forEach(slot -> panel.setOnClick(slot, getAmountPerSpawnButton(autoSpawn)));
counter.getSlotsWith("ChunkIsntLoaded").forEach(slot -> {}); counter.getSlotsWith("ChunkIsntLoaded").forEach(slot -> panel.setOnClick(slot, getChunkIsntLoadedButton(autoSpawn)));
counter.getSlotsWith("OverrideSpawnMessage").forEach(slot -> {}); counter.getSlotsWith("OverrideSpawnMessage").forEach(slot -> panel.setOnClick(slot, getOverrideSpawnMessageButton(autoSpawn)));
counter.getSlotsWith("SpawnMessage").forEach(slot -> {}); counter.getSlotsWith("SpawnMessage").forEach(slot -> panel.setOnClick(slot, event -> this.bossPanelManager.getAutoSpawnMessageEditorPanel().openFor((Player) event.getWhoClicked(), autoSpawn)));
panel.openFor(player); panel.openFor(player);
} }
@ -78,4 +82,99 @@ public class AutoSpawnSpecialSettingsEditorPanel extends VariablePanelHandler<Au
public void initializePanel(PanelBuilder panelBuilder) { public void initializePanel(PanelBuilder panelBuilder) {
} }
private ClickAction getShuffleEntitiesButton(AutoSpawn autoSpawn) {
return event -> {
if(isBlocked(autoSpawn, event)) return;
AutoSpawnSettings settings = autoSpawn.getAutoSpawnSettings();
settings.setShuffleEntitiesList(!ObjectUtils.getValue(settings.getShuffleEntitiesList(), false));
save(autoSpawn, event);
};
}
private ClickAction getMaxAliveEntitiesButton(AutoSpawn autoSpawn) {
return event -> {
if(isBlocked(autoSpawn, event)) return;
AutoSpawnSettings settings = autoSpawn.getAutoSpawnSettings();
ClickType clickType = event.getClick();
int amountToModifyBy;
if(clickType.name().contains("RIGHT")) {
amountToModifyBy = -1;
} else {
amountToModifyBy = +1;
}
int currentAmount = ObjectUtils.getValue(settings.getMaxAliveAtOnce(), 1);
int newAmount = currentAmount + amountToModifyBy;
if(newAmount <= 1) newAmount = 1;
settings.setMaxAliveAtOnce(newAmount);
save(autoSpawn, event);
};
}
private ClickAction getAmountPerSpawnButton(AutoSpawn autoSpawn) {
return event -> {
if(isBlocked(autoSpawn, event)) return;
AutoSpawnSettings settings = autoSpawn.getAutoSpawnSettings();
ClickType clickType = event.getClick();
int amountToModifyBy;
if(clickType.name().contains("RIGHT")) {
amountToModifyBy = -1;
} else {
amountToModifyBy = +1;
}
int currentAmount = ObjectUtils.getValue(settings.getAmountPerSpawn(), 1);
int newAmount = currentAmount + amountToModifyBy;
if(newAmount <= 1) newAmount = 1;
settings.setAmountPerSpawn(newAmount);
save(autoSpawn, event);
};
}
private ClickAction getChunkIsntLoadedButton(AutoSpawn autoSpawn) {
return event -> {
if(isBlocked(autoSpawn, event)) return;
AutoSpawnSettings settings = autoSpawn.getAutoSpawnSettings();
settings.setSpawnWhenChunkIsntLoaded(!ObjectUtils.getValue(settings.getSpawnWhenChunkIsntLoaded(), false));
save(autoSpawn, event);
};
}
private ClickAction getOverrideSpawnMessageButton(AutoSpawn autoSpawn) {
return event -> {
if(isBlocked(autoSpawn, event)) return;
AutoSpawnSettings settings = autoSpawn.getAutoSpawnSettings();
settings.setOverrideDefaultSpawnMessage(!ObjectUtils.getValue(settings.getOverrideDefaultSpawnMessage(), false));
save(autoSpawn, event);
};
}
private boolean isBlocked(AutoSpawn autoSpawn, InventoryClickEvent event) {
if(!autoSpawn.isEditing()) {
Message.Boss_AutoSpawn_MustToggleEditing.msg(event.getWhoClicked());
return true;
}
return false;
}
private void save(AutoSpawn autoSpawn, InventoryClickEvent event) {
this.autoSpawnFileManager.save();
openFor((Player) event.getWhoClicked(), autoSpawn);
}
} }

View File

@ -25,6 +25,7 @@ public enum Message {
General_TimeLayout("{hours}h, {mins}m, {sec}s"), General_TimeLayout("{hours}h, {mins}m, {sec}s"),
Boss_AutoSpawn_ToggleEditing("&b&lEpicBosses &8» &7You have toggled the editing mode for the &f{0}&7 auto spawn to &f{1}&7."), Boss_AutoSpawn_ToggleEditing("&b&lEpicBosses &8» &7You have toggled the editing mode for the &f{0}&7 auto spawn to &f{1}&7."),
Boss_AutoSpawn_MustToggleEditing("&c&l(!) &cIn order to modify aspects of this plugin you must first toggle editing mode so that it disables the current auto spawn system."),
Boss_AutoSpawn_NotCompleteEnough("&c&l(!) &cThe auto spawn is not set up enough to be enabled. Please make sure it has: &fA Spawn Entity(s) and Type&c before you try and enable the auto spawn."), Boss_AutoSpawn_NotCompleteEnough("&c&l(!) &cThe auto spawn is not set up enough to be enabled. Please make sure it has: &fA Spawn Entity(s) and Type&c before you try and enable the auto spawn."),
Boss_AutoSpawn_SpawnRate("&b&lEpicBosses &8» &7You have {0} the spawn rate of the auto spawn to &f{1}&7."), Boss_AutoSpawn_SpawnRate("&b&lEpicBosses &8» &7You have {0} the spawn rate of the auto spawn to &f{1}&7."),
Boss_AutoSpawn_InvalidLocation("&c&l(!) &cThe specified location string, &f{0}&c, is invalid. A correct example should be &fworld,10,150,-30&c . If you want to cancel the location update type &f- &cand you will be brought back to the settings menu."), Boss_AutoSpawn_InvalidLocation("&c&l(!) &cThe specified location string, &f{0}&c, is invalid. A correct example should be &fworld,10,150,-30&c . If you want to cancel the location update type &f- &cand you will be brought back to the settings menu."),

View File

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