mirror of
https://github.com/Xiao-MoMi/Custom-Crops.git
synced 2025-12-23 00:49:33 +00:00
213 lines
10 KiB
Java
213 lines
10 KiB
Java
package net.momirealms.customcrops.datamanager;
|
||
|
||
import dev.lone.itemsadder.api.CustomBlock;
|
||
import net.momirealms.customcrops.CustomCrops;
|
||
import net.momirealms.customcrops.utils.Crop;
|
||
import org.apache.commons.lang.StringUtils;
|
||
import org.bukkit.Bukkit;
|
||
import org.bukkit.configuration.file.FileConfiguration;
|
||
import org.bukkit.configuration.file.YamlConfiguration;
|
||
|
||
import java.io.File;
|
||
import java.util.HashMap;
|
||
import java.util.List;
|
||
import java.util.Set;
|
||
|
||
public class ConfigManager {
|
||
|
||
public static HashMap<String, Crop> CONFIG;
|
||
static {
|
||
CONFIG = new HashMap<>();
|
||
}
|
||
|
||
public static class Config{
|
||
|
||
public static boolean res;
|
||
public static boolean wg;
|
||
public static boolean king;
|
||
public static boolean season;
|
||
public static boolean need_water;
|
||
public static boolean greenhouse;
|
||
public static boolean limit;
|
||
|
||
public static List<String> worlds;
|
||
public static List<Long> cropGrowTimeList;
|
||
public static List<Long> sprinklerWorkTimeList;
|
||
|
||
public static String current;
|
||
public static String prefix;
|
||
public static String bad_place;
|
||
public static String reload;
|
||
public static String force_save;
|
||
public static String nextSeason;
|
||
public static String no_such_seed;
|
||
public static String wrong_season;
|
||
public static String season_set;
|
||
public static String season_disabled;
|
||
public static String force_grow;
|
||
public static String force_water;
|
||
public static String limit_crop;
|
||
public static String limit_sprinkler;
|
||
public static String backup;
|
||
public static String spring;
|
||
public static String summer;
|
||
public static String autumn;
|
||
public static String winter;
|
||
public static String can_full;
|
||
public static String pot;
|
||
public static String watered_pot;
|
||
public static String watering_can_1;
|
||
public static String watering_can_2;
|
||
public static String watering_can_3;
|
||
public static String glass;
|
||
public static String sprinkler_1;
|
||
public static String sprinkler_2;
|
||
public static String sprinkler_1i;
|
||
public static String sprinkler_2i;
|
||
public static String dead;
|
||
public static String success;
|
||
public static String failure;
|
||
|
||
public static double bone_chance;
|
||
|
||
public static int range;
|
||
public static int maxh;
|
||
public static int minh;
|
||
public static int max_crop;
|
||
public static int max_sprinkler;
|
||
|
||
public static void ReloadConfig(){
|
||
|
||
CustomCrops.instance.reloadConfig();
|
||
FileConfiguration configuration = CustomCrops.instance.getConfig();
|
||
cropLoad();
|
||
|
||
//处理配置
|
||
Config.res = configuration.getBoolean("integration.residence");
|
||
Config.king = configuration.getBoolean("integration.kingdomsX");
|
||
Config.wg = configuration.getBoolean("integration.worldguard");
|
||
Config.season = configuration.getBoolean("enable-season");
|
||
Config.need_water = configuration.getBoolean("config.bone-meal-consume-water");
|
||
Config.greenhouse = configuration.getBoolean("config.enable-greenhouse");
|
||
Config.limit = configuration.getBoolean("config.enable-limit");
|
||
|
||
Config.bone_chance = configuration.getDouble("config.bone-meal-chance");
|
||
|
||
Config.range = configuration.getInt("config.greenhouse-range");
|
||
Config.maxh = configuration.getInt("config.height.max");
|
||
Config.minh = configuration.getInt("config.height.min");
|
||
Config.max_crop = configuration.getInt("config.max-crops");
|
||
Config.max_sprinkler = configuration.getInt("config.max-sprinklers");
|
||
|
||
Config.current = configuration.getString("current-season");
|
||
Config.pot = configuration.getString("config.pot");
|
||
Config.watered_pot = configuration.getString("config.watered-pot");
|
||
Config.watering_can_1 = configuration.getString("config.watering-can-1");
|
||
Config.watering_can_2 = configuration.getString("config.watering-can-2");
|
||
Config.watering_can_3 = configuration.getString("config.watering-can-3");
|
||
Config.glass = configuration.getString("config.greenhouse-glass");
|
||
Config.sprinkler_1 = configuration.getString("config.sprinkler-1");
|
||
Config.sprinkler_2 = configuration.getString("config.sprinkler-2");
|
||
Config.sprinkler_1i = configuration.getString("config.sprinkler-1-item");
|
||
Config.sprinkler_2i = configuration.getString("config.sprinkler-2-item");
|
||
Config.dead = configuration.getString("config.dead-crop");
|
||
Config.success = configuration.getString("config.particle.success");
|
||
Config.failure = configuration.getString("config.particle.failure");
|
||
|
||
Config.worlds = configuration.getStringList("config.whitelist-worlds");
|
||
Config.cropGrowTimeList = configuration.getLongList("config.grow-time");
|
||
Config.sprinklerWorkTimeList = configuration.getLongList("config.sprinkler-time");
|
||
|
||
//处理消息
|
||
Config.prefix = configuration.getString("messages.prefix");
|
||
Config.bad_place = configuration.getString("messages.not-a-good-place");
|
||
Config.reload = configuration.getString("messages.reload");
|
||
Config.force_save = configuration.getString("messages.force-save");
|
||
Config.nextSeason = configuration.getString("messages.nextseason");
|
||
Config.no_such_seed = configuration.getString("messages.no-such-seed");
|
||
Config.wrong_season = configuration.getString("messages.wrong-season");
|
||
Config.season_set = configuration.getString("messages.season-set");
|
||
Config.season_disabled = configuration.getString("messages.season-disabled");
|
||
Config.force_grow = configuration.getString("messages.force-grow");
|
||
Config.force_water = configuration.getString("messages.force-water");
|
||
Config.limit_crop = configuration.getString("messages.reach-limit-crop");
|
||
Config.limit_sprinkler = configuration.getString("messages.reach-limit-sprinkler");
|
||
Config.can_full = configuration.getString("messages.can-full");
|
||
Config.backup = configuration.getString("messages.backup");
|
||
Config.spring = configuration.getString("messages.spring");
|
||
Config.summer = configuration.getString("messages.summer");
|
||
Config.autumn = configuration.getString("messages.autumn");
|
||
Config.winter = configuration.getString("messages.winter");
|
||
Config.winter = configuration.getString("messages.noperm");
|
||
}
|
||
|
||
/*
|
||
根据文件名获取配置文件
|
||
*/
|
||
public static YamlConfiguration getConfig(String configName) {
|
||
|
||
File file = new File(CustomCrops.instance.getDataFolder(), configName);
|
||
//文件不存在则生成默认配置
|
||
if (!file.exists()) {
|
||
CustomCrops.instance.saveResource(configName, false);
|
||
}
|
||
return YamlConfiguration.loadConfiguration(file);
|
||
}
|
||
|
||
/*
|
||
加载农作物数据
|
||
*/
|
||
public static void cropLoad(){
|
||
try {
|
||
CONFIG.clear();
|
||
YamlConfiguration cropConfig = getConfig("crops.yml");
|
||
Set<String> keys = cropConfig.getConfigurationSection("crops").getKeys(false);
|
||
keys.forEach(key -> {
|
||
if(cropConfig.getConfigurationSection("crops."+key).contains("grow-chance")){
|
||
double chance = cropConfig.getDouble("crops."+key+".grow-chance");
|
||
Crop crop = new Crop(key, chance);
|
||
if(cropConfig.getConfigurationSection("crops."+key).contains("return")){
|
||
crop.setWillReturn(true);
|
||
crop.setReturnStage(cropConfig.getString("crops."+key+".return"));
|
||
}else {
|
||
crop.setWillReturn(false);
|
||
}
|
||
if(Config.season){
|
||
if(cropConfig.getConfigurationSection("crops."+key).contains("season")){
|
||
crop.setSeasons(StringUtils.split( cropConfig.getString("crops."+key+".season"), ","));
|
||
}else {
|
||
MessageManager.consoleMessage("&c[CustomCrops] 错误!在启用季节模式的情况下未设置农作物 &f"+ key +" &c的生长季节!", Bukkit.getConsoleSender());
|
||
return;
|
||
}
|
||
}
|
||
if(cropConfig.getConfigurationSection("crops."+key).contains("gigantic")){
|
||
crop.setWillGiant(true);
|
||
crop.setGiant(cropConfig.getString("crops."+key+".gigantic"));
|
||
if(cropConfig.getConfigurationSection("crops."+key).contains("gigantic-chance")){
|
||
crop.setGiantChance(cropConfig.getDouble("crops."+key+".gigantic-chance"));
|
||
}else {
|
||
MessageManager.consoleMessage("&c[CustomCrops] 错误!未设置农作物 &f"+ key +" &c的巨大化概率!", Bukkit.getConsoleSender());
|
||
return;
|
||
}
|
||
}else {
|
||
crop.setWillGiant(false);
|
||
}
|
||
CONFIG.put(key, crop);
|
||
}else {
|
||
MessageManager.consoleMessage("&c[CustomCrops] 错误!未设置农作物 &f"+ key +" &c的生长概率!", Bukkit.getConsoleSender());
|
||
}
|
||
});
|
||
if(keys.size() == CONFIG.size()){
|
||
MessageManager.consoleMessage("&#ccfbff-#ef96c5&[CustomCrops] &f成功载入 &a" + CONFIG.size() + " &f种农作物", Bukkit.getConsoleSender());
|
||
}else {
|
||
MessageManager.consoleMessage("&c[CustomCrops] crops.yml配置存在错误,请根据上述提示仔细检查!", Bukkit.getConsoleSender());
|
||
}
|
||
}
|
||
catch (Exception e) {
|
||
e.printStackTrace();
|
||
CustomCrops.instance.getLogger().warning("crops.yml加载失败!");
|
||
}
|
||
}
|
||
}
|
||
}
|