Konfigurasi Loader

Mari kita deskripsikan bagaimana Configurate bekerja, dimulai dengan proses loading. Configurate menyediakan :javadoc: ConfigurationLoader s untuk format konfigurasi umum, berdiri sebagai pengelola file konfigurasi fisik, memungkinkan Anda untuk menyimpan dan memuat data dari sumber yang diberikan. Mereka juga memungkinkan Anda memuat konfigurasi kosong, memberi Anda opsi untuk memberi nilai default hard-coding atau pemuatan dari file yang telah ditulis sebelumnya.

Mendapatkan Loader Anda

Catatan

Defaultnya :javadoc: ConfigurationLoader dapat digunakan sebagai gantinya jika Anda menggunakan HOCON; lihat :doc: halaman konfigurasi utama <index>.

Pertama, mari ambil yang baru HoconConfigurationLoader yang menunjuk ke file konfigurasi kita.

import java.nio.file.Path;
import ninja.leaping.configurate.commented.CommentedConfigurationNode;
import ninja.leaping.configurate.hocon.HoconConfigurationLoader;
import ninja.leaping.configurate.loader.ConfigurationLoader;

Path potentialFile = getConfigPath();
ConfigurationLoader<CommentedConfigurationNode> loader =
  HoconConfigurationLoader.builder().setPath(potentialFile).build();

Loader juga akan memegang tipe generik tergantung jenis node yang akan dibangunnya. Node Konfigurasi ini akan dibahas di :doc: a later section <nodes>.

`` ConfigurationLoader``s biasanya memegang pembangun agar Anda mengakses secara statis dan membuat instance loader baru dari jenis yang Anda inginkan. Untuk konfigurasi dasar, kita tidak benar-benar perlu menentukan selain file yang ingin kita load dan/atau simpan, jadi yang akan kita lakukan adalah memberitahukannya dengan tepat, dengan menggunakan Konfigurasi Hocon Loader.builder (). setPath (path) ``. Kami kemudian memberitahu pembangun untuk membangun instance ( build () ``) untuk itu dan menyimpannya dalam sebuah variabel.

Tentu saja, ini bukan satu-satunya cara untuk memuat file. Pembangun juga memiliki metode `` setURL (URL) , jika Anda ingin memuat sumber daya tanpa menggunakan objek `` Path. Ingatlah bahwa pemuat konfigurasi yang dibuat dari URL `` hanya bisa dibaca karena mereka tidak memiliki cara untuk menulis kembali data ke URL.

Fungsi ini dapat digunakan untuk mengelompokkan konfigurasi default dengan file jar plugin Anda dan memuatnya sebagai konfigurasi awal yang akan diedit oleh administrator server (atau plugin Anda sendiri).

Memuat dan Menyimpan

Setelah Anda mendapatkan `` ConfigurationLoader`` Anda dapat menggunakannya untuk mendapatkan yang kosong :javadoc: ConfigurationNode menggunakan metode` createEmptyNode () `.

import ninja.leaping.configurate.ConfigurationNode;
import ninja.leaping.configurate.ConfigurationOptions;

Path potentialFile = getConfigPath();
ConfigurationLoader<CommentedConfigurationNode> loader = HoconConfigurationLoader.builder().setPath(potentialFile).build();
ConfigurationNode rootNode = loader.createEmptyNode(ConfigurationOptions.defaults());

Metode ini mengharapkan ninja.leaping.configurate.ConfigurationOptions untuk digunakan sebagai parameter. Kecuali Anda ingin menggunakan fitur seperti serialisasi tipe kustom, Anda bisa menggunakan :javadoc: ConfigurationOptions # defaults () untuk membuat objek pilihan dengan nilai default.

Dengan menggunakan metode `` load () `` Anda dapat mencoba memuat isi konfigurasi dari sumber yang ditentukan pada saat pembuatan `` ConfigurationLoader``. Ini juga mengharapkan instance `` ConfigurationOptions``, namun juga menyediakan bentuk no-args yang merupakan singkatan untuk `` load (ConfigurationOptions.defaults ()) ``.

import java.io.IOException;

Path potentialFile = getConfigPath();
ConfigurationLoader<CommentedConfigurationNode> loader = HoconConfigurationLoader.builder().setPath(potentialFile).build();
ConfigurationNode rootNode;
try {
    rootNode = loader.load();
} catch(IOException e) {
    // error
}

Jika `` Path`` diberikan tidak ada, metode `` load () `` akan menciptakan ConfigurationNode kosong. Kesalahan lainnya akan menyebabkan `` IOException`` dilemparkan yang harus Anda tangani dengan benar.

Jika Anda telah menyuntikkan loader default, ada baiknya Anda menggunakan `` ConfigurationOptions``, karena mengandung kemampuan untuk membuat cerita bersambung dan mendesainkan sejumlah besar objek Sponge.

Setelah Anda memodifikasi `` ConfigurationNode`` Anda untuk menyimpan data yang ingin Anda simpan, Anda dapat menggunakan `` ConfigurationLoader`` untuk menyimpan simpul ke file yang ditentukan saat membuat loader. Jika file itu tidak ada, maka file itu akan dibuat. Jika memang ada, semua isinya akan ditimpa.

try {
    loader.save(rootNode);
} catch(IOException e) {
    // error
}

Sekali lagi, kesalahan akan disebarkan sebagai `` IOException`` dan harus ditangani.

Contoh: Memuat konfigurasi default dari file jar plugin

import java.net.URL;

URL jarConfigFile = Sponge.getAssetManager().getAsset("defaultConfig.conf").get().getUrl();
ConfigurationLoader<CommentedConfigurationNode> loader =
  HoconConfigurationLoader.builder().setURL(jarConfigFile).build();

Untuk contoh ini penting untuk dicatat bahwa metode :javadoc: AssetManager#getAsset (String) bekerja relatif terhadap folder aset plugin. Jadi jika dalam contoh di atas ID plugin adalah `` myplugin``, file `` defaultConfig.conf`` tidak boleh terletak pada akar file jar, melainkan di direktori `` assets / myplugin``. Untuk informasi lebih lanjut, lihat :doc: halaman Asset API <../ assets>.