remove deprecated classes

This commit is contained in:
jascotty2 2019-09-01 13:18:13 -05:00
parent fcdb9d2d50
commit 6a1610811a
15 changed files with 0 additions and 1492 deletions

View File

@ -1,97 +0,0 @@
package com.songoda.core.settingsv1;
import java.util.*;
public class Category extends Narrow {
private final Config config;
private final String key;
protected final Map<String, FoundSetting> defaultSettings = new LinkedHashMap<>();
private final Map<String, List<String>> comments = new HashMap<>();
public Category(Config config, String key, String... comments) {
this.config = config;
this.key = key;
if (comments != null)
this.comments.put(null, Arrays.asList(comments));
}
public Category(Config config, String key) {
this(config, key, null);
}
public Category addAll(Category category) {
addSettings(category);
if (comments.size() == 0)
comments.putAll(category.getAllComments());
return this;
}
public Category addSetting(String key, Object defaultValue, String... comments) {
addSetting(new FoundSetting(this, key, defaultValue, comments));
return this;
}
public Category addDefaultSetting(String key, Object defaultValue, String... comments) {
addDefaultSetting(new FoundSetting(this, key, defaultValue, comments));
return this;
}
public Category addDefaultSetting(FoundSetting setting) {
this.defaultSettings.put(setting.getKey(), setting);
return this;
}
public Category addSettings(FoundSetting... settings) {
for (FoundSetting setting : settings)
this.settings.put(setting.getKey(), setting);
return this;
}
public Category addSettings(Category category) {
for (FoundSetting setting : category.getSettings())
this.settings.put(setting.getKey(), setting);
return this;
}
public Setting getDefaultSetting(String setting) {
for (String string : defaultSettings.keySet())
if (string.equalsIgnoreCase(setting))
return defaultSettings.get(string);
return new Setting();
}
public List<FoundSetting> getDefaultSettings() {
return new ArrayList<>(defaultSettings.values());
}
public String getKey() {
return key;
}
public Category addComment(String key, String... comments) {
this.comments.put(key, Arrays.asList(comments));
return this;
}
public List<String> getComments(String key) {
return Collections.unmodifiableList(comments.get(key));
}
public Map<String, List<String>> getAllComments() {
return Collections.unmodifiableMap(comments);
}
public Config getConfig() {
return config;
}
@Override
public String toString() {
return key;
}
}

View File

@ -1,327 +0,0 @@
package com.songoda.core.settingsv1;
import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.MemorySection;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.plugin.Plugin;
import java.io.*;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@Deprecated
public class Config {
private final Plugin plugin;
private final String folderName, fileName;
private FileConfiguration fileConfiguration;
private File configFile;
private boolean allowUserExpansion = true, categorySpacing = true,
commentSpacing = true, showNullCategoryComments = true;
private final Map<String, Category> categories = new LinkedHashMap<>();
public Config(JavaPlugin plugin, String folderName, String fileName) {
this.plugin = plugin;
this.folderName = folderName;
this.fileName = fileName;
this.reload();
}
public Config(JavaPlugin plugin, String fileName) {
this(plugin, "", fileName);
}
/**
* This allows users to expand the config and create new lines as well as
* remove older lines. If this is disabled the config will regenerate
* removed lines as well as add new lines that are added in the future
*
* @param allowUserExpansion allow users to expand config, otherwise don't
* @return this class
*/
public Config allowUserExpansion(boolean allowUserExpansion) {
this.allowUserExpansion = allowUserExpansion;
return this;
}
/**
* This will add two spaces above each category
*
* @param categorySpacing add two spaces above each category, otherwise don't
* @return this class
*/
public Config categorySpacing(boolean categorySpacing) {
this.categorySpacing = categorySpacing;
return this;
}
/**
* This will add a single space above each commented setting. Useful when
* you don't want your comments to stand out
*
* @param commentSpacing add a space above each comment, otherwise don't
* @return this class
*/
public Config commentSpacing(boolean commentSpacing) {
this.commentSpacing = commentSpacing;
return this;
}
/**
* This will add a single space above each commented setting. Useful when
* you don't want your comments to stand out
*
* @param showNullCategoryComments shows a placeholder comment when null,
* otherwise doesn't
* @return this class
*/
public Config showNullCategoryComments(boolean showNullCategoryComments) {
this.showNullCategoryComments = showNullCategoryComments;
return this;
}
public Category addCategory(String key, String... comments) {
return addCategory(new Category(this, key, comments));
}
public Category addCategory(Category category) {
if (categories.containsKey(category.getKey()))
return categories.get(category.getKey()).addAll(category);
else {
categories.put(category.getKey(), category);
return category;
}
}
public Category getCategory(String key) {
for (String string : categories.keySet())
if (string.equalsIgnoreCase(key))
return categories.get(string);
return null;
}
public List<Category> getCategories() {
return new ArrayList<>(categories.values());
}
public boolean hasCategory(String key) {
return getCategory(key) != null;
}
public Setting getSetting(String key) {
return getSetting(key, false);
}
public Setting getDefaultSetting(String key) {
return getSetting(key, true);
}
private Setting getSetting(String key, boolean isDefault) {
String[] split = key.split("\\.", 2);
if (split.length != 2) return null;
Category category = getCategory(split[0]);
if (category == null) return null;
if (isDefault)
return category.getDefaultSetting(split[1]);
else
return category.getSetting(split[1]);
}
public List<FoundSetting> getSettings() {
return getSettings(false);
}
public List<FoundSetting> getDefaultSettings() {
return getSettings(true);
}
private List<FoundSetting> getSettings(boolean isDefault) {
List<FoundSetting> settings = new ArrayList<>();
for (Category category : categories.values()) {
if (isDefault)
settings.addAll(category.getDefaultSettings());
else
settings.addAll(category.getSettings());
}
return settings;
}
private void loadExisting() {
this.categories.clear();
for (String categoryStr : fileConfiguration.getKeys(false)) {
Category category = new Category(this, categoryStr);
for (String settingStr : fileConfiguration.getConfigurationSection(categoryStr).getKeys(true)) {
Object object = fileConfiguration.get(categoryStr + "." + settingStr);
if (!(object instanceof MemorySection))
category.addSetting(settingStr, object);
}
addCategory(category);
}
}
public void reload() {
if (this.configFile == null)
this.configFile = new File(plugin.getDataFolder() + folderName, fileName);
this.fileConfiguration = YamlConfiguration.loadConfiguration(configFile);
if (allowUserExpansion)
this.loadExisting();
}
public void setup() {
if (fileConfiguration.getKeys(false).size() == 0 || !allowUserExpansion) {
for (FoundSetting setting : getDefaultSettings()) {
fileConfiguration.addDefault(setting.getCompleteKey(), setting.getDefaultValue());
setting.getCategory().addSetting(setting);
}
fileConfiguration.options().copyDefaults(true);
}
this.save();
}
public void save() {
// Delete old config values.
if (!allowUserExpansion) {
for (String line : fileConfiguration.getKeys(true)) {
if (line.contains(".") && getDefaultSetting(line) == null)
fileConfiguration.set(line, null);
else if (!line.contains(".")) {
if (((MemorySection) fileConfiguration.get(line)).getKeys(true).size() == 0)
fileConfiguration.set(line, null);
}
}
}
// Add comments.
String dump = fileConfiguration.saveToString();
StringBuilder config = new StringBuilder();
BufferedReader bufReader = new BufferedReader(new StringReader(dump));
try {
boolean first = true;
String line;
int currentTab = 0;
String category = "";
while ((line = bufReader.readLine()) != null) {
if (line.trim().startsWith("#")) continue;
int tabChange = line.length() - line.trim().length();
if (currentTab != tabChange) {
category = category.contains(".") && tabChange != 0 ? category.substring(0, category.indexOf(".")) : "";
currentTab = tabChange;
}
if (line.endsWith(":")) {
bufReader.mark(1000);
String found = bufReader.readLine();
bufReader.reset();
if (!found.trim().startsWith("-")) {
String newCategory = line.substring(0, line.length() - 1).trim();
if (category.equals(""))
category = newCategory;
else
category += "." + newCategory;
currentTab = tabChange + 2;
if (!first) {
if (categorySpacing)
config.append("\n\n");
} else {
first = false;
}
if (!category.contains("."))
config.append("#").append("\n");
try {
String categoryStr = category;
String commentKey = null;
if (category.contains(".")) {
String[] split = category.split("\\.", 2);
commentKey = split[1];
categoryStr = split[0];
}
Category categoryObj = getCategory(categoryStr);
if (categoryObj.getComments(commentKey).size() == 0)
throw new NullPointerException();
for (String l : categoryObj.getComments(commentKey)) {
config.append(new String(new char[tabChange]).replace('\0', ' '));
config.append("# ").append(l).append("\n");
}
} catch (IllegalArgumentException | NullPointerException e) {
if (showNullCategoryComments) {
config.append(new String(new char[tabChange]).replace('\0', ' '));
config.append("# ").append(category).append("\n");
}
}
if (!category.contains("."))
config.append("#").append("\n");
config.append(line).append("\n");
continue;
}
}
if (line.trim().startsWith("-")) {
config.append(line).append("\n");
continue;
}
String key = category + "." + (line.split(":")[0].trim());
for (FoundSetting setting : getSettings()) {
if (!setting.getCompleteKey().equals(key) || setting.getComments().length == 0) continue;
if (commentSpacing)
config.append(" ").append("\n");
for (String l : setting.getComments()) {
config.append(new String(new char[currentTab]).replace('\0', ' '));
config.append("# ").append(l).append("\n");
}
}
config.append(line).append("\n");
}
} catch (IOException e) {
e.printStackTrace();
}
try {
if (!plugin.getDataFolder().exists())
plugin.getDataFolder().mkdir();
BufferedWriter writer = new BufferedWriter(new FileWriter(configFile));
writer.write(config.toString());
writer.flush();
writer.close();
fileConfiguration.load(configFile);
} catch (IOException | InvalidConfigurationException e) {
e.printStackTrace();
}
}
public FileConfiguration getFileConfiguration() {
return fileConfiguration;
}
public String getConfigName() {
return fileName;
}
public Plugin getPlugin() {
return plugin;
}
}

View File

@ -1,49 +0,0 @@
package com.songoda.core.settingsv1;
import org.bukkit.configuration.file.FileConfiguration;
public class FoundSetting extends Setting {
private final Category category;
private final String key;
private final Object defaultValue;
private final String[] comments;
public FoundSetting(Category category, String key, Object defaultValue, String... comments) {
this.category = category;
this.key = key;
this.defaultValue = defaultValue;
this.comments = comments;
}
@Override
public String getKey() {
return key;
}
@Override
public String getCompleteKey() {
return category.getKey() + "." + key;
}
public Object getDefaultValue() {
return defaultValue;
}
public String[] getComments() {
if (comments.length == 0 && category.getDefaultSetting(key) != null
&& category.getDefaultSetting(key) instanceof FoundSetting)
return ((FoundSetting)category.getDefaultSetting(key)).comments;
return comments;
}
@Override
public FileConfiguration getConfig() {
return category.getConfig().getFileConfiguration();
}
public Category getCategory() {
return category;
}
}

View File

@ -1,52 +0,0 @@
package com.songoda.core.settingsv1;
import java.util.*;
public class Narrow {
protected final Map<String, FoundSetting> settings = new LinkedHashMap<>();
public Narrow() {
}
public Narrow(Set<FoundSetting> settings) {
for (FoundSetting setting : settings)
this.settings.put(setting.getKey(), setting);
}
public Narrow narrow(String key) {
Set<FoundSetting> settings = new HashSet<>();
for (FoundSetting setting : this.settings.values()) {
if (setting.getKey().startsWith(key))
settings.add(setting);
}
return new Narrow(settings);
}
public Collection<Section> getSection() {
Map<String, Section> sections = new HashMap<>();
for (FoundSetting setting : settings.values()) {
String section = setting.getKey().contains(".") ? setting.getKey().split("\\.")[0] : setting.getKey();
if (!sections.containsKey(section))
sections.put(section, new Section(section));
sections.get(section).getNarrow().addSetting(setting);
}
return sections.values();
}
public void addSetting(FoundSetting setting) {
this.settings.put(setting.getKey(), setting);
}
public List<FoundSetting> getSettings() {
return new ArrayList<>(settings.values());
}
public Setting getSetting(String setting) {
for (String string : settings.keySet())
if (string.equalsIgnoreCase(setting))
return settings.get(string);
return new Setting();
}
}

View File

@ -1,23 +0,0 @@
package com.songoda.core.settingsv1;
public class Section {
private final String key;
private final Narrow narrow = new Narrow();
public Section(String key) {
this.key = key;
}
public String getKey() {
return key;
}
public Narrow getNarrow() {
return narrow;
}
public Setting narrow(String setting) {
return narrow.getSetting(key + "." + setting);
}
}

View File

@ -1,109 +0,0 @@
package com.songoda.core.settingsv1;
import org.bukkit.Material;
import org.bukkit.configuration.file.FileConfiguration;
import java.util.ArrayList;
import java.util.List;
public class Setting {
public String getKey() {
return "";
}
public String getCompleteKey() {
return "";
}
public List<Integer> getIntegerList() {
if (getConfig() == null) return new ArrayList<>();
return getConfig().getIntegerList(getCompleteKey());
}
public List<String> getStringList() {
if (getConfig() == null) return new ArrayList<>();
return getConfig().getStringList(getCompleteKey());
}
public boolean getBoolean() {
return getBoolean(false);
}
public boolean getBoolean(boolean def) {
if (getConfig() == null) return def;
return getConfig().getBoolean(getCompleteKey(), def);
}
public int getInt() {
return getInt(0);
}
public int getInt(int def) {
if (getConfig() == null) return def;
return getConfig().getInt(getCompleteKey(), def);
}
public long getLong() {
return getLong(0L);
}
public long getLong(long def) {
if (getConfig() == null) return def;
return getConfig().getLong(getCompleteKey(), def);
}
public double getDouble() {
return getDouble(0D);
}
public double getDouble(double def) {
if (getConfig() == null) return def;
return getConfig().getDouble(getCompleteKey(), def);
}
public String getString() {
return getString(null);
}
public String getString(String def) {
if (getConfig() == null) return def;
return getConfig().getString(getCompleteKey());
}
public Object getObject() {
return getString(null);
}
public Object getObject(Object def) {
return getConfig().get(getCompleteKey());
}
public char getChar() {
return getChar('0');
}
public char getChar(char def) {
if (getConfig() == null) return def;
return getConfig().getString(getCompleteKey()).charAt(def);
}
public Material getMaterial() {
return getMaterial(Material.STONE);
}
public Material getMaterial(Material def) {
String materialStr = getConfig().getString(getCompleteKey());
Material material = Material.getMaterial(materialStr);
if (material == null) {
System.out.println(String.format("Config value \"%s\" has an invalid material name: \"%s\"", getCompleteKey(), materialStr));
}
return material != null ? material : def;
}
public FileConfiguration getConfig() {
return null;
}
}

View File

@ -1,193 +0,0 @@
package com.songoda.core.settingsv1;
import com.songoda.core.compatibility.ServerVersion;
import com.songoda.core.utils.TextUtils;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import java.util.*;
import org.bukkit.plugin.Plugin;
/**
* Created by songoda on 6/4/2017.
*/
public class SettingsManagerOld implements Listener {
private final Plugin plugin;
private final Config config;
private Map<Player, String> cat = new HashMap<>();
private Map<Player, String> current = new HashMap<>();
public SettingsManagerOld(Config config) {
this.plugin = config.getPlugin();
this.config = config;
Bukkit.getPluginManager().registerEvents(this, plugin);
}
@EventHandler
public void onInventoryClick(InventoryClickEvent event) {
if (event.getView().getType() != InventoryType.CHEST) return;
ItemStack clickedItem = event.getCurrentItem();
if (event.getInventory() != event.getWhoClicked().getOpenInventory().getTopInventory()
|| clickedItem == null || !clickedItem.hasItemMeta()
|| !clickedItem.getItemMeta().hasDisplayName()) {
return;
}
if (event.getView().getTitle().equals(plugin.getName() + " Settings Manager")) {
event.setCancelled(true);
if (clickedItem.getType().name().contains("STAINED_GLASS")) return;
String type = ChatColor.stripColor(clickedItem.getItemMeta().getDisplayName());
this.cat.put((Player) event.getWhoClicked(), type);
this.openEditor((Player) event.getWhoClicked());
} else if (event.getView().getTitle().equals(plugin.getName() + " Settings Editor")) {
event.setCancelled(true);
if (clickedItem.getType().name().contains("STAINED_GLASS")) return;
Player player = (Player) event.getWhoClicked();
String key = cat.get(player) + "." + ChatColor.stripColor(clickedItem.getItemMeta().getDisplayName());
if (config.getFileConfiguration().get(key).getClass().getName().equals("java.lang.Boolean")) {
this.config.getFileConfiguration().set(key, !config.getFileConfiguration().getBoolean(key));
this.finishEditing(player);
} else {
this.editObject(player, key);
}
}
}
@EventHandler
public void onChat(AsyncPlayerChatEvent event) {
Player player = event.getPlayer();
if (!current.containsKey(player)) return;
String value = current.get(player);
FileConfiguration config = this.config.getFileConfiguration();
if (config.isLong(value)) {
config.set(value, Long.parseLong(event.getMessage()));
} else if (config.isInt(value)) {
config.set(value, Integer.parseInt(event.getMessage()));
} else if (config.isDouble(value)) {
config.set(value, Double.parseDouble(event.getMessage()));
} else if (config.isString(value)) {
config.set(value, event.getMessage());
}
Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () ->
this.finishEditing(player), 0L);
event.setCancelled(true);
}
private void finishEditing(Player player) {
this.current.remove(player);
this.config.save();
this.openEditor(player);
}
private void editObject(Player player, String current) {
this.current.put(player, ChatColor.stripColor(current));
player.closeInventory();
player.sendMessage("");
player.sendMessage(TextUtils.formatText("&7Please enter a value for &6" + current + "&7."));
if (config.getFileConfiguration().isInt(current) || config.getFileConfiguration().isDouble(current)) {
player.sendMessage(TextUtils.formatText("&cUse only numbers."));
}
player.sendMessage("");
}
public void openSettingsManager(Player player) {
Inventory inventory = Bukkit.createInventory(null, 27, plugin.getName() + " Settings Manager");
int slot = 10;
for (Category category : config.getCategories()) {
ItemStack item = new ItemStack(ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13) ? Material.LEGACY_WOOL : Material.valueOf("WOOL"), 1, (byte) (slot - 9));
ItemMeta meta = item.getItemMeta();
meta.setLore(Collections.singletonList(TextUtils.formatText("&6Click To Edit This Category.")));
meta.setDisplayName(TextUtils.formatText("&f&l" + category.getKey()));
item.setItemMeta(meta);
inventory.setItem(slot, item);
slot++;
}
player.openInventory(inventory);
}
private void openEditor(Player player) {
Inventory inventory = Bukkit.createInventory(null, 54, plugin.getName() + " Settings Editor");
FileConfiguration config = this.config.getFileConfiguration();
int slot = 0;
for (String key : config.getConfigurationSection(cat.get(player)).getKeys(true)) {
String fKey = cat.get(player) + "." + key;
ItemStack item = new ItemStack(Material.DIAMOND_HELMET);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName(TextUtils.formatText("&6" + key));
List<String> lore = new ArrayList<>();
if (config.isBoolean(fKey)) {
item.setType(Material.LEVER);
lore.add(TextUtils.formatText(config.getBoolean(fKey) ? "&atrue" : "&cfalse"));
} else if (config.isString(fKey)) {
item.setType(Material.PAPER);
lore.add(TextUtils.formatText("&7" + config.getString(fKey)));
} else if (config.isInt(fKey)) {
item.setType(ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13) ? Material.CLOCK : Material.valueOf("WATCH"));
lore.add(TextUtils.formatText("&7" + config.getInt(fKey)));
} else if (config.isLong(fKey)) {
item.setType(ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13) ? Material.CLOCK : Material.valueOf("WATCH"));
lore.add(TextUtils.formatText("&7" + config.getLong(fKey)));
} else if (config.isDouble(fKey)) {
item.setType(ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13) ? Material.CLOCK : Material.valueOf("WATCH"));
lore.add(TextUtils.formatText("&7" + config.getDouble(fKey)));
}
Setting setting = this.config.getSetting(fKey);
if (setting instanceof FoundSetting && ((FoundSetting)setting).getComments() != null) {
lore.add("");
String comment = String.join(" ", ((FoundSetting)setting).getComments());
int lastIndex = 0;
for (int n = 0; n < comment.length(); n++) {
if (n - lastIndex < 30)
continue;
if (comment.charAt(n) == ' ') {
lore.add(TextUtils.formatText("&8" + comment.substring(lastIndex, n).trim()));
lastIndex = n;
}
}
if (lastIndex - comment.length() < 30)
lore.add(TextUtils.formatText("&8" + comment.substring(lastIndex).trim()));
}
meta.setLore(lore);
item.setItemMeta(meta);
inventory.setItem(slot, item);
slot++;
}
player.openInventory(inventory);
}
}

View File

@ -1,56 +0,0 @@
package com.songoda.core.settingsv1.editor;
import com.songoda.core.compatibility.LegacyMaterials;
import com.songoda.core.settingsv1.Category;
import com.songoda.core.settingsv1.Config;
import com.songoda.core.utils.gui.AbstractGUI;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ConfigCategoriesGUI extends AbstractGUI {
private final JavaPlugin plugin;
private final Config config;
private final ConfigSelectionGUI selection;
public ConfigCategoriesGUI(JavaPlugin plugin, Player player, Config config, ConfigSelectionGUI selection) {
super(player);
this.plugin = plugin;
this.config = config;
this.selection = selection;
init("Settings Editor", 54);
}
@Override
protected void constructGUI() {
createButton(0, LegacyMaterials.getMaterial("OAK_FENCE_GATE").getMaterial(), "Back");
registerClickable(0, ((player1, inventory1, cursor, slot, type) ->
selection.init("Settings Editor", selection.getInventory().getSize())));
for (int i = 9; i - 9 < config.getCategories().size(); i++) {
Category category = config.getCategories().get(i - 9);
createButton(i, LegacyMaterials.WRITABLE_BOOK.getMaterial(), "&9&l" + category.getKey());
registerClickable(i, ((player1, inventory1, cursor, slot, type) ->
new ConfigEditorGUI(plugin, player, category, null, this)));
}
}
@Override
protected void registerClickables() {
}
@Override
protected void registerOnCloses() {
}
public Config getConfig() {
return config;
}
}

View File

@ -1,143 +0,0 @@
package com.songoda.core.settingsv1.editor;
import com.songoda.core.input.ChatPrompt;
import com.songoda.core.compatibility.LegacyMaterials;
import com.songoda.core.settingsv1.FoundSetting;
import com.songoda.core.settingsv1.Narrow;
import com.songoda.core.settingsv1.Setting;
import com.songoda.core.utils.gui.AbstractGUI;
import org.bukkit.Material;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import us.myles.viaversion.libs.bungeecordchat.api.ChatColor;
public class ConfigEditorGUI extends AbstractGUI {
private final JavaPlugin plugin;
private final Narrow narrow;
private final String narrowed;
private final ConfigCategoriesGUI categories;
public ConfigEditorGUI(JavaPlugin plugin, Player player, Narrow narrow, String narrowed, ConfigCategoriesGUI categories) {
super(player);
this.plugin = plugin;
this.narrow = narrow;
this.narrowed = narrowed;
this.categories = categories;
init("Settings Editor", 54);
}
@Override
protected void constructGUI() {
resetClickables();
createButton(0, LegacyMaterials.getMaterial("OAK_FENCE_GATE").getMaterial(), "Back");
registerClickable(0, ((player1, inventory1, cursor, slot, type) ->
categories.init("Settings Editor", categories.getInventory().getSize())));
List<String> ran = new ArrayList<>();
int j = 9;
for (int i = 0; i < narrow.getSettings().size(); i++) {
FoundSetting setting = narrow.getSettings().get(i);
boolean canNarrow = setting.getKey().replace(narrowed == null ? "" : narrowed + ".", "").contains(".");
String key = canNarrow ? splitByLast(setting.getKey()) : setting.getKey();
if (!ran.contains(key)) {
if (canNarrow) {
createButton(j, LegacyMaterials.BOOK.getMaterial(), "&9&l" + key);
registerClickable(j, ((player1, inventory1, cursor, slot, type) ->
new ConfigEditorGUI(plugin, player1, narrow.narrow(key), key, categories)));
} else {
FileConfiguration config = setting.getConfig();
Material material = Material.STONE;
ArrayList<String> list = new ArrayList<>();
StringBuilder value = new StringBuilder("&a");
if (config.isString(setting.getCompleteKey())) {
value.append(setting.getString());
material = LegacyMaterials.PAPER.getMaterial();
registerClickable(j, ((player1, inventory1, cursor, slot, type) -> {
ChatPrompt prompt = ChatPrompt.showPrompt(plugin, player, "Enter your new value.", event ->
config.set(setting.getCompleteKey(), event.getMessage().trim()));
prompt.setOnClose(() -> init("Settings Editor", inventory.getSize()));
}));
} else if (isNumber(setting)) {
material = LegacyMaterials.CLOCK.getMaterial();
registerClickable(j, ((player1, inventory1, cursor, slot, type) -> {
ChatPrompt prompt = ChatPrompt.showPrompt(plugin, player, "Enter your new value.", event -> {
try {
if (config.isInt(setting.getCompleteKey())) {
config.set(setting.getCompleteKey(), Integer.parseInt(event.getMessage().trim()));
} else if (config.isDouble(setting.getCompleteKey())) {
config.set(setting.getCompleteKey(), Double.parseDouble(event.getMessage().trim()));
} else if (config.isLong(setting.getCompleteKey())) {
config.set(setting.getCompleteKey(), Long.parseLong(event.getMessage().trim()));
}
} catch (NumberFormatException e) {
player1.sendMessage(ChatColor.RED + "Error: \"" + event.getMessage().trim() + "\" is not a number!");
}
});
prompt.setOnClose(() -> init("Settings Editor", inventory.getSize()));
}));
if (config.isInt(setting.getCompleteKey())) {
value.append(setting.getInt());
} else if (config.isDouble(setting.getCompleteKey())) {
value.append(setting.getDouble());
} else if (config.isLong(setting.getCompleteKey())) {
value.append(setting.getLong());
}
} else if (config.isBoolean(setting.getCompleteKey())) {
value.append(setting.getBoolean());
material = LegacyMaterials.LEVER.getMaterial();
registerClickable(j, ((player1, inventory1, cursor, slot, type) -> {
config.set(setting.getCompleteKey(), !setting.getBoolean());
constructGUI();
}));
} else if (config.isList(setting.getCompleteKey())) {
value.append(setting.getStringList());
material = LegacyMaterials.WRITABLE_BOOK.getMaterial();
registerClickable(j, ((player1, inventory1, cursor, slot, type) -> {
new ConfigListEditorGUI(plugin, player, setting, this);
}));
} else {
value.append("&cPreview Failed");
}
list.add(value.toString());
list.addAll(Arrays.asList(setting.getComments()));
createButton(j, material, "&c&l" + key, list);
}
ran.add(key);
j++;
}
}
categories.getConfig().save();
}
@Override
protected void registerClickables() {
}
@Override
protected void registerOnCloses() {
}
private boolean isNumber(Setting setting) {
FileConfiguration config = setting.getConfig();
return config.isInt(setting.getCompleteKey())
|| config.isDouble(setting.getCompleteKey())
|| config.isLong(setting.getCompleteKey());
}
private String splitByLast(String toSplit) {
int index = toSplit.lastIndexOf(".");
return toSplit.substring(0, index);
}
}

View File

@ -1,71 +0,0 @@
package com.songoda.core.settingsv1.editor;
import com.songoda.core.input.ChatPrompt;
import com.songoda.core.compatibility.LegacyMaterials;
import com.songoda.core.settingsv1.Setting;
import com.songoda.core.utils.gui.AbstractGUI;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.List;
public class ConfigListEditorGUI extends AbstractGUI {
private final JavaPlugin plugin;
private final Setting setting;
private final ConfigEditorGUI editor;
private final List<String> stringList;
public ConfigListEditorGUI(JavaPlugin plugin, Player player, Setting setting, ConfigEditorGUI editor) {
super(player);
this.plugin = plugin;
this.setting = setting;
this.stringList = setting.getStringList();
this.editor = editor;
init("Settings Editor", 54);
}
@Override
protected void constructGUI() {
resetClickables();
inventory.clear();
for (int i = 0; i < stringList.size(); i++) {
int j = i;
String item = stringList.get(i);
createButton(i, LegacyMaterials.PAPER.getMaterial(), "&7" + item, "&cClick to remove.");
registerClickable(i, ((player1, inventory1, cursor, slot, type) -> {
stringList.remove(j);
constructGUI();
}));
}
createButton(45, LegacyMaterials.LAVA_BUCKET.getMaterial(), "&cDiscard Changes");
registerClickable(45, ((player1, inventory1, cursor, slot, type) -> {
editor.init("Settings Editor", editor.getInventory().getSize());
}));
createButton(49, LegacyMaterials.CHEST.getMaterial(), "&9Add Item");
registerClickable(49, ((player1, inventory1, cursor, slot, type) -> {
ChatPrompt prompt = ChatPrompt.showPrompt(plugin, player, "Enter your value.", event ->
stringList.add(event.getMessage().trim()));
prompt.setOnClose(() -> init("Settings Editor", inventory.getSize()));
}));
createButton(53, LegacyMaterials.REDSTONE.getMaterial(), "&aSave");
registerClickable(53, ((player1, inventory1, cursor, slot, type) -> {
setting.getConfig().set(setting.getCompleteKey(), stringList);
editor.init("Settings Editor", editor.getInventory().getSize());
}));
}
@Override
protected void registerClickables() {
}
@Override
protected void registerOnCloses() {
}
}

View File

@ -1,45 +0,0 @@
package com.songoda.core.settingsv1.editor;
import com.songoda.core.compatibility.LegacyMaterials;
import com.songoda.core.settingsv1.Config;
import com.songoda.core.utils.gui.AbstractGUI;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ConfigSelectionGUI extends AbstractGUI {
private final JavaPlugin plugin;
private final List<Config> configs = new ArrayList<>();
public ConfigSelectionGUI(JavaPlugin plugin, Player player, Config... configs) {
super(player);
this.plugin = plugin;
this.configs.addAll(Arrays.asList(configs));
init("Settings Editor", 9);
}
@Override
protected void constructGUI() {
for (int i = 0; i < configs.size(); i++) {
Config config = configs.get(i);
createButton(i, LegacyMaterials.WRITABLE_BOOK.getMaterial(), "&9&l" + config.getConfigName());
registerClickable(i, ((player1, inventory1, cursor, slot, type) ->
new ConfigCategoriesGUI(plugin, player, config, this)));
}
}
@Override
protected void registerClickables() {
}
@Override
protected void registerOnCloses() {
}
}

View File

@ -1,253 +0,0 @@
package com.songoda.core.utils.gui;
import com.songoda.core.SongodaCore;
import com.songoda.core.utils.TextUtils;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.ClickType;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.*;
@Deprecated
public abstract class AbstractGUI implements Listener {
private static boolean listenersInitialized = false;
protected final Player player;
protected Inventory inventory = null;
protected String setTitle = null;
protected boolean cancelBottom = false;
private Map<Range, Clickable> clickables = new HashMap<>();
private List<OnClose> onCloses = new ArrayList<>();
private Map<Range, Boolean> draggableRanges = new HashMap<>();
public AbstractGUI(Player player) {
this.player = player;
}
public static void initializeListeners(JavaPlugin plugin) {
if (listenersInitialized) return;
Bukkit.getPluginManager().registerEvents(new Listener() {
@EventHandler
public void onClickGUI(InventoryClickEvent event) {
Inventory inventory = event.getClickedInventory();
if (inventory == null) return;
AbstractGUI gui = getGUIFromInventory(inventory);
Player player = (Player) event.getWhoClicked();
boolean bottom = false;
InventoryType type = event.getClickedInventory().getType();
if (type != InventoryType.CHEST && type != InventoryType.PLAYER) return;
if (gui == null && event.getWhoClicked().getOpenInventory().getTopInventory() != null) {
Inventory top = event.getWhoClicked().getOpenInventory().getTopInventory();
gui = getGUIFromInventory(top);
if (gui != null && gui.cancelBottom) event.setCancelled(true);
bottom = true;
}
if (gui == null) return;
if (!bottom) event.setCancelled(true);
if (!gui.draggableRanges.isEmpty() && !bottom) {
for (Map.Entry<Range, Boolean> entry : gui.draggableRanges.entrySet()) {
Range range = entry.getKey();
if (range.getMax() == range.getMin() && event.getSlot() == range.getMin()
|| event.getSlot() >= range.getMin() && event.getSlot() <= range.getMax()) {
event.setCancelled(!entry.getValue());
if (!entry.getValue()) break;
}
}
}
Map<Range, Clickable> entries = new HashMap<>(gui.clickables);
for (Map.Entry<Range, Clickable> entry : entries.entrySet()) {
Range range = entry.getKey();
if (range.isBottom() && !bottom || !range.isBottom() && bottom || range.getClickType() != null && range.getClickType() != event.getClick())
continue;
if (event.getSlot() >= range.getMin() && event.getSlot() <= range.getMax()) {
entry.getValue().Clickable(player, inventory, event.getCursor(), event.getSlot(), event.getClick());
player.playSound(player.getLocation(), entry.getKey().getOnClickSound(), 1F, 1F);
}
}
}
@EventHandler
public void onCloseGUI(InventoryCloseEvent event) {
Inventory inventory = event.getInventory();
AbstractGUI gui = getGUIFromInventory(inventory);
if (gui == null || gui.inventory == null) return;
for (OnClose onClose : gui.onCloses) {
onClose.OnClose((Player) event.getPlayer(), inventory);
}
}
private AbstractGUI getGUIFromInventory(Inventory inventory) {
if (inventory.getHolder() == null) return null;
InventoryHolder holder = inventory.getHolder();
if (!(holder instanceof GUIHolder)) return null;
return ((AbstractGUI.GUIHolder) holder).getGUI();
}
}, plugin);
listenersInitialized = true;
}
public void init(String title, int slots) {
if (inventory == null
|| inventory.getSize() != slots
|| ChatColor.translateAlternateColorCodes('&', title) != player.getOpenInventory().getTitle()) {
this.inventory = Bukkit.getServer().createInventory(new GUIHolder(), slots, TextUtils.formatText(title));
this.setTitle = TextUtils.formatText(title);
if (this.clickables.size() == 0)
registerClickables();
if (this.onCloses.size() == 0)
registerOnCloses();
}
constructGUI();
initializeListeners(SongodaCore.getHijackedPlugin());
player.openInventory(inventory);
}
protected abstract void constructGUI();
protected void addDraggable(Range range, boolean option) {
this.draggableRanges.put(range, option);
}
protected void removeDraggable() {
this.draggableRanges.clear();
}
protected abstract void registerClickables();
protected abstract void registerOnCloses();
protected ItemStack createButton(int slot, Inventory inventory, ItemStack item, String name, String... lore) {
ItemMeta meta = item.getItemMeta();
meta.setDisplayName(TextUtils.formatText(name));
if (lore != null && lore.length != 0) {
List<String> newLore = new ArrayList<>();
for (String line : lore) {
if (line == null) continue;
for (String string : line.split("\\s*\\r?\\n\\s*")) {
int lastIndex = 0;
for (int n = 0; n < string.length(); n++) {
if (n - lastIndex < 35)
continue;
if (string.charAt(n) == ' ') {
newLore.add(TextUtils.formatText("&7" + string.substring(lastIndex, n).trim()));
lastIndex = n;
}
}
if (lastIndex - string.length() < 35)
newLore.add(TextUtils.formatText("&7" + string.substring(lastIndex, string.length()).trim()));
}
}
meta.setLore(newLore);
}
item.setItemMeta(meta);
inventory.setItem(slot, item);
return item;
}
protected ItemStack createButton(int slot, ItemStack item, String name, ArrayList<String> lore) {
return createButton(slot, inventory, item, name, lore.toArray(new String[0]));
}
protected ItemStack createButton(int slot, ItemStack item, String name, String... lore) {
return createButton(slot, inventory, item, name, lore);
}
protected ItemStack createButton(int slot, Object item, String name, String... lore) {
if (item instanceof ItemStack)
return createButton(slot, inventory, (ItemStack) item, name, lore);
else
return createButton(slot, inventory, (Material) item, name, lore);
}
protected ItemStack createButton(int slot, Inventory inventory, Material material, String name, String... lore) {
return createButton(slot, inventory, new ItemStack(material), name, lore);
}
protected ItemStack createButton(int slot, Material material, String name, String... lore) {
return createButton(slot, inventory, new ItemStack(material), name, lore);
}
protected ItemStack createButton(int slot, Material material, String name, ArrayList<String> lore) {
return createButton(slot, material, name, lore.toArray(new String[0]));
}
protected void registerClickable(int min, int max, ClickType clickType, boolean bottom, Clickable clickable) {
clickables.put(new Range(min, max, clickType, bottom), clickable);
}
protected void registerClickable(int min, int max, ClickType clickType, Clickable clickable) {
registerClickable(min, max, clickType, false, clickable);
}
protected void registerClickable(int slot, ClickType clickType, Clickable clickable) {
registerClickable(slot, slot, clickType, false, clickable);
}
protected void registerClickable(int min, int max, Clickable clickable) {
registerClickable(min, max, null, false, clickable);
}
protected void registerClickable(int slot, boolean bottom, Clickable clickable) {
registerClickable(slot, slot, null, bottom, clickable);
}
protected void registerClickable(int slot, Clickable clickable) {
registerClickable(slot, slot, null, false, clickable);
}
protected void resetClickables() {
clickables.clear();
}
protected void registerOnClose(OnClose onClose) {
onCloses.add(onClose);
}
public Inventory getInventory() {
return inventory;
}
public class GUIHolder implements InventoryHolder {
@Override
public Inventory getInventory() {
return inventory;
}
public AbstractGUI getGUI() {
return AbstractGUI.this;
}
}
public String getSetTitle() {
return setTitle;
}
}

View File

@ -1,12 +0,0 @@
package com.songoda.core.utils.gui;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
@Deprecated
public interface Clickable {
void Clickable(Player player, Inventory inventory, ItemStack cursor, int slot, ClickType type);
}

View File

@ -1,11 +0,0 @@
package com.songoda.core.utils.gui;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
@Deprecated
public interface OnClose {
void OnClose(Player player, Inventory inventory);
}

View File

@ -1,51 +0,0 @@
package com.songoda.core.utils.gui;
import com.songoda.core.compatibility.ServerVersion;
import org.bukkit.Sound;
import org.bukkit.event.inventory.ClickType;
@Deprecated
public class Range {
private int min;
private int max;
private ClickType clickType;
private boolean bottom;
private Sound onClickSound;
public Range(int min, int max, ClickType clickType, boolean bottom) {
this.min = min;
this.max = max;
this.clickType = clickType;
this.bottom = bottom;
if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_9)) onClickSound = Sound.UI_BUTTON_CLICK;
}
public Range(int min, int max, Sound onClickSound, ClickType clickType, boolean bottom) {
this.min = min;
this.max = max;
this.onClickSound = onClickSound;
this.clickType = clickType;
this.bottom = bottom;
}
public int getMin() {
return min;
}
public int getMax() {
return max;
}
public ClickType getClickType() {
return clickType;
}
public boolean isBottom() {
return bottom;
}
public Sound getOnClickSound() {
return onClickSound;
}
}