mirror of
https://github.com/songoda/EpicBosses.git
synced 2025-03-12 14:39:05 +01:00
1.0.0-SNAPSHOT-U179
+ Completed the AutoSpawnEntitiesEditorPanel + Connected the new autospawn panels
This commit is contained in:
parent
ad42dd9e8d
commit
755b3616b1
@ -103,6 +103,15 @@ Display:
|
||||
- '&3Override Spawn Messages: &f{overrideSpawnMessages}'
|
||||
- '&3Shuffle Entities: &f{shuffleEntities}'
|
||||
- '&3Custom Spawn Message: &f{customSpawnMessage}'
|
||||
Entities:
|
||||
selectedName: '&bBoss: &f{name} &a*** Selected ***'
|
||||
name: '&bBoss: &f{name}'
|
||||
lore:
|
||||
- '&3Editing: &f{editing}'
|
||||
- '&3Targeting: &f{targeting}'
|
||||
- '&3Drop Table: &f{dropTable}'
|
||||
- '&7'
|
||||
- '&7Click to select or deselect this boss.'
|
||||
Bosses:
|
||||
menuName: '&b&lEpicBosses &3&lBosses'
|
||||
name: '&b&l{name}'
|
||||
|
@ -2590,4 +2590,50 @@ MainAutoSpawnEditMenu:
|
||||
- '&7Click here to edit any custom settings that'
|
||||
- '&7are also included in this auto spawn type. If'
|
||||
- '&7there is none then the GUI up next will be empty.'
|
||||
Button: CustomSettings
|
||||
Button: CustomSettings
|
||||
AutoSpawnEntitiesEditMenu:
|
||||
name: '&b&l{name} AutoSpawn'
|
||||
slots: 54
|
||||
Settings:
|
||||
backButton: true
|
||||
fillTo: 45
|
||||
Buttons:
|
||||
backButton: 50
|
||||
Items:
|
||||
'46':
|
||||
type: GLASS_PANE
|
||||
name: '&7'
|
||||
'47':
|
||||
type: GLASS_PANE
|
||||
name: '&7'
|
||||
'48':
|
||||
type: GLASS_PANE
|
||||
name: '&7'
|
||||
'49':
|
||||
type: ARROW
|
||||
name: '&e&l&m<-&e&l Previous Page'
|
||||
lore:
|
||||
- '&7Click here to go to the previous'
|
||||
- '&7page.'
|
||||
PreviousPage: true
|
||||
'50':
|
||||
type: REDSTONE
|
||||
name: '&cClick here to go back'
|
||||
lore:
|
||||
- '&7Click this button to go back.'
|
||||
'51':
|
||||
type: ARROW
|
||||
name: '&e&lNext Page &e&l&m->'
|
||||
lore:
|
||||
- '&7Click here to go to the next'
|
||||
- '&7page.'
|
||||
NextPage: true
|
||||
'52':
|
||||
type: GLASS_PANE
|
||||
name: '&7'
|
||||
'53':
|
||||
type: GLASS_PANE
|
||||
name: '&7'
|
||||
'54':
|
||||
type: GLASS_PANE
|
||||
name: '&7'
|
@ -10,6 +10,7 @@ import com.songoda.epicbosses.entity.BossEntity;
|
||||
import com.songoda.epicbosses.entity.elements.EntityStatsElement;
|
||||
import com.songoda.epicbosses.entity.elements.EquipmentElement;
|
||||
import com.songoda.epicbosses.entity.elements.HandsElement;
|
||||
import com.songoda.epicbosses.panel.autospawns.AutoSpawnEntitiesEditorPanel;
|
||||
import com.songoda.epicbosses.panel.autospawns.MainAutoSpawnEditorPanel;
|
||||
import com.songoda.epicbosses.panel.bosses.*;
|
||||
import com.songoda.epicbosses.panel.bosses.commands.OnDeathCommandEditor;
|
||||
@ -245,15 +246,19 @@ public class BossPanelManager implements ILoadable, IReloadable {
|
||||
private void loadAutoSpawnEditMenus() {
|
||||
FileConfiguration editor = this.customBosses.getEditor();
|
||||
PanelBuilder panelBuilder = new PanelBuilder(editor.getConfigurationSection("MainAutoSpawnEditMenu"));
|
||||
PanelBuilder panelBuilder1 = new PanelBuilder(editor.getConfigurationSection("AutoSpawnEntitiesEditMenu"));
|
||||
|
||||
this.mainAutoSpawnEditPanel = new MainAutoSpawnEditorPanel(this, panelBuilder, this.customBosses);
|
||||
this.autoSpawnEntitiesEditPanel = new AutoSpawnEntitiesEditorPanel(this, panelBuilder1, this.customBosses);
|
||||
}
|
||||
|
||||
private void reloadAutoSpawnEditMenus() {
|
||||
FileConfiguration editor = this.customBosses.getEditor();
|
||||
PanelBuilder panelBuilder = new PanelBuilder(editor.getConfigurationSection("MainAutoSpawnEditMenu"));
|
||||
PanelBuilder panelBuilder1 = new PanelBuilder(editor.getConfigurationSection("AutoSpawnEntitiesEditMenu"));
|
||||
|
||||
this.mainAutoSpawnEditPanel.initializePanel(panelBuilder);
|
||||
this.autoSpawnEntitiesEditPanel.initializePanel(panelBuilder1);
|
||||
}
|
||||
|
||||
//---------------------------------------------
|
||||
|
@ -1,9 +1,122 @@
|
||||
package com.songoda.epicbosses.panel.autospawns;
|
||||
|
||||
import com.google.gson.JsonObject;
|
||||
import com.songoda.epicbosses.CustomBosses;
|
||||
import com.songoda.epicbosses.api.BossAPI;
|
||||
import com.songoda.epicbosses.autospawns.AutoSpawn;
|
||||
import com.songoda.epicbosses.entity.BossEntity;
|
||||
import com.songoda.epicbosses.entity.MinionEntity;
|
||||
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.skills.Skill;
|
||||
import com.songoda.epicbosses.skills.types.CustomSkillElement;
|
||||
import com.songoda.epicbosses.utils.ObjectUtils;
|
||||
import com.songoda.epicbosses.utils.itemstack.ItemStackUtils;
|
||||
import com.songoda.epicbosses.utils.itemstack.holder.ItemStackHolder;
|
||||
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.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author Charles Cullen
|
||||
* @version 1.0.0
|
||||
* @since 07-Jan-19
|
||||
*/
|
||||
public class AutoSpawnEntitiesEditorPanel {
|
||||
public class AutoSpawnEntitiesEditorPanel extends VariablePanelHandler<AutoSpawn> {
|
||||
|
||||
private AutoSpawnFileManager autoSpawnFileManager;
|
||||
private BossesFileManager bossesFileManager;
|
||||
private ItemsFileManager itemsFileManager;
|
||||
private CustomBosses plugin;
|
||||
|
||||
public AutoSpawnEntitiesEditorPanel(BossPanelManager bossPanelManager, PanelBuilder panelBuilder, CustomBosses plugin) {
|
||||
super(bossPanelManager, panelBuilder);
|
||||
|
||||
this.plugin = plugin;
|
||||
this.itemsFileManager = plugin.getItemStackManager();
|
||||
this.bossesFileManager = plugin.getBossesFileManager();
|
||||
this.autoSpawnFileManager = plugin.getAutoSpawnFileManager();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fillPanel(Panel panel, AutoSpawn autoSpawn) {
|
||||
Map<String, BossEntity> currentEntities = this.bossesFileManager.getBossEntitiesMap();
|
||||
List<String> entryList = new ArrayList<>(currentEntities.keySet());
|
||||
int maxPage = panel.getMaxPage(entryList);
|
||||
|
||||
panel.setOnPageChange(((player, currentPage, requestedPage) -> {
|
||||
if(requestedPage < 0 || requestedPage > maxPage) return false;
|
||||
|
||||
loadPage(panel, requestedPage, currentEntities, entryList, autoSpawn);
|
||||
return true;
|
||||
}));
|
||||
|
||||
loadPage(panel, 0, currentEntities, entryList, autoSpawn);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void openFor(Player player, AutoSpawn autoSpawn) {
|
||||
Panel panel = getPanelBuilder().getPanel()
|
||||
.setParentPanelHandler(this.bossPanelManager.getMainAutoSpawnEditPanel(), autoSpawn);
|
||||
|
||||
fillPanel(panel, autoSpawn);
|
||||
panel.openFor(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initializePanel(PanelBuilder panelBuilder) {
|
||||
|
||||
}
|
||||
|
||||
private void loadPage(Panel panel, int page, Map<String, BossEntity> currentEntities, List<String> entryList, AutoSpawn autoSpawn) {
|
||||
List<String> current = ObjectUtils.getValue(autoSpawn.getEntities(), new ArrayList<>());
|
||||
|
||||
panel.loadPage(page, (slot, realisticSlot) -> {
|
||||
if(slot >= entryList.size()) {
|
||||
panel.setItem(realisticSlot, new ItemStack(Material.AIR), e->{});
|
||||
} else {
|
||||
String name = entryList.get(slot);
|
||||
BossEntity bossEntity = currentEntities.get(name);
|
||||
ItemStackHolder itemStackHolder = this.itemsFileManager.getItemStackHolder("DefaultMinionMenuSpawnItem");
|
||||
ItemStack itemStack = this.itemsFileManager.getItemStackConverter().from(itemStackHolder);
|
||||
Map<String, String> replaceMap = new HashMap<>();
|
||||
|
||||
replaceMap.put("{name}", name);
|
||||
replaceMap.put("{editing}", ""+bossEntity.isEditing());
|
||||
replaceMap.put("{targeting}", bossEntity.getTargeting());
|
||||
replaceMap.put("{dropTable}", bossEntity.getDrops().getDropTable());
|
||||
|
||||
if(current.contains(name)) {
|
||||
ItemStackUtils.applyDisplayName(itemStack, this.plugin.getConfig().getString("Display.AutoSpawns.Entities.selectedName"), replaceMap);
|
||||
} else {
|
||||
ItemStackUtils.applyDisplayName(itemStack, this.plugin.getConfig().getString("Display.AutoSpawns.Entities.name"), replaceMap);
|
||||
}
|
||||
|
||||
ItemStackUtils.applyDisplayLore(itemStack, this.plugin.getConfig().getStringList("Display.AutoSpawns.Entities.lore"), replaceMap);
|
||||
|
||||
panel.setItem(realisticSlot, itemStack, event -> {
|
||||
if(current.contains(name)) {
|
||||
current.remove(name);
|
||||
} else {
|
||||
current.add(name);
|
||||
}
|
||||
|
||||
autoSpawn.setEntities(current);
|
||||
this.autoSpawnFileManager.save();
|
||||
|
||||
loadPage(panel, page, currentEntities, entryList, autoSpawn);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -1,9 +1,36 @@
|
||||
package com.songoda.epicbosses.panel.autospawns;
|
||||
|
||||
import com.songoda.epicbosses.CustomBosses;
|
||||
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 AutoSpawnTypeEditorPanel {
|
||||
public class AutoSpawnTypeEditorPanel extends VariablePanelHandler<AutoSpawn> {
|
||||
|
||||
public AutoSpawnTypeEditorPanel(BossPanelManager bossPanelManager, PanelBuilder panelBuilder, CustomBosses plugin) {
|
||||
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