1.0.0-SNAPSHOT-U183

+ Connected and completed the AutoSpawnCustomSettings Panel
+ Set up ExtraInformation in to AutoSpawnCustomSettings Display ItemStack
This commit is contained in:
Charles 2019-01-07 19:57:37 +08:00
parent f50c3ef772
commit 039783663e
3 changed files with 80 additions and 6 deletions

View File

@ -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.AutoSpawnCustomSettingsEditorPanel;
import com.songoda.epicbosses.panel.autospawns.AutoSpawnEntitiesEditorPanel;
import com.songoda.epicbosses.panel.autospawns.MainAutoSpawnEditorPanel;
import com.songoda.epicbosses.panel.bosses.*;
@ -247,18 +248,22 @@ public class BossPanelManager implements ILoadable, IReloadable {
FileConfiguration editor = this.customBosses.getEditor();
PanelBuilder panelBuilder = new PanelBuilder(editor.getConfigurationSection("MainAutoSpawnEditMenu"));
PanelBuilder panelBuilder1 = new PanelBuilder(editor.getConfigurationSection("AutoSpawnEntitiesEditMenu"));
PanelBuilder panelBuilder2 = new PanelBuilder(editor.getConfigurationSection("AutoSpawnCustomSettingsEditMenu"));
this.mainAutoSpawnEditPanel = new MainAutoSpawnEditorPanel(this, panelBuilder, this.customBosses);
this.autoSpawnEntitiesEditPanel = new AutoSpawnEntitiesEditorPanel(this, panelBuilder1, this.customBosses);
this.autoSpawnSpecialSettingsEditorPanel = new AutoSpawnCustomSettingsEditorPanel(this, panelBuilder2, this.customBosses);
}
private void reloadAutoSpawnEditMenus() {
FileConfiguration editor = this.customBosses.getEditor();
PanelBuilder panelBuilder = new PanelBuilder(editor.getConfigurationSection("MainAutoSpawnEditMenu"));
PanelBuilder panelBuilder1 = new PanelBuilder(editor.getConfigurationSection("AutoSpawnEntitiesEditMenu"));
PanelBuilder panelBuilder2 = new PanelBuilder(editor.getConfigurationSection("AutoSpawnCustomSettingsEditMenu"));
this.mainAutoSpawnEditPanel.initializePanel(panelBuilder);
this.autoSpawnEntitiesEditPanel.initializePanel(panelBuilder1);
this.autoSpawnSpecialSettingsEditorPanel.initializePanel(panelBuilder2);
}
//---------------------------------------------

View File

@ -5,38 +5,55 @@ import com.songoda.epicbosses.api.BossAPI;
import com.songoda.epicbosses.autospawns.AutoSpawn;
import com.songoda.epicbosses.managers.AutoSpawnManager;
import com.songoda.epicbosses.managers.BossPanelManager;
import com.songoda.epicbosses.skills.interfaces.ICustomSettingAction;
import com.songoda.epicbosses.utils.ObjectUtils;
import com.songoda.epicbosses.utils.itemstack.ItemStackUtils;
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 org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
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
*
* TODO Handle Extra Information
*/
public class AutoSpawnCustomSettingsEditorPanel extends VariablePanelHandler<AutoSpawn> {
private AutoSpawnManager autoSpawnManager;
private CustomBosses plugin;
public AutoSpawnCustomSettingsEditorPanel(BossPanelManager bossPanelManager, PanelBuilder panelBuilder, CustomBosses plugin) {
super(bossPanelManager, panelBuilder);
this.plugin = plugin;
this.autoSpawnManager = plugin.getAutoSpawnManager();
}
@Override
public void fillPanel(Panel panel, AutoSpawn autoSpawn) {
String currentType = ObjectUtils.getValue(autoSpawn.getType(), "");
List<ICustomSettingAction> customButtons = autoSpawn.getIntervalSpawnData().getCustomSettingActions(autoSpawn);
if(customButtons == null || customButtons.isEmpty()) return;
int maxPage = panel.getMaxPage(customButtons);
panel.setOnPageChange(((player, currentPage, requestedPage) -> {
if(requestedPage < 0 || requestedPage > maxPage) return false;
loadPage(panel, requestedPage, customButtons);
return true;
}));
loadPage(panel, 0, customButtons);
}
@Override
@ -58,4 +75,56 @@ public class AutoSpawnCustomSettingsEditorPanel extends VariablePanelHandler<Aut
public void initializePanel(PanelBuilder panelBuilder) {
}
private void loadPage(Panel panel, int page, List<ICustomSettingAction> clickActions) {
panel.loadPage(page, ((slot, realisticSlot) -> {
if(slot >= clickActions.size()) {
panel.setItem(realisticSlot, new ItemStack(Material.AIR), e -> {});
} else {
ICustomSettingAction customSettingAction = clickActions.get(slot);
ClickAction clickAction = customSettingAction.getAction();
String name = customSettingAction.getSettingName();
ItemStack displayStack = customSettingAction.getDisplayItemStack().clone();
String currently = customSettingAction.getCurrent();
List<String> extraInfo = customSettingAction.getExtraInformation();
Map<String, String> replaceMap = new HashMap<>();
replaceMap.put("{setting}", name);
replaceMap.put("{currently}", currently);
if(displayStack == null || displayStack.getType() == Material.AIR) return;
ItemStackUtils.applyDisplayName(displayStack, this.plugin.getConfig().getString("Display.AutoSpawns.CustomSettings.name"), replaceMap);
ItemMeta itemMeta = displayStack.getItemMeta();
List<String> lore = this.plugin.getConfig().getStringList("Display.AutoSpawns.CustomSettings.lore");
List<String> newLore = new ArrayList<>();
for(String s : lore) {
if(s.contains("{extraInformation}")) {
if(extraInfo == null || extraInfo.isEmpty()) continue;
newLore.add("&7");
newLore.addAll(extraInfo);
} else {
for(String replaceKey : replaceMap.keySet()) {
if(s.contains(replaceKey)) {
s = s.replace(replaceKey, replaceMap.get(replaceKey));
}
}
newLore.add(s);
}
}
newLore.replaceAll(s -> s.replace('&', '§'));
itemMeta.setLore(newLore);
displayStack.setItemMeta(itemMeta);
panel.setItem(realisticSlot, displayStack, clickAction);
}
}));
}
}

View File

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