mirror of
https://github.com/BentoBoxWorld/BentoBox.git
synced 2025-01-23 00:21:30 +01:00
Now uses the official config.yml in the BSkyBlock data folder.
Saves a backup of the config after validation in the database so it can be checked. To Be Done: Validation of the config when it is loaded against the database version.
This commit is contained in:
parent
16bcb90127
commit
09b9d4dd49
19
config.yml
19
config.yml
@ -249,6 +249,25 @@ world:
|
||||
|
||||
### Island Settings ###
|
||||
island:
|
||||
# Default chest items
|
||||
chest-items:
|
||||
- ==: org.bukkit.inventory.ItemStack
|
||||
type: LAVA_BUCKET
|
||||
- ==: org.bukkit.inventory.ItemStack
|
||||
type: ICE
|
||||
amount: 2
|
||||
- ==: org.bukkit.inventory.ItemStack
|
||||
type: MELON_SEEDS
|
||||
- ==: org.bukkit.inventory.ItemStack
|
||||
type: BONE
|
||||
amount: 2
|
||||
- ==: org.bukkit.inventory.ItemStack
|
||||
type: COBBLESTONE
|
||||
amount: 5
|
||||
- ==: org.bukkit.inventory.ItemStack
|
||||
type: SAPLING
|
||||
amount: 2
|
||||
|
||||
# Default max team size
|
||||
# Use this permission to set for specific user groups: askyblock.team.maxsize.<number>
|
||||
# Permission size cannot be less than the default below.
|
||||
|
@ -1,9 +1,5 @@
|
||||
package us.tastybento.bskyblock;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.plugin.PluginManager;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
@ -49,13 +45,22 @@ public class BSkyBlock extends JavaPlugin {
|
||||
|
||||
@Override
|
||||
public void onEnable(){
|
||||
// Save the default config from config.yml
|
||||
saveDefaultConfig();
|
||||
plugin = this;
|
||||
|
||||
settings = new Settings();
|
||||
// Load config - EXPERIMENTAL
|
||||
// Load settings from config.yml. This will check if there are any issues with it too.
|
||||
try {
|
||||
settings.saveSettings(); //doesn't work completely yet
|
||||
//settings.saveSettings();
|
||||
settings = settings.loadSettings();
|
||||
getLogger().info("DEBUG: island distance = " + settings.getIslandDistance());
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
// Save a backup of settings to the database so it can be checked next time
|
||||
try {
|
||||
settings.saveBackup();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
@ -89,18 +94,6 @@ public class BSkyBlock extends JavaPlugin {
|
||||
// Load islands from database
|
||||
islandsManager.load();
|
||||
|
||||
// TODO: load these from config.yml
|
||||
getSettings().setChestItems(Arrays.asList(
|
||||
new ItemStack(Material.LAVA_BUCKET,1),
|
||||
new ItemStack(Material.ICE,2),
|
||||
new ItemStack(Material.MELON_SEEDS,1),
|
||||
new ItemStack(Material.BONE,2),
|
||||
new ItemStack(Material.COBBLESTONE,5),
|
||||
new ItemStack(Material.SAPLING,2)
|
||||
));
|
||||
|
||||
//getSettings().setDefaultLanguage("en-US");
|
||||
plugin.getLogger().info("DEBUG: ************************** Loading Locales **************************");
|
||||
localesManager = new LocalesManager(plugin);
|
||||
//TODO localesManager.registerLocales(plugin);
|
||||
|
||||
|
@ -214,7 +214,10 @@ public class Settings implements ISettings<Settings> {
|
||||
|
||||
/* SCHEMATICS */
|
||||
private List<String> companionNames = new ArrayList<>();
|
||||
|
||||
@ConfigEntry(path = "island.chest-items")
|
||||
private List<ItemStack> chestItems = new ArrayList<>();
|
||||
|
||||
private EntityType companionType = EntityType.COW;
|
||||
|
||||
private boolean useOwnGenerator;
|
||||
|
@ -17,7 +17,7 @@ import us.tastybento.bskyblock.database.managers.AbstractDatabaseHandler;
|
||||
* @param <T>
|
||||
*/
|
||||
public interface ISettings<T> {
|
||||
|
||||
|
||||
// ----------------Saver-------------------
|
||||
@SuppressWarnings("unchecked")
|
||||
default void saveSettings() throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, SecurityException, InstantiationException, NoSuchMethodException, IntrospectionException, SQLException {
|
||||
@ -27,10 +27,15 @@ public interface ISettings<T> {
|
||||
Bukkit.getLogger().info("DEBUG: settingsHandler = " + settingsHandler);
|
||||
Bukkit.getLogger().info("DEBUG: instance = " + getInstance());
|
||||
settingsHandler.saveSettings(getInstance());
|
||||
}
|
||||
|
||||
default void saveBackup() throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, SecurityException, InstantiationException, NoSuchMethodException, IntrospectionException, SQLException {
|
||||
// Save backup in real database
|
||||
@SuppressWarnings("unchecked")
|
||||
AbstractDatabaseHandler<T> dbhandler = (AbstractDatabaseHandler<T>) BSBDatabase.getDatabase().getHandler(getInstance().getClass());
|
||||
dbhandler.saveObject(getInstance());
|
||||
}
|
||||
|
||||
// --------------- Loader ------------------
|
||||
@SuppressWarnings("unchecked")
|
||||
default T loadSettings() throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, SecurityException, ClassNotFoundException, IntrospectionException, SQLException {
|
||||
@ -41,18 +46,17 @@ public interface ISettings<T> {
|
||||
// Load it
|
||||
dbConfig = dbhandler.loadObject(getUniqueId());
|
||||
}
|
||||
|
||||
// Get the handler
|
||||
AbstractDatabaseHandler<T> configHandler = (AbstractDatabaseHandler<T>) new FlatFileDatabase().getHandler(getInstance().getClass());
|
||||
// Load every field in the config class
|
||||
return configHandler.loadSettings(getUniqueId(), dbConfig);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return instance of the implementing class, i.e., return this.
|
||||
*/
|
||||
T getInstance();
|
||||
|
||||
|
||||
/**
|
||||
* @return the uniqueId
|
||||
*/
|
||||
@ -62,5 +66,5 @@ public interface ISettings<T> {
|
||||
* @param uniqueId the uniqueId to set
|
||||
*/
|
||||
void setUniqueId(String uniqueId);
|
||||
|
||||
|
||||
}
|
||||
|
@ -44,7 +44,7 @@ public class FlatFileDatabaseConnecter implements DatabaseConnecter {
|
||||
if (!fileName.endsWith(".yml")) {
|
||||
fileName = fileName + ".yml";
|
||||
}
|
||||
File yamlFile = new File(dataFolder, tableName + File.separator + fileName);
|
||||
File yamlFile = new File(plugin.getDataFolder(), tableName + File.separator + fileName);
|
||||
|
||||
YamlConfiguration config = null;
|
||||
if (yamlFile.exists()) {
|
||||
@ -85,7 +85,7 @@ public class FlatFileDatabaseConnecter implements DatabaseConnecter {
|
||||
if (!fileName.endsWith(".yml")) {
|
||||
fileName = fileName + ".yml";
|
||||
}
|
||||
File tableFolder = new File(dataFolder, tableName);
|
||||
File tableFolder = new File(plugin.getDataFolder(), tableName);
|
||||
File file = new File(tableFolder, fileName);
|
||||
if (!tableFolder.exists()) {
|
||||
tableFolder.mkdirs();
|
||||
|
@ -78,7 +78,7 @@ public class FlatFileDatabaseHandler<T> extends AbstractDatabaseHandler<T> {
|
||||
*/
|
||||
@Override
|
||||
public T loadObject(String key) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, IntrospectionException, ClassNotFoundException {
|
||||
String path = dataObject.getSimpleName();
|
||||
String path = DATABASE_FOLDER_NAME + File.separator + dataObject.getSimpleName();
|
||||
String fileName = key;
|
||||
StoreAt storeAt = dataObject.getAnnotation(StoreAt.class);
|
||||
if (storeAt != null) {
|
||||
@ -134,7 +134,7 @@ public class FlatFileDatabaseHandler<T> extends AbstractDatabaseHandler<T> {
|
||||
if (storeAt != null) {
|
||||
fileName = storeAt.filename();
|
||||
}
|
||||
YamlConfiguration config = databaseConnecter.loadYamlFile(dataObject.getSimpleName(), fileName);
|
||||
YamlConfiguration config = databaseConnecter.loadYamlFile(DATABASE_FOLDER_NAME + File.separator + dataObject.getSimpleName(), fileName);
|
||||
list.add(createObject(config));
|
||||
}
|
||||
return list;
|
||||
@ -314,7 +314,7 @@ public class FlatFileDatabaseHandler<T> extends AbstractDatabaseHandler<T> {
|
||||
|
||||
// The file name of the Yaml file.
|
||||
String filename = "";
|
||||
String path = dataObject.getSimpleName();
|
||||
String path = DATABASE_FOLDER_NAME + File.separator + dataObject.getSimpleName();
|
||||
|
||||
// Only allow storing in an arbitrary place if it is a config object. Otherwise it is in the database
|
||||
if (configFlag) {
|
||||
|
Loading…
Reference in New Issue
Block a user