Операции с данными
Около 177 словМеньше 1 минуты
2025-08-21
Введение
Из-за строгих требований к согласованности данных в домене, произвольное изменение некоторых данных может привести к серьезным проблемам. Для обеспечения согласованности данных, любые изменения объектов DominionDTO, GroupDTO, MemberDTO должны выполняться исключительно через методы Provider, предоставляемые API.
DominionProvider
GroupProvider
MemberProvider
Эти методы 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(), чтобы имитировать выполнение от имени консоли с максимальными правами.
