Theseus 模组文档
API 参考 / capability 包:服务、状态与游玩访问

ModService


模组暴露给其它模组按名读写的状态控制器。它提供与具体类型解耦的原语面:把一组「读数据的口子 / 改状态的开关」定义为若干命名键(key),任何模组都能经 ModServiceRegistry 按全局 id 查到服务后用统一方法读写。

方法速览

方法用途
has(String)该键是否受支持
boolValue(String, boolean)读布尔值(带 fallback)
intValue(String, int)读整数值(带 fallback)
doubleValue(String, double)读浮点值(带 fallback)
stringValue(String, String)读字符串值(带 fallback)
setBoolean(String, boolean)写布尔值
setInt(String, int)写整数值
setDouble(String, double)写浮点值
setString(String, String)写字符串值

完整签名

java
public interface ModService {

    boolean has(String key);

    boolean boolValue(String key, boolean fallback);

    int intValue(String key, int fallback);

    double doubleValue(String key, double fallback);

    String stringValue(String key, String fallback);

    void setBoolean(String key, boolean value);

    void setInt(String key, int value);

    void setDouble(String key, double value);

    void setString(String key, String value);
}

has(String key)

签名:

java
boolean has(String key);

行为:本服务是否支持指定键。返回 false 表示该键不受支持,读写均无意义。键名与语义由服务提供方约定。

示例:

java
if (svc.has("darkness")) {
    double d = svc.doubleValue("darkness", 0.0);
}

boolValue(String key, boolean fallback)

签名:

java
boolean boolValue(String key, boolean fallback);

行为:读取布尔值;键不存在、类型不符或不受支持时返回 fallback。

示例:

java
boolean visible = svc.boolValue("visible", true);

intValue(String key, int fallback)

签名:

java
int intValue(String key, int fallback);

行为:读取整数值;键不存在、类型不符或不受支持时返回 fallback。

示例:

java
int count = svc.intValue("count", 0);

doubleValue(String key, double fallback)

签名:

java
double doubleValue(String key, double fallback);

行为:读取浮点值;键不存在、类型不符或不受支持时返回 fallback。

示例:

java
double darkness = svc.doubleValue("darkness", 0.0);

stringValue(String key, String fallback)

签名:

java
String stringValue(String key, String fallback);

行为:读取字符串值;键不存在、类型不符或不受支持时返回 fallback(可为 null)。

示例:

java
String mode = svc.stringValue("mode", "default");

setBoolean(String key, boolean value)

签名:

java
void setBoolean(String key, boolean value);

行为:写入布尔值。是否即时生效、是否持久化、键不受支持时是否忽略,均由服务提供方约定;实现方须保证线程安全。

示例:

java
svc.setBoolean("visible", false);

setInt(String key, int value)

签名:

java
void setInt(String key, int value);

行为:写入整数值,语义同 setBoolean。

示例:

java
svc.setInt("count", 3);

setDouble(String key, double value)

签名:

java
void setDouble(String key, double value);

行为:写入浮点值,语义同 setBoolean。

示例:

java
svc.setDouble("darkness", 0.65);

setString(String key, String value)

签名:

java
void setString(String key, String value);

行为:写入字符串值,语义同 setBoolean。

示例:

java
svc.setString("mode", "hardcore");

线程:跨模组调用可能发生在任意线程,实现方须保证 has / 读取 / 写入的线程安全(源码未对调用方声明额外约束)。

稳定性:2.0 起冻结:2.x 内只增不破。