1.0.0-SNAPSHOT-U176

+ Connected and Completed the AutoSpawnsPanel
This commit is contained in:
Charles 2019-01-07 03:43:44 +08:00
parent 412ed322c7
commit d27b9dfd2e
7 changed files with 134 additions and 17 deletions

View File

@ -1,4 +1,8 @@
{
"DefaultAutoSpawnListItem": {
"type": "GRASS_BLOCK",
"name": "&c&lDefault AutoSpawn List Item"
},
"DefaultDropTableRewardItem": {
"type": "DIAMOND",
"name": "&c&lDefault DropTable Reward Item"

View File

@ -88,7 +88,21 @@ Display:
- '&7Click to add/remove the skill to'
- '&7or from the boss skill list.'
AutoSpawns:
menuName: '&b&lEpicBosses &3&lAutoSpawns'
Main:
menuName: '&b&lEpicBosses &3&lAutoSpawns'
name: '&bAuto Spawn: &f{name}'
lore:
- '&3Editing: &f{enabled}'
- '&7'
- '&3Spawn Type: &f{type}'
- '&3Entities: &f{entities}'
- '&7'
- '&3Max Alive: &f{maxAlive}'
- '&3Amount per Spawn: &f{amountPerSpawn}'
- '&3When Chunk Isnt Loaded: &f{chunkIsntLoaded}'
- '&3Override Spawn Messages: &f{overrideSpawnMessages}'
- '&3Shuffle Entities: &f{shuffleEntities}'
- '&3Custom Spawn Message: &f{customSpawnMessage}'
Bosses:
menuName: '&b&lEpicBosses &3&lBosses'
name: '&b&l{name}'

View File

@ -12,13 +12,13 @@ import lombok.Setter;
public class AutoSpawnSettings {
@Expose @Getter @Setter private Integer maxAliveAtOnce, amountPerSpawn;
@Expose @Getter @Setter private Boolean spawnWhenCheckIsntLoaded, overrideDefaultSpawnMessage, shuffleEntitiesList;
@Expose @Getter @Setter private Boolean spawnWhenChunkIsntLoaded, overrideDefaultSpawnMessage, shuffleEntitiesList;
@Expose @Getter @Setter private String spawnMessage;
public AutoSpawnSettings(int maxAliveAtOnce, int amountPerSpawn, boolean spawnWhenCheckIsntLoaded, boolean shuffleEntitiesList) {
public AutoSpawnSettings(int maxAliveAtOnce, int amountPerSpawn, boolean spawnWhenChunkIsntLoaded, boolean shuffleEntitiesList) {
this.maxAliveAtOnce = maxAliveAtOnce;
this.amountPerSpawn = amountPerSpawn;
this.spawnWhenCheckIsntLoaded = spawnWhenCheckIsntLoaded;
this.spawnWhenChunkIsntLoaded = spawnWhenChunkIsntLoaded;
this.shuffleEntitiesList = shuffleEntitiesList;
}

View File

@ -1,6 +1,7 @@
package com.songoda.epicbosses.managers;
import com.songoda.epicbosses.api.BossAPI;
import com.songoda.epicbosses.autospawns.AutoSpawn;
import com.songoda.epicbosses.droptable.DropTable;
import com.songoda.epicbosses.droptable.elements.DropTableElement;
import com.songoda.epicbosses.droptable.elements.GiveTableElement;
@ -127,6 +128,8 @@ public class BossPanelManager implements ILoadable, IReloadable {
@Getter private DropTableNewRewardEditorPanel<DropTableElement> dropDropNewRewardEditPanel;
@Getter private DropTableRewardsListEditorPanel<DropTableElement> dropDropRewardListPanel;
@Getter private IVariablePanelHandler<AutoSpawn> mainAutoSpawnEditPanel;
private final CustomBosses customBosses;
public BossPanelManager(CustomBosses customBosses) {
@ -794,7 +797,7 @@ public class BossPanelManager implements ILoadable, IReloadable {
//---------------------------------------------
private void loadAutoSpawnsMenu() {
this.autoSpawns = new AutoSpawnsPanel(this, getListMenu("AutoSpawns"));
this.autoSpawns = new AutoSpawnsPanel(this, getListMenu("AutoSpawns.Main"), this.customBosses);
}
private void reloadAutoSpawnsMenu() {

View File

@ -1,37 +1,98 @@
package com.songoda.epicbosses.panel;
import com.songoda.epicbosses.CustomBosses;
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.managers.files.ItemsFileManager;
import com.songoda.epicbosses.panel.handlers.MainListPanelHandler;
import com.songoda.epicbosses.utils.ObjectUtils;
import com.songoda.epicbosses.utils.StringUtils;
import com.songoda.epicbosses.utils.itemstack.ItemStackUtils;
import com.songoda.epicbosses.utils.panel.Panel;
import com.songoda.epicbosses.utils.panel.base.PanelHandler;
import com.songoda.epicbosses.utils.panel.builder.PanelBuilder;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import java.util.*;
/**
* @author Charles Cullen
* @version 1.0.0
* @since 10-Oct-18
*
* TODO
*/
public class AutoSpawnsPanel extends PanelHandler {
public class AutoSpawnsPanel extends MainListPanelHandler {
public AutoSpawnsPanel(BossPanelManager bossPanelManager, PanelBuilder panelBuilder) {
private AutoSpawnFileManager autoSpawnFileManager;
private ItemsFileManager itemsFileManager;
private CustomBosses plugin;
public AutoSpawnsPanel(BossPanelManager bossPanelManager, PanelBuilder panelBuilder, CustomBosses plugin) {
super(bossPanelManager, panelBuilder);
}
@Override
public void initializePanel(PanelBuilder panelBuilder) {
this.autoSpawnFileManager = plugin.getAutoSpawnFileManager();
this.itemsFileManager = plugin.getItemStackManager();
this.plugin = plugin;
}
@Override
public void fillPanel(Panel panel) {
Map<String, AutoSpawn> autoSpawnMap = this.autoSpawnFileManager.getAutoSpawnMap();
List<String> entryList = new ArrayList<>();
int maxPage = panel.getMaxPage(entryList);
panel.setOnPageChange(((player, currentPage, requestedPage) -> {
if(requestedPage < 0 || requestedPage > maxPage) return false;
loadPage(panel, requestedPage, autoSpawnMap, entryList);
return true;
}));
loadPage(panel, 0, autoSpawnMap, entryList);
}
@Override
public void openFor(Player player) {
private void loadPage(Panel panel, int requestedPage, Map<String, AutoSpawn> autoSpawnMap, List<String> entryList) {
panel.loadPage(requestedPage, (slot, realisticSlot) -> {
if(slot >= entryList.size()) {
panel.setItem(realisticSlot, new ItemStack(Material.AIR), e -> {});
} else {
String name = entryList.get(slot);
AutoSpawn autoSpawn = autoSpawnMap.get(name);
ItemStack itemStack = this.itemsFileManager.getItemStackConverter().from(this.itemsFileManager.getItemStackHolder("DefaultAutoSpawnListItem"));
if(itemStack == null) {
itemStack = new ItemStack(Material.BARRIER);
}
Map<String, String> replaceMap = new HashMap<>();
List<String> entities = ObjectUtils.getValue(autoSpawn.getEntities(), new ArrayList<>());
AutoSpawnSettings settings = autoSpawn.getAutoSpawnSettings();
String entitiesSize = entities.size()+"";
String maxAlive = ""+ObjectUtils.getValue(settings.getMaxAliveAtOnce(), 1);
String amountToSpawn = ""+ObjectUtils.getValue(settings.getAmountPerSpawn(), 1);
String chunkIsntLoaded = ""+ObjectUtils.getValue(settings.getSpawnWhenChunkIsntLoaded(), false);
String overrideMessage = ""+ObjectUtils.getValue(settings.getOverrideDefaultSpawnMessage(), true);
String shuffleEntities = ""+ObjectUtils.getValue(settings.getShuffleEntitiesList(), false);
String spawnMessage = ObjectUtils.getValue(settings.getSpawnMessage(), "");
replaceMap.put("{name}", name);
replaceMap.put("{type}", StringUtils.get().formatString(autoSpawn.getType()));
replaceMap.put("{enabled}", (!autoSpawn.isLocked())+"");
replaceMap.put("{entities}", entitiesSize);
replaceMap.put("{maxAlive}", maxAlive);
replaceMap.put("{amountPerSpawn}", amountToSpawn);
replaceMap.put("{chunkIsntLoaded}", chunkIsntLoaded);
replaceMap.put("{overrideSpawnMessages}", overrideMessage);
replaceMap.put("{shuffleEntities}", shuffleEntities);
replaceMap.put("{customSpawnMessage}", spawnMessage);
ItemStackUtils.applyDisplayName(itemStack, this.plugin.getConfig().getString("Display.AutoSpawns.Main.name"), replaceMap);
ItemStackUtils.applyDisplayLore(itemStack, this.plugin.getConfig().getStringList("Display.AutoSpawns.Main.lore"), replaceMap);
panel.setItem(realisticSlot, itemStack.clone(), e -> this.bossPanelManager.getMainAutoSpawnEditPanel().openFor((Player) e.getWhoClicked(), autoSpawn));
}
});
}
}

View File

@ -0,0 +1,35 @@
package com.songoda.epicbosses.panel.autospawns;
import com.songoda.epicbosses.autospawns.AutoSpawn;
import com.songoda.epicbosses.managers.BossPanelManager;
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 org.bukkit.entity.Player;
/**
* @author Charles Cullen
* @version 1.0.0
* @since 07-Jan-19
*/
public class MainAutoSpawnEditorPanel extends VariablePanelHandler<AutoSpawn> {
public MainAutoSpawnEditorPanel(BossPanelManager bossPanelManager, PanelBuilder panelBuilder) {
super(bossPanelManager, panelBuilder);
}
@Override
public void fillPanel(Panel panel, AutoSpawn autoSpawn) {
}
@Override
public void openFor(Player player, AutoSpawn autoSpawn) {
}
@Override
public void initializePanel(PanelBuilder panelBuilder) {
}
}

View File

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