操作数据
291 字小于 1 分钟
2025-08-21
简介
领地由于存在严格的数据一致性要求,随意修改一些数据可能会导致严重的问题。 为了保证数据的一致性,对于 DominionDTO
GroupDTO
MemberDTO
对象的数据修改, 原则上必须通过 API 提供的 Provider 方法进行。
这些 Provider 提供的方法会在修改数据前检查合规性,并在修改数据后触发对应的事件,确保数据的一致性和完整性。
例如,想要修改领地的名字:
import java.util.concurrent.CompletableFuture;
class ChangeDominionNameExample {
public void changeDominionName(DominionDTO dominion, String newName) {
CompletableFuture<DominionDTO> changed = DominionProviderHandler.getInstance().renameDominion(
Bukkit.getConsoleSender(),
dominion,
newName
);
if (changed.get() == null) {
// change failed
} else {
// change success
}
}
}
操作身份
所有 Provider 提供的方法都需要一个 CommandSender
参数,表示执行操作的身份。
该参数决定的执行操作的权限和来源,例如当想要模拟一个玩家操作数据时,可以传入一个 Player
对象。 当想要无视基础检查(例如权限检查,但是任然会执行基础的合规性检查)时,可以传入 Bukkit.getConsoleSender()
,模拟控制台的最高权限操作。