- Баллы
- 76
Для начала, нужно создать абстрактный класс, который будут наследовать все наши конфиги:
Затем, нужно создать класс нашего конфига, который будет наследовать абстрактный класс:
Вы можете добавить любые методы в ваш кастомный конфиг, например геттеры и сеттеры:
Для того чтобы получить ваш конфиг вы можете инициализировать его в вашем главном классе(который наследует JavaPlugin), а потом получать его:
Или же, вы можете создать отдельный класс, с помощью которого будете получать все конфиги(это более удобно если у вас много конфигов, чтобы не перегружать главный класс):
Буду рад если мне удалось помочь вам в разработке плагина, оставляйте ваши отзывы и комментарии
PHP:
package %вашпакет%;
import org.bukkit.configuration.file.YamlConfiguration;
import java.io.*;
public abstract class AbstractConfiguration {
private final String path;
private final String filename;
private File file;
private YamlConfiguration configuration;
public AbstractConfiguration(final String path, final String filename) {
//путь к вашему конфигу, можете изменять как угодно
this.path = %инстанс вашего плагина%.getDataFolder() + path + filename;
this.filename = filename;
setFile();
if (!file.exists()) {
initializeFile();
//этот метод для того, чтобы скопировать кастомный конфиг с вашего джарника(если он есть) можете удалить если хотите создавать чистые конфиги без дефолтных настроек
copyFromResource(%инстанс вашего плагина%.getResource(filename), file);
}
setYamlConfiguration();
}
/**
* создать файл
*/
private void initializeFile() {
if (!file.exists())
file.getParentFile().mkdirs();
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* @param resource
* @param target
*
* метод для копирования внутренних файлов из джарника в другой файл(внешний)
*
*/
private void copyFromResource(InputStream resource, File target) {
byte[] buffer;
try {
buffer = new byte[resource.available()];
resource.read(buffer);
OutputStream outStream = new FileOutputStream(target);
outStream.write(buffer);
outStream.flush();
outStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* @param path создать файл по другому пути
*/
public void initializeFile(String path) {
File file = new File(path);
if (!file.exists())
file.getParentFile().mkdirs();
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* сохранить конфиг
*/
public void save() {
try {
getYamlConfiguration().save(getFile());
reload();
} catch (IOException e) {
e.printStackTrace();
}
}
private void setFile() {
this.file = new File(path);
}
public File getFile() {
return file;
}
private void setYamlConfiguration() {
configuration = YamlConfiguration.loadConfiguration(file);
}
/**
* получить конфиг
*/
public YamlConfiguration getYamlConfiguration() {
return configuration;
}
/**
* перезагрузить конфиг
*/
public void reload() {
this.setYamlConfiguration();
}
}
PHP:
package %вашпакет%;
import %вашпакет%.AbstractConfiguration;
public class Example extends AbstractConfiguration {
public Example(String path) {
//таким образом, будет создан конфиг Example.yml по пути который вы указали, и в него будет перенесена информация с Example.yml который находится в джарнике(если нужно)
super(path, "Example.yml");
}
}
PHP:
package %вашпакет%;
import %вашпакет%.AbstractConfiguration;
public class Example extends AbstractConfiguration {
public Example(String path) {
super(path, "Example.yml");
}
public void setExamplepId(int id) {
getYamlConfiguration().set("example-id", id);
save();
}
public int getExampleId() {
return getYamlConfiguration().getInt("example-id");
}
}
PHP:
%вашпакет%
public class Main extends JavaPlugin{
private Example exampleConfig;
public void onEnable() {
exampleConfig = new Example("/configs/")
}
public Example getExampleConfig() {
return exampleConfig;
}
}
Или же, вы можете создать отдельный класс, с помощью которого будете получать все конфиги(это более удобно если у вас много конфигов, чтобы не перегружать главный класс):
PHP:
public class ConfigManager {
private Example example;
public ConfigManager() {
init();
}
private void init() {
String path = "/configs/";
example = new Example(path);
}
public Example getExampleConfig() {
return example;
}