mirror of
https://github.com/songoda/EpicBosses.git
synced 2025-03-12 14:39:05 +01:00
1.0.0-SNAPSHOT-U176
+ Connected and Completed the AutoSpawnsPanel
This commit is contained in:
parent
412ed322c7
commit
d27b9dfd2e
@ -1,4 +1,8 @@
|
||||
{
|
||||
"DefaultAutoSpawnListItem": {
|
||||
"type": "GRASS_BLOCK",
|
||||
"name": "&c&lDefault AutoSpawn List Item"
|
||||
},
|
||||
"DefaultDropTableRewardItem": {
|
||||
"type": "DIAMOND",
|
||||
"name": "&c&lDefault DropTable Reward Item"
|
||||
|
@ -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}'
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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() {
|
||||
|
@ -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));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -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) {
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user