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.managers.files.AutoSpawnFileManager;
import com.songoda.epicbosses.utils.IHandler;
import com.songoda.epicbosses.utils.Message;
import com.songoda.epicbosses.utils.ServerUtils;
import com.songoda.epicbosses.utils.StringUtils;
import com.songoda.epicbosses.utils.panel.base.IVariablePanelHandler;
import lombok.Getter;
import lombok.Setter;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
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.panel.autospawns.AutoSpawnCustomSettingsEditorPanel;
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.bosses.*;
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 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;
@ -249,10 +251,12 @@ public class BossPanelManager implements ILoadable, IReloadable {
PanelBuilder panelBuilder = new PanelBuilder(editor.getConfigurationSection("MainAutoSpawnEditMenu"));
PanelBuilder panelBuilder1 = new PanelBuilder(editor.getConfigurationSection("AutoSpawnEntitiesEditMenu"));
PanelBuilder panelBuilder2 = new PanelBuilder(editor.getConfigurationSection("AutoSpawnCustomSettingsEditMenu"));
PanelBuilder panelBuilder3 = new PanelBuilder(editor.getConfigurationSection("AutoSpawnSpecialSettingsEditMenu"));
this.mainAutoSpawnEditPanel = new MainAutoSpawnEditorPanel(this, panelBuilder, 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() {
@ -260,10 +264,12 @@ public class BossPanelManager implements ILoadable, IReloadable {
PanelBuilder panelBuilder = new PanelBuilder(editor.getConfigurationSection("MainAutoSpawnEditMenu"));
PanelBuilder panelBuilder1 = new PanelBuilder(editor.getConfigurationSection("AutoSpawnEntitiesEditMenu"));
PanelBuilder panelBuilder2 = new PanelBuilder(editor.getConfigurationSection("AutoSpawnCustomSettingsEditMenu"));
PanelBuilder panelBuilder3 = new PanelBuilder(editor.getConfigurationSection("AutoSpawnSpecialSettingsEditMenu"));
this.mainAutoSpawnEditPanel.initializePanel(panelBuilder);
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.managers.BossPanelManager;
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.panel.Panel;
import com.songoda.epicbosses.utils.panel.base.ClickAction;
@ -46,12 +47,12 @@ public class AutoSpawnCustomSettingsEditorPanel extends VariablePanelHandler<Aut
panel.setOnPageChange(((player, currentPage, requestedPage) -> {
if(requestedPage < 0 || requestedPage > maxPage) return false;
loadPage(panel, requestedPage, customButtons);
loadPage(panel, requestedPage, customButtons, autoSpawn);
return true;
}));
loadPage(panel, 0, customButtons);
loadPage(panel, 0, customButtons, autoSpawn);
}
@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) -> {
if(slot >= clickActions.size()) {
panel.setItem(realisticSlot, new ItemStack(Material.AIR), e -> {});
@ -120,7 +121,13 @@ public class AutoSpawnCustomSettingsEditorPanel extends VariablePanelHandler<Aut
itemMeta.setLore(newLore);
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.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.itemstack.ItemStackUtils;
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);
panel.setItem(realisticSlot, itemStack, event -> {
if(!autoSpawn.isEditing()) {
Message.Boss_AutoSpawn_MustToggleEditing.msg(event.getWhoClicked());
return;
}
if(current.contains(name)) {
current.remove(name);
} 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.managers.BossPanelManager;
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.panel.Panel;
import com.songoda.epicbosses.utils.panel.base.ClickAction;
import com.songoda.epicbosses.utils.panel.base.handlers.VariablePanelHandler;
import com.songoda.epicbosses.utils.panel.builder.PanelBuilder;
import com.songoda.epicbosses.utils.panel.builder.PanelBuilderCounter;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;
import org.bukkit.event.inventory.InventoryClickEvent;
import java.util.HashMap;
import java.util.Map;
@ -64,12 +68,12 @@ public class AutoSpawnSpecialSettingsEditorPanel extends VariablePanelHandler<Au
.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 -> {});
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);
}
@ -78,4 +82,99 @@ public class AutoSpawnSpecialSettingsEditorPanel extends VariablePanelHandler<Au
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"),
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_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."),

View File

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