JAutoSavePluginData
abstract class JAutoSavePluginData(saveName: String) : AutoSavePluginData, PluginConfig
Content copied to clipboard
供 Java 用户使用的 PluginData. 参考 PluginData 以获取更多信息.
在 JvmPlugin 的典型实现方式:
// PluginMain.java
public final class PluginMain extends JavaPlugin {
public static PluginMain INSTANCE;
public PluginMain() {
INSTANCE = this;
}
@Override
public onLoad() {
this.reloadPluginData(MyPluginData.INSTANCE); // 读取文件等
}
}
// MyPluginData.java
public class MyPluginData extends JAutoSavePluginData {
public static final MyPluginData INSTANCE = new MyPluginData();
public final Value<String> string = value("test"); // 默认值 "test"
public final Value<List<String>> list = typedValue(createKType(List.class, createKType(String.class))); // 无默认值, 自动创建空 List
public final Value<Map<Long, Object>> custom = typedValue(
createKType(Map.class, createKType(Long.class), createKType(Object.class)),
new HashMap<Long, Object>() {{ // 带默认值
put(123L, "ok");
}}
);
}
Content copied to clipboard
使用时, 需要使用 .get()
, 如:
Value<List<String>> theList = MyPluginData.INSTANCE.list; // 获取 Value 实例. Value 代表一个追踪自动保存的值.
List<String> actualList = theList.get();
theList.set();
Content copied to clipboard
注意: 由于实现特殊, 请不要在初始化 Value 时就使用 .get()
. 这可能会导致自动保存追踪失效. 必须在使用时才调用 .get()
获取真实数据对象.
See also
Constructors
JAutoSavePluginData
Link copied to clipboard
Types
Functions
onInit
Link copied to clipboard
open override fun onInit(owner: PluginDataHolder, storage: PluginDataStorage)
Content copied to clipboard
当这个 PluginData 被放入一个 PluginDataStorage 时调用
onValueChanged
Link copied to clipboard
当所属于这个 PluginData 的 Value 的 值 被修改时被调用.
provideDelegate
Link copied to clipboard
operator fun <T : SerializerAwareValue<*>> T.provideDelegate(thisRef: Any?, property: KProperty<*>): T
Content copied to clipboard
使用 by value()
时自动调用此方法, 添加对 Value 的值修改的跟踪, 并创建 ValueNode 加入 valueNodes
track
Link copied to clipboard
open fun <T : SerializerAwareValue<*>> track(value: T, valueName: String, annotations: List<Annotation>): T
Content copied to clipboard
供手动实现时值跟踪使用 (如 Java 用户). 一般 Kotlin 用户需使用 provideDelegate
typedValue
Link copied to clipboard
fun <T : Any> typedValue(type: KType, default: T? = null): SerializerAwareValue<T>
Content copied to clipboard
构造一个支持泛型的 Value.
value
Link copied to clipboard
Properties
saveName
Link copied to clipboard
serializersModule
Link copied to clipboard
updaterSerializer
Link copied to clipboard
所有 valueNodes 更新和保存序列化器.
valueNodes
Link copied to clipboard
添加了追踪的 ValueNode 列表, 即通过 by value
初始化的属性列表.